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