gnu: Move sqlite to separate module.
[jackhill/guix/guix.git] / gnu / packages / lisp.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
3 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
4 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
6 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
7 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
8 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
9 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
10 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
11 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
12 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
13 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
14 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
15 ;;;
16 ;;; This file is part of GNU Guix.
17 ;;;
18 ;;; GNU Guix is free software; you can redistribute it and/or modify it
19 ;;; under the terms of the GNU General Public License as published by
20 ;;; the Free Software Foundation; either version 3 of the License, or (at
21 ;;; your option) any later version.
22 ;;;
23 ;;; GNU Guix is distributed in the hope that it will be useful, but
24 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26 ;;; GNU General Public License for more details.
27 ;;;
28 ;;; You should have received a copy of the GNU General Public License
29 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30
31 (define-module (gnu packages lisp)
32 #:use-module (gnu packages)
33 #:use-module ((guix licenses) #:prefix license:)
34 #:use-module (guix packages)
35 #:use-module (guix download)
36 #:use-module (guix git-download)
37 #:use-module (guix hg-download)
38 #:use-module (guix utils)
39 #:use-module (guix build-system gnu)
40 #:use-module (guix build-system ant)
41 #:use-module (guix build-system asdf)
42 #:use-module (guix build-system trivial)
43 #:use-module (gnu packages admin)
44 #:use-module (gnu packages base)
45 #:use-module (gnu packages bdw-gc)
46 #:use-module (gnu packages compression)
47 #:use-module (gnu packages ed)
48 #:use-module (gnu packages fontutils)
49 #:use-module (gnu packages gcc)
50 #:use-module (gnu packages gettext)
51 #:use-module (gnu packages gl)
52 #:use-module (gnu packages glib)
53 #:use-module (gnu packages m4)
54 #:use-module (gnu packages maths)
55 #:use-module (gnu packages multiprecision)
56 #:use-module (gnu packages ncurses)
57 #:use-module (gnu packages libffcall)
58 #:use-module (gnu packages libffi)
59 #:use-module (gnu packages libsigsegv)
60 #:use-module (gnu packages linux)
61 #:use-module (gnu packages perl)
62 #:use-module (gnu packages pkg-config)
63 #:use-module (gnu packages readline)
64 #:use-module (gnu packages sdl)
65 #:use-module (gnu packages sqlite)
66 #:use-module (gnu packages tex)
67 #:use-module (gnu packages texinfo)
68 #:use-module (gnu packages version-control)
69 #:use-module (gnu packages xorg)
70 #:use-module (gnu packages databases)
71 #:use-module (gnu packages gtk)
72 #:use-module (gnu packages webkit)
73 #:use-module (gnu packages xdisorg)
74 #:use-module (ice-9 match)
75 #:use-module (srfi srfi-19))
76
77 (define (asdf-substitutions lisp)
78 ;; Prepend XDG_DATA_DIRS/LISP-bundle-systems to ASDF's
79 ;; 'default-system-source-registry'.
80 `((("\\(,dir \"systems/\"\\)\\)")
81 (format #f
82 "(,dir \"~a-bundle-systems\")))
83
84 ,@(loop :for dir :in (xdg-data-dirs \"common-lisp/\")
85 :collect `(:directory (,dir \"systems\"))"
86 ,lisp))))
87
88 (define-public gcl
89 (let ((commit "d3335e2b3deb63f930eb0328e9b05377744c9512")
90 (revision "2")) ;Guix package revision
91 (package
92 (name "gcl")
93 (version (string-append "2.6.12-" revision "."
94 (string-take commit 7)))
95 (source
96 (origin
97 (method git-fetch)
98 (uri (git-reference
99 (url "https://git.savannah.gnu.org/r/gcl.git")
100 (commit commit)))
101 (file-name (string-append "gcl-" version "-checkout"))
102 (sha256
103 (base32 "05v86lhvsby05nzvcd3c4k0wljvgdgd0i6arzd2fx1yd67dl6fgj"))))
104 (build-system gnu-build-system)
105 (arguments
106 `(#:parallel-build? #f ; The build system seems not to be thread safe.
107 #:tests? #f ; There does not seem to be make check or anything similar.
108 #:configure-flags '("--enable-ansi") ; required for use by the maxima package
109 #:make-flags (list
110 (string-append "GCL_CC=" (assoc-ref %build-inputs "gcc")
111 "/bin/gcc")
112 (string-append "CC=" (assoc-ref %build-inputs "gcc")
113 "/bin/gcc"))
114 #:phases
115 (modify-phases %standard-phases
116 (add-before 'configure 'pre-conf
117 (lambda* (#:key inputs #:allow-other-keys)
118 (chdir "gcl")
119 (substitute*
120 (append
121 '("pcl/impl/kcl/makefile.akcl"
122 "add-defs"
123 "unixport/makefile.dos"
124 "add-defs.bat"
125 "gcl-tk/makefile.prev"
126 "add-defs1")
127 (find-files "h" "\\.defs"))
128 (("SHELL=/bin/bash")
129 (string-append "SHELL=" (which "bash")))
130 (("SHELL=/bin/sh")
131 (string-append "SHELL=" (which "sh"))))
132 (substitute* "h/linux.defs"
133 (("#CC") "CC")
134 (("-fwritable-strings") "")
135 (("-Werror") ""))
136 (substitute* "lsp/gcl_top.lsp"
137 (("\"cc\"")
138 (string-append "\"" (assoc-ref %build-inputs "gcc")
139 "/bin/gcc\""))
140 (("\\(or \\(get-path \\*cc\\*\\) \\*cc\\*\\)") "*cc*")
141 (("\"ld\"")
142 (string-append "\"" (assoc-ref %build-inputs "binutils")
143 "/bin/ld\""))
144 (("\\(or \\(get-path \\*ld\\*\\) \\*ld\\*\\)") "*ld*")
145 (("\\(get-path \"objdump --source \"\\)")
146 (string-append "\"" (assoc-ref %build-inputs "binutils")
147 "/bin/objdump --source \"")))
148 #t))
149 (add-after 'install 'wrap
150 (lambda* (#:key inputs outputs #:allow-other-keys)
151 (let* ((gcl (assoc-ref outputs "out"))
152 (input-path (lambda (lib path)
153 (string-append
154 (assoc-ref inputs lib) path)))
155 (binaries '("binutils")))
156 ;; GCC and the GNU binutils are necessary for GCL to be
157 ;; able to compile Lisp functions and programs (this is
158 ;; a standard feature in Common Lisp). While the
159 ;; the location of GCC is specified in the make-flags,
160 ;; the GNU binutils must be available in GCL's $PATH.
161 (wrap-program (string-append gcl "/bin/gcl")
162 `("PATH" prefix ,(map (lambda (binary)
163 (input-path binary "/bin"))
164 binaries))))
165 #t))
166 ;; drop strip phase to make maxima build, see
167 ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html
168 (delete 'strip))))
169 (inputs
170 `(("gmp" ,gmp)
171 ("readline" ,readline)))
172 (native-inputs
173 `(("m4" ,m4)
174 ("texinfo" ,texinfo)))
175 (home-page "https://www.gnu.org/software/gcl/")
176 (synopsis "A Common Lisp implementation")
177 (description "GCL is an implementation of the Common Lisp language. It
178 features the ability to compile to native object code and to load native
179 object code modules directly into its lisp core. It also features a
180 stratified garbage collection strategy, a source-level debugger and a built-in
181 interface to the Tk widget system.")
182 (license license:lgpl2.0+))))
183
184 (define-public ecl
185 (package
186 (name "ecl")
187 (version "16.1.3")
188 (source
189 (origin
190 (method url-fetch)
191 (uri (string-append
192 "https://common-lisp.net/project/ecl/static/files/release/"
193 name "-" version ".tgz"))
194 (sha256
195 (base32 "0m0j24w5d5a9dwwqyrg0d35c0nys16ijb4r0nyk87yp82v38b9bn"))
196 (modules '((guix build utils)))
197 (snippet
198 ;; Add ecl-bundle-systems to 'default-system-source-registry'.
199 `(begin
200 (substitute* "contrib/asdf/asdf.lisp"
201 ,@(asdf-substitutions name))
202 #t))))
203 (build-system gnu-build-system)
204 ;; src/configure uses 'which' to confirm the existence of 'gzip'.
205 (native-inputs `(("which" ,which)))
206 (inputs `(("gmp" ,gmp)
207 ("libatomic-ops" ,libatomic-ops)
208 ("libgc" ,libgc)
209 ("libffi" ,libffi)))
210 (arguments
211 '(#:tests? #t
212 #:parallel-tests? #f
213 #:phases
214 (modify-phases %standard-phases
215 (delete 'check)
216 (add-after 'install 'wrap
217 (lambda* (#:key inputs outputs #:allow-other-keys)
218 (let* ((ecl (assoc-ref outputs "out"))
219 (input-path (lambda (lib path)
220 (string-append
221 (assoc-ref inputs lib) path)))
222 (libraries '("gmp" "libatomic-ops" "libgc" "libffi" "libc"))
223 (binaries '("gcc" "ld-wrapper" "binutils"))
224 (library-directories
225 (map (lambda (lib) (input-path lib "/lib"))
226 libraries)))
227
228 (wrap-program (string-append ecl "/bin/ecl")
229 `("PATH" prefix
230 ,(map (lambda (binary)
231 (input-path binary "/bin"))
232 binaries))
233 `("CPATH" suffix
234 ,(map (lambda (lib)
235 (input-path lib "/include"))
236 `("kernel-headers" ,@libraries)))
237 `("LIBRARY_PATH" suffix ,library-directories)
238 `("LD_LIBRARY_PATH" suffix ,library-directories)))))
239 (add-after 'wrap 'check (assoc-ref %standard-phases 'check))
240 (add-before 'check 'fix-path-to-ecl
241 (lambda _
242 (substitute* "build/tests/Makefile"
243 (("\\$\\{exec_prefix\\}/") ""))
244 #t)))))
245 (native-search-paths
246 (list (search-path-specification
247 (variable "XDG_DATA_DIRS")
248 (files '("share")))))
249 (home-page "http://ecls.sourceforge.net/")
250 (synopsis "Embeddable Common Lisp")
251 (description "ECL is an implementation of the Common Lisp language as
252 defined by the ANSI X3J13 specification. Its most relevant features are: a
253 bytecode compiler and interpreter, being able to compile Common Lisp with any
254 C/C++ compiler, being able to build standalone executables and libraries, and
255 supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
256 ;; Note that the file "Copyright" points to some files and directories
257 ;; which aren't under the lgpl2.0+ and instead contain many different,
258 ;; non-copyleft licenses.
259 (license license:lgpl2.0+)))
260
261 (define-public clisp
262 (package
263 (name "clisp")
264 (version "2.49-92")
265 (source
266 (origin
267 (method git-fetch)
268 (uri (git-reference
269 (url "https://gitlab.com/gnu-clisp/clisp")
270 (commit "clisp-2.49.92-2018-02-18")))
271 (file-name (git-file-name name version))
272 (sha256
273 (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))
274 (patches (search-patches "clisp-remove-failing-test.patch"))))
275 (build-system gnu-build-system)
276 (inputs `(("libffcall" ,libffcall)
277 ("ncurses" ,ncurses)
278 ("readline" ,readline)
279 ("libsigsegv" ,libsigsegv)))
280 (arguments
281 `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"
282 (or (%current-system)
283 (%current-target-system)))
284 '("CFLAGS=-falign-functions=4")
285 '())
286 "--with-dynamic-ffi"
287 "--with-dynamic-modules"
288 "--with-module=rawsock")
289 #:build #f
290 #:phases
291 (modify-phases %standard-phases
292 (add-after 'unpack 'patch-sh-and-pwd
293 (lambda _
294 ;; The package is very messy with its references to "/bin/sh" and
295 ;; some other absolute paths to traditional tools. These appear in
296 ;; many places where our automatic patching misses them. Therefore
297 ;; we do the following, in this early (post-unpack) phase, to solve
298 ;; the problem from its root.
299 (substitute* '("src/clisp-link.in"
300 "src/unix.d"
301 "src/makemake.in")
302 (("/bin/sh") (which "sh")))
303 (substitute* (find-files "." "configure|Makefile")
304 (("/bin/sh") "sh"))
305 (substitute* '("src/clisp-link.in")
306 (("/bin/pwd") "pwd"))
307 #t)))
308 ;; Makefiles seem to have race conditions.
309 #:parallel-build? #f))
310 (home-page "https://clisp.sourceforge.io/")
311 (synopsis "A Common Lisp implementation")
312 (description
313 "GNU CLISP is an implementation of ANSI Common Lisp. Common Lisp is a
314 high-level, object-oriented functional programming language. CLISP includes
315 an interpreter, a compiler, a debugger, and much more.")
316 (license license:gpl2+)))
317
318 (define-public sbcl
319 (package
320 (name "sbcl")
321 (version "1.4.13")
322 (source
323 (origin
324 (method url-fetch)
325 (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
326 version "-source.tar.bz2"))
327 (sha256
328 (base32 "120rnnz8367lk7ljqlf8xidm4b0d738xqsib4kq0q5ms5r7fzgvm"))
329 (modules '((guix build utils)))
330 (snippet
331 ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
332 `(begin
333 (substitute* "contrib/asdf/asdf.lisp"
334 ,@(asdf-substitutions name))
335 #t))))
336 (build-system gnu-build-system)
337 (outputs '("out" "doc"))
338 (native-inputs
339 ;; From INSTALL:
340 ;; Supported build hosts are:
341 ;; SBCL
342 ;; CMUCL
343 ;; CCL (formerly known as OpenMCL)
344 ;; ABCL (recent versions only)
345 ;; CLISP (only some versions: 2.44.1 is OK, 2.47 is not)
346 ;; XCL
347 ;; CCL seems ideal then, but it unfortunately only builds reliably
348 ;; on some architectures.
349 `(,@(match (%current-system)
350 ((or "x86_64-linux" "i686-linux")
351 `(("ccl" ,ccl)))
352 (_
353 `(("clisp" ,clisp))))
354 ("which" ,which)
355 ("inetutils" ,inetutils) ;for hostname(1)
356 ("ed" ,ed)
357 ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
358 ("texinfo" ,texinfo)))
359 (arguments
360 `(#:modules ((guix build gnu-build-system)
361 (guix build utils)
362 (srfi srfi-1))
363 #:phases
364 (modify-phases %standard-phases
365 (delete 'configure)
366 (add-before 'build 'patch-unix-tool-paths
367 (lambda* (#:key outputs inputs #:allow-other-keys)
368 (let ((out (assoc-ref outputs "out"))
369 (bash (assoc-ref inputs "bash"))
370 (coreutils (assoc-ref inputs "coreutils"))
371 (ed (assoc-ref inputs "ed")))
372 (define (quoted-path input path)
373 (string-append "\"" input path "\""))
374 ;; Patch absolute paths in string literals. Note that this
375 ;; occurs in some .sh files too (which contain Lisp code). Use
376 ;; ISO-8859-1 because some of the files are ISO-8859-1 encoded.
377 (with-fluids ((%default-port-encoding #f))
378 ;; The removed file is utf-16-be encoded, which gives substitute*
379 ;; trouble. It does not contain references to the listed programs.
380 (substitute* (delete
381 "./tests/data/compile-file-pos-utf16be.lisp"
382 (find-files "." "\\.(lisp|sh)$"))
383 (("\"/bin/sh\"") (quoted-path bash "/bin/sh"))
384 (("\"/usr/bin/env\"") (quoted-path coreutils "/usr/bin/env"))
385 (("\"/bin/cat\"") (quoted-path coreutils "/bin/cat"))
386 (("\"/bin/ed\"") (quoted-path ed "/bin/ed"))
387 (("\"/bin/echo\"") (quoted-path coreutils "/bin/echo"))
388 (("\"/bin/uname\"") (quoted-path coreutils "/bin/uname"))))
389 ;; This one script has a non-string occurrence of /bin/sh.
390 (substitute* '("tests/foreign.test.sh")
391 ;; Leave whitespace so we don't match the shebang.
392 ((" /bin/sh ") " sh "))
393 ;; This file contains a module that can create executable files
394 ;; which depend on the presence of SBCL. It generates shell
395 ;; scripts doing "exec sbcl ..." to achieve this. We patch both
396 ;; the shebang and the reference to "sbcl", tying the generated
397 ;; executables to the exact SBCL package that generated them.
398 (substitute* '("contrib/sb-executable/sb-executable.lisp")
399 (("/bin/sh") (string-append bash "/bin/sh"))
400 (("exec sbcl") (string-append "exec " out "/bin/sbcl")))
401 ;; Disable some tests that fail in our build environment.
402 (substitute* '("contrib/sb-bsd-sockets/tests.lisp")
403 ;; This requires /etc/protocols.
404 (("\\(deftest get-protocol-by-name/error" all)
405 (string-append "#+nil ;disabled by Guix\n" all)))
406 (substitute* '("contrib/sb-posix/posix-tests.lisp")
407 ;; These assume some users/groups which we don't have.
408 (("\\(deftest pwent\\.[12]" all)
409 (string-append "#+nil ;disabled by Guix\n" all))
410 (("\\(deftest grent\\.[12]" all)
411 (string-append "#+nil ;disabled by Guix\n" all))))))
412 ;; FIXME: the texlive-union insists on regenerating fonts. It stores
413 ;; them in HOME, so it needs to be writeable.
414 (add-before 'build 'set-HOME
415 (lambda _ (setenv "HOME" "/tmp") #t))
416 (replace 'build
417 (lambda* (#:key outputs #:allow-other-keys)
418 (setenv "CC" "gcc")
419 (invoke "sh" "make.sh" ,@(match (%current-system)
420 ((or "x86_64-linux" "i686-linux")
421 `("ccl"))
422 (_
423 `("clisp")))
424 (string-append "--prefix="
425 (assoc-ref outputs "out")))))
426 (replace 'install
427 (lambda _
428 (invoke "sh" "install.sh")))
429 (add-after 'build 'build-doc
430 (lambda _
431 (with-directory-excursion "doc/manual"
432 (and (invoke "make" "info")
433 (invoke "make" "dist")))))
434 (add-after 'install 'install-doc
435 (lambda* (#:key outputs #:allow-other-keys)
436 (let* ((out (assoc-ref outputs "out"))
437 (doc (assoc-ref outputs "doc"))
438 (old-doc-dir (string-append out "/share/doc"))
439 (new-doc/sbcl-dir (string-append doc "/share/doc/sbcl")))
440 (rmdir (string-append old-doc-dir "/sbcl/html"))
441 (mkdir-p new-doc/sbcl-dir)
442 (copy-recursively (string-append old-doc-dir "/sbcl")
443 new-doc/sbcl-dir)
444 (delete-file-recursively old-doc-dir)
445 #t))))
446 ;; No 'check' target, though "make.sh" (build phase) runs tests.
447 #:tests? #f))
448 (native-search-paths
449 (list (search-path-specification
450 (variable "XDG_DATA_DIRS")
451 (files '("share")))))
452 (home-page "http://www.sbcl.org/")
453 (synopsis "Common Lisp implementation")
454 (description "Steel Bank Common Lisp (SBCL) is a high performance Common
455 Lisp compiler. In addition to the compiler and runtime system for ANSI Common
456 Lisp, it provides an interactive environment including a debugger, a
457 statistical profiler, a code coverage tool, and many other extensions.")
458 ;; Public domain in jurisdictions that allow it, bsd-2 otherwise. MIT
459 ;; loop macro has its own license. See COPYING file for further notes.
460 (license (list license:public-domain license:bsd-2
461 (license:x11-style "file://src/code/loop.lisp")))))
462
463 (define-public ccl
464 (package
465 (name "ccl")
466 (version "1.11.5")
467 (source #f)
468 (build-system gnu-build-system)
469 ;; CCL consists of a "lisp kernel" and "heap image", both of which are
470 ;; shipped in precompiled form in source tarballs. The former is a C
471 ;; program which we can rebuild from scratch, but the latter cannot be
472 ;; generated without an already working copy of CCL, and is platform
473 ;; dependent, so we need to fetch the correct tarball for the platform.
474 (inputs
475 `(("ccl"
476 ,(origin
477 (method url-fetch)
478 (uri (string-append
479 "https://github.com/Clozure/ccl/releases/download/v" version
480 "/ccl-" version "-"
481 (match (%current-system)
482 ((or "i686-linux" "x86_64-linux") "linuxx86")
483 ("armhf-linux" "linuxarm")
484 ;; Prevent errors when querying this package on unsupported
485 ;; platforms, e.g. when running "guix package --search="
486 (_ "UNSUPPORTED"))
487 ".tar.gz"))
488 (sha256
489 (base32
490 (match (%current-system)
491 ((or "i686-linux" "x86_64-linux")
492 "0hs1f3z7crgzvinpj990kv9gvbsipxvcvwbmk54n51nasvc5025q")
493 ("armhf-linux"
494 "0p0l1dzsygb6i1xxgbipjpxkn46xhq3jm41a34ga1qqp4x8lkr62")
495 (_ ""))))))))
496 (native-inputs
497 `(("m4" ,m4)
498 ("subversion" ,subversion)))
499 (arguments
500 `(#:tests? #f ;no 'check' target
501 #:modules ((srfi srfi-26)
502 (guix build utils)
503 (guix build gnu-build-system))
504 #:phases
505 (modify-phases %standard-phases
506 (replace 'unpack
507 (lambda* (#:key inputs #:allow-other-keys)
508 (and (zero? (system* "tar" "xzvf" (assoc-ref inputs "ccl")))
509 (begin (chdir "ccl") #t))))
510 (delete 'configure)
511 (add-before 'build 'pre-build
512 ;; Enter the source directory for the current platform's lisp
513 ;; kernel, and run 'make clean' to remove the precompiled one.
514 (lambda _
515 (substitute* "lisp-kernel/m4macros.m4"
516 (("/bin/pwd") (which "pwd")))
517 (chdir (string-append
518 "lisp-kernel/"
519 ,(match (or (%current-target-system) (%current-system))
520 ("i686-linux" "linuxx8632")
521 ("x86_64-linux" "linuxx8664")
522 ("armhf-linux" "linuxarm")
523 ;; Prevent errors when querying this package
524 ;; on unsupported platforms, e.g. when running
525 ;; "guix package --search="
526 (_ "UNSUPPORTED"))))
527 (substitute* '("Makefile")
528 (("/bin/rm") "rm"))
529 (setenv "CC" "gcc")
530 (zero? (system* "make" "clean"))))
531 ;; XXX Do we need to recompile the heap image as well for Guix?
532 ;; For now just use the one we already got in the tarball.
533 (replace 'install
534 (lambda* (#:key outputs inputs #:allow-other-keys)
535 ;; The lisp kernel built by running 'make' in lisp-kernel/$system
536 ;; is put back into the original directory, so go back. The heap
537 ;; image is there as well.
538 (chdir "../..")
539 (let* ((out (assoc-ref outputs "out"))
540 (libdir (string-append out "/lib/"))
541 (bindir (string-append out "/bin/"))
542 (wrapper (string-append bindir "ccl"))
543 (bash (assoc-ref inputs "bash"))
544 (kernel
545 ,(match (or (%current-target-system) (%current-system))
546 ("i686-linux" "lx86cl")
547 ("x86_64-linux" "lx86cl64")
548 ("armhf-linux" "armcl")
549 ;; Prevent errors when querying this package
550 ;; on unsupported platforms, e.g. when running
551 ;; "guix package --search="
552 (_ "UNSUPPORTED")))
553 (heap (string-append kernel ".image")))
554 (install-file kernel libdir)
555 (install-file heap libdir)
556
557 (let ((dirs '("lib" "library" "examples" "tools" "objc-bridge"
558 ,@(match (%current-system)
559 ("x86_64-linux"
560 '("x86-headers64"))
561 ("i686-linux"
562 '("x86-headers"))
563 (_ '())))))
564 (for-each copy-recursively
565 dirs
566 (map (cut string-append libdir <>) dirs)))
567
568 (mkdir-p bindir)
569 (with-output-to-file wrapper
570 (lambda ()
571 (display
572 (string-append
573 "#!" bash "/bin/sh\n"
574 "export CCL_DEFAULT_DIRECTORY=" libdir "\n"
575 "exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
576 (chmod wrapper #o755))
577 #t)))))
578 (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
579 (home-page "https://ccl.clozure.com/")
580 (synopsis "Common Lisp implementation")
581 (description "Clozure CL (often called CCL for short) is a Common Lisp
582 implementation featuring fast compilation speed, native threads, a precise,
583 generational, compacting garbage collector, and a convenient foreign-function
584 interface.")
585 ;; See file doc/LICENSE for clarifications it makes regarding how the LGPL
586 ;; applies to Lisp code according to them.
587 (license (list license:lgpl2.1
588 license:clarified-artistic)))) ;TRIVIAL-LDAP package
589
590 (define-public lush2
591 (package
592 (name "lush2")
593 (version "2.0.1")
594 (source
595 (origin
596 (method url-fetch)
597 (uri (string-append "mirror://sourceforge/lush/lush2/lush-"
598 version ".tar.gz"))
599 (modules '((guix build utils)))
600 (snippet
601 '(begin
602 (substitute* "src/unix.c"
603 (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
604 (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
605 (substitute* "src/main.c"
606 (("\" \\(built \" __DATE__ \"\\)\"") ""))
607 #t))
608 (sha256
609 (base32
610 "02pkfn3nqdkm9fm44911dbcz0v3r0l53vygj8xigl6id5g3iwi4k"))))
611 (build-system gnu-build-system)
612 (arguments
613 `(;; We have to add these LIBS so that they are found.
614 #:configure-flags (list "LIBS=-lz"
615 "X_EXTRA_LIBS=-lfontconfig"
616 "--with-x")
617 #:tests? #f)) ; No make check.
618 (native-inputs `(("intltool" ,intltool)))
619 (inputs
620 `(("alsa-lib" ,alsa-lib)
621 ("sdl" ,sdl)
622 ("sdl-image" ,sdl-image)
623 ("sdl-mixer" ,sdl-mixer)
624 ("sdl-net" ,sdl-net)
625 ("sdl-ttf" ,sdl-ttf)
626 ("lapack" ,lapack)
627 ("libxft" ,libxft)
628 ("fontconfig" ,fontconfig)
629 ("gsl" ,gsl)
630 ("openblas" ,openblas)
631 ("glu" ,glu)
632 ("mesa" ,mesa)
633 ("mesa-utils" ,mesa-utils)
634 ("binutils" ,binutils)
635 ("libiberty" ,libiberty)
636 ("readline" ,readline)
637 ("zlib" ,zlib)
638 ("gettext-minimal" ,gettext-minimal)))
639 (synopsis "Lisp Universal Shell")
640 (description
641 "Lush is an object-oriented Lisp interpreter/compiler with features
642 designed to please people who want to prototype large numerical
643 applications. Lush includes an extensive library of
644 vector/matrix/tensor manipulation, numerous numerical libraries
645 (including GSL, LAPACK, and BLAS), a set of graphic functions, a
646 simple GUI toolkit, and interfaces to various graphic and multimedia
647 libraries such as OpenGL, SDL, Video4Linux, and ALSA (video/audio
648 grabbing), and others. Lush is an ideal frontend script language for
649 programming projects written in C or other languages. Lush also has
650 libraries for Machine Learning, Neural Nets and statistical estimation.")
651 (home-page "http://lush.sourceforge.net/")
652 (license license:lgpl2.1+)))
653
654 (define-public sbcl-alexandria
655 (let ((revision "1")
656 (commit "926a066611b7b11cb71e26c827a271e500888c30"))
657 (package
658 (name "sbcl-alexandria")
659 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
660 (source
661 (origin
662 (method git-fetch)
663 (uri (git-reference
664 (url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
665 (commit commit)))
666 (sha256
667 (base32
668 "18yncicdkh294j05rhgm23gzi36y9qy6vrfba8vg69jrxjp1hx8l"))
669 (file-name (string-append "alexandria-" version "-checkout"))))
670 (build-system asdf-build-system/sbcl)
671 (synopsis "Collection of portable utilities for Common Lisp")
672 (description
673 "Alexandria is a collection of portable utilities. It does not contain
674 conceptual extensions to Common Lisp. It is conservative in scope, and
675 portable between implementations.")
676 (home-page "https://common-lisp.net/project/alexandria/")
677 (license license:public-domain))))
678
679 (define-public cl-alexandria
680 (sbcl-package->cl-source-package sbcl-alexandria))
681
682 (define-public ecl-alexandria
683 (sbcl-package->ecl-package sbcl-alexandria))
684
685 (define-public sbcl-fiveam
686 (package
687 (name "sbcl-fiveam")
688 (version "1.2")
689 (source
690 (origin
691 (method url-fetch)
692 (uri (string-append
693 "https://github.com/sionescu/fiveam/archive/v"
694 version ".tar.gz"))
695 (sha256
696 (base32 "0f48pcbhqs3wwwzjl5nk57d4hcbib4l9xblxc66b8c2fhvhmhxnv"))
697 (file-name (string-append "fiveam-" version ".tar.gz"))))
698 (inputs `(("alexandria" ,sbcl-alexandria)))
699 (build-system asdf-build-system/sbcl)
700 (synopsis "Common Lisp testing framework")
701 (description "FiveAM is a simple (as far as writing and running tests
702 goes) regression testing framework. It has been designed with Common Lisp's
703 interactive development model in mind.")
704 (home-page "https://common-lisp.net/project/fiveam/")
705 (license license:bsd-3)))
706
707 (define-public cl-fiveam
708 (sbcl-package->cl-source-package sbcl-fiveam))
709
710 (define-public ecl-fiveam
711 (sbcl-package->ecl-package sbcl-fiveam))
712
713 (define-public sbcl-bordeaux-threads
714 (let ((commit "354abb0ae9f1d9324001e1a8abab3128d7420e0e")
715 (revision "1"))
716 (package
717 (name "sbcl-bordeaux-threads")
718 (version (git-version "0.8.5" revision commit))
719 (source (origin
720 (method git-fetch)
721 (uri (git-reference
722 (url "https://github.com/sionescu/bordeaux-threads.git")
723 (commit commit)))
724 (sha256
725 (base32 "1hcfp21l6av1xj6z7r77sp6h4mwf9vvx4s745803sysq2qy2mwnq"))
726 (file-name
727 (git-file-name "bordeaux-threads" version))))
728 (inputs `(("alexandria" ,sbcl-alexandria)))
729 (native-inputs `(("fiveam" ,sbcl-fiveam)))
730 (build-system asdf-build-system/sbcl)
731 (synopsis "Portable shared-state concurrency library for Common Lisp")
732 (description "BORDEAUX-THREADS is a proposed standard for a minimal
733 MP/Threading interface. It is similar to the CLIM-SYS threading and lock
734 support.")
735 (home-page "https://common-lisp.net/project/bordeaux-threads/")
736 (license license:x11))))
737
738 (define-public cl-bordeaux-threads
739 (sbcl-package->cl-source-package sbcl-bordeaux-threads))
740
741 (define-public ecl-bordeaux-threads
742 (sbcl-package->ecl-package sbcl-bordeaux-threads))
743
744 (define-public sbcl-trivial-gray-streams
745 (let ((revision "1")
746 (commit "0483ade330508b4b2edeabdb47d16ec9437ee1cb"))
747 (package
748 (name "sbcl-trivial-gray-streams")
749 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
750 (source
751 (origin
752 (method git-fetch)
753 (uri
754 (git-reference
755 (url "https://github.com/trivial-gray-streams/trivial-gray-streams.git")
756 (commit commit)))
757 (sha256
758 (base32 "0m3rpf2x0zmdk3nf1qfa01j6a55vj7gkwhyw78qslcgbjlgh8p4d"))
759 (file-name
760 (string-append "trivial-gray-streams-" version "-checkout"))))
761 (build-system asdf-build-system/sbcl)
762 (synopsis "Compatibility layer for Gray streams implementations")
763 (description "Gray streams is an interface proposed for inclusion with
764 ANSI CL by David N. Gray. The proposal did not make it into ANSI CL, but most
765 popular CL implementations implement it. This package provides an extremely
766 thin compatibility layer for gray streams.")
767 (home-page "http://www.cliki.net/trivial-gray-streams")
768 (license license:x11))))
769
770 (define-public cl-trivial-gray-streams
771 (sbcl-package->cl-source-package sbcl-trivial-gray-streams))
772
773 (define-public ecl-trivial-gray-streams
774 (sbcl-package->ecl-package sbcl-trivial-gray-streams))
775
776 (define-public sbcl-fiasco
777 (let ((commit "d62f7558b21addc89f87e306f65d7f760632655f")
778 (revision "1"))
779 (package
780 (name "sbcl-fiasco")
781 (version (git-version "0.0.1" revision commit))
782 (source
783 (origin
784 (method git-fetch)
785 (uri (git-reference
786 (url "https://github.com/joaotavora/fiasco.git")
787 (commit commit)))
788 (file-name (git-file-name "fiasco" version))
789 (sha256
790 (base32
791 "1zwxs3d6iswayavcmb49z2892xhym7n556d8dnmvalc32pm9bkjh"))))
792 (build-system asdf-build-system/sbcl)
793 (inputs
794 `(("alexandria" ,sbcl-alexandria)
795 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
796 (synopsis "Simple and powerful test framework for Common Lisp")
797 (description "A Common Lisp test framework that treasures your failures,
798 logical continuation of Stefil. It focuses on interactive debugging.")
799 (home-page "https://github.com/joaotavora/fiasco")
800 ;; LICENCE specifies this is public-domain unless the legislation
801 ;; doesn't allow or recognize it. In that case it falls back to a
802 ;; permissive licence.
803 (license (list license:public-domain
804 (license:x11-style "file://LICENCE"))))))
805
806 (define-public cl-fiasco
807 (sbcl-package->cl-source-package sbcl-fiasco))
808
809 (define-public ecl-fiasco
810 (sbcl-package->ecl-package sbcl-fiasco))
811
812 (define-public sbcl-flexi-streams
813 (package
814 (name "sbcl-flexi-streams")
815 (version "1.0.16")
816 (source
817 (origin
818 (method url-fetch)
819 (uri (string-append
820 "https://github.com/edicl/flexi-streams/archive/v"
821 version ".tar.gz"))
822 (sha256
823 (base32 "1fb0jrwxr5c3i2lhy7kn30m1n0vggfzwjm1dacx6y5wf9wfsbamw"))
824 (file-name (string-append "flexi-streams-" version ".tar.gz"))))
825 (build-system asdf-build-system/sbcl)
826 (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
827 (synopsis "Implementation of virtual bivalent streams for Common Lisp")
828 (description "Flexi-streams is an implementation of \"virtual\" bivalent
829 streams that can be layered atop real binary or bivalent streams and that can
830 be used to read and write character data in various single- or multi-octet
831 encodings which can be changed on the fly. It also supplies in-memory binary
832 streams which are similar to string streams.")
833 (home-page "http://weitz.de/flexi-streams/")
834 (license license:bsd-3)))
835
836 (define-public cl-flexi-streams
837 (sbcl-package->cl-source-package sbcl-flexi-streams))
838
839 (define-public ecl-flexi-streams
840 (sbcl-package->ecl-package sbcl-flexi-streams))
841
842 (define-public sbcl-cl-ppcre
843 (package
844 (name "sbcl-cl-ppcre")
845 (version "2.0.11")
846 (source
847 (origin
848 (method url-fetch)
849 (uri (string-append
850 "https://github.com/edicl/cl-ppcre/archive/v"
851 version ".tar.gz"))
852 (sha256
853 (base32 "1i7daxf0wnydb0pgwiym7qh2wy70n14lxd6dyv28sy0naa8p31gd"))
854 (file-name (string-append "cl-ppcre-" version ".tar.gz"))))
855 (build-system asdf-build-system/sbcl)
856 (native-inputs `(("flexi-streams" ,sbcl-flexi-streams)))
857 (synopsis "Portable regular expression library for Common Lisp")
858 (description "CL-PPCRE is a portable regular expression library for Common
859 Lisp, which is compatible with perl. It is pretty fast, thread-safe, and
860 compatible with ANSI-compliant Common Lisp implementations.")
861 (home-page "http://weitz.de/cl-ppcre/")
862 (license license:bsd-2)))
863
864 (define-public cl-ppcre
865 (sbcl-package->cl-source-package sbcl-cl-ppcre))
866
867 (define-public ecl-cl-ppcre
868 (sbcl-package->ecl-package sbcl-cl-ppcre))
869
870 (define sbcl-cl-unicode-base
871 (let ((revision "1")
872 (commit "9fcd06fba1ddc9e66aed2f2d6c32dc9b764f03ea"))
873 (package
874 (name "sbcl-cl-unicode-base")
875 (version (string-append "0.1.5-" revision "." (string-take commit 7)))
876 (source (origin
877 (method git-fetch)
878 (uri (git-reference
879 (url "https://github.com/edicl/cl-unicode.git")
880 (commit commit)))
881 (file-name (string-append "cl-unicode-" version "-checkout"))
882 (sha256
883 (base32
884 "1jicprb5b3bv57dy1kg03572gxkcaqdjhak00426s76g0plmx5ki"))))
885 (build-system asdf-build-system/sbcl)
886 (arguments
887 '(#:asd-file "cl-unicode.asd"
888 #:asd-system-name "cl-unicode/base"))
889 (inputs
890 `(("cl-ppcre" ,sbcl-cl-ppcre)))
891 (home-page "http://weitz.de/cl-unicode/")
892 (synopsis "Portable Unicode library for Common Lisp")
893 (description "CL-UNICODE is a portable Unicode library Common Lisp, which
894 is compatible with perl. It is pretty fast, thread-safe, and compatible with
895 ANSI-compliant Common Lisp implementations.")
896 (license license:bsd-2))))
897
898 (define-public sbcl-cl-unicode
899 (package
900 (inherit sbcl-cl-unicode-base)
901 (name "sbcl-cl-unicode")
902 (inputs
903 `(("cl-unicode/base" ,sbcl-cl-unicode-base)
904 ,@(package-inputs sbcl-cl-unicode-base)))
905 (native-inputs
906 `(("flexi-streams" ,sbcl-flexi-streams)))
907 (arguments '())))
908
909 (define-public ecl-cl-unicode
910 (sbcl-package->ecl-package sbcl-cl-unicode))
911
912 (define-public cl-unicode
913 (sbcl-package->cl-source-package sbcl-cl-unicode))
914
915 (define-public sbcl-clx
916 (let ((revision "1")
917 (commit "1c62774b03c1cf3fe6e5cb532df8b14b44c96b95"))
918 (package
919 (name "sbcl-clx")
920 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
921 (source
922 (origin
923 (method git-fetch)
924 (uri
925 (git-reference
926 (url "https://github.com/sharplispers/clx.git")
927 (commit commit)))
928 (sha256
929 (base32 "0qffag03ns52kwq9xjns2qg1yr0bf3ba507iwq5cmx5xz0b0rmjm"))
930 (file-name (string-append "clx-" version "-checkout"))
931 (patches
932 (list
933 (search-patch "clx-remove-demo.patch")))
934 (modules '((guix build utils)))
935 (snippet
936 '(begin
937 ;; These removed files cause the compiled system to crash when
938 ;; loading.
939 (delete-file-recursively "demo")
940 (delete-file "test/trapezoid.lisp")
941 (substitute* "clx.asd"
942 (("\\(:file \"trapezoid\"\\)") ""))
943 #t))))
944 (build-system asdf-build-system/sbcl)
945 (home-page "http://www.cliki.net/portable-clx")
946 (synopsis "X11 client library for Common Lisp")
947 (description "CLX is an X11 client library for Common Lisp. The code was
948 originally taken from a CMUCL distribution, was modified somewhat in order to
949 make it compile and run under SBCL, then a selection of patches were added
950 from other CLXes around the net.")
951 (license license:x11))))
952
953 (define-public cl-clx
954 (sbcl-package->cl-source-package sbcl-clx))
955
956 (define-public ecl-clx
957 (sbcl-package->ecl-package sbcl-clx))
958
959 (define-public sbcl-cl-ppcre-unicode
960 (package (inherit sbcl-cl-ppcre)
961 (name "sbcl-cl-ppcre-unicode")
962 (arguments
963 `(#:tests? #f ; tests fail with "Component :CL-PPCRE-TEST not found"
964 #:asd-file "cl-ppcre-unicode.asd"))
965 (inputs
966 `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
967 ("sbcl-cl-unicode" ,sbcl-cl-unicode)))))
968
969 (define-public stumpwm
970 (package
971 (name "stumpwm")
972 (version "18.11")
973 (source (origin
974 (method url-fetch)
975 (uri (string-append
976 "https://github.com/stumpwm/stumpwm/archive/"
977 version ".tar.gz"))
978 (sha256
979 (base32 "177gxfk4c127i9crghx6fmkipznhgylvzgnjb2pna38g21gg6s39"))
980 (file-name (string-append "stumpwm-" version ".tar.gz"))
981 (patches
982 ;; This patch is included in the post-18.11 git master tree
983 ;; and can be removed when we move to the next release.
984 (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
985 (build-system asdf-build-system/sbcl)
986 (native-inputs `(("fiasco" ,sbcl-fiasco)))
987 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
988 ("clx" ,sbcl-clx)
989 ("alexandria" ,sbcl-alexandria)))
990 (outputs '("out" "lib"))
991 (arguments
992 '(#:asd-system-name "stumpwm"
993 #:phases
994 (modify-phases %standard-phases
995 (add-after 'create-symlinks 'build-program
996 (lambda* (#:key outputs #:allow-other-keys)
997 (build-program
998 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
999 outputs
1000 #:entry-program '((stumpwm:stumpwm) 0))))
1001 (add-after 'build-program 'create-desktop-file
1002 (lambda* (#:key outputs #:allow-other-keys)
1003 (let* ((out (assoc-ref outputs "out"))
1004 (xsessions (string-append out "/share/xsessions")))
1005 (mkdir-p xsessions)
1006 (call-with-output-file
1007 (string-append xsessions "/stumpwm.desktop")
1008 (lambda (file)
1009 (format file
1010 "[Desktop Entry]~@
1011 Name=stumpwm~@
1012 Comment=The Stump Window Manager~@
1013 Exec=~a/bin/stumpwm~@
1014 TryExec=~@*~a/bin/stumpwm~@
1015 Icon=~@
1016 Type=Application~%"
1017 out)))
1018 #t))))))
1019 (synopsis "Window manager written in Common Lisp")
1020 (description "Stumpwm is a window manager written entirely in Common Lisp.
1021 It attempts to be highly customizable while relying entirely on the keyboard
1022 for input. These design decisions reflect the growing popularity of
1023 productive, customizable lisp based systems.")
1024 (home-page "https://github.com/stumpwm/stumpwm")
1025 (license license:gpl2+)
1026 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
1027
1028 (define-public sbcl-stumpwm
1029 (deprecated-package "sbcl-stumpwm" stumpwm))
1030
1031 (define-public cl-stumpwm
1032 (package
1033 (inherit (sbcl-package->cl-source-package stumpwm))
1034 (name "cl-stumpwm")))
1035
1036 ;; The slynk that users expect to install includes all of slynk's contrib
1037 ;; modules. Therefore, we build the base module and all contribs first; then
1038 ;; we expose the union of these as `sbcl-slynk'. The following variable
1039 ;; describes the base module.
1040 (define sbcl-slynk-boot0
1041 (let ((revision "2")
1042 (commit "cbf84c36c4eca8b032e3fd16177a7bc02df3ec4c"))
1043 (package
1044 (name "sbcl-slynk-boot0")
1045 (version (string-append "1.0.0-beta-" revision "." (string-take commit 7)))
1046 (source
1047 (origin
1048 (method git-fetch)
1049 (uri
1050 (git-reference
1051 (url "https://github.com/joaotavora/sly.git")
1052 (commit commit)))
1053 (sha256
1054 (base32 "13dyhsravn591p7g6is01mp2ynzjnnj7pwgi57r6xqmd4611y9vh"))
1055 (file-name (string-append "slynk-" version "-checkout"))
1056 (modules '((guix build utils)
1057 (ice-9 ftw)))
1058 (snippet
1059 '(begin
1060 ;; Move the contribs into the main source directory for easier
1061 ;; access
1062 (substitute* "slynk/slynk.asd"
1063 (("\\.\\./contrib")
1064 "contrib")
1065 (("\\(defsystem :slynk/util")
1066 "(defsystem :slynk/util :depends-on (:slynk)")
1067 ((":depends-on \\(:slynk :slynk/util\\)")
1068 ":depends-on (:slynk :slynk-util)"))
1069 (substitute* "contrib/slynk-trace-dialog.lisp"
1070 (("\\(slynk::reset-inspector\\)") ; Causes problems on load
1071 "nil"))
1072 (substitute* "contrib/slynk-profiler.lisp"
1073 (("slynk:to-line")
1074 "slynk-pprint-to-line"))
1075 (substitute* "contrib/slynk-fancy-inspector.lisp"
1076 (("slynk/util") "slynk-util")
1077 ((":compile-toplevel :load-toplevel") ""))
1078 (rename-file "contrib" "slynk/contrib")
1079 ;; Move slynk's contents into the base directory for easier
1080 ;; access
1081 (for-each (lambda (file)
1082 (unless (string-prefix? "." file)
1083 (rename-file (string-append "slynk/" file)
1084 (string-append "./" (basename file)))))
1085 (scandir "slynk"))
1086 #t))))
1087 (build-system asdf-build-system/sbcl)
1088 (arguments
1089 `(#:tests? #f ; No test suite
1090 #:asd-system-name "slynk"))
1091 (synopsis "Common Lisp IDE for Emacs")
1092 (description "SLY is a fork of SLIME, an IDE backend for Common Lisp.
1093 It also features a completely redesigned REPL based on Emacs's own
1094 full-featured comint.el, live code annotations, and a consistent interactive
1095 button interface. Everything can be copied to the REPL. One can create
1096 multiple inspectors with independent history.")
1097 (home-page "https://github.com/joaotavora/sly")
1098 (license license:public-domain)
1099 (properties `((cl-source-variant . ,(delay cl-slynk)))))))
1100
1101 (define-public cl-slynk
1102 (package
1103 (inherit (sbcl-package->cl-source-package sbcl-slynk-boot0))
1104 (name "cl-slynk")))
1105
1106 (define ecl-slynk-boot0
1107 (sbcl-package->ecl-package sbcl-slynk-boot0))
1108
1109 (define sbcl-slynk-arglists
1110 (package
1111 (inherit sbcl-slynk-boot0)
1112 (name "sbcl-slynk-arglists")
1113 (inputs `(("slynk" ,sbcl-slynk-boot0)))
1114 (arguments
1115 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1116 ((#:asd-file _ "") "slynk.asd")
1117 ((#:asd-system-name _ #f) "slynk/arglists")))))
1118
1119 (define ecl-slynk-arglists
1120 (sbcl-package->ecl-package sbcl-slynk-arglists))
1121
1122 (define sbcl-slynk-util
1123 (package
1124 (inherit sbcl-slynk-boot0)
1125 (name "sbcl-slynk-util")
1126 (inputs `(("slynk" ,sbcl-slynk-boot0)))
1127 (arguments
1128 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1129 ((#:asd-file _ "") "slynk.asd")
1130 ((#:asd-system-name _ #f) "slynk/util")))))
1131
1132 (define ecl-slynk-util
1133 (sbcl-package->ecl-package sbcl-slynk-util))
1134
1135 (define sbcl-slynk-fancy-inspector
1136 (package
1137 (inherit sbcl-slynk-arglists)
1138 (name "sbcl-slynk-fancy-inspector")
1139 (inputs `(("slynk-util" ,sbcl-slynk-util)
1140 ,@(package-inputs sbcl-slynk-arglists)))
1141 (arguments
1142 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1143 ((#:asd-system-name _ #f) "slynk/fancy-inspector")))))
1144
1145 (define ecl-slynk-fancy-inspector
1146 (sbcl-package->ecl-package sbcl-slynk-fancy-inspector))
1147
1148 (define sbcl-slynk-package-fu
1149 (package
1150 (inherit sbcl-slynk-arglists)
1151 (name "sbcl-slynk-package-fu")
1152 (arguments
1153 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1154 ((#:asd-system-name _ #f) "slynk/package-fu")))))
1155
1156 (define ecl-slynk-package-fu
1157 (sbcl-package->ecl-package sbcl-slynk-package-fu))
1158
1159 (define sbcl-slynk-mrepl
1160 (package
1161 (inherit sbcl-slynk-fancy-inspector)
1162 (name "sbcl-slynk-mrepl")
1163 (arguments
1164 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1165 ((#:asd-system-name _ #f) "slynk/mrepl")))))
1166
1167 (define ecl-slynk-mrepl
1168 (sbcl-package->ecl-package sbcl-slynk-mrepl))
1169
1170 (define sbcl-slynk-trace-dialog
1171 (package
1172 (inherit sbcl-slynk-arglists)
1173 (name "sbcl-slynk-trace-dialog")
1174 (arguments
1175 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1176 ((#:asd-system-name _ #f) "slynk/trace-dialog")))))
1177
1178 (define ecl-slynk-trace-dialog
1179 (sbcl-package->ecl-package sbcl-slynk-trace-dialog))
1180
1181 (define sbcl-slynk-profiler
1182 (package
1183 (inherit sbcl-slynk-arglists)
1184 (name "sbcl-slynk-profiler")
1185 (arguments
1186 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1187 ((#:asd-system-name _ #f) "slynk/profiler")))))
1188
1189 (define ecl-slynk-profiler
1190 (sbcl-package->ecl-package sbcl-slynk-profiler))
1191
1192 (define sbcl-slynk-stickers
1193 (package
1194 (inherit sbcl-slynk-arglists)
1195 (name "sbcl-slynk-stickers")
1196 (arguments
1197 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1198 ((#:asd-system-name _ #f) "slynk/stickers")))))
1199
1200 (define ecl-slynk-stickers
1201 (sbcl-package->ecl-package sbcl-slynk-stickers))
1202
1203 (define sbcl-slynk-indentation
1204 (package
1205 (inherit sbcl-slynk-arglists)
1206 (name "sbcl-slynk-indentation")
1207 (arguments
1208 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1209 ((#:asd-system-name _ #f) "slynk/indentation")))))
1210
1211 (define ecl-slynk-indentation
1212 (sbcl-package->ecl-package sbcl-slynk-indentation))
1213
1214 (define sbcl-slynk-retro
1215 (package
1216 (inherit sbcl-slynk-arglists)
1217 (name "sbcl-slynk-retro")
1218 (arguments
1219 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1220 ((#:asd-system-name _ #f) "slynk/retro")))))
1221
1222 (define ecl-slynk-retro
1223 (sbcl-package->ecl-package sbcl-slynk-retro))
1224
1225 (define slynk-systems
1226 '("slynk"
1227 "slynk-util"
1228 "slynk-arglists"
1229 "slynk-fancy-inspector"
1230 "slynk-package-fu"
1231 "slynk-mrepl"
1232 "slynk-profiler"
1233 "slynk-trace-dialog"
1234 "slynk-stickers"
1235 "slynk-indentation"
1236 "slynk-retro"))
1237
1238 (define-public sbcl-slynk
1239 (package
1240 (inherit sbcl-slynk-boot0)
1241 (name "sbcl-slynk")
1242 (inputs
1243 `(("slynk" ,sbcl-slynk-boot0)
1244 ("slynk-util" ,sbcl-slynk-util)
1245 ("slynk-arglists" ,sbcl-slynk-arglists)
1246 ("slynk-fancy-inspector" ,sbcl-slynk-fancy-inspector)
1247 ("slynk-package-fu" ,sbcl-slynk-package-fu)
1248 ("slynk-mrepl" ,sbcl-slynk-mrepl)
1249 ("slynk-profiler" ,sbcl-slynk-profiler)
1250 ("slynk-trace-dialog" ,sbcl-slynk-trace-dialog)
1251 ("slynk-stickers" ,sbcl-slynk-stickers)
1252 ("slynk-indentation" ,sbcl-slynk-indentation)
1253 ("slynk-retro" ,sbcl-slynk-retro)))
1254 (native-inputs `(("sbcl" ,sbcl)))
1255 (build-system trivial-build-system)
1256 (source #f)
1257 (outputs '("out" "image"))
1258 (arguments
1259 `(#:modules ((guix build union)
1260 (guix build utils)
1261 (guix build lisp-utils))
1262 #:builder
1263 (begin
1264 (use-modules (ice-9 match)
1265 (srfi srfi-1)
1266 (guix build union)
1267 (guix build lisp-utils))
1268
1269 (union-build
1270 (assoc-ref %outputs "out")
1271 (filter-map
1272 (match-lambda
1273 ((name . path)
1274 (if (string-prefix? "slynk" name) path #f)))
1275 %build-inputs))
1276
1277 (prepend-to-source-registry
1278 (string-append (assoc-ref %outputs "out") "//"))
1279
1280 (parameterize ((%lisp-type "sbcl")
1281 (%lisp (string-append (assoc-ref %build-inputs "sbcl")
1282 "/bin/sbcl")))
1283 (build-image (string-append
1284 (assoc-ref %outputs "image")
1285 "/bin/slynk")
1286 %outputs
1287 #:dependencies ',slynk-systems))
1288 #t)))))
1289
1290 (define-public ecl-slynk
1291 (package
1292 (inherit sbcl-slynk)
1293 (name "ecl-slynk")
1294 (inputs
1295 (map (match-lambda
1296 ((name pkg . _)
1297 (list name (sbcl-package->ecl-package pkg))))
1298 (package-inputs sbcl-slynk)))
1299 (native-inputs '())
1300 (outputs '("out"))
1301 (arguments
1302 '(#:modules ((guix build union))
1303 #:builder
1304 (begin
1305 (use-modules (ice-9 match)
1306 (guix build union))
1307 (match %build-inputs
1308 (((names . paths) ...)
1309 (union-build (assoc-ref %outputs "out")
1310 paths)
1311 #t)))))))
1312
1313 (define-public stumpwm+slynk
1314 (package
1315 (inherit stumpwm)
1316 (name "stumpwm-with-slynk")
1317 (outputs '("out"))
1318 (inputs
1319 `(("stumpwm" ,stumpwm "lib")
1320 ("slynk" ,sbcl-slynk)))
1321 (arguments
1322 (substitute-keyword-arguments (package-arguments stumpwm)
1323 ((#:phases phases)
1324 `(modify-phases ,phases
1325 (replace 'build-program
1326 (lambda* (#:key inputs outputs #:allow-other-keys)
1327 (let* ((out (assoc-ref outputs "out"))
1328 (program (string-append out "/bin/stumpwm")))
1329 (build-program program outputs
1330 #:entry-program '((stumpwm:stumpwm) 0)
1331 #:dependencies '("stumpwm"
1332 ,@slynk-systems)
1333 #:dependency-prefixes
1334 (map (lambda (input) (assoc-ref inputs input))
1335 '("stumpwm" "slynk")))
1336 ;; Remove unneeded file.
1337 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
1338 #t)))
1339 (delete 'copy-source)
1340 (delete 'build)
1341 (delete 'check)
1342 (delete 'create-asd-file)
1343 (delete 'cleanup)
1344 (delete 'create-symlinks)))))))
1345
1346 (define-public sbcl-stumpwm+slynk
1347 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
1348
1349 (define-public sbcl-parse-js
1350 (let ((commit "fbadc6029bec7039602abfc06c73bb52970998f6")
1351 (revision "1"))
1352 (package
1353 (name "sbcl-parse-js")
1354 (version (string-append "0.0.0-" revision "." (string-take commit 9)))
1355 (source
1356 (origin
1357 (method git-fetch)
1358 (uri (git-reference
1359 (url "http://marijn.haverbeke.nl/git/parse-js")
1360 (commit commit)))
1361 (file-name (string-append name "-" commit "-checkout"))
1362 (sha256
1363 (base32
1364 "1wddrnr5kiya5s3gp4cdq6crbfy9fqcz7fr44p81502sj3bvdv39"))))
1365 (build-system asdf-build-system/sbcl)
1366 (home-page "http://marijnhaverbeke.nl/parse-js/")
1367 (synopsis "Parse JavaScript")
1368 (description "Parse-js is a Common Lisp package for parsing
1369 JavaScript (ECMAScript 3). It has basic support for ECMAScript 5.")
1370 (license license:zlib))))
1371
1372 (define-public sbcl-parse-number
1373 (package
1374 (name "sbcl-parse-number")
1375 (version "1.5")
1376 (source
1377 (origin
1378 (method url-fetch)
1379 (uri (string-append "https://github.com/sharplispers/parse-number/"
1380 "archive/v" version ".tar.gz"))
1381 (file-name (string-append name "-" version ".tar.gz"))
1382 (sha256
1383 (base32
1384 "1k6s4v65ksc1j5i0dprvzfvj213v6nah7i0rgd0726ngfjisj9ir"))))
1385 (build-system asdf-build-system/sbcl)
1386 (home-page "http://www.cliki.net/PARSE-NUMBER")
1387 (synopsis "Parse numbers")
1388 (description "@code{parse-number} is a library of functions for parsing
1389 strings into one of the standard Common Lisp number types without using the
1390 reader. @code{parse-number} accepts an arbitrary string and attempts to parse
1391 the string into one of the standard Common Lisp number types, if possible, or
1392 else @code{parse-number} signals an error of type @code{invalid-number}.")
1393 (license license:bsd-3)))
1394
1395 (define-public sbcl-iterate
1396 (package
1397 (name "sbcl-iterate")
1398 ;; The latest official release (1.4.3) fails to build so we have to take
1399 ;; the current darcs tarball from quicklisp.
1400 (version "20160825")
1401 (source
1402 (origin
1403 (method url-fetch)
1404 (uri (string-append "http://beta.quicklisp.org/archive/iterate/"
1405 "2016-08-25/iterate-"
1406 version "-darcs.tgz"))
1407 (sha256
1408 (base32
1409 "0kvz16gnxnkdz0fy1x8y5yr28nfm7i2qpvix7mgwccdpjmsb4pgm"))))
1410 (build-system asdf-build-system/sbcl)
1411 (home-page "https://common-lisp.net/project/iterate/")
1412 (synopsis "Iteration construct for Common Lisp")
1413 (description "@code{iterate} is an iteration construct for Common Lisp.
1414 It is similar to the @code{CL:LOOP} macro, with these distinguishing marks:
1415
1416 @itemize
1417 @item it is extensible,
1418 @item it helps editors like Emacs indent iterate forms by having a more
1419 lisp-like syntax, and
1420 @item it isn't part of the ANSI standard for Common Lisp.
1421 @end itemize\n")
1422 (license license:expat)))
1423
1424 (define-public sbcl-cl-uglify-js
1425 ;; There have been many bug fixes since the 2010 release.
1426 (let ((commit "429c5e1d844e2f96b44db8fccc92d6e8e28afdd5")
1427 (revision "1"))
1428 (package
1429 (name "sbcl-cl-uglify-js")
1430 (version (string-append "0.1-" revision "." (string-take commit 9)))
1431 (source
1432 (origin
1433 (method git-fetch)
1434 (uri (git-reference
1435 (url "https://github.com/mishoo/cl-uglify-js.git")
1436 (commit commit)))
1437 (file-name (git-file-name name version))
1438 (sha256
1439 (base32
1440 "0k39y3c93jgxpr7gwz7w0d8yknn1fdnxrjhd03057lvk5w8js27a"))))
1441 (build-system asdf-build-system/sbcl)
1442 (inputs
1443 `(("sbcl-parse-js" ,sbcl-parse-js)
1444 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
1445 ("sbcl-cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
1446 ("sbcl-parse-number" ,sbcl-parse-number)
1447 ("sbcl-iterate" ,sbcl-iterate)))
1448 (home-page "https://github.com/mishoo/cl-uglify-js")
1449 (synopsis "JavaScript compressor library for Common Lisp")
1450 (description "This is a Common Lisp version of UglifyJS, a JavaScript
1451 compressor. It works on data produced by @code{parse-js} to generate a
1452 @dfn{minified} version of the code. Currently it can:
1453
1454 @itemize
1455 @item reduce variable names (usually to single letters)
1456 @item join consecutive @code{var} statements
1457 @item resolve simple binary expressions
1458 @item group most consecutive statements using the ``sequence'' operator (comma)
1459 @item remove unnecessary blocks
1460 @item convert @code{IF} expressions in various ways that result in smaller code
1461 @item remove some unreachable code
1462 @end itemize\n")
1463 (license license:zlib))))
1464
1465 (define-public uglify-js
1466 (package
1467 (inherit sbcl-cl-uglify-js)
1468 (name "uglify-js")
1469 (build-system trivial-build-system)
1470 (arguments
1471 `(#:modules ((guix build utils))
1472 #:builder
1473 (let* ((bin (string-append (assoc-ref %outputs "out") "/bin/"))
1474 (script (string-append bin "uglify-js")))
1475 (use-modules (guix build utils))
1476 (mkdir-p bin)
1477 (with-output-to-file script
1478 (lambda _
1479 (format #t "#!~a/bin/sbcl --script
1480 (require :asdf)
1481 (push (truename \"~a/lib/sbcl\") asdf:*central-registry*)"
1482 (assoc-ref %build-inputs "sbcl")
1483 (assoc-ref %build-inputs "sbcl-cl-uglify-js"))
1484 ;; FIXME: cannot use progn here because otherwise it fails to
1485 ;; find cl-uglify-js.
1486 (for-each
1487 write
1488 '(;; Quiet, please!
1489 (let ((*standard-output* (make-broadcast-stream))
1490 (*error-output* (make-broadcast-stream)))
1491 (asdf:load-system :cl-uglify-js))
1492 (let ((file (cadr *posix-argv*)))
1493 (if file
1494 (format t "~a"
1495 (cl-uglify-js:ast-gen-code
1496 (cl-uglify-js:ast-mangle
1497 (cl-uglify-js:ast-squeeze
1498 (with-open-file (in file)
1499 (parse-js:parse-js in))))
1500 :beautify nil))
1501 (progn
1502 (format *error-output*
1503 "Please provide a JavaScript file.~%")
1504 (sb-ext:exit :code 1))))))))
1505 (chmod script #o755)
1506 #t)))
1507 (inputs
1508 `(("sbcl" ,sbcl)
1509 ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js)))
1510 (synopsis "JavaScript compressor")))
1511
1512 (define-public confusion-mdl
1513 (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
1514 (package
1515 (name "confusion-mdl")
1516 (version "0.2")
1517 (source (origin
1518 (method git-fetch)
1519 (uri (git-reference
1520 (url (string-append "https://gitlab.com/emacsomancer/" name))
1521 (commit commit)))
1522 (sha256
1523 (base32
1524 "1zi8kflzvwqg97ha1sa5xjisbjs5z1mvbpa772vfxiv5ksnpxp0d"))
1525 (file-name (git-file-name name version))))
1526 (build-system gnu-build-system)
1527 (arguments
1528 `(#:tests? #f ; there are no tests
1529 #:phases
1530 (modify-phases %standard-phases
1531 (delete 'configure)
1532 (replace 'build
1533 (lambda* (#:key (make-flags '()) #:allow-other-keys)
1534 (apply invoke "make" "CC=gcc" make-flags)))
1535 (replace 'install
1536 (lambda* (#:key outputs #:allow-other-keys)
1537 (let* ((out (assoc-ref outputs "out"))
1538 (bin (string-append out "/bin")))
1539 (install-file "mdli" bin)
1540 #t))))))
1541 (native-inputs
1542 `(("perl" ,perl)))
1543 (inputs
1544 `(("libgc" ,libgc)))
1545 (synopsis "Interpreter for the MIT Design Language (MDL)")
1546 (description "MDL (the MIT Design Language) is a descendant of Lisp. It
1547 was originally developed in 1971 on the PDP-10 computer under the Incompatible
1548 Timesharing System (ITS) to provide high level language support for the
1549 Dynamic Modeling Group at MIT's Project MAC. Infocom built the original
1550 PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
1551 based on a subset of MDL. Confusion is a MDL interpreter that works just well
1552 enough to play the original mainframe Zork all the way through.")
1553 (home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
1554 (license license:gpl3+))))
1555
1556 (define-public sbcl-cl-strings
1557 (let ((revision "1")
1558 (commit "c5c5cbafbf3e6181d03c354d66e41a4f063f00ae"))
1559 (package
1560 (name "sbcl-cl-strings")
1561 (version (git-version "0.0.0" revision commit))
1562 (source
1563 (origin
1564 (method git-fetch)
1565 (uri (git-reference
1566 (url "https://github.com/diogoalexandrefranco/cl-strings")
1567 (commit commit)))
1568 (sha256
1569 (base32
1570 "00754mfaqallj480lwd346nkfb6ra8pa8xcxcylf4baqn604zlmv"))
1571 (file-name (string-append "cl-strings-" version "-checkout"))))
1572 (build-system asdf-build-system/sbcl)
1573 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
1574 (description
1575 "@command{cl-strings} is a small, portable, dependency-free set of
1576 utilities that make it even easier to manipulate text in Common Lisp. It has
1577 100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")
1578 (home-page "https://github.com/diogoalexandrefranco/cl-strings")
1579 (license license:expat))))
1580
1581 (define-public cl-strings
1582 (sbcl-package->cl-source-package sbcl-cl-strings))
1583
1584 (define-public ecl-cl-strings
1585 (sbcl-package->ecl-package sbcl-cl-strings))
1586
1587 (define-public sbcl-trivial-features
1588 (package
1589 (name "sbcl-trivial-features")
1590 (version "0.8")
1591 (source
1592 (origin
1593 (method url-fetch)
1594 (uri (string-append
1595 "https://github.com/trivial-features/trivial-features/archive/v"
1596 version ".tar.gz"))
1597 (sha256
1598 (base32 "0db1awn6jyhcfhyfvpjvfziprmq85cigf19mwbvaprhblydsag3c"))
1599 (file-name (string-append "trivial-features-" version ".tar.gz"))))
1600 (build-system asdf-build-system/sbcl)
1601 (arguments '(#:tests? #f))
1602 (home-page "http://cliki.net/trivial-features")
1603 (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp")
1604 (description "Trivial-features ensures that @code{*FEATURES*} is
1605 consistent across multiple Common Lisp implementations.")
1606 (license license:expat)))
1607
1608 (define-public cl-trivial-features
1609 (sbcl-package->cl-source-package sbcl-trivial-features))
1610
1611 (define-public ecl-trivial-features
1612 (sbcl-package->ecl-package sbcl-trivial-features))
1613
1614 (define-public sbcl-hu.dwim.asdf
1615 (let ((commit "170b0e4fdde3df0bc537327e7600575daac9e141"))
1616 (package
1617 (name "sbcl-hu.dwim.asdf")
1618 (version (git-version "0.0.0" "1" commit))
1619 (source
1620 (origin
1621 (method git-fetch)
1622 (uri
1623 (git-reference
1624 (url "https://github.com/nixeagle/hu.dwim.asdf")
1625 (commit commit)))
1626 (sha256
1627 (base32 "10ax7p8y6vjqxzcq125p62kf68zi455a65ysgk0kl1f2v839c33v"))
1628 (file-name (git-file-name "hu.dwim.asdf" version))))
1629 (build-system asdf-build-system/sbcl)
1630 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.asdf")
1631 (synopsis "Extensions to ASDF")
1632 (description "Various ASDF extensions such as attached test and
1633 documentation system, explicit development support, etc.")
1634 (license license:public-domain))))
1635
1636 (define-public cl-hu.dwim.asdf
1637 (sbcl-package->cl-source-package sbcl-hu.dwim.asdf))
1638
1639 (define-public ecl-hu.dwim.asdf
1640 (sbcl-package->ecl-package sbcl-hu.dwim.asdf))
1641
1642 (define-public sbcl-hu.dwim.stefil
1643 (let ((commit "ab6d1aa8995878a1b66d745dfd0ba021090bbcf9"))
1644 (package
1645 (name "sbcl-hu.dwim.stefil")
1646 (version (git-version "0.0.0" "1" commit))
1647 (source
1648 (origin
1649 (method git-fetch)
1650 (uri
1651 (git-reference
1652 (url "https://gitlab.common-lisp.net/xcvb/hu.dwim.stefil.git")
1653 (commit commit)))
1654 (sha256
1655 (base32 "1d8yccw65zj3zh46cbi3x6nmn1dwdb76s9d0av035077mvyirqqp"))
1656 (file-name (git-file-name "hu.dwim.stefil" version))))
1657 (build-system asdf-build-system/sbcl)
1658 (native-inputs
1659 `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
1660 (inputs
1661 `(("sbcl-alexandria" ,sbcl-alexandria)))
1662 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.stefil")
1663 (synopsis "Simple test framework")
1664 (description "Stefil is a simple test framework for Common Lisp,
1665 with a focus on interactive development.")
1666 (license license:public-domain))))
1667
1668 (define-public cl-hu.dwim.stefil
1669 (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
1670
1671 (define-public ecl-hu.dwim.stefil
1672 (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
1673
1674 (define-public sbcl-babel
1675 (package
1676 (name "sbcl-babel")
1677 (version "0.5.0")
1678 (source
1679 (origin
1680 (method url-fetch)
1681 (uri (string-append
1682 "https://github.com/cl-babel/babel/archive/v"
1683 version ".tar.gz"))
1684 (sha256
1685 (base32 "189kgbmslh36xx0d2i1g6a7mcvjryvjzkdlnhilqy5xs7hkyqirq"))
1686 (file-name (string-append name "-" version ".tar.gz"))))
1687 (build-system asdf-build-system/sbcl)
1688 (native-inputs
1689 `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
1690 (inputs
1691 `(("sbcl-alexandria" ,sbcl-alexandria)
1692 ("sbcl-trivial-features" ,sbcl-trivial-features)))
1693 (home-page "https://common-lisp.net/project/babel/")
1694 (synopsis "Charset encoding and decoding library")
1695 (description "Babel is a charset encoding and decoding library, not unlike
1696 GNU libiconv, but completely written in Common Lisp.")
1697 (license license:expat)))
1698
1699 (define-public cl-babel
1700 (sbcl-package->cl-source-package sbcl-babel))
1701
1702 (define-public ecl-babel
1703 (sbcl-package->ecl-package sbcl-babel))
1704
1705 (define-public sbcl-cl-yacc
1706 (package
1707 (name "sbcl-cl-yacc")
1708 (version "0.3")
1709 (source
1710 (origin
1711 (method git-fetch)
1712 (uri (git-reference
1713 (url "https://github.com/jech/cl-yacc")
1714 (commit (string-append "cl-yacc-" version))))
1715 (sha256
1716 (base32
1717 "16946pzf8vvadnyfayvj8rbh4zjzw90h0azz2qk1mxrvhh5wklib"))
1718 (file-name (string-append "cl-yacc-" version "-checkout"))))
1719 (build-system asdf-build-system/sbcl)
1720 (arguments
1721 `(#:asd-file "yacc.asd"
1722 #:asd-system-name "yacc"))
1723 (synopsis "LALR(1) parser generator for Common Lisp, similar in spirit to Yacc")
1724 (description
1725 "CL-Yacc is a LALR(1) parser generator for Common Lisp, similar in spirit
1726 to AT&T Yacc, Berkeley Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm.
1727
1728 CL-Yacc uses the algorithm due to Aho and Ullman, which is the one also used
1729 by AT&T Yacc, Berkeley Yacc and Zebu. It does not use the faster algorithm due
1730 to DeRemer and Pennello, which is used by Bison and lalr.scm (not lalr.cl).")
1731 (home-page "https://www.irif.fr/~jch//software/cl-yacc/")
1732 (license license:expat)))
1733
1734 (define-public cl-yacc
1735 (sbcl-package->cl-source-package sbcl-cl-yacc))
1736
1737 (define-public ecl-cl-yacc
1738 (sbcl-package->ecl-package sbcl-cl-yacc))
1739
1740 (define-public sbcl-jpl-util
1741 (let ((commit "0311ed374e19a49d43318064d729fe3abd9a3b62"))
1742 (package
1743 (name "sbcl-jpl-util")
1744 (version "20151005")
1745 (source
1746 (origin
1747 (method git-fetch)
1748 (uri (git-reference
1749 ;; Quicklisp uses this fork.
1750 (url "https://github.com/hawkir/cl-jpl-util")
1751 (commit commit)))
1752 (file-name
1753 (git-file-name "jpl-util" version))
1754 (sha256
1755 (base32
1756 "0nc0rk9n8grkg3045xsw34whmcmddn2sfrxki4268g7kpgz0d2yz"))))
1757 (build-system asdf-build-system/sbcl)
1758 (synopsis "Collection of Common Lisp utility functions and macros")
1759 (description
1760 "@command{cl-jpl-util} is a collection of Common Lisp utility functions
1761 and macros, primarily for software projects written in CL by the author.")
1762 (home-page "https://www.thoughtcrime.us/software/cl-jpl-util/")
1763 (license license:isc))))
1764
1765 (define-public cl-jpl-util
1766 (sbcl-package->cl-source-package sbcl-jpl-util))
1767
1768 (define-public ecl-jpl-util
1769 (sbcl-package->ecl-package sbcl-jpl-util))
1770
1771 (define-public sbcl-jpl-queues
1772 (package
1773 (name "sbcl-jpl-queues")
1774 (version "0.1")
1775 (source
1776 (origin
1777 (method url-fetch)
1778 (uri (string-append
1779 "http://www.thoughtcrime.us/software/jpl-queues/jpl-queues-"
1780 version
1781 ".tar.gz"))
1782 (sha256
1783 (base32
1784 "1wvvv7j117h9a42qaj1g4fh4mji28xqs7s60rn6d11gk9jl76h96"))))
1785 (build-system asdf-build-system/sbcl)
1786 (inputs
1787 `(("jpl-util" ,sbcl-jpl-util)
1788 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
1789 (arguments
1790 ;; Tests seem to be broken.
1791 `(#:tests? #f))
1792 (synopsis "Common Lisp library implementing a few different kinds of queues")
1793 (description
1794 "A Common Lisp library implementing a few different kinds of queues:
1795
1796 @itemize
1797 @item Bounded and unbounded FIFO queues.
1798 @item Lossy bounded FIFO queues that drop elements when full.
1799 @item Unbounded random-order queues that use less memory than unbounded FIFO queues.
1800 @end itemize
1801
1802 Additionally, a synchronization wrapper is provided to make any queue
1803 conforming to the @command{jpl-queues} API thread-safe for lightweight
1804 multithreading applications. (See Calispel for a more sophisticated CL
1805 multithreaded message-passing library with timeouts and alternation among
1806 several blockable channels.)")
1807 (home-page "https://www.thoughtcrime.us/software/jpl-queues/")
1808 (license license:isc)))
1809
1810 (define-public cl-jpl-queues
1811 (sbcl-package->cl-source-package sbcl-jpl-queues))
1812
1813 (define-public ecl-jpl-queues
1814 (sbcl-package->ecl-package sbcl-jpl-queues))
1815
1816 (define-public sbcl-eos
1817 (let ((commit "b0faca83781ead9a588661e37bd47f90362ccd94"))
1818 (package
1819 (name "sbcl-eos")
1820 (version (git-version "0.0.0" "1" commit))
1821 (source
1822 (origin
1823 (method git-fetch)
1824 (uri (git-reference
1825 (url "https://github.com/adlai/Eos")
1826 (commit commit)))
1827 (sha256
1828 (base32
1829 "1bq8cfg087iyxmxi1mwgx5cfgy3b8ydrf81xljcis8qbgb2vszph"))
1830 (file-name (git-file-name "eos" version))))
1831 (build-system asdf-build-system/sbcl)
1832 (synopsis "Unit Testing for Common Lisp")
1833 (description
1834 "Eos was a unit testing library for Common Lisp.
1835 It began as a fork of FiveAM; however, FiveAM development has continued, while
1836 that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
1837 (home-page "https://github.com/adlai/Eos")
1838 (license license:expat))))
1839
1840 (define-public cl-eos
1841 (sbcl-package->cl-source-package sbcl-eos))
1842
1843 (define-public ecl-eos
1844 (sbcl-package->ecl-package sbcl-eos))
1845
1846 (define-public sbcl-esrap
1847 (let ((commit "133be8b05c2aae48696fe5b739eea2fa573fa48d"))
1848 (package
1849 (name "sbcl-esrap")
1850 (version (git-version "0.0.0" "1" commit))
1851 (source
1852 (origin
1853 (method git-fetch)
1854 (uri (git-reference
1855 (url "https://github.com/nikodemus/esrap")
1856 (commit commit)))
1857 (sha256
1858 (base32
1859 "02d5clihsdryhf7pix8c5di2571fdsffh75d40fkzhws90r5mksl"))
1860 (file-name (git-file-name "esrap" version))))
1861 (build-system asdf-build-system/sbcl)
1862 (native-inputs
1863 `(("eos" ,sbcl-eos))) ;For testing only.
1864 (inputs
1865 `(("alexandria" ,sbcl-alexandria)))
1866 (synopsis "Common Lisp packrat parser")
1867 (description
1868 "A packrat parser for Common Lisp.
1869 In addition to regular Packrat / Parsing Grammar / TDPL features ESRAP supports:
1870
1871 @itemize
1872 @item dynamic redefinition of nonterminals
1873 @item inline grammars
1874 @item semantic predicates
1875 @item introspective facilities (describing grammars, tracing, setting breaks)
1876 @end itemize\n")
1877 (home-page "https://nikodemus.github.io/esrap/")
1878 (license license:expat))))
1879
1880 (define-public cl-esrap
1881 (sbcl-package->cl-source-package sbcl-esrap))
1882
1883 (define-public ecl-esrap
1884 (sbcl-package->ecl-package sbcl-esrap))
1885
1886 (define-public sbcl-split-sequence
1887 (package
1888 (name "sbcl-split-sequence")
1889 (version "1.4.1")
1890 (source
1891 (origin
1892 (method git-fetch)
1893 (uri (git-reference
1894 (url "https://github.com/sharplispers/split-sequence")
1895 (commit (string-append "v" version))))
1896 (sha256
1897 (base32
1898 "0c3zp6b7fmmp93sfhq112ind4zkld49ycw68z409xpnz3gc0wpf0"))
1899 (file-name (git-file-name "split-sequence" version))))
1900 (build-system asdf-build-system/sbcl)
1901 (arguments
1902 ;; TODO: Tests seem to be broken.
1903 ;; https://github.com/sharplispers/split-sequence/issues/8
1904 `(#:tests? #f))
1905 (synopsis "Member of the Common Lisp Utilities family of programs")
1906 (description
1907 "Splits sequence into a list of subsequences delimited by objects
1908 satisfying the test.")
1909 (home-page "https://cliki.net/split-sequence")
1910 (license license:expat)))
1911
1912 (define-public cl-split-sequence
1913 (sbcl-package->cl-source-package sbcl-split-sequence))
1914
1915 (define-public ecl-split-sequence
1916 (sbcl-package->ecl-package sbcl-split-sequence))
1917
1918 (define-public sbcl-html-encode
1919 (package
1920 (name "sbcl-html-encode")
1921 (version "1.2")
1922 (source
1923 (origin
1924 (method url-fetch)
1925 (uri (string-append
1926 "http://beta.quicklisp.org/archive/html-encode/2010-10-06/html-encode-"
1927 version ".tgz"))
1928 (sha256
1929 (base32
1930 "06mf8wn95yf5swhmzk4vp0xr4ylfl33dgfknkabbkd8n6jns8gcf"))
1931 (file-name (string-append "colorize" version "-checkout"))))
1932 (build-system asdf-build-system/sbcl)
1933 (synopsis "Common Lisp library for encoding text in various web-savvy encodings")
1934 (description
1935 "A library for encoding text in various web-savvy encodings.")
1936 (home-page "http://quickdocs.org/html-encode/")
1937 (license license:expat)))
1938
1939 (define-public cl-html-encode
1940 (sbcl-package->cl-source-package sbcl-html-encode))
1941
1942 (define-public ecl-html-encode
1943 (sbcl-package->ecl-package sbcl-html-encode))
1944
1945 (define-public sbcl-colorize
1946 (let ((commit "ea676b584e0899cec82f21a9e6871172fe3c0eb5"))
1947 (package
1948 (name "sbcl-colorize")
1949 (version (git-version "0.0.0" "1" commit))
1950 (source
1951 (origin
1952 (method git-fetch)
1953 (uri (git-reference
1954 (url "https://github.com/kingcons/colorize")
1955 (commit commit)))
1956 (sha256
1957 (base32
1958 "1pdg4kiaczmr3ivffhirp7m3lbr1q27rn7dhaay0vwghmi31zcw9"))
1959 (file-name (git-file-name "colorize" version))))
1960 (build-system asdf-build-system/sbcl)
1961 (inputs
1962 `(("alexandria" ,sbcl-alexandria)
1963 ("split-sequence" ,sbcl-split-sequence)
1964 ("html-encode" ,sbcl-html-encode)))
1965 (synopsis "Common Lisp for syntax highlighting")
1966 (description
1967 "@command{colorize} is a Lisp library for syntax highlighting
1968 supporting the following languages: Common Lisp, Emacs Lisp, Scheme, Clojure,
1969 C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
1970 (home-page "https://github.com/kingcons/colorize")
1971 ;; TODO: Missing license?
1972 (license license:expat))))
1973
1974 (define-public cl-colorize
1975 (sbcl-package->cl-source-package sbcl-colorize))
1976
1977 (define-public ecl-colorize
1978 (sbcl-package->ecl-package sbcl-colorize))
1979
1980 (define-public sbcl-3bmd
1981 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
1982 (package
1983 (name "sbcl-3bmd")
1984 (version (git-version "0.0.0" "1" commit))
1985 (source
1986 (origin
1987 (method git-fetch)
1988 (uri (git-reference
1989 (url "https://github.com/3b/3bmd")
1990 (commit commit)))
1991 (sha256
1992 (base32
1993 "1rgv3gi7wf963ikmmpk132wgn0icddf226gq3bmcnk1fr3v9gf2f"))
1994 (file-name (git-file-name "3bmd" version))))
1995 (build-system asdf-build-system/sbcl)
1996 (arguments
1997 ;; FIXME: We need to specify the name because the build-system thinks
1998 ;; "3" is a version marker.
1999 `(#:asd-system-name "3bmd"))
2000 (inputs
2001 `(("esrap" ,sbcl-esrap)
2002 ("split-sequence" ,sbcl-split-sequence)))
2003 (synopsis "Markdown processor in Command Lisp using esrap parser")
2004 (description
2005 "Common Lisp Markdown -> HTML converter, using @command{esrap} for
2006 parsing, and grammar based on @command{peg-markdown}.")
2007 (home-page "https://github.com/3b/3bmd")
2008 (license license:expat))))
2009
2010 (define-public cl-3bmd
2011 (sbcl-package->cl-source-package sbcl-3bmd))
2012
2013 (define-public ecl-3bmd
2014 (sbcl-package->ecl-package sbcl-3bmd))
2015
2016 (define-public sbcl-3bmd-ext-code-blocks
2017 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
2018 (package
2019 (inherit sbcl-3bmd)
2020 (name "sbcl-3bmd-ext-code-blocks")
2021 (arguments
2022 `(#:asd-system-name "3bmd-ext-code-blocks"
2023 #:asd-file "3bmd-ext-code-blocks.asd"))
2024 (inputs
2025 `(("3bmd" ,sbcl-3bmd)
2026 ("colorize" ,sbcl-colorize)))
2027 (synopsis "3bmd extension which adds support for GitHub-style fenced
2028 code blocks")
2029 (description
2030 "3bmd extension which adds support for GitHub-style fenced code blocks,
2031 with @command{colorize} support."))))
2032
2033 (define-public cl-3bmd-ext-code-blocks
2034 (sbcl-package->cl-source-package sbcl-3bmd-ext-code-blocks))
2035
2036 (define-public ecl-3bmd-ext-code-blocks
2037 (sbcl-package->ecl-package sbcl-3bmd-ext-code-blocks))
2038
2039 (define-public sbcl-cl-fad
2040 (package
2041 (name "sbcl-cl-fad")
2042 (version "0.7.5")
2043 (source
2044 (origin
2045 (method git-fetch)
2046 (uri (git-reference
2047 (url "https://github.com/edicl/cl-fad/")
2048 (commit (string-append "v" version))))
2049 (sha256
2050 (base32
2051 "1l1qmk9z57q84bz5r04sxsksggsnd7dgkxlybzh9imz6ma7sm52m"))
2052 (file-name (string-append "cl-fad" version "-checkout"))))
2053 (build-system asdf-build-system/sbcl)
2054 (inputs
2055 `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
2056 (synopsis "Portable pathname library for Common Lisp")
2057 (description
2058 "CL-FAD (for \"Files and Directories\") is a thin layer atop Common
2059 Lisp's standard pathname functions. It is intended to provide some
2060 unification between current CL implementations on Windows, OS X, Linux, and
2061 Unix. Most of the code was written by Peter Seibel for his book Practical
2062 Common Lisp.")
2063 (home-page "https://edicl.github.io/cl-fad/")
2064 (license license:bsd-2)))
2065
2066 (define-public cl-fad
2067 (sbcl-package->cl-source-package sbcl-cl-fad))
2068
2069 (define-public ecl-cl-fad
2070 (sbcl-package->ecl-package sbcl-cl-fad))
2071
2072 (define-public sbcl-rt
2073 (package
2074 (name "sbcl-rt")
2075 (version "1990.12.19")
2076 (source
2077 (origin
2078 (method url-fetch)
2079 (uri (string-append "http://beta.quicklisp.org/archive/rt/2010-10-06/rt-"
2080 "20101006-git" ".tgz"))
2081 (sha256
2082 (base32
2083 "1jncar0xwkqk8yrc2dln389ivvgzs7ijdhhs3zpfyi5d21f0qa1v"))))
2084 (build-system asdf-build-system/sbcl)
2085 (synopsis "MIT Regression Tester")
2086 (description
2087 "RT provides a framework for writing regression test suites.")
2088 (home-page "https://github.com/sharplispers/nibbles")
2089 (license license:unlicense)))
2090
2091 (define-public cl-rt
2092 (sbcl-package->cl-source-package sbcl-rt))
2093
2094 (define-public ecl-rt
2095 (sbcl-package->ecl-package sbcl-rt))
2096
2097 (define-public sbcl-nibbles
2098 (package
2099 (name "sbcl-nibbles")
2100 (version "0.14")
2101 (source
2102 (origin
2103 (method git-fetch)
2104 (uri (git-reference
2105 (url "https://github.com/sharplispers/nibbles/")
2106 (commit (string-append "v" version))))
2107 (sha256
2108 (base32
2109 "1v7qfgpvdr6nz7v63dj69d26dis0kff3rd8xamr1llfdvza2pm8f"))
2110 (file-name (git-file-name "nibbles" version))))
2111 (build-system asdf-build-system/sbcl)
2112 (native-inputs
2113 ;; Tests only.
2114 `(("rt" ,sbcl-rt)))
2115 (synopsis "Common Lisp library for accessing octet-addressed blocks of data")
2116 (description
2117 "When dealing with network protocols and file formats, it's common to
2118 have to read or write 16-, 32-, or 64-bit datatypes in signed or unsigned
2119 flavors. Common Lisp sort of supports this by specifying :element-type for
2120 streams, but that facility is underspecified and there's nothing similar for
2121 read/write from octet vectors. What most people wind up doing is rolling their
2122 own small facility for their particular needs and calling it a day.
2123
2124 This library attempts to be comprehensive and centralize such
2125 facilities. Functions to read 16-, 32-, and 64-bit quantities from octet
2126 vectors in signed or unsigned flavors are provided; these functions are also
2127 SETFable. Since it's sometimes desirable to read/write directly from streams,
2128 functions for doing so are also provided. On some implementations,
2129 reading/writing IEEE singles/doubles (i.e. single-float and double-float) will
2130 also be supported.")
2131 (home-page "https://github.com/sharplispers/nibbles")
2132 (license license:bsd-3)))
2133
2134 (define-public cl-nibbles
2135 (sbcl-package->cl-source-package sbcl-nibbles))
2136
2137 (define-public ecl-nibbles
2138 (sbcl-package->ecl-package sbcl-nibbles))
2139
2140 (define-public sbcl-ironclad
2141 (package
2142 (name "sbcl-ironclad")
2143 (version "0.42")
2144 (source
2145 (origin
2146 (method git-fetch)
2147 (uri (git-reference
2148 (url "https://github.com/sharplispers/ironclad/")
2149 (commit (string-append "v" version))))
2150 (sha256
2151 (base32
2152 "1wjcb9vpybxjrmch7f7s78a5abxmnknbd4fl49dl5lz8a3fc8vf0"))
2153 (file-name (string-append "ironblad" version "-checkout"))))
2154 (build-system asdf-build-system/sbcl)
2155 (native-inputs
2156 ;; Tests only.
2157 `(("rt" ,sbcl-rt)))
2158 (inputs
2159 `(("flexi-streams" ,sbcl-flexi-streams)
2160 ("nibbles" ,sbcl-nibbles)))
2161 (synopsis "Cryptographic toolkit written in Common Lisp")
2162 (description
2163 "Ironclad is a cryptography library written entirely in Common Lisp.
2164 It includes support for several popular ciphers, digests, MACs and public key
2165 cryptography algorithms. For several implementations that support Gray
2166 streams, support is included for convenient stream wrappers.")
2167 (home-page "https://github.com/sharplispers/ironclad")
2168 (license license:bsd-3)))
2169
2170 (define-public cl-ironclad
2171 (sbcl-package->cl-source-package sbcl-ironclad))
2172
2173 (define-public ecl-ironclad
2174 (sbcl-package->ecl-package sbcl-ironclad))
2175
2176 (define-public sbcl-named-readtables
2177 (let ((commit "4dfb89fa1af6b305b6492b8af042f5190c11e9fc")
2178 (revision "1"))
2179 (package
2180 (name "sbcl-named-readtables")
2181 (version (string-append "0.9-" revision "." (string-take commit 7)))
2182 (source
2183 (origin
2184 (method git-fetch)
2185 (uri (git-reference
2186 (url "https://github.com/melisgl/named-readtables.git")
2187 (commit commit)))
2188 (sha256
2189 (base32 "083kgh5462iqbb4px6kq8s7sggvpvkm36hx4qi9rnaw53b6ilqkk"))
2190 (file-name (git-file-name "named-readtables" version))))
2191 (build-system asdf-build-system/sbcl)
2192 (arguments
2193 ;; Tests seem to be broken.
2194 `(#:tests? #f))
2195 (home-page "https://github.com/melisgl/named-readtables/")
2196 (synopsis "Library that creates a namespace for named readtables")
2197 (description "Named readtables is a library that creates a namespace for
2198 named readtables, which is akin to package namespacing in Common Lisp.")
2199 (license license:bsd-3))))
2200
2201 (define-public cl-named-readtables
2202 (sbcl-package->cl-source-package sbcl-named-readtables))
2203
2204 (define-public ecl-named-readtables
2205 (sbcl-package->ecl-package sbcl-named-readtables))
2206
2207 (define-public sbcl-pythonic-string-reader
2208 (let ((commit "47a70ba1e32362e03dad6ef8e6f36180b560f86a"))
2209 (package
2210 (name "sbcl-pythonic-string-reader")
2211 (version (git-version "0.0.0" "1" commit))
2212 (source
2213 (origin
2214 (method git-fetch)
2215 (uri (git-reference
2216 (url "https://github.com/smithzvk/pythonic-string-reader/")
2217 (commit commit)))
2218 (sha256
2219 (base32 "1b5iryqw8xsh36swckmz8rrngmc39k92si33fgy5pml3n9l5rq3j"))
2220 (file-name (git-file-name "pythonic-string-reader" version))))
2221 (build-system asdf-build-system/sbcl)
2222 (inputs
2223 `(("named-readtables" ,sbcl-named-readtables)))
2224 (home-page "https://github.com/smithzvk/pythonic-string-reader")
2225 (synopsis "Read table modification inspired by Python's three quote strings")
2226 (description "This piece of code sets up some reader macros that make it
2227 simpler to input string literals which contain backslashes and double quotes
2228 This is very useful for writing complicated docstrings and, as it turns out,
2229 writing code that contains string literals that contain code themselves.")
2230 (license license:bsd-3))))
2231
2232 (define-public cl-pythonic-string-reader
2233 (sbcl-package->cl-source-package sbcl-pythonic-string-reader))
2234
2235 (define-public ecl-pythonic-string-reader
2236 (sbcl-package->ecl-package sbcl-pythonic-string-reader))
2237
2238 (define-public sbcl-slime-swank
2239 (package
2240 (name "sbcl-slime-swank")
2241 (version "2.22")
2242 (source
2243 (origin
2244 (file-name (string-append name "-" version ".tar.gz"))
2245 (method git-fetch)
2246 (uri (git-reference
2247 ;; (url "https://github.com/slime/slime/")
2248 ;; (commit "841f61467c03dea9f38ff9d5af0e21a8aa29e8f7")
2249 ;; REVIEW: Do we need sionescu's patch to package SWANK?
2250 (url "https://github.com/sionescu/slime/")
2251 ;; (commit "swank-asdf")
2252 (commit "2f7c3fcb3ac7d50d844d5c6ca0e89b52a45e1d3a")))
2253 (sha256
2254 (base32
2255 ;; "065bc4y6iskazdfwlhgcjlzg9bi2hyjbhmyjw3461506pgkj08vi"
2256 "0pkmg94wn4ii1zhlrncn44mdc5i6c5v0i9gbldx4dwl2yy7ibz5c"))
2257 (modules '((guix build utils)))
2258 (snippet
2259 '(begin
2260 (substitute* "contrib/swank-listener-hooks.lisp"
2261 ((":compile-toplevel :load-toplevel ") ""))
2262 (substitute* "contrib/swank-presentations.lisp"
2263 ((":compile-toplevel :load-toplevel ") ""))
2264 (substitute* "swank.asd"
2265 ((":file \"packages\".*" all)
2266 (string-append all "(:file \"swank-loader-asdf\")\n")))
2267 (substitute* "swank-loader-asdf.lisp"
2268 ((":common-lisp" all) (string-append all " #:asdf")))
2269 #t))))
2270 (build-system asdf-build-system/sbcl)
2271 (arguments
2272 `(#:asd-file "swank.asd"
2273 #:asd-system-name "swank"))
2274 (home-page "https://github.com/slime/slime")
2275 (synopsis "Common Lisp Swank server")
2276 (description
2277 "This is only useful if you want to start a Swank server in a Lisp
2278 processes that doesn't run under Emacs. Lisp processes created by
2279 @command{M-x slime} automatically start the server.")
2280 (license (list license:gpl2+ license:public-domain))))
2281
2282 (define-public sbcl-mgl-pax
2283 (let ((commit "818448418d6b9de74620f606f5b23033c6082769"))
2284 (package
2285 (name "sbcl-mgl-pax")
2286 (version (git-version "0.0.0" "1" commit))
2287 (source
2288 (origin
2289 (method git-fetch)
2290 (uri (git-reference
2291 (url "https://github.com/melisgl/mgl-pax")
2292 (commit commit)))
2293 (sha256
2294 (base32
2295 "1p97zfkh130bdxqqxwaw2j9psv58751wakx7czbfpq410lg7dd7i"))
2296 (file-name (git-file-name "mgl-pax" version))))
2297 (build-system asdf-build-system/sbcl)
2298 (inputs
2299 `(("3bmd" ,sbcl-3bmd)
2300 ("3bmd-ext-code-blocks" ,sbcl-3bmd-ext-code-blocks)
2301 ("babel" ,sbcl-babel)
2302 ("cl-fad" ,sbcl-cl-fad)
2303 ("ironclad" ,sbcl-ironclad)
2304 ("named-readtables" ,sbcl-named-readtables)
2305 ("pythonic-string-reader" ,sbcl-pythonic-string-reader)
2306 ("swank" ,sbcl-slime-swank)))
2307 (synopsis "Exploratory programming environment and documentation generator")
2308 (description
2309 "PAX provides an extremely poor man's Explorable Programming
2310 environment. Narrative primarily lives in so called sections that mix markdown
2311 docstrings with references to functions, variables, etc, all of which should
2312 probably have their own docstrings.
2313
2314 The primary focus is on making code easily explorable by using SLIME's
2315 @command{M-.} (@command{slime-edit-definition}). See how to enable some
2316 fanciness in Emacs Integration. Generating documentation from sections and all
2317 the referenced items in Markdown or HTML format is also implemented.
2318
2319 With the simplistic tools provided, one may accomplish similar effects as with
2320 Literate Programming, but documentation is generated from code, not vice versa
2321 and there is no support for chunking yet. Code is first, code must look
2322 pretty, documentation is code.")
2323 (home-page "http://quotenil.com/")
2324 (license license:expat))))
2325
2326 (define-public cl-mgl-pax
2327 (sbcl-package->cl-source-package sbcl-mgl-pax))
2328
2329 (define-public ecl-mgl-pax
2330 (sbcl-package->ecl-package sbcl-mgl-pax))
2331
2332 (define-public sbcl-lisp-unit
2333 (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
2334 (package
2335 (name "sbcl-lisp-unit")
2336 (version (git-version "0.0.0" "1" commit))
2337 (source
2338 (origin
2339 (method git-fetch)
2340 (uri (git-reference
2341 (url "https://github.com/OdonataResearchLLC/lisp-unit")
2342 (commit commit)))
2343 (sha256
2344 (base32
2345 "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
2346 (file-name (git-file-name "lisp-unit" version))))
2347 (build-system asdf-build-system/sbcl)
2348 (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
2349 (description
2350 "@command{lisp-unit} is a Common Lisp library that supports unit
2351 testing. It is an extension of the library written by Chris Riesbeck.")
2352 (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
2353 (license license:expat))))
2354
2355 (define-public cl-lisp-unit
2356 (sbcl-package->cl-source-package sbcl-lisp-unit))
2357
2358 (define-public ecl-lisp-unit
2359 (sbcl-package->ecl-package sbcl-lisp-unit))
2360
2361 (define-public sbcl-anaphora
2362 (package
2363 (name "sbcl-anaphora")
2364 (version "0.9.6")
2365 (source
2366 (origin
2367 (method git-fetch)
2368 (uri (git-reference
2369 (url "https://github.com/tokenrove/anaphora")
2370 (commit version)))
2371 (sha256
2372 (base32
2373 "19wfrk3asimznkli0x2rfy637hwpdgqyvwj3vhq9x7vjvyf5vv6x"))
2374 (file-name (git-file-name "anaphora" version))))
2375 (build-system asdf-build-system/sbcl)
2376 (native-inputs
2377 `(("rt" ,sbcl-rt)))
2378 (synopsis "The anaphoric macro collection from Hell")
2379 (description
2380 "Anaphora is the anaphoric macro collection from Hell: it includes many
2381 new fiends in addition to old friends like @command{aif} and
2382 @command{awhen}.")
2383 (home-page "https://github.com/tokenrove/anaphora")
2384 (license license:public-domain)))
2385
2386 (define-public cl-anaphora
2387 (sbcl-package->cl-source-package sbcl-anaphora))
2388
2389 (define-public ecl-anaphora
2390 (sbcl-package->ecl-package sbcl-anaphora))
2391
2392 (define-public sbcl-lift
2393 (let ((commit "7d49a66c62759535624037826891152223d4206c"))
2394 (package
2395 (name "sbcl-lift")
2396 (version (git-version "0.0.0" "1" commit))
2397 (source
2398 (origin
2399 (method git-fetch)
2400 (uri (git-reference
2401 (url "https://github.com/gwkkwg/lift")
2402 (commit commit)))
2403 (sha256
2404 (base32
2405 "127v5avpz1i4m0lkaxqrq8hrl69rdazqaxf6s8awf0nd7wj2g4dp"))
2406 (file-name (git-file-name "lift" version))
2407 (modules '((guix build utils)))
2408 (snippet
2409 ;; Don't keep the bundled website
2410 `(begin
2411 (delete-file-recursively "website")
2412 #t))))
2413 (build-system asdf-build-system/sbcl)
2414 (arguments
2415 ;; The tests require a debugger, but we run with the debugger disabled.
2416 '(#:tests? #f))
2417 (synopsis "LIsp Framework for Testing")
2418 (description
2419 "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
2420 Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
2421 testcases are organized into hierarchical testsuites each of which can have
2422 its own fixture. When run, a testcase can succeed, fail, or error. LIFT
2423 supports randomized testing, benchmarking, profiling, and reporting.")
2424 (home-page "https://github.com/gwkkwg/lift")
2425 (license license:expat))))
2426
2427 (define-public cl-lift
2428 (sbcl-package->cl-source-package sbcl-lift))
2429
2430 (define-public ecl-lift
2431 (sbcl-package->ecl-package sbcl-lift))
2432
2433 (define-public sbcl-let-plus
2434 (let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb"))
2435 (package
2436 (name "sbcl-let-plus")
2437 (version (git-version "0.0.0" "1" commit))
2438 (source
2439 (origin
2440 (method git-fetch)
2441 (uri (git-reference
2442 (url "https://github.com/sharplispers/let-plus")
2443 (commit commit)))
2444 (sha256
2445 (base32
2446 "0i050ca2iys9f5mb7dgqgqdxfnc3b0rnjdwv95sqd490vkiwrsaj"))
2447 (file-name (git-file-name "let-plus" version))))
2448 (build-system asdf-build-system/sbcl)
2449 (inputs
2450 `(("alexandria" ,sbcl-alexandria)
2451 ("anaphora" ,sbcl-anaphora)))
2452 (native-inputs
2453 `(("lift" ,sbcl-lift)))
2454 (synopsis "Destructuring extension of let*")
2455 (description
2456 "This library implements the let+ macro, which is a dectructuring
2457 extension of let*. It features:
2458
2459 @itemize
2460 @item Clean, consistent syntax and small implementation (less than 300 LOC,
2461 not counting tests)
2462 @item Placeholder macros allow editor hints and syntax highlighting
2463 @item @command{&ign} for ignored values (in forms where that makes sense)
2464 @item Very easy to extend
2465 @end itemize\n")
2466 (home-page "https://github.com/sharplispers/let-plus")
2467 (license license:boost1.0))))
2468
2469 (define-public cl-let-plus
2470 (sbcl-package->cl-source-package sbcl-let-plus))
2471
2472 (define-public ecl-let-plus
2473 (sbcl-package->ecl-package sbcl-let-plus))
2474
2475 (define-public sbcl-cl-colors
2476 (let ((commit "827410584553f5c717eec6182343b7605f707f75"))
2477 (package
2478 (name "sbcl-cl-colors")
2479 (version (git-version "0.0.0" "1" commit))
2480 (source
2481 (origin
2482 (method git-fetch)
2483 (uri (git-reference
2484 (url "https://github.com/tpapp/cl-colors")
2485 (commit commit)))
2486 (sha256
2487 (base32
2488 "0l446lday4hybsm9bq3jli97fvv8jb1d33abg79vbylpwjmf3y9a"))
2489 (file-name (git-file-name "cl-colors" version))))
2490 (build-system asdf-build-system/sbcl)
2491 (inputs
2492 `(("alexandria" ,sbcl-alexandria)
2493 ("let-plus" ,sbcl-let-plus)))
2494 (synopsis "Simple color library for Common Lisp")
2495 (description
2496 "This is a very simple color library for Common Lisp, providing
2497
2498 @itemize
2499 @item Types for representing colors in HSV and RGB spaces.
2500 @item Simple conversion functions between the above types (and also
2501 hexadecimal representation for RGB).
2502 @item Some predefined colors (currently X11 color names – of course the
2503 library does not depend on X11).Because color in your terminal is nice.
2504 @end itemize
2505
2506 This library is no longer supported by its author.")
2507 (home-page "https://github.com/tpapp/cl-colors")
2508 (license license:boost1.0))))
2509
2510 (define-public cl-colors
2511 (sbcl-package->cl-source-package sbcl-cl-colors))
2512
2513 (define-public ecl-cl-colors
2514 (sbcl-package->ecl-package sbcl-cl-colors))
2515
2516 (define-public sbcl-cl-ansi-text
2517 (let ((commit "53badf7878f27f22f2d4a2a43e6df458e43acbe9"))
2518 (package
2519 (name "sbcl-cl-ansi-text")
2520 (version (git-version "1.0.0" "1" commit))
2521 (source
2522 (origin
2523 (method git-fetch)
2524 (uri (git-reference
2525 (url "https://github.com/pnathan/cl-ansi-text")
2526 (commit commit)))
2527 (sha256
2528 (base32
2529 "11i27n0dbz5lmygiw65zzr8lx0rac6b6yysqranphn31wls6ja3v"))
2530 (file-name (git-file-name "cl-ansi-text" version))))
2531 (build-system asdf-build-system/sbcl)
2532 (inputs
2533 `(("alexandria" ,sbcl-alexandria)
2534 ("cl-colors" ,sbcl-cl-colors)))
2535 (native-inputs
2536 `(("fiveam" ,sbcl-fiveam)))
2537 (synopsis "ANSI terminal color implementation for Common Lisp")
2538 (description
2539 "@command{cl-ansi-text} provides utilities which enable printing to an
2540 ANSI terminal with colored text. It provides the macro @command{with-color}
2541 which causes everything printed in the body to be displayed with the provided
2542 color. It further provides functions which will print the argument with the
2543 named color.")
2544 (home-page "https://github.com/pnathan/cl-ansi-text")
2545 ;; REVIEW: The actual license is LLGPL. Should we add it to Guix?
2546 (license license:lgpl3+))))
2547
2548 (define-public cl-ansi-text
2549 (sbcl-package->cl-source-package sbcl-cl-ansi-text))
2550
2551 (define-public ecl-cl-ansi-text
2552 (sbcl-package->ecl-package sbcl-cl-ansi-text))
2553
2554 (define-public sbcl-prove-asdf
2555 (let ((commit "4f9122bd393e63c5c70c1fba23070622317cfaa0"))
2556 (package
2557 (name "sbcl-prove-asdf")
2558 (version (git-version "1.0.0" "1" commit))
2559 (source
2560 (origin
2561 (method git-fetch)
2562 (uri (git-reference
2563 (url "https://github.com/fukamachi/prove")
2564 (commit commit)))
2565 (sha256
2566 (base32
2567 "07sbfw459z8bbjvx1qlmfa8qk2mvbjnnzi2mi0x72blaj8bkl4vc"))
2568 (file-name (git-file-name "prove" version))))
2569 (build-system asdf-build-system/sbcl)
2570 (arguments
2571 `(#:asd-file "prove-asdf.asd"))
2572 (synopsis "Test requirement for the Common Lisp 'prove' library")
2573 (description
2574 "Test requirement for the Common Lisp @command{prove} library.")
2575 (home-page "https://github.com/fukamachi/prove")
2576 (license license:expat))))
2577
2578 (define-public cl-prove-asdf
2579 (sbcl-package->cl-source-package sbcl-prove-asdf))
2580
2581 (define-public ecl-prove-asdf
2582 (sbcl-package->ecl-package sbcl-prove-asdf))
2583
2584 (define-public sbcl-prove
2585 (package
2586 (inherit sbcl-prove-asdf)
2587 (name "sbcl-prove")
2588 (inputs
2589 `(("alexandria" ,sbcl-alexandria)
2590 ("cl-ppcre" ,sbcl-cl-ppcre)
2591 ("cl-ansi-text" ,sbcl-cl-ansi-text)))
2592 (native-inputs
2593 `(("prove-asdf" ,sbcl-prove-asdf)))
2594 (arguments
2595 `(#:asd-file "prove.asd"))
2596 (synopsis "Yet another unit testing framework for Common Lisp")
2597 (description
2598 "This project was originally called @command{cl-test-more}.
2599 @command{prove} is yet another unit testing framework for Common Lisp. The
2600 advantages of @command{prove} are:
2601
2602 @itemize
2603 @item Various simple functions for testing and informative error messages
2604 @item ASDF integration
2605 @item Extensible test reporters
2606 @item Colorizes the report if it's available (note for SLIME)
2607 @item Reports test durations
2608 @end itemize\n")))
2609
2610 (define-public cl-prove
2611 (sbcl-package->cl-source-package sbcl-prove))
2612
2613 (define-public ecl-prove
2614 (sbcl-package->ecl-package sbcl-prove))
2615
2616 (define-public sbcl-proc-parse
2617 (let ((commit "ac3636834d561bdc2686c956dbd82494537285fd"))
2618 (package
2619 (name "sbcl-proc-parse")
2620 (version (git-version "0.0.0" "1" commit))
2621 (source
2622 (origin
2623 (method git-fetch)
2624 (uri (git-reference
2625 (url "https://github.com/fukamachi/proc-parse")
2626 (commit commit)))
2627 (sha256
2628 (base32
2629 "06rnl0h4cx6xv2wj3jczmmcxqn2703inmmvg1s4npbghmijsybfh"))
2630 (file-name (git-file-name "proc-parse" version))))
2631 (build-system asdf-build-system/sbcl)
2632 (inputs
2633 `(("alexandria" ,sbcl-alexandria)
2634 ("babel" ,sbcl-babel)))
2635 (native-inputs
2636 `(("prove" ,sbcl-prove)
2637 ("prove-asdf" ,sbcl-prove-asdf)))
2638 (arguments
2639 ;; TODO: Tests don't find "proc-parse-test", why?
2640 `(#:tests? #f))
2641 (synopsis "Procedural vector parser")
2642 (description
2643 "This is a string/octets parser library for Common Lisp with speed and
2644 readability in mind. Unlike other libraries, the code is not a
2645 pattern-matching-like, but a char-by-char procedural parser.")
2646 (home-page "https://github.com/fukamachi/proc-parse")
2647 (license license:bsd-2))))
2648
2649 (define-public cl-proc-parse
2650 (sbcl-package->cl-source-package sbcl-proc-parse))
2651
2652 (define-public ecl-proc-parse
2653 (sbcl-package->ecl-package sbcl-proc-parse))
2654
2655 (define-public sbcl-parse-float
2656 (let ((commit "2aae569f2a4b2eb3bfb5401a959425dcf151b09c"))
2657 (package
2658 (name "sbcl-parse-float")
2659 (version (git-version "0.0.0" "1" commit))
2660 (source
2661 (origin
2662 (method git-fetch)
2663 (uri (git-reference
2664 (url "https://github.com/soemraws/parse-float")
2665 (commit commit)))
2666 (sha256
2667 (base32
2668 "08xw8cchhmqcc0byng69m3f5a2izc9y2290jzz2k0qrbibp1fdk7"))
2669 (file-name (git-file-name "proc-parse" version))))
2670 (build-system asdf-build-system/sbcl)
2671 (inputs
2672 `(("alexandria" ,sbcl-alexandria)
2673 ("babel" ,sbcl-babel)))
2674 (native-inputs
2675 `(("prove" ,sbcl-prove)
2676 ("prove-asdf" ,sbcl-prove-asdf)))
2677 (arguments
2678 ;; TODO: Tests don't find "proc-parse-test", why?
2679 `(#:tests? #f))
2680 (synopsis "Parse a floating point value from a string in Common Lisp")
2681 (description
2682 "This package exports the following function to parse floating-point
2683 values from a string in Common Lisp.")
2684 (home-page "https://github.com/soemraws/parse-float")
2685 (license license:public-domain))))
2686
2687 (define-public cl-parse-float
2688 (sbcl-package->cl-source-package sbcl-parse-float))
2689
2690 (define-public ecl-parse-float
2691 (sbcl-package->ecl-package sbcl-parse-float))
2692
2693 (define-public sbcl-ascii-strings
2694 (let ((revision "1")
2695 (changeset "5048480a61243e6f1b02884012c8f25cdbee6d97"))
2696 (package
2697 (name "sbcl-ascii-strings")
2698 (version (string-append "0-" revision "." (string-take changeset 7)))
2699 (source
2700 (origin
2701 (method hg-fetch)
2702 (uri (hg-reference
2703 (url "https://bitbucket.org/vityok/cl-string-match/")
2704 (changeset changeset)))
2705 (sha256
2706 (base32
2707 "01wn5qx562w43ssy92xlfgv79w7p0nv0wbl76mpmba131n9ziq2y"))
2708 (file-name (git-file-name "cl-string-match" version))))
2709 (build-system asdf-build-system/sbcl)
2710 (inputs
2711 `(("alexandria" ,sbcl-alexandria)
2712 ("babel" ,sbcl-babel)))
2713 (arguments
2714 `(#:asd-file "ascii-strings.asd"))
2715 (synopsis "Operations on ASCII strings")
2716 (description
2717 "Operations on ASCII strings. Essentially this can be any kind of
2718 single-byte encoded strings.")
2719 (home-page "https://bitbucket.org/vityok/cl-string-match/")
2720 (license license:bsd-3))))
2721
2722 (define-public cl-ascii-strings
2723 (sbcl-package->cl-source-package sbcl-ascii-strings))
2724
2725 (define-public ecl-ascii-strings
2726 (sbcl-package->ecl-package sbcl-ascii-strings))
2727
2728 (define-public sbcl-simple-scanf
2729 (package
2730 (inherit sbcl-ascii-strings)
2731 (name "sbcl-simple-scanf")
2732 (inputs
2733 `(("alexandria" ,sbcl-alexandria)
2734 ("iterate" ,sbcl-iterate)
2735 ("proc-parse" ,sbcl-proc-parse)
2736 ("parse-float" ,sbcl-parse-float)))
2737 (arguments
2738 `(#:asd-file "simple-scanf.asd"))
2739 (synopsis "Simple scanf-like functionality implementation")
2740 (description
2741 "A simple scanf-like functionality implementation.")))
2742
2743 (define-public cl-simple-scanf
2744 (sbcl-package->cl-source-package sbcl-simple-scanf))
2745
2746 (define-public ecl-simple-scanf
2747 (sbcl-package->ecl-package sbcl-simple-scanf))
2748
2749 (define-public sbcl-cl-string-match
2750 (package
2751 (inherit sbcl-ascii-strings)
2752 (name "sbcl-cl-string-match")
2753 (inputs
2754 `(("alexandria" ,sbcl-alexandria)
2755 ("ascii-strings" ,sbcl-ascii-strings)
2756 ("yacc" ,sbcl-cl-yacc)
2757 ("jpl-util" ,sbcl-jpl-util)
2758 ("jpl-queues" ,sbcl-jpl-queues)
2759 ("mgl-pax" ,sbcl-mgl-pax)
2760 ("iterate" ,sbcl-iterate)))
2761 ;; TODO: Tests are not evaluated properly.
2762 (native-inputs
2763 ;; For testing:
2764 `(("lisp-unit" ,sbcl-lisp-unit)
2765 ("simple-scanf" ,sbcl-simple-scanf)))
2766 (arguments
2767 `(#:tests? #f
2768 #:asd-file "cl-string-match.asd"))
2769 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
2770 (description
2771 "@command{cl-strings} is a small, portable, dependency-free set of
2772 utilities that make it even easier to manipulate text in Common Lisp. It has
2773 100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")))
2774
2775 (define-public cl-string-match
2776 (sbcl-package->cl-source-package sbcl-cl-string-match))
2777
2778 (define-public ecl-cl-string-match
2779 (sbcl-package->ecl-package sbcl-cl-string-match))
2780
2781 (define-public sbcl-ptester
2782 (package
2783 (name "sbcl-ptester")
2784 (version "20160929")
2785 (source
2786 (origin
2787 (method url-fetch)
2788 (uri (string-append "http://beta.quicklisp.org/archive/ptester/"
2789 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2790 "/ptester-"
2791 version
2792 "-git.tgz"))
2793 (sha256
2794 (base32
2795 "04rlq1zljhxc65pm31bah3sq3as24l0sdivz440s79qlnnyh13hz"))))
2796 (build-system asdf-build-system/sbcl)
2797 (home-page "http://quickdocs.org/ptester/")
2798 (synopsis "Portable test harness package")
2799 (description
2800 "@command{ptester} is a portable testing framework based on Franz's
2801 tester module.")
2802 (license license:lgpl3+)))
2803
2804 (define-public cl-ptester
2805 (sbcl-package->cl-source-package sbcl-ptester))
2806
2807 (define-public ecl-ptester
2808 (sbcl-package->ecl-package sbcl-ptester))
2809
2810 (define-public sbcl-puri
2811 (package
2812 (name "sbcl-puri")
2813 (version "20180228")
2814 (source
2815 (origin
2816 (method url-fetch)
2817 (uri (string-append "http://beta.quicklisp.org/archive/puri/"
2818 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2819 "/puri-"
2820 version
2821 "-git.tgz"))
2822 (sha256
2823 (base32
2824 "1s4r5adrjy5asry45xbcbklxhdjydvf6n55z897nvyw33bigrnbz"))))
2825 (build-system asdf-build-system/sbcl)
2826 ;; REVIEW: Webiste down?
2827 (native-inputs
2828 `(("ptester" ,sbcl-ptester)))
2829 (home-page "http://files.kpe.io/puri/")
2830 (synopsis "Portable URI Library")
2831 (description
2832 "This is portable Universal Resource Identifier library for Common Lisp
2833 programs. It parses URI according to the RFC 2396 specification")
2834 (license license:lgpl3+)))
2835
2836 (define-public cl-puri
2837 (sbcl-package->cl-source-package sbcl-puri))
2838
2839 (define-public ecl-puri
2840 (sbcl-package->ecl-package sbcl-puri))
2841
2842 (define-public sbcl-queues
2843 (let ((commit "47d4da65e9ea20953b74aeeab7e89a831b66bc94"))
2844 (package
2845 (name "sbcl-queues")
2846 (version (git-version "0.0.0" "1" commit))
2847 (source
2848 (origin
2849 (method git-fetch)
2850 (uri (git-reference
2851 (url "https://github.com/oconnore/queues")
2852 (commit commit)))
2853 (file-name (git-file-name "queues" version))
2854 (sha256
2855 (base32
2856 "0wdhfnzi4v6d97pggzj2aw55si94w4327br94jrmyvwf351wqjvv"))))
2857 (build-system asdf-build-system/sbcl)
2858 (home-page "https://github.com/oconnore/queues")
2859 (synopsis "Common Lisp queue library")
2860 (description
2861 "This is a simple queue library for Common Lisp with features such as
2862 non-consing thread safe queues and fibonacci priority queues.")
2863 (license license:expat))))
2864
2865 (define-public cl-queues
2866 (sbcl-package->cl-source-package sbcl-queues))
2867
2868 (define-public ecl-queues
2869 (sbcl-package->ecl-package sbcl-queues))
2870
2871 (define-public sbcl-queues.simple-queue
2872 (package
2873 (inherit sbcl-queues)
2874 (name "sbcl-queues.simple-queue")
2875 (inputs
2876 `(("sbcl-queues" ,sbcl-queues)))
2877 (arguments
2878 `(#:asd-file "queues.simple-queue.asd"))
2879 (synopsis "Simple queue implementation")
2880 (description
2881 "This is a simple queue library for Common Lisp with features such as
2882 non-consing thread safe queues and fibonacci priority queues.")
2883 (license license:expat)))
2884
2885 (define-public cl-queues.simple-queue
2886 (sbcl-package->cl-source-package sbcl-queues.simple-queue))
2887
2888 (define-public ecl-queues.simple-queue
2889 (sbcl-package->ecl-package sbcl-queues.simple-queue))
2890
2891 (define-public sbcl-queues.simple-cqueue
2892 (package
2893 (inherit sbcl-queues)
2894 (name "sbcl-queues.simple-cqueue")
2895 (inputs
2896 `(("sbcl-queues" ,sbcl-queues)
2897 ("sbcl-queues.simple-queue" ,sbcl-queues.simple-queue)
2898 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2899 (arguments
2900 `(#:asd-file "queues.simple-cqueue.asd"))
2901 (synopsis "Thread safe queue implementation")
2902 (description
2903 "This is a simple queue library for Common Lisp with features such as
2904 non-consing thread safe queues and fibonacci priority queues.")
2905 (license license:expat)))
2906
2907 (define-public cl-queues.simple-cqueue
2908 (sbcl-package->cl-source-package sbcl-queues.simple-cqueue))
2909
2910 (define-public ecl-queues.simple-cqueue
2911 (sbcl-package->ecl-package sbcl-queues.simple-cqueue))
2912
2913 (define-public sbcl-queues.priority-queue
2914 (package
2915 (inherit sbcl-queues)
2916 (name "sbcl-queues.priority-queue")
2917 (inputs
2918 `(("sbcl-queues" ,sbcl-queues)))
2919 (arguments
2920 `(#:asd-file "queues.priority-queue.asd"))
2921 (synopsis "Priority queue (Fibonacci) implementation")
2922 (description
2923 "This is a simple queue library for Common Lisp with features such as
2924 non-consing thread safe queues and fibonacci priority queues.")
2925 (license license:expat)))
2926
2927 (define-public cl-queues.priority-queue
2928 (sbcl-package->cl-source-package sbcl-queues.priority-queue))
2929
2930 (define-public ecl-queues.priority-queue
2931 (sbcl-package->ecl-package sbcl-queues.priority-queue))
2932
2933 (define-public sbcl-queues.priority-cqueue
2934 (package
2935 (inherit sbcl-queues)
2936 (name "sbcl-queues.priority-cqueue")
2937 (inputs
2938 `(("sbcl-queues" ,sbcl-queues)
2939 ("sbcl-queues.priority-queue" ,sbcl-queues.priority-queue)
2940 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2941 (arguments
2942 `(#:asd-file "queues.priority-cqueue.asd"))
2943 (synopsis "Thread safe fibonacci priority queue implementation")
2944 (description
2945 "This is a simple queue library for Common Lisp with features such as
2946 non-consing thread safe queues and fibonacci priority queues.")
2947 (license license:expat)))
2948
2949 (define-public cl-queues.priority-cqueue
2950 (sbcl-package->cl-source-package sbcl-queues.priority-cqueue))
2951
2952 (define-public ecl-queues.priority-cqueue
2953 (sbcl-package->ecl-package sbcl-queues.priority-cqueue))
2954
2955 (define sbcl-cffi-bootstrap
2956 (package
2957 (name "sbcl-cffi-bootstrap")
2958 (version "0.19.0")
2959 (source
2960 (origin
2961 (method url-fetch)
2962 (uri (string-append "https://github.com/cffi/cffi/archive/v"
2963 version ".tar.gz"))
2964 (sha256
2965 (base32 "07bc3c1fbfx17wgrvx6bh9byilfzfwv5n597cfdllm0vzwvbmiyk"))
2966 (file-name (string-append name "-" version ".tar.gz"))))
2967 (build-system asdf-build-system/sbcl)
2968 (inputs
2969 `(("libffi" ,libffi)
2970 ("alexandria" ,sbcl-alexandria)
2971 ("babel" ,sbcl-babel)
2972 ("trivial-features" ,sbcl-trivial-features)))
2973 (native-inputs
2974 `(("pkg-config" ,pkg-config)))
2975 (arguments
2976 '(#:phases
2977 (modify-phases %standard-phases
2978 (add-after 'unpack 'fix-paths
2979 (lambda* (#:key inputs #:allow-other-keys)
2980 (substitute* "libffi/libffi.lisp"
2981 (("libffi.so.6" all) (string-append
2982 (assoc-ref inputs "libffi")
2983 "/lib/" all)))
2984 (substitute* "toolchain/c-toolchain.lisp"
2985 (("\"cc\"") (format #f "~S" (which "gcc")))))))
2986 #:asd-system-name "cffi"
2987 #:tests? #f))
2988 (home-page "https://common-lisp.net/project/cffi/")
2989 (synopsis "Common Foreign Function Interface for Common Lisp")
2990 (description "The Common Foreign Function Interface (CFFI)
2991 purports to be a portable foreign function interface for Common Lisp.
2992 The CFFI library is composed of a Lisp-implementation-specific backend
2993 in the CFFI-SYS package, and a portable frontend in the CFFI
2994 package.")
2995 (license license:expat)))
2996
2997 (define-public sbcl-cffi-toolchain
2998 (package
2999 (inherit sbcl-cffi-bootstrap)
3000 (name "sbcl-cffi-toolchain")
3001 (inputs
3002 `(("libffi" ,libffi)
3003 ("sbcl-cffi" ,sbcl-cffi-bootstrap)))
3004 (arguments
3005 (substitute-keyword-arguments (package-arguments sbcl-cffi-bootstrap)
3006 ((#:asd-system-name _) #f)
3007 ((#:tests? _) #t)))))
3008
3009 (define-public sbcl-cffi-libffi
3010 (package
3011 (inherit sbcl-cffi-toolchain)
3012 (name "sbcl-cffi-libffi")
3013 (inputs
3014 `(("cffi" ,sbcl-cffi-bootstrap)
3015 ("cffi-grovel" ,sbcl-cffi-grovel)
3016 ("trivial-features" ,sbcl-trivial-features)
3017 ("libffi" ,libffi)))))
3018
3019 (define-public sbcl-cffi-grovel
3020 (package
3021 (inherit sbcl-cffi-toolchain)
3022 (name "sbcl-cffi-grovel")
3023 (inputs
3024 `(("libffi" ,libffi)
3025 ("cffi" ,sbcl-cffi-bootstrap)
3026 ("cffi-toolchain" ,sbcl-cffi-toolchain)
3027 ("alexandria" ,sbcl-alexandria)))
3028 (arguments
3029 (substitute-keyword-arguments (package-arguments sbcl-cffi-toolchain)
3030 ((#:phases phases)
3031 `(modify-phases ,phases
3032 (add-after 'build 'install-headers
3033 (lambda* (#:key outputs #:allow-other-keys)
3034 (install-file "grovel/common.h"
3035 (string-append
3036 (assoc-ref outputs "out")
3037 "/include/grovel"))))))))))
3038
3039 (define-public sbcl-cffi
3040 (package
3041 (inherit sbcl-cffi-toolchain)
3042 (name "sbcl-cffi")
3043 (inputs (package-inputs sbcl-cffi-bootstrap))
3044 (native-inputs
3045 `(("cffi-grovel" ,sbcl-cffi-grovel)
3046 ("cffi-libffi" ,sbcl-cffi-libffi)
3047 ("rt" ,sbcl-rt)
3048 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3049 ,@(package-native-inputs sbcl-cffi-bootstrap)))))
3050
3051 (define-public sbcl-cl-sqlite
3052 (let ((commit "c738e66d4266ef63a1debc4ef4a1b871a068c112"))
3053 (package
3054 (name "sbcl-cl-sqlite")
3055 (version (git-version "0.2" "1" commit))
3056 (source
3057 (origin
3058 (method git-fetch)
3059 (uri (git-reference
3060 (url "https://github.com/dmitryvk/cl-sqlite")
3061 (commit commit)))
3062 (file-name (git-file-name "cl-sqlite" version))
3063 (sha256
3064 (base32
3065 "1ng45k1hdb84sqjryrfx93g66bsbybmpy301wd0fdybnc5jzr36q"))))
3066 (build-system asdf-build-system/sbcl)
3067 (inputs
3068 `(("iterate" ,sbcl-iterate)
3069 ("cffi" ,sbcl-cffi)
3070 ("sqlite" ,sqlite)))
3071 (native-inputs
3072 `(("fiveam" ,sbcl-fiveam)
3073 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
3074 (arguments
3075 `(#:tests? #f ; Upstream seems to have issues with tests: https://github.com/dmitryvk/cl-sqlite/issues/7
3076 #:asd-file "sqlite.asd"
3077 #:asd-system-name "sqlite"
3078 #:phases
3079 (modify-phases %standard-phases
3080 (add-after 'unpack 'fix-paths
3081 (lambda* (#:key inputs #:allow-other-keys)
3082 (substitute* "sqlite-ffi.lisp"
3083 (("libsqlite3" all) (string-append
3084 (assoc-ref inputs "sqlite")"/lib/" all))))))))
3085 (home-page "https://common-lisp.net/project/cl-sqlite/")
3086 (synopsis "Common Lisp binding for SQLite")
3087 (description
3088 "The @command{cl-sqlite} package is an interface to the SQLite embedded
3089 relational database engine.")
3090 (license license:public-domain))))
3091
3092 (define-public sbcl-parenscript
3093 (let ((commit "061d8e286c81c3f45c84fb2b11ee7d83f590a8f8"))
3094 (package
3095 (name "sbcl-parenscript")
3096 (version (git-version "2.6" "1" commit))
3097 (source
3098 (origin
3099 (method git-fetch)
3100 (uri (git-reference
3101 (url "https://gitlab.common-lisp.net/parenscript/parenscript")
3102 (commit commit)))
3103 (file-name (git-file-name "parenscript" version))
3104 (sha256
3105 (base32
3106 "1kbhgsjbikc73m5cwdp4d4fdafyqcr1b7b630qjrziql0nh6mi3k"))))
3107 (build-system asdf-build-system/sbcl)
3108 (inputs
3109 `(("cl-ppcre" ,sbcl-cl-ppcre)
3110 ("anaphora" ,sbcl-anaphora)
3111 ("named-readtables" ,sbcl-named-readtables)))
3112 (home-page "https://common-lisp.net/project/parenscript/")
3113 (synopsis "Translator from a subset of Common Lisp to JavaScript")
3114 (description
3115 "Parenscript is a translator from an extended subset of Common Lisp to
3116 JavaScript. Parenscript code can run almost identically on both the
3117 browser (as JavaScript) and server (as Common Lisp).
3118
3119 Parenscript code is treated the same way as Common Lisp code, making the full
3120 power of Lisp macros available for JavaScript. This provides a web
3121 development environment that is unmatched in its ability to reduce code
3122 duplication and provide advanced meta-programming facilities to web
3123 developers.
3124
3125 At the same time, Parenscript is different from almost all other \"language
3126 X\" to JavaScript translators in that it imposes almost no overhead:
3127
3128 @itemize
3129 @item No run-time dependencies: Any piece of Parenscript code is runnable
3130 as-is. There are no JavaScript files to include.
3131 @item Native types: Parenscript works entirely with native JavaScript data
3132 types. There are no new types introduced, and object prototypes are not
3133 touched.
3134 @item Native calling convention: Any JavaScript code can be called without the
3135 need for bindings. Likewise, Parenscript can be used to make efficient,
3136 self-contained JavaScript libraries.
3137 @item Readable code: Parenscript generates concise, formatted, idiomatic
3138 JavaScript code. Identifier names are preserved. This enables seamless
3139 debugging in tools like Firebug.
3140 @item Efficiency: Parenscript introduces minimal overhead for advanced Common
3141 Lisp features. The generated code is almost as fast as hand-written
3142 JavaScript.
3143 @end itemize\n")
3144 (license license:bsd-3))))
3145
3146 (define-public cl-parenscript
3147 (sbcl-package->cl-source-package sbcl-parenscript))
3148
3149 (define-public ecl-parenscript
3150 (sbcl-package->ecl-package sbcl-parenscript))
3151
3152 (define-public sbcl-cl-json
3153 (let ((commit "6dfebb9540bfc3cc33582d0c03c9ec27cb913e79"))
3154 (package
3155 (name "sbcl-cl-json")
3156 (version (git-version "0.5" "1" commit))
3157 (source
3158 (origin
3159 (method git-fetch)
3160 (uri (git-reference
3161 (url "https://github.com/hankhero/cl-json")
3162 (commit commit)))
3163 (file-name (git-file-name "cl-json" version))
3164 (sha256
3165 (base32
3166 "0fx3m3x3s5ji950yzpazz4s0img3l6b3d6l3jrfjv0lr702496lh"))))
3167 (build-system asdf-build-system/sbcl)
3168 (native-inputs
3169 `(("fiveam" ,sbcl-fiveam)))
3170 (home-page "https://github.com/hankhero/cl-json")
3171 (synopsis "JSON encoder and decoder for Common-Lisp")
3172 (description
3173 "@command{cl-json} provides an encoder of Lisp objects to JSON format
3174 and a corresponding decoder of JSON data to Lisp objects. Both the encoder
3175 and the decoder are highly customizable; at the same time, the default
3176 settings ensure a very simple mode of operation, similar to that provided by
3177 @command{yason} or @command{st-json}.")
3178 (license license:expat))))
3179
3180 (define-public cl-json
3181 (sbcl-package->cl-source-package sbcl-cl-json))
3182
3183 (define-public ecl-cl-json
3184 (sbcl-package->ecl-package sbcl-cl-json))
3185
3186 (define-public sbcl-unix-opts
3187 (package
3188 (name "sbcl-unix-opts")
3189 (version "0.1.7")
3190 (source
3191 (origin
3192 (method git-fetch)
3193 (uri (git-reference
3194 (url "https://github.com/libre-man/unix-opts")
3195 (commit version)))
3196 (file-name (git-file-name "unix-opts" version))
3197 (sha256
3198 (base32
3199 "08djdi1ard09fijb7w9bdmhmwd98b1hzmcnjw9fqjiqa0g3b44rr"))))
3200 (build-system asdf-build-system/sbcl)
3201 (home-page "https://github.com/hankhero/cl-json")
3202 (synopsis "Unix-style command line options parser")
3203 (description
3204 "This is a minimalistic parser of command line options. The main
3205 advantage of the library is the ability to concisely define command line
3206 options once and then use this definition for parsing and extraction of
3207 command line arguments, as well as printing description of command line
3208 options (you get --help for free). This way you don't need to repeat
3209 yourself. Also, @command{unix-opts} doesn't depend on anything and allows to
3210 precisely control behavior of the parser via Common Lisp restarts.")
3211 (license license:expat)))
3212
3213 (define-public cl-unix-opts
3214 (sbcl-package->cl-source-package sbcl-unix-opts))
3215
3216 (define-public ecl-unix-opts
3217 (sbcl-package->ecl-package sbcl-unix-opts))
3218
3219 (define-public sbcl-trivial-garbage
3220 (package
3221 (name "sbcl-trivial-garbage")
3222 (version "0.21")
3223 (source
3224 (origin
3225 (method url-fetch)
3226 (uri (string-append
3227 "https://github.com/trivial-garbage/trivial-garbage/archive/v"
3228 version ".tar.gz"))
3229 (sha256
3230 (base32 "0b244nlszkrqawsnp568clnx32xmvjmbbagbz7625w9n0yq7396y"))
3231 (file-name (string-append "trivial-garbage-" version ".tar.gz"))))
3232 (build-system asdf-build-system/sbcl)
3233 (native-inputs
3234 `(("rt" ,sbcl-rt)))
3235 (home-page "https://common-lisp.net/project/trivial-garbage/")
3236 (synopsis "Portable GC-related APIs for Common Lisp")
3237 (description "@command{trivial-garbage} provides a portable API to
3238 finalizers, weak hash-tables and weak pointers on all major implementations of
3239 the Common Lisp programming language.")
3240 (license license:public-domain)))
3241
3242 (define-public cl-trivial-garbage
3243 (sbcl-package->cl-source-package sbcl-trivial-garbage))
3244
3245 (define-public ecl-trivial-garbage
3246 (sbcl-package->ecl-package sbcl-trivial-garbage))
3247
3248 (define-public sbcl-closer-mop
3249 (let ((commit "fac29ce90e3a46e1fc6cf182190e193526fa9dbc"))
3250 (package
3251 (name "sbcl-closer-mop")
3252 (version (git-version "1.0.0" "1" commit))
3253 (source
3254 (origin
3255 (method git-fetch)
3256 (uri (git-reference
3257 (url "https://github.com/pcostanza/closer-mop")
3258 (commit commit)))
3259 (sha256
3260 (base32 "0hvh77y869h8fg9di5snyg85fxq6fdh9gj1igmx1g6j6j5x915dl"))
3261 (file-name (git-file-name "closer-mop" version ))))
3262 (build-system asdf-build-system/sbcl)
3263 (home-page "https://github.com/pcostanza/closer-mop")
3264 (synopsis "Rectifies absent or incorrect CLOS MOP features")
3265 (description "Closer to MOP is a compatibility layer that rectifies many
3266 of the absent or incorrect CLOS MOP features across a broad range of Common
3267 Lisp implementations.")
3268 (license license:expat))))
3269
3270 (define-public cl-closer-mop
3271 (sbcl-package->cl-source-package sbcl-closer-mop))
3272
3273 (define-public ecl-closer-mop
3274 (sbcl-package->ecl-package sbcl-closer-mop))
3275
3276 (define sbcl-cl-cffi-gtk-boot0
3277 (let ((commit "29443c5aaca975709df8025c4649366d882033cb"))
3278 (package
3279 (name "sbcl-cl-cffi-gtk-boot0")
3280 (version (git-version "0.11.2" "1" commit))
3281 (source
3282 (origin
3283 (method git-fetch)
3284 (uri (git-reference
3285 (url "https://github.com/Ferada/cl-cffi-gtk/")
3286 (commit commit)))
3287 (file-name (git-file-name "cl-cffi-gtk" version))
3288 (sha256
3289 (base32
3290 "0f6s92sf8xyzh1yksqx8bsy1sv0zmy0c13j3b8bavaba5hlxpxah"))))
3291 (build-system asdf-build-system/sbcl)
3292 (inputs
3293 `(("iterate" ,sbcl-iterate)
3294 ("cffi" ,sbcl-cffi)
3295 ("trivial-features" ,sbcl-trivial-features)))
3296 (home-page "https://github.com/Ferada/cl-cffi-gtk/")
3297 (synopsis "Common Lisp binding for GTK+3")
3298 (description
3299 "@command{cl-cffi-gtk} is a Lisp binding to GTK+ 3 (GIMP Toolkit) which
3300 is a library for creating graphical user interfaces.")
3301 (license license:lgpl3))))
3302
3303 (define-public sbcl-cl-cffi-gtk-glib
3304 (package
3305 (inherit sbcl-cl-cffi-gtk-boot0)
3306 (name "sbcl-cl-cffi-gtk-glib")
3307 (inputs
3308 `(("glib" ,glib)
3309 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3310 (arguments
3311 `(#:asd-file "glib/cl-cffi-gtk-glib.asd"
3312 #:phases
3313 (modify-phases %standard-phases
3314 (add-after 'unpack 'fix-paths
3315 (lambda* (#:key inputs #:allow-other-keys)
3316 (substitute* "glib/glib.init.lisp"
3317 (("libglib|libgthread" all) (string-append
3318 (assoc-ref inputs "glib") "/lib/" all))))))))))
3319
3320 (define-public sbcl-cl-cffi-gtk-gobject
3321 (package
3322 (inherit sbcl-cl-cffi-gtk-boot0)
3323 (name "sbcl-cl-cffi-gtk-gobject")
3324 (inputs
3325 `(("glib" ,glib)
3326 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3327 ("trivial-garbage" ,sbcl-trivial-garbage)
3328 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3329 ("closer-mop" ,sbcl-closer-mop)
3330 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3331 (arguments
3332 `(#:asd-file "gobject/cl-cffi-gtk-gobject.asd"
3333 #:phases
3334 (modify-phases %standard-phases
3335 (add-after 'unpack 'fix-paths
3336 (lambda* (#:key inputs #:allow-other-keys)
3337 (substitute* "gobject/gobject.init.lisp"
3338 (("libgobject" all) (string-append
3339 (assoc-ref inputs "glib") "/lib/" all))))))))))
3340
3341 (define-public sbcl-cl-cffi-gtk-gio
3342 (package
3343 (inherit sbcl-cl-cffi-gtk-boot0)
3344 (name "sbcl-cl-cffi-gtk-gio")
3345 (inputs
3346 `(("glib" ,glib)
3347 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3348 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3349 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3350 (arguments
3351 `(#:asd-file "gio/cl-cffi-gtk-gio.asd"
3352 #:phases
3353 (modify-phases %standard-phases
3354 (add-after 'unpack 'fix-paths
3355 (lambda* (#:key inputs #:allow-other-keys)
3356 (substitute* "gio/gio.init.lisp"
3357 (("libgio" all)
3358 (string-append
3359 (assoc-ref inputs "glib") "/lib/" all))))))))))
3360
3361 (define-public sbcl-cl-cffi-gtk-cairo
3362 (package
3363 (inherit sbcl-cl-cffi-gtk-boot0)
3364 (name "sbcl-cl-cffi-gtk-cairo")
3365 (inputs
3366 `(("cairo" ,cairo)
3367 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3368 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3369 (arguments
3370 `(#:asd-file "cairo/cl-cffi-gtk-cairo.asd"
3371 #:phases
3372 (modify-phases %standard-phases
3373 (add-after 'unpack 'fix-paths
3374 (lambda* (#:key inputs #:allow-other-keys)
3375 (substitute* "cairo/cairo.init.lisp"
3376 (("libcairo" all)
3377 (string-append
3378 (assoc-ref inputs "cairo") "/lib/" all))))))))))
3379
3380 (define-public sbcl-cl-cffi-gtk-pango
3381 (package
3382 (inherit sbcl-cl-cffi-gtk-boot0)
3383 (name "sbcl-cl-cffi-gtk-pango")
3384 (inputs
3385 `(("pango" ,pango)
3386 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3387 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3388 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3389 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3390 (arguments
3391 `(#:asd-file "pango/cl-cffi-gtk-pango.asd"
3392 #:phases
3393 (modify-phases %standard-phases
3394 (add-after 'unpack 'fix-paths
3395 (lambda* (#:key inputs #:allow-other-keys)
3396 (substitute* "pango/pango.init.lisp"
3397 (("libpango" all)
3398 (string-append
3399 (assoc-ref inputs "pango") "/lib/" all))))))))))
3400
3401 (define-public sbcl-cl-cffi-gtk-gdk-pixbuf
3402 (package
3403 (inherit sbcl-cl-cffi-gtk-boot0)
3404 (name "sbcl-cl-cffi-gtk-gdk-pixbuf")
3405 (inputs
3406 `(("gdk-pixbuf" ,gdk-pixbuf)
3407 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3408 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3409 (arguments
3410 `(#:asd-file "gdk-pixbuf/cl-cffi-gtk-gdk-pixbuf.asd"
3411 #:phases
3412 (modify-phases %standard-phases
3413 (add-after 'unpack 'fix-paths
3414 (lambda* (#:key inputs #:allow-other-keys)
3415 (substitute* "gdk-pixbuf/gdk-pixbuf.init.lisp"
3416 (("libgdk_pixbuf" all)
3417 (string-append
3418 (assoc-ref inputs "gdk-pixbuf") "/lib/" all))))))))))
3419
3420 (define-public sbcl-cl-cffi-gtk-gdk
3421 (package
3422 (inherit sbcl-cl-cffi-gtk-boot0)
3423 (name "sbcl-cl-cffi-gtk-gdk")
3424 (inputs
3425 `(("gtk" ,gtk+)
3426 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3427 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3428 ("cl-cffi-gtk-gdk-pixbuf" ,sbcl-cl-cffi-gtk-gdk-pixbuf)
3429 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3430 ("cl-cffi-gtk-pango" ,sbcl-cl-cffi-gtk-pango)
3431 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3432 (arguments
3433 `(#:asd-file "gdk/cl-cffi-gtk-gdk.asd"
3434 #:phases
3435 (modify-phases %standard-phases
3436 (add-after 'unpack 'fix-paths
3437 (lambda* (#:key inputs #:allow-other-keys)
3438 (substitute* "gdk/gdk.init.lisp"
3439 (("libgdk" all)
3440 (string-append
3441 (assoc-ref inputs "gtk") "/lib/" all)))
3442 (substitute* "gdk/gdk.package.lisp"
3443 (("libgtk" all)
3444 (string-append
3445 (assoc-ref inputs "gtk") "/lib/" all))))))))))
3446
3447 (define-public sbcl-cl-cffi-gtk
3448 (package
3449 (inherit sbcl-cl-cffi-gtk-boot0)
3450 (name "sbcl-cl-cffi-gtk")
3451 (inputs
3452 `(("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3453 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3454 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3455 ("cl-cffi-gtk-gdk" ,sbcl-cl-cffi-gtk-gdk)
3456 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3457 (native-inputs
3458 `(("fiveam" ,sbcl-fiveam)))
3459 (arguments
3460 `(#:asd-file "gtk/cl-cffi-gtk.asd"
3461 #:test-asd-file "test/cl-cffi-gtk-test.asd"
3462 ;; TODO: Tests fail with memory fault.
3463 ;; See https://github.com/Ferada/cl-cffi-gtk/issues/24.
3464 #:tests? #f))))
3465
3466 (define-public sbcl-cl-webkit
3467 (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31"))
3468 (package
3469 (name "sbcl-cl-webkit")
3470 (version (git-version "2.4" "1" commit))
3471 (source
3472 (origin
3473 (method git-fetch)
3474 (uri (git-reference
3475 (url "https://github.com/jmercouris/cl-webkit")
3476 (commit commit)))
3477 (file-name (git-file-name "cl-webkit" version))
3478 (sha256
3479 (base32
3480 "0f5lyn9i7xrn3g1bddga377mcbawkbxydijpg389q4n04gqj0vwf"))))
3481 (build-system asdf-build-system/sbcl)
3482 (inputs
3483 `(("cffi" ,sbcl-cffi)
3484 ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
3485 ("webkitgtk" ,webkitgtk)))
3486 (arguments
3487 `(#:asd-file "webkit2/cl-webkit2.asd"
3488 #:asd-system-name "cl-webkit2"
3489 #:phases
3490 (modify-phases %standard-phases
3491 (add-after 'unpack 'fix-paths
3492 (lambda* (#:key inputs #:allow-other-keys)
3493 (substitute* "webkit2/webkit2.init.lisp"
3494 (("libwebkit2gtk" all)
3495 (string-append
3496 (assoc-ref inputs "webkitgtk") "/lib/" all))))))))
3497 (home-page "https://github.com/jmercouris/cl-webkit")
3498 (synopsis "Binding to WebKitGTK+ for Common Lisp")
3499 (description
3500 "@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp,
3501 currently targeting WebKit version 2. The WebKitGTK+ library adds web
3502 browsing capabilities to an application, leveraging the full power of the
3503 WebKit browsing engine.")
3504 (license license:expat))))
3505
3506 (define-public sbcl-lparallel
3507 (package
3508 (name "sbcl-lparallel")
3509 (version "2.8.4")
3510 (source
3511 (origin
3512 (method git-fetch)
3513 (uri (git-reference
3514 (url "https://github.com/lmj/lparallel/")
3515 (commit (string-append "lparallel-" version))))
3516 (file-name (git-file-name "lparallel" version))
3517 (sha256
3518 (base32
3519 "0g0aylrbbrqsz0ahmwhvnk4cmc2931fllbpcfgzsprwnqqd7vwq9"))))
3520 (build-system asdf-build-system/sbcl)
3521 (inputs
3522 `(("alexandria" ,sbcl-alexandria)
3523 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3524 ("trivial-garbage" ,sbcl-trivial-garbage)))
3525 (home-page "https://lparallel.org/")
3526 (synopsis "Parallelism for Common Lisp")
3527 (description
3528 "@command{lparallel} is a library for parallel programming in Common
3529 Lisp, featuring:
3530
3531 @itemize
3532 @item a simple model of task submission with receiving queue,
3533 @item constructs for expressing fine-grained parallelism,
3534 @item asynchronous condition handling across thread boundaries,
3535 @item parallel versions of map, reduce, sort, remove, and many others,
3536 @item promises, futures, and delayed evaluation constructs,
3537 @item computation trees for parallelizing interconnected tasks,
3538 @item bounded and unbounded FIFO queues,
3539 @item high and low priority tasks,
3540 @item task killing by category,
3541 @item integrated timeouts.
3542 @end itemize\n")
3543 (license license:expat)))
3544
3545 (define-public cl-lparallel
3546 (sbcl-package->cl-source-package sbcl-lparallel))
3547
3548 (define-public ecl-lparallel
3549 (sbcl-package->ecl-package sbcl-lparallel))
3550
3551 (define-public sbcl-cl-markup
3552 (let ((commit "e0eb7debf4bdff98d1f49d0f811321a6a637b390"))
3553 (package
3554 (name "sbcl-cl-markup")
3555 (version (git-version "0.1" "1" commit))
3556 (source
3557 (origin
3558 (method git-fetch)
3559 (uri (git-reference
3560 (url "https://github.com/arielnetworks/cl-markup/")
3561 (commit commit)))
3562 (file-name (git-file-name "cl-markup" version))
3563 (sha256
3564 (base32
3565 "10l6k45971dl13fkdmva7zc6i453lmq9j4xax2ci6pjzlc6xjhp7"))))
3566 (build-system asdf-build-system/sbcl)
3567 (home-page "https://github.com/arielnetworks/cl-markup/")
3568 (synopsis "Markup generation library for Common Lisp")
3569 (description
3570 "A modern markup generation library for Common Lisp that features:
3571
3572 @itemize
3573 @item Fast (even faster through compiling the code)
3574 @item Safety
3575 @item Support for multiple document types (markup, xml, html, html5, xhtml)
3576 @item Output with doctype
3577 @item Direct output to stream
3578 @end itemize\n")
3579 (license license:lgpl3+))))
3580
3581 (define-public cl-markup
3582 (sbcl-package->cl-source-package sbcl-cl-markup))
3583
3584 (define-public ecl-cl-markup
3585 (sbcl-package->ecl-package sbcl-cl-markup))
3586
3587 (define-public sbcl-cl-css
3588 (let ((commit "8fe654c8f0cf95b300718101cce4feb517f78e2f"))
3589 (package
3590 (name "sbcl-cl-css")
3591 (version (git-version "0.1" "1" commit))
3592 (source
3593 (origin
3594 (method git-fetch)
3595 (uri (git-reference
3596 (url "https://github.com/inaimathi/cl-css/")
3597 (commit commit)))
3598 (file-name (git-file-name "cl-css" version))
3599 (sha256
3600 (base32
3601 "1lc42zi2sw11fl2589sc19nr5sd2p0wy7wgvgwaggxa5f3ajhsmd"))))
3602 (build-system asdf-build-system/sbcl)
3603 (home-page "https://github.com/inaimathi/cl-css/")
3604 (synopsis "Non-validating, inline CSS generator for Common Lisp")
3605 (description
3606 "This is a dead-simple, non validating, inline CSS generator for Common
3607 Lisp. Its goals are axiomatic syntax, simple implementation to support
3608 portability, and boilerplate reduction in CSS.")
3609 (license license:expat))))
3610
3611 (define-public cl-css
3612 (sbcl-package->cl-source-package sbcl-cl-css))
3613
3614 (define-public ecl-cl-markup
3615 (sbcl-package->ecl-package sbcl-cl-css))
3616
3617 (define-public sbcl-portable-threads
3618 (let ((commit "c0e61a1faeb0583c80fd3f20b16cc4c555226920"))
3619 (package
3620 (name "sbcl-portable-threads")
3621 (version (git-version "2.3" "1" commit))
3622 (source
3623 (origin
3624 (method git-fetch)
3625 (uri (git-reference
3626 (url "https://github.com/binghe/portable-threads/")
3627 (commit commit)))
3628 (file-name (git-file-name "portable-threads" version))
3629 (sha256
3630 (base32
3631 "03fmxyarc0xf4kavwkfa0a2spkyfrz6hbgbi9y4q7ny5aykdyfaq"))))
3632 (build-system asdf-build-system/sbcl)
3633 (arguments
3634 `(;; Tests seem broken.
3635 #:tests? #f))
3636 (home-page "https://github.com/binghe/portable-threads")
3637 (synopsis "Portable threads (and scheduled and periodic functions) API for Common Lisp")
3638 (description
3639 "Portable Threads (and Scheduled and Periodic Functions) API for Common
3640 Lisp (from GBBopen project).")
3641 (license license:asl2.0))))
3642
3643 (define-public cl-portable-threads
3644 (sbcl-package->cl-source-package sbcl-portable-threads))
3645
3646 (define-public ecl-portable-threada
3647 (sbcl-package->ecl-package sbcl-portable-threads))
3648
3649 (define-public sbcl-usocket-boot0
3650 ;; usocket's test rely on usocket-server which depends on usocket itself.
3651 ;; We break this cyclic dependency with -boot0 that packages usocket.
3652 (let ((commit "86e7efbfe50101931edf4b67cdcfa7e221ecfde9"))
3653 (package
3654 (name "sbcl-usocket-boot0")
3655 (version (git-version "0.7.1" "1" commit))
3656 (source
3657 (origin
3658 (method git-fetch)
3659 (uri (git-reference
3660 (url "https://github.com/usocket/usocket/")
3661 (commit commit)))
3662 (file-name (git-file-name "usocket" version))
3663 (sha256
3664 (base32
3665 "1lk6ipakrib7kdgzw44hrgmls9akp5pz4h35yynw0k5zwmmq6374"))))
3666 (build-system asdf-build-system/sbcl)
3667 (inputs
3668 `(("split-sequence" ,sbcl-split-sequence)))
3669 (arguments
3670 `(#:tests? #f
3671 #:asd-system-name "usocket"))
3672 (home-page "https://common-lisp.net/project/usocket/")
3673 (synopsis "Universal socket library for Common Lisp (server side)")
3674 (description
3675 "This library strives to provide a portable TCP/IP and UDP/IP socket
3676 interface for as many Common Lisp implementations as possible, while keeping
3677 the abstraction and portability layer as thin as possible.")
3678 (license license:expat))))
3679
3680 (define-public sbcl-usocket-server
3681 (package
3682 (inherit sbcl-usocket-boot0)
3683 (name "sbcl-usocket-server")
3684 (inputs
3685 `(("usocket" ,sbcl-usocket-boot0)
3686 ("portable-threads" ,sbcl-portable-threads)))
3687 (arguments
3688 '(#:asd-system-name "usocket-server"))
3689 (synopsis "Universal socket library for Common Lisp (server side)")))
3690
3691 (define-public cl-usocket-server
3692 (sbcl-package->cl-source-package sbcl-usocket-server))
3693
3694 (define-public ecl-socket-server
3695 (sbcl-package->ecl-package sbcl-usocket-server))
3696
3697 (define-public sbcl-usocket
3698 (package
3699 (inherit sbcl-usocket-boot0)
3700 (name "sbcl-usocket")
3701 (arguments
3702 ;; FIXME: Tests need network access?
3703 `(#:tests? #f))
3704 (native-inputs
3705 ;; Testing only.
3706 `(("usocket-server" ,sbcl-usocket-server)
3707 ("rt" ,sbcl-rt)))))
3708
3709 (define-public cl-usocket
3710 (sbcl-package->cl-source-package sbcl-usocket))
3711
3712 (define-public ecl-socket
3713 (sbcl-package->ecl-package sbcl-usocket))
3714
3715 (define-public sbcl-s-xml
3716 (package
3717 (name "sbcl-s-xml")
3718 (version "3")
3719 (source
3720 (origin
3721 (method url-fetch)
3722 (uri "https://common-lisp.net/project/s-xml/s-xml.tgz")
3723 (sha256
3724 (base32
3725 "061qcr0dzshsa38s5ma4ay924cwak2nq9gy59dw6v9p0qb58nzjf"))))
3726 (build-system asdf-build-system/sbcl)
3727 (home-page "https://common-lisp.net/project/s-xml/")
3728 (synopsis "Simple XML parser implemented in Common Lisp")
3729 (description
3730 "S-XML is a simple XML parser implemented in Common Lisp. This XML
3731 parser implementation has the following features:
3732
3733 @itemize
3734 @item It works (handling many common XML usages).
3735 @item It is very small (the core is about 700 lines of code, including
3736 comments and whitespace).
3737 @item It has a core API that is simple, efficient and pure functional, much
3738 like that from SSAX (see also http://ssax.sourceforge.net).
3739 @item It supports different DOM models: an XSML-based one, an LXML-based one
3740 and a classic xml-element struct based one.
3741 @item It is reasonably time and space efficient (internally avoiding garbage
3742 generatation as much as possible).
3743 @item It does support CDATA.
3744 @item It should support the same character sets as your Common Lisp
3745 implementation.
3746 @item It does support XML name spaces.
3747 @end itemize
3748
3749 This XML parser implementation has the following limitations:
3750
3751 @itemize
3752 @item It does not support any special tags (like processing instructions).
3753 @item It is not validating, even skips DTD's all together.
3754 @end itemize\n")
3755 (license license:lgpl3+)))
3756
3757 (define-public cl-s-xml
3758 (sbcl-package->cl-source-package sbcl-s-xml))
3759
3760 (define-public ecl-s-xml
3761 (sbcl-package->ecl-package sbcl-s-xml))
3762
3763 (define-public sbcl-s-xml-rpc
3764 (package
3765 (name "sbcl-s-xml-rpc")
3766 (version "7")
3767 (source
3768 (origin
3769 (method url-fetch)
3770 (uri "https://common-lisp.net/project/s-xml-rpc/s-xml-rpc.tgz")
3771 (sha256
3772 (base32
3773 "02z7k163d51v0pzk8mn1xb6h5s6x64gjqkslhwm3a5x26k2gfs11"))))
3774 (build-system asdf-build-system/sbcl)
3775 (inputs
3776 `(("s-xml" ,sbcl-s-xml)))
3777 (home-page "https://common-lisp.net/project/s-xml-rpc/")
3778 (synopsis "Implementation of XML-RPC in Common Lisp for both client and server")
3779 (description
3780 "S-XML-RPC is an implementation of XML-RPC in Common Lisp for both
3781 client and server.")
3782 (license license:lgpl3+)))
3783
3784 (define-public cl-s-xml-rpc
3785 (sbcl-package->cl-source-package sbcl-s-xml-rpc))
3786
3787 (define-public ecl-s-xml-rpc
3788 (sbcl-package->ecl-package sbcl-s-xml-rpc))
3789
3790 (define-public sbcl-trivial-clipboard
3791 (let ((commit "5af3415d1484e6d69a1b5c178f24680d9fd01796"))
3792 (package
3793 (name "sbcl-trivial-clipboard")
3794 (version (git-version "0.0.0.0" "2" commit))
3795 (source
3796 (origin
3797 (method git-fetch)
3798 (uri (git-reference
3799 (url "https://github.com/snmsts/trivial-clipboard")
3800 (commit commit)))
3801 (file-name (git-file-name "trivial-clipboard" version))
3802 (sha256
3803 (base32
3804 "1gb515z5yq6h5548pb1fwhmb0hhq1ssyb78pvxh4alq799xipxs9"))))
3805 (build-system asdf-build-system/sbcl)
3806 (inputs
3807 `(("xclip" ,xclip)))
3808 (native-inputs
3809 `(("fiveam" ,sbcl-fiveam)))
3810 (arguments
3811 `(#:phases
3812 (modify-phases %standard-phases
3813 (add-after 'unpack 'fix-paths
3814 (lambda* (#:key inputs #:allow-other-keys)
3815 (substitute* "src/text.lisp"
3816 (("\\(executable-find \"xclip\"\\)")
3817 (string-append "(executable-find \""
3818 (assoc-ref inputs "xclip")
3819 "/bin/xclip\")"))))))))
3820 (home-page "https://github.com/snmsts/trivial-clipboard")
3821 (synopsis "Access system clipboard in Common Lisp")
3822 (description
3823 "@command{trivial-clipboard} gives access to the system clipboard.")
3824 (license license:expat))))
3825
3826 (define-public cl-trivial-clipboard
3827 (sbcl-package->cl-source-package sbcl-trivial-clipboard))
3828
3829 (define-public ecl-trivial-clipboard
3830 (sbcl-package->ecl-package sbcl-trivial-clipboard))