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