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