gnu: Add chanl.
[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 ng0 <ng0@n0.is>
7 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
8 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
9 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
10 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
11 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
12 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
13 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
14 ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
15 ;;; Copyright © 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
16 ;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
17 ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
18 ;;;
19 ;;; This file is part of GNU Guix.
20 ;;;
21 ;;; GNU Guix is free software; you can redistribute it and/or modify it
22 ;;; under the terms of the GNU General Public License as published by
23 ;;; the Free Software Foundation; either version 3 of the License, or (at
24 ;;; your option) any later version.
25 ;;;
26 ;;; GNU Guix is distributed in the hope that it will be useful, but
27 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29 ;;; GNU General Public License for more details.
30 ;;;
31 ;;; You should have received a copy of the GNU General Public License
32 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33
34 (define-module (gnu packages lisp)
35 #:use-module (gnu packages)
36 #:use-module ((guix licenses) #:prefix license:)
37 #:use-module (guix packages)
38 #:use-module (guix download)
39 #:use-module (guix git-download)
40 #:use-module (guix hg-download)
41 #:use-module (guix utils)
42 #:use-module (guix build-system gnu)
43 #:use-module (guix build-system ant)
44 #:use-module (guix build-system asdf)
45 #:use-module (guix build-system trivial)
46 #:use-module (gnu packages admin)
47 #:use-module (gnu packages base)
48 #:use-module (gnu packages bdw-gc)
49 #:use-module (gnu packages bison)
50 #:use-module (gnu packages c)
51 #:use-module (gnu packages compression)
52 #:use-module (gnu packages ed)
53 #:use-module (gnu packages flex)
54 #:use-module (gnu packages fontutils)
55 #:use-module (gnu packages gcc)
56 #:use-module (gnu packages gettext)
57 #:use-module (gnu packages gl)
58 #:use-module (gnu packages glib)
59 #:use-module (gnu packages m4)
60 #:use-module (gnu packages maths)
61 #:use-module (gnu packages multiprecision)
62 #:use-module (gnu packages ncurses)
63 #:use-module (gnu packages libffcall)
64 #:use-module (gnu packages libffi)
65 #:use-module (gnu packages libsigsegv)
66 #:use-module (gnu packages linux)
67 #:use-module (gnu packages perl)
68 #:use-module (gnu packages pkg-config)
69 #:use-module (gnu packages python)
70 #:use-module (gnu packages python-xyz)
71 #:use-module (gnu packages readline)
72 #:use-module (gnu packages sdl)
73 #:use-module (gnu packages sqlite)
74 #:use-module (gnu packages tex)
75 #:use-module (gnu packages texinfo)
76 #:use-module (gnu packages tls)
77 #:use-module (gnu packages version-control)
78 #:use-module (gnu packages xorg)
79 #:use-module (gnu packages databases)
80 #:use-module (gnu packages gtk)
81 #:use-module (gnu packages webkit)
82 #:use-module (gnu packages xdisorg)
83 #:use-module (ice-9 match)
84 #:use-module (srfi srfi-19))
85
86 (define (asdf-substitutions lisp)
87 ;; Prepend XDG_DATA_DIRS/LISP-bundle-systems to ASDF's
88 ;; 'default-system-source-registry'.
89 `((("\\(,dir \"systems/\"\\)\\)")
90 (format #f
91 "(,dir \"~a-bundle-systems\")))
92
93 ,@(loop :for dir :in (xdg-data-dirs \"common-lisp/\")
94 :collect `(:directory (,dir \"systems\"))"
95 ,lisp))))
96
97 (define-public gcl
98 (let ((commit "d3335e2b3deb63f930eb0328e9b05377744c9512")
99 (revision "2")) ;Guix package revision
100 (package
101 (name "gcl")
102 (version (string-append "2.6.12-" revision "."
103 (string-take commit 7)))
104 (source
105 (origin
106 (method git-fetch)
107 (uri (git-reference
108 (url "https://git.savannah.gnu.org/r/gcl.git")
109 (commit commit)))
110 (file-name (string-append "gcl-" version "-checkout"))
111 (sha256
112 (base32 "05v86lhvsby05nzvcd3c4k0wljvgdgd0i6arzd2fx1yd67dl6fgj"))))
113 (build-system gnu-build-system)
114 (arguments
115 `(#:parallel-build? #f ; The build system seems not to be thread safe.
116 #:test-target "ansi-tests/test_results"
117 #:configure-flags '("--enable-ansi") ; required for use by the maxima package
118 #:make-flags (list
119 (string-append "GCL_CC=" (assoc-ref %build-inputs "gcc")
120 "/bin/gcc")
121 (string-append "CC=" (assoc-ref %build-inputs "gcc")
122 "/bin/gcc"))
123 #:phases
124 (modify-phases %standard-phases
125 (add-before 'configure 'pre-conf
126 (lambda* (#:key inputs #:allow-other-keys)
127 (chdir "gcl")
128 (substitute*
129 (append
130 '("pcl/impl/kcl/makefile.akcl"
131 "add-defs"
132 "unixport/makefile.dos"
133 "add-defs.bat"
134 "gcl-tk/makefile.prev"
135 "add-defs1")
136 (find-files "h" "\\.defs"))
137 (("SHELL=/bin/bash")
138 (string-append "SHELL=" (which "bash")))
139 (("SHELL=/bin/sh")
140 (string-append "SHELL=" (which "sh"))))
141 (substitute* "h/linux.defs"
142 (("#CC") "CC")
143 (("-fwritable-strings") "")
144 (("-Werror") ""))
145 (substitute* "lsp/gcl_top.lsp"
146 (("\"cc\"")
147 (string-append "\"" (assoc-ref %build-inputs "gcc")
148 "/bin/gcc\""))
149 (("\\(or \\(get-path \\*cc\\*\\) \\*cc\\*\\)") "*cc*")
150 (("\"ld\"")
151 (string-append "\"" (assoc-ref %build-inputs "binutils")
152 "/bin/ld\""))
153 (("\\(or \\(get-path \\*ld\\*\\) \\*ld\\*\\)") "*ld*")
154 (("\\(get-path \"objdump --source \"\\)")
155 (string-append "\"" (assoc-ref %build-inputs "binutils")
156 "/bin/objdump --source \"")))
157 #t))
158 (add-after 'install 'wrap
159 (lambda* (#:key inputs outputs #:allow-other-keys)
160 (let* ((gcl (assoc-ref outputs "out"))
161 (input-path (lambda (lib path)
162 (string-append
163 (assoc-ref inputs lib) path)))
164 (binaries '("binutils")))
165 ;; GCC and the GNU binutils are necessary for GCL to be
166 ;; able to compile Lisp functions and programs (this is
167 ;; a standard feature in Common Lisp). While the
168 ;; the location of GCC is specified in the make-flags,
169 ;; the GNU binutils must be available in GCL's $PATH.
170 (wrap-program (string-append gcl "/bin/gcl")
171 `("PATH" prefix ,(map (lambda (binary)
172 (input-path binary "/bin"))
173 binaries))))
174 #t))
175 ;; drop strip phase to make maxima build, see
176 ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html
177 (delete 'strip))))
178 (inputs
179 `(("gmp" ,gmp)
180 ("readline" ,readline)))
181 (native-inputs
182 `(("m4" ,m4)
183 ("texinfo" ,texinfo)))
184 (home-page "https://www.gnu.org/software/gcl/")
185 (synopsis "A Common Lisp implementation")
186 (description "GCL is an implementation of the Common Lisp language. It
187 features the ability to compile to native object code and to load native
188 object code modules directly into its lisp core. It also features a
189 stratified garbage collection strategy, a source-level debugger and a built-in
190 interface to the Tk widget system.")
191 (license license:lgpl2.0+))))
192
193 (define-public ecl
194 (package
195 (name "ecl")
196 (version "16.1.3")
197 (source
198 (origin
199 (method url-fetch)
200 (uri (string-append
201 "https://common-lisp.net/project/ecl/static/files/release/"
202 name "-" version ".tgz"))
203 (sha256
204 (base32 "0m0j24w5d5a9dwwqyrg0d35c0nys16ijb4r0nyk87yp82v38b9bn"))
205 (modules '((guix build utils)))
206 (snippet
207 ;; Add ecl-bundle-systems to 'default-system-source-registry'.
208 `(begin
209 (substitute* "contrib/asdf/asdf.lisp"
210 ,@(asdf-substitutions name))
211 #t))))
212 (build-system gnu-build-system)
213 ;; src/configure uses 'which' to confirm the existence of 'gzip'.
214 (native-inputs `(("which" ,which)))
215 (inputs `(("gmp" ,gmp)
216 ("libatomic-ops" ,libatomic-ops)
217 ("libgc" ,libgc)
218 ("libffi" ,libffi)))
219 (arguments
220 '(#:tests? #t
221 #:parallel-tests? #f
222 #:phases
223 (modify-phases %standard-phases
224 (delete 'check)
225 (add-after 'install 'wrap
226 (lambda* (#:key inputs outputs #:allow-other-keys)
227 (let* ((ecl (assoc-ref outputs "out"))
228 (input-path (lambda (lib path)
229 (string-append
230 (assoc-ref inputs lib) path)))
231 (libraries '("gmp" "libatomic-ops" "libgc" "libffi" "libc"))
232 (binaries '("gcc" "ld-wrapper" "binutils"))
233 (library-directories
234 (map (lambda (lib) (input-path lib "/lib"))
235 libraries)))
236
237 (wrap-program (string-append ecl "/bin/ecl")
238 `("PATH" prefix
239 ,(map (lambda (binary)
240 (input-path binary "/bin"))
241 binaries))
242 `("CPATH" suffix
243 ,(map (lambda (lib)
244 (input-path lib "/include"))
245 `("kernel-headers" ,@libraries)))
246 `("LIBRARY_PATH" suffix ,library-directories)
247 `("LD_LIBRARY_PATH" suffix ,library-directories)))))
248 (add-after 'wrap 'check (assoc-ref %standard-phases 'check))
249 (add-before 'check 'fix-path-to-ecl
250 (lambda _
251 (substitute* "build/tests/Makefile"
252 (("\\$\\{exec_prefix\\}/") ""))
253 #t)))))
254 (native-search-paths
255 (list (search-path-specification
256 (variable "XDG_DATA_DIRS")
257 (files '("share")))))
258 (home-page "http://ecls.sourceforge.net/")
259 (synopsis "Embeddable Common Lisp")
260 (description "ECL is an implementation of the Common Lisp language as
261 defined by the ANSI X3J13 specification. Its most relevant features are: a
262 bytecode compiler and interpreter, being able to compile Common Lisp with any
263 C/C++ compiler, being able to build standalone executables and libraries, and
264 supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
265 ;; Note that the file "Copyright" points to some files and directories
266 ;; which aren't under the lgpl2.0+ and instead contain many different,
267 ;; non-copyleft licenses.
268 (license license:lgpl2.0+)))
269
270 (define-public clisp
271 (package
272 (name "clisp")
273 (version "2.49-92")
274 (source
275 (origin
276 (method git-fetch)
277 (uri (git-reference
278 (url "https://gitlab.com/gnu-clisp/clisp")
279 (commit "clisp-2.49.92-2018-02-18")))
280 (file-name (git-file-name name version))
281 (sha256
282 (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))
283 (patches (search-patches "clisp-remove-failing-test.patch"))))
284 (build-system gnu-build-system)
285 (inputs `(("libffcall" ,libffcall)
286 ("ncurses" ,ncurses)
287 ("readline" ,readline)
288 ("libsigsegv" ,libsigsegv)))
289 (arguments
290 `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"
291 (or (%current-system)
292 (%current-target-system)))
293 '("CFLAGS=-falign-functions=4")
294 '())
295 "--with-dynamic-ffi"
296 "--with-dynamic-modules"
297 "--with-module=rawsock")
298 #:build #f
299 #:phases
300 (modify-phases %standard-phases
301 (add-after 'unpack 'patch-sh-and-pwd
302 (lambda _
303 ;; The package is very messy with its references to "/bin/sh" and
304 ;; some other absolute paths to traditional tools. These appear in
305 ;; many places where our automatic patching misses them. Therefore
306 ;; we do the following, in this early (post-unpack) phase, to solve
307 ;; the problem from its root.
308 (substitute* '("src/clisp-link.in"
309 "src/unix.d"
310 "src/makemake.in")
311 (("/bin/sh") (which "sh")))
312 (substitute* (find-files "." "configure|Makefile")
313 (("/bin/sh") "sh"))
314 (substitute* '("src/clisp-link.in")
315 (("/bin/pwd") "pwd"))
316 #t)))
317 ;; Makefiles seem to have race conditions.
318 #:parallel-build? #f))
319 (home-page "https://clisp.sourceforge.io/")
320 (synopsis "A Common Lisp implementation")
321 (description
322 "GNU CLISP is an implementation of ANSI Common Lisp. Common Lisp is a
323 high-level, object-oriented functional programming language. CLISP includes
324 an interpreter, a compiler, a debugger, and much more.")
325 (license license:gpl2+)))
326
327 (define-public sbcl
328 (package
329 (name "sbcl")
330 (version "1.5.7")
331 (source
332 (origin
333 (method url-fetch)
334 (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
335 version "-source.tar.bz2"))
336 (sha256
337 (base32 "11cl839512898shxcgjmnn1178pwc8vcfaypmzxm1wzkwasjyx2l"))
338 (modules '((guix build utils)))
339 (snippet
340 ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
341 `(begin
342 (substitute* "contrib/asdf/asdf.lisp"
343 ,@(asdf-substitutions name))
344 #t))))
345 (build-system gnu-build-system)
346 (outputs '("out" "doc"))
347 (native-inputs
348 ;; From INSTALL:
349 ;; Supported build hosts are:
350 ;; SBCL
351 ;; CMUCL
352 ;; CCL (formerly known as OpenMCL)
353 ;; ABCL (recent versions only)
354 ;; CLISP (only some versions: 2.44.1 is OK, 2.47 is not)
355 ;; XCL
356 ;;
357 ;; From NEWS:
358 ;; * build enhancement: new host quirks mechanism, support for building under
359 ;; ABCL and ECL (as well as CCL, CMUCL, CLISP and SBCL itself)
360 ;;
361 ;; CCL is not bootstrappable so it won't do. CLISP 2.49 seems to work.
362 ;; ECL too. ECL builds SBCL about 20% slower than CLISP. As of
363 ;; 2019-09-05, ECL was last updated in 2016 while CLISP was last update
364 ;; in 2010.
365 ;;
366 ;; For now we stick to CLISP for all systems. We keep the `match' in to
367 ;; make it easier to change the host compiler for various architectures.
368 `(,@(match (%current-system)
369 ((or "x86_64-linux" "i686-linux")
370 `(("clisp" ,clisp)))
371 (_
372 `(("clisp" ,clisp))))
373 ("which" ,which)
374 ("inetutils" ,inetutils) ;for hostname(1)
375 ("ed" ,ed)
376 ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
377 ("texinfo" ,texinfo)
378 ("zlib" ,zlib)))
379 (arguments
380 `(#:modules ((guix build gnu-build-system)
381 (guix build utils)
382 (srfi srfi-1))
383 #:phases
384 (modify-phases %standard-phases
385 (delete 'configure)
386 (add-before 'build 'patch-unix-tool-paths
387 (lambda* (#:key outputs inputs #:allow-other-keys)
388 (let ((out (assoc-ref outputs "out"))
389 (bash (assoc-ref inputs "bash"))
390 (coreutils (assoc-ref inputs "coreutils"))
391 (ed (assoc-ref inputs "ed")))
392 (define (quoted-path input path)
393 (string-append "\"" input path "\""))
394 ;; Patch absolute paths in string literals. Note that this
395 ;; occurs in some .sh files too (which contain Lisp code). Use
396 ;; ISO-8859-1 because some of the files are ISO-8859-1 encoded.
397 (with-fluids ((%default-port-encoding #f))
398 ;; The removed file is utf-16-be encoded, which gives substitute*
399 ;; trouble. It does not contain references to the listed programs.
400 (substitute* (delete
401 "./tests/data/compile-file-pos-utf16be.lisp"
402 (find-files "." "\\.(lisp|sh)$"))
403 (("\"/bin/sh\"") (quoted-path bash "/bin/sh"))
404 (("\"/usr/bin/env\"") (quoted-path coreutils "/usr/bin/env"))
405 (("\"/bin/cat\"") (quoted-path coreutils "/bin/cat"))
406 (("\"/bin/ed\"") (quoted-path ed "/bin/ed"))
407 (("\"/bin/echo\"") (quoted-path coreutils "/bin/echo"))
408 (("\"/bin/uname\"") (quoted-path coreutils "/bin/uname"))))
409 ;; This one script has a non-string occurrence of /bin/sh.
410 (substitute* '("tests/foreign.test.sh")
411 ;; Leave whitespace so we don't match the shebang.
412 ((" /bin/sh ") " sh "))
413 ;; This file contains a module that can create executable files
414 ;; which depend on the presence of SBCL. It generates shell
415 ;; scripts doing "exec sbcl ..." to achieve this. We patch both
416 ;; the shebang and the reference to "sbcl", tying the generated
417 ;; executables to the exact SBCL package that generated them.
418 (substitute* '("contrib/sb-executable/sb-executable.lisp")
419 (("/bin/sh") (string-append bash "/bin/sh"))
420 (("exec sbcl") (string-append "exec " out "/bin/sbcl")))
421 ;; Disable some tests that fail in our build environment.
422 (substitute* '("contrib/sb-bsd-sockets/tests.lisp")
423 ;; This requires /etc/protocols.
424 (("\\(deftest get-protocol-by-name/error" all)
425 (string-append "#+nil ;disabled by Guix\n" all)))
426 (substitute* '("contrib/sb-posix/posix-tests.lisp")
427 ;; These assume some users/groups which we don't have.
428 (("\\(deftest pwent\\.[12]" all)
429 (string-append "#+nil ;disabled by Guix\n" all))
430 (("\\(deftest grent\\.[12]" all)
431 (string-append "#+nil ;disabled by Guix\n" all))))))
432 ;; FIXME: the texlive-union insists on regenerating fonts. It stores
433 ;; them in HOME, so it needs to be writeable.
434 (add-before 'build 'set-HOME
435 (lambda _ (setenv "HOME" "/tmp") #t))
436 (replace 'build
437 (lambda* (#:key outputs #:allow-other-keys)
438 (setenv "CC" "gcc")
439 (invoke "sh" "make.sh" ,@(match (%current-system)
440 ((or "x86_64-linux" "i686-linux")
441 `("clisp"))
442 (_
443 `("clisp")))
444 (string-append "--prefix="
445 (assoc-ref outputs "out"))
446 "--with-sb-core-compression"
447 "--with-sb-xref-for-internals")))
448 (replace 'install
449 (lambda _
450 (invoke "sh" "install.sh")))
451 (add-after 'build 'build-doc
452 (lambda _
453 (with-directory-excursion "doc/manual"
454 (and (invoke "make" "info")
455 (invoke "make" "dist")))))
456 (add-after 'build 'build-source
457 (lambda* (#:key outputs #:allow-other-keys)
458 (let* ((out (assoc-ref outputs "out"))
459 (rc (string-append out "/lib/sbcl/sbclrc"))
460 (source-dir (string-append out "/share/sbcl")))
461 (for-each (lambda (p)
462 (copy-recursively p (string-append source-dir "/" p)))
463 '("src" "contrib"))
464 (mkdir-p (dirname rc))
465 (with-output-to-file rc
466 (lambda ()
467 (display
468 (string-append "(sb-ext:set-sbcl-source-location \""
469 source-dir "\")") )))
470 #t)))
471 (add-after 'install 'install-doc
472 (lambda* (#:key outputs #:allow-other-keys)
473 (let* ((out (assoc-ref outputs "out"))
474 (doc (assoc-ref outputs "doc"))
475 (old-doc-dir (string-append out "/share/doc"))
476 (new-doc/sbcl-dir (string-append doc "/share/doc/sbcl")))
477 (rmdir (string-append old-doc-dir "/sbcl/html"))
478 (mkdir-p new-doc/sbcl-dir)
479 (copy-recursively (string-append old-doc-dir "/sbcl")
480 new-doc/sbcl-dir)
481 (delete-file-recursively old-doc-dir)
482 #t))))
483 ;; No 'check' target, though "make.sh" (build phase) runs tests.
484 #:tests? #f))
485 (native-search-paths
486 (list (search-path-specification
487 (variable "XDG_DATA_DIRS")
488 (files '("share")))))
489 (home-page "http://www.sbcl.org/")
490 (synopsis "Common Lisp implementation")
491 (description "Steel Bank Common Lisp (SBCL) is a high performance Common
492 Lisp compiler. In addition to the compiler and runtime system for ANSI Common
493 Lisp, it provides an interactive environment including a debugger, a
494 statistical profiler, a code coverage tool, and many other extensions.")
495 ;; Public domain in jurisdictions that allow it, bsd-2 otherwise. MIT
496 ;; loop macro has its own license. See COPYING file for further notes.
497 (license (list license:public-domain license:bsd-2
498 (license:x11-style "file://src/code/loop.lisp")))))
499
500 (define-public ccl
501 ;; Warning: according to upstream, CCL is not bootstrappable.
502 ;; See https://github.com/Clozure/ccl/issues/222 from 2019-09-02:
503 ;;
504 ;; "As far as I know, there is no way to build CCL without an existing
505 ;; running CCL image. It was bootstrapped back in 1986 or so as
506 ;; Macintosh Common Lisp, by Gary Byers, I believe, who is no longer on
507 ;; the planet to tell us the story. It SHOULD be possible to port the
508 ;; CCL compiler to portable Common Lisp, so that ANY lisp could build
509 ;; it, as is the case for SBCL, but I know of no attempt to do so."
510 (package
511 (name "ccl")
512 (version "1.11.5")
513 (source #f)
514 (build-system gnu-build-system)
515 ;; CCL consists of a "lisp kernel" and "heap image", both of which are
516 ;; shipped in precompiled form in source tarballs. The former is a C
517 ;; program which we can rebuild from scratch, but the latter cannot be
518 ;; generated without an already working copy of CCL, and is platform
519 ;; dependent, so we need to fetch the correct tarball for the platform.
520 (inputs
521 `(("ccl"
522 ,(origin
523 (method url-fetch)
524 (uri (string-append
525 "https://github.com/Clozure/ccl/releases/download/v" version
526 "/ccl-" version "-"
527 (match (%current-system)
528 ((or "i686-linux" "x86_64-linux") "linuxx86")
529 ("armhf-linux" "linuxarm")
530 ;; Prevent errors when querying this package on unsupported
531 ;; platforms, e.g. when running "guix package --search="
532 (_ "UNSUPPORTED"))
533 ".tar.gz"))
534 (sha256
535 (base32
536 (match (%current-system)
537 ((or "i686-linux" "x86_64-linux")
538 "0hs1f3z7crgzvinpj990kv9gvbsipxvcvwbmk54n51nasvc5025q")
539 ("armhf-linux"
540 "0p0l1dzsygb6i1xxgbipjpxkn46xhq3jm41a34ga1qqp4x8lkr62")
541 (_ ""))))))))
542 (native-inputs
543 `(("m4" ,m4)
544 ("subversion" ,subversion)))
545 (arguments
546 `(#:tests? #f ;no 'check' target
547 #:modules ((srfi srfi-26)
548 (guix build utils)
549 (guix build gnu-build-system))
550 #:phases
551 (modify-phases %standard-phases
552 (replace 'unpack
553 (lambda* (#:key inputs #:allow-other-keys)
554 (invoke "tar" "xzvf" (assoc-ref inputs "ccl"))
555 (chdir "ccl")
556 #t))
557 (delete 'configure)
558 (add-before 'build 'pre-build
559 ;; Enter the source directory for the current platform's lisp
560 ;; kernel, and run 'make clean' to remove the precompiled one.
561 (lambda _
562 (substitute* "lisp-kernel/m4macros.m4"
563 (("/bin/pwd") (which "pwd")))
564 (chdir (string-append
565 "lisp-kernel/"
566 ,(match (or (%current-target-system) (%current-system))
567 ("i686-linux" "linuxx8632")
568 ("x86_64-linux" "linuxx8664")
569 ("armhf-linux" "linuxarm")
570 ;; Prevent errors when querying this package
571 ;; on unsupported platforms, e.g. when running
572 ;; "guix package --search="
573 (_ "UNSUPPORTED"))))
574 (substitute* '("Makefile")
575 (("/bin/rm") "rm"))
576 (setenv "CC" "gcc")
577 (invoke "make" "clean")))
578 ;; XXX Do we need to recompile the heap image as well for Guix?
579 ;; For now just use the one we already got in the tarball.
580 (replace 'install
581 (lambda* (#:key outputs inputs #:allow-other-keys)
582 ;; The lisp kernel built by running 'make' in lisp-kernel/$system
583 ;; is put back into the original directory, so go back. The heap
584 ;; image is there as well.
585 (chdir "../..")
586 (let* ((out (assoc-ref outputs "out"))
587 (libdir (string-append out "/lib/"))
588 (bindir (string-append out "/bin/"))
589 (wrapper (string-append bindir "ccl"))
590 (bash (assoc-ref inputs "bash"))
591 (kernel
592 ,(match (or (%current-target-system) (%current-system))
593 ("i686-linux" "lx86cl")
594 ("x86_64-linux" "lx86cl64")
595 ("armhf-linux" "armcl")
596 ;; Prevent errors when querying this package
597 ;; on unsupported platforms, e.g. when running
598 ;; "guix package --search="
599 (_ "UNSUPPORTED")))
600 (heap (string-append kernel ".image")))
601 (install-file kernel libdir)
602 (install-file heap libdir)
603
604 (let ((dirs '("lib" "library" "examples" "tools" "objc-bridge"
605 ,@(match (%current-system)
606 ("x86_64-linux"
607 '("x86-headers64"))
608 ("i686-linux"
609 '("x86-headers"))
610 (_ '())))))
611 (for-each copy-recursively
612 dirs
613 (map (cut string-append libdir <>) dirs)))
614
615 (mkdir-p bindir)
616 (with-output-to-file wrapper
617 (lambda ()
618 (display
619 (string-append
620 "#!" bash "/bin/sh\n"
621 "export CCL_DEFAULT_DIRECTORY=" libdir "\n"
622 "exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
623 (chmod wrapper #o755))
624 #t)))))
625 (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
626 (home-page "https://ccl.clozure.com/")
627 (synopsis "Common Lisp implementation")
628 (description "Clozure CL (often called CCL for short) is a Common Lisp
629 implementation featuring fast compilation speed, native threads, a precise,
630 generational, compacting garbage collector, and a convenient foreign-function
631 interface.")
632 ;; See file doc/LICENSE for clarifications it makes regarding how the LGPL
633 ;; applies to Lisp code according to them.
634 (license (list license:lgpl2.1
635 license:clarified-artistic)))) ;TRIVIAL-LDAP package
636
637 (define-public lush2
638 (package
639 (name "lush2")
640 (version "2.0.1")
641 (source
642 (origin
643 (method url-fetch)
644 (uri (string-append "mirror://sourceforge/lush/lush2/lush-"
645 version ".tar.gz"))
646 (modules '((guix build utils)))
647 (snippet
648 '(begin
649 (substitute* "src/unix.c"
650 (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
651 (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
652 (substitute* "src/main.c"
653 (("\" \\(built \" __DATE__ \"\\)\"") ""))
654 #t))
655 (sha256
656 (base32
657 "02pkfn3nqdkm9fm44911dbcz0v3r0l53vygj8xigl6id5g3iwi4k"))))
658 (build-system gnu-build-system)
659 (arguments
660 `(;; We have to add these LIBS so that they are found.
661 #:configure-flags (list "LIBS=-lz"
662 "X_EXTRA_LIBS=-lfontconfig"
663 "--with-x")
664 #:tests? #f)) ; No make check.
665 (native-inputs `(("intltool" ,intltool)))
666 (inputs
667 `(("alsa-lib" ,alsa-lib)
668 ("sdl" ,sdl)
669 ("sdl-image" ,sdl-image)
670 ("sdl-mixer" ,sdl-mixer)
671 ("sdl-net" ,sdl-net)
672 ("sdl-ttf" ,sdl-ttf)
673 ("lapack" ,lapack)
674 ("libxft" ,libxft)
675 ("fontconfig" ,fontconfig)
676 ("gsl" ,gsl)
677 ("openblas" ,openblas)
678 ("glu" ,glu)
679 ("mesa" ,mesa)
680 ("mesa-utils" ,mesa-utils)
681 ("binutils" ,binutils)
682 ("libiberty" ,libiberty)
683 ("readline" ,readline)
684 ("zlib" ,zlib)
685 ("gettext-minimal" ,gettext-minimal)))
686 (synopsis "Lisp Universal Shell")
687 (description
688 "Lush is an object-oriented Lisp interpreter/compiler with features
689 designed to please people who want to prototype large numerical
690 applications. Lush includes an extensive library of
691 vector/matrix/tensor manipulation, numerous numerical libraries
692 (including GSL, LAPACK, and BLAS), a set of graphic functions, a
693 simple GUI toolkit, and interfaces to various graphic and multimedia
694 libraries such as OpenGL, SDL, Video4Linux, and ALSA (video/audio
695 grabbing), and others. Lush is an ideal frontend script language for
696 programming projects written in C or other languages. Lush also has
697 libraries for Machine Learning, Neural Nets and statistical estimation.")
698 (home-page "http://lush.sourceforge.net/")
699 (license license:lgpl2.1+)))
700
701 (define-public sbcl-alexandria
702 (let ((revision "1")
703 (commit "926a066611b7b11cb71e26c827a271e500888c30"))
704 (package
705 (name "sbcl-alexandria")
706 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
707 (source
708 (origin
709 (method git-fetch)
710 (uri (git-reference
711 (url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
712 (commit commit)))
713 (sha256
714 (base32
715 "18yncicdkh294j05rhgm23gzi36y9qy6vrfba8vg69jrxjp1hx8l"))
716 (file-name (string-append "alexandria-" version "-checkout"))))
717 (build-system asdf-build-system/sbcl)
718 (synopsis "Collection of portable utilities for Common Lisp")
719 (description
720 "Alexandria is a collection of portable utilities. It does not contain
721 conceptual extensions to Common Lisp. It is conservative in scope, and
722 portable between implementations.")
723 (home-page "https://common-lisp.net/project/alexandria/")
724 (license license:public-domain))))
725
726 (define-public cl-alexandria
727 (sbcl-package->cl-source-package sbcl-alexandria))
728
729 (define-public ecl-alexandria
730 (sbcl-package->ecl-package sbcl-alexandria))
731
732 (define-public sbcl-net.didierverna.asdf-flv
733 (package
734 (name "sbcl-net.didierverna.asdf-flv")
735 (version "2.1")
736 (source
737 (origin
738 (method git-fetch)
739 (uri (git-reference
740 (url "https://github.com/didierverna/asdf-flv")
741 (commit (string-append "version-" version))))
742 (file-name (git-file-name "asdf-flv" version))
743 (sha256
744 (base32 "1fi2y4baxan103jbg4idjddzihy03kwnj2mzbwrknw4d4x7xlgwj"))))
745 (build-system asdf-build-system/sbcl)
746 (synopsis "Common Lisp ASDF extension to provide support for file-local variables")
747 (description "ASDF-FLV provides support for file-local variables through
748 ASDF. A file-local variable behaves like @code{*PACKAGE*} and
749 @code{*READTABLE*} with respect to @code{LOAD} and @code{COMPILE-FILE}: a new
750 dynamic binding is created before processing the file, so that any
751 modification to the variable becomes essentially file-local.
752
753 In order to make one or several variables file-local, use the macros
754 @code{SET-FILE-LOCAL-VARIABLE(S)}.")
755 (home-page "https://www.lrde.epita.fr/~didier/software/lisp/misc.php#asdf-flv")
756 (license (license:non-copyleft
757 "https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html"
758 "GNU All-Permissive License"))))
759
760 (define-public cl-net.didierverna.asdf-flv
761 (sbcl-package->cl-source-package sbcl-net.didierverna.asdf-flv))
762
763 (define-public ecl-net.didierverna.asdf-flv
764 (sbcl-package->ecl-package sbcl-net.didierverna.asdf-flv))
765
766 (define-public sbcl-fiveam
767 (package
768 (name "sbcl-fiveam")
769 (version "1.4.1")
770 (source
771 (origin
772 (method git-fetch)
773 (uri (git-reference
774 (url "https://github.com/sionescu/fiveam.git")
775 (commit (string-append "v" version))))
776 (file-name (git-file-name "fiveam" version))
777 (sha256
778 (base32 "1q3d38pwafnwnw42clq0f8g5xw7pbzr287jl9jsqmb1vb0n1vrli"))))
779 (inputs
780 `(("alexandria" ,sbcl-alexandria)
781 ("net.didierverna.asdf-flv" ,sbcl-net.didierverna.asdf-flv)
782 ("trivial-backtrace" ,sbcl-trivial-backtrace)))
783 (build-system asdf-build-system/sbcl)
784 (synopsis "Common Lisp testing framework")
785 (description "FiveAM is a simple (as far as writing and running tests
786 goes) regression testing framework. It has been designed with Common Lisp's
787 interactive development model in mind.")
788 (home-page "https://common-lisp.net/project/fiveam/")
789 (license license:bsd-3)))
790
791 (define-public cl-fiveam
792 (sbcl-package->cl-source-package sbcl-fiveam))
793
794 (define-public ecl-fiveam
795 (sbcl-package->ecl-package sbcl-fiveam))
796
797 (define-public sbcl-bordeaux-threads
798 (let ((commit "5dce49fbc829f4d136a734f5ef4f5d599660984f")
799 (revision "1"))
800 (package
801 (name "sbcl-bordeaux-threads")
802 (version (git-version "0.8.6" revision commit))
803 (source (origin
804 (method git-fetch)
805 (uri (git-reference
806 (url "https://github.com/sionescu/bordeaux-threads.git")
807 (commit commit)))
808 (sha256
809 (base32 "1gkh9rz7zw57n3110ikcf4835950wr4hgp8l79id5ai6nd86x7wv"))
810 (file-name
811 (git-file-name "bordeaux-threads" version))))
812 (inputs `(("alexandria" ,sbcl-alexandria)))
813 (native-inputs `(("fiveam" ,sbcl-fiveam)))
814 (build-system asdf-build-system/sbcl)
815 (synopsis "Portable shared-state concurrency library for Common Lisp")
816 (description "BORDEAUX-THREADS is a proposed standard for a minimal
817 MP/Threading interface. It is similar to the CLIM-SYS threading and lock
818 support.")
819 (home-page "https://common-lisp.net/project/bordeaux-threads/")
820 (license license:x11))))
821
822 (define-public cl-bordeaux-threads
823 (sbcl-package->cl-source-package sbcl-bordeaux-threads))
824
825 (define-public ecl-bordeaux-threads
826 (sbcl-package->ecl-package sbcl-bordeaux-threads))
827
828 (define-public sbcl-trivial-gray-streams
829 (let ((revision "1")
830 (commit "0483ade330508b4b2edeabdb47d16ec9437ee1cb"))
831 (package
832 (name "sbcl-trivial-gray-streams")
833 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
834 (source
835 (origin
836 (method git-fetch)
837 (uri
838 (git-reference
839 (url "https://github.com/trivial-gray-streams/trivial-gray-streams.git")
840 (commit commit)))
841 (sha256
842 (base32 "0m3rpf2x0zmdk3nf1qfa01j6a55vj7gkwhyw78qslcgbjlgh8p4d"))
843 (file-name
844 (string-append "trivial-gray-streams-" version "-checkout"))))
845 (build-system asdf-build-system/sbcl)
846 (synopsis "Compatibility layer for Gray streams implementations")
847 (description "Gray streams is an interface proposed for inclusion with
848 ANSI CL by David N. Gray. The proposal did not make it into ANSI CL, but most
849 popular CL implementations implement it. This package provides an extremely
850 thin compatibility layer for gray streams.")
851 (home-page "http://www.cliki.net/trivial-gray-streams")
852 (license license:x11))))
853
854 (define-public cl-trivial-gray-streams
855 (sbcl-package->cl-source-package sbcl-trivial-gray-streams))
856
857 (define-public ecl-trivial-gray-streams
858 (sbcl-package->ecl-package sbcl-trivial-gray-streams))
859
860 (define-public sbcl-fiasco
861 (let ((commit "d62f7558b21addc89f87e306f65d7f760632655f")
862 (revision "1"))
863 (package
864 (name "sbcl-fiasco")
865 (version (git-version "0.0.1" revision commit))
866 (source
867 (origin
868 (method git-fetch)
869 (uri (git-reference
870 (url "https://github.com/joaotavora/fiasco.git")
871 (commit commit)))
872 (file-name (git-file-name "fiasco" version))
873 (sha256
874 (base32
875 "1zwxs3d6iswayavcmb49z2892xhym7n556d8dnmvalc32pm9bkjh"))))
876 (build-system asdf-build-system/sbcl)
877 (inputs
878 `(("alexandria" ,sbcl-alexandria)
879 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
880 (synopsis "Simple and powerful test framework for Common Lisp")
881 (description "A Common Lisp test framework that treasures your failures,
882 logical continuation of Stefil. It focuses on interactive debugging.")
883 (home-page "https://github.com/joaotavora/fiasco")
884 ;; LICENCE specifies this is public-domain unless the legislation
885 ;; doesn't allow or recognize it. In that case it falls back to a
886 ;; permissive licence.
887 (license (list license:public-domain
888 (license:x11-style "file://LICENCE"))))))
889
890 (define-public cl-fiasco
891 (sbcl-package->cl-source-package sbcl-fiasco))
892
893 (define-public ecl-fiasco
894 (sbcl-package->ecl-package sbcl-fiasco))
895
896 (define-public sbcl-flexi-streams
897 (package
898 (name "sbcl-flexi-streams")
899 (version "1.0.16")
900 (source
901 (origin
902 (method git-fetch)
903 (uri (git-reference
904 (url "https://github.com/edicl/flexi-streams.git")
905 (commit (string-append "v" version))))
906 (file-name (git-file-name "flexi-streams" version))
907 (sha256
908 (base32 "0gvykjlmja060zqq6nn6aqxlshh6r6ijahmmgf20q0d839rwpgxc"))))
909 (build-system asdf-build-system/sbcl)
910 (arguments
911 `(#:phases
912 (modify-phases %standard-phases
913 (add-after 'unpack 'make-git-checkout-writable
914 (lambda _
915 (for-each make-file-writable (find-files "."))
916 #t)))))
917 (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
918 (synopsis "Implementation of virtual bivalent streams for Common Lisp")
919 (description "Flexi-streams is an implementation of \"virtual\" bivalent
920 streams that can be layered atop real binary or bivalent streams and that can
921 be used to read and write character data in various single- or multi-octet
922 encodings which can be changed on the fly. It also supplies in-memory binary
923 streams which are similar to string streams.")
924 (home-page "http://weitz.de/flexi-streams/")
925 (license license:bsd-3)))
926
927 (define-public cl-flexi-streams
928 (sbcl-package->cl-source-package sbcl-flexi-streams))
929
930 (define-public ecl-flexi-streams
931 (sbcl-package->ecl-package sbcl-flexi-streams))
932
933 (define-public sbcl-cl-ppcre
934 (package
935 (name "sbcl-cl-ppcre")
936 (version "2.0.11")
937 (source
938 (origin
939 (method git-fetch)
940 (uri (git-reference
941 (url "https://github.com/edicl/cl-ppcre.git")
942 (commit (string-append "v" version))))
943 (file-name (git-file-name "cl-ppcre" version))
944 (sha256
945 (base32 "0q3iany07vgqm144lw6pj0af2d3vsikpbkwcxr30fci3kzsq4f49"))))
946 (build-system asdf-build-system/sbcl)
947 (native-inputs `(("flexi-streams" ,sbcl-flexi-streams)))
948 (synopsis "Portable regular expression library for Common Lisp")
949 (description "CL-PPCRE is a portable regular expression library for Common
950 Lisp, which is compatible with perl. It is pretty fast, thread-safe, and
951 compatible with ANSI-compliant Common Lisp implementations.")
952 (home-page "http://weitz.de/cl-ppcre/")
953 (license license:bsd-2)))
954
955 (define-public cl-ppcre
956 (sbcl-package->cl-source-package sbcl-cl-ppcre))
957
958 (define-public ecl-cl-ppcre
959 (sbcl-package->ecl-package sbcl-cl-ppcre))
960
961 (define sbcl-cl-unicode-base
962 (let ((revision "1")
963 (commit "9fcd06fba1ddc9e66aed2f2d6c32dc9b764f03ea"))
964 (package
965 (name "sbcl-cl-unicode-base")
966 (version (string-append "0.1.5-" revision "." (string-take commit 7)))
967 (source (origin
968 (method git-fetch)
969 (uri (git-reference
970 (url "https://github.com/edicl/cl-unicode.git")
971 (commit commit)))
972 (file-name (string-append "cl-unicode-" version "-checkout"))
973 (sha256
974 (base32
975 "1jicprb5b3bv57dy1kg03572gxkcaqdjhak00426s76g0plmx5ki"))))
976 (build-system asdf-build-system/sbcl)
977 (arguments
978 '(#:asd-file "cl-unicode.asd"
979 #:asd-system-name "cl-unicode/base"))
980 (inputs
981 `(("cl-ppcre" ,sbcl-cl-ppcre)))
982 (home-page "http://weitz.de/cl-unicode/")
983 (synopsis "Portable Unicode library for Common Lisp")
984 (description "CL-UNICODE is a portable Unicode library Common Lisp, which
985 is compatible with perl. It is pretty fast, thread-safe, and compatible with
986 ANSI-compliant Common Lisp implementations.")
987 (license license:bsd-2))))
988
989 (define-public sbcl-cl-unicode
990 (package
991 (inherit sbcl-cl-unicode-base)
992 (name "sbcl-cl-unicode")
993 (inputs
994 `(("cl-unicode/base" ,sbcl-cl-unicode-base)
995 ,@(package-inputs sbcl-cl-unicode-base)))
996 (native-inputs
997 `(("flexi-streams" ,sbcl-flexi-streams)))
998 (arguments '())))
999
1000 (define-public ecl-cl-unicode
1001 (sbcl-package->ecl-package sbcl-cl-unicode))
1002
1003 (define-public cl-unicode
1004 (sbcl-package->cl-source-package sbcl-cl-unicode))
1005
1006 (define-public sbcl-clx
1007 (package
1008 (name "sbcl-clx")
1009 (version "0.7.5")
1010 (source
1011 (origin
1012 (method git-fetch)
1013 (uri
1014 (git-reference
1015 (url "https://github.com/sharplispers/clx.git")
1016 (commit version)))
1017 (sha256
1018 (base32
1019 "1vi67z9hpj5rr4xcmfbfwzmlcc0ah7hzhrmfid6lqdkva238v2wf"))
1020 (file-name (string-append "clx-" version))))
1021 (build-system asdf-build-system/sbcl)
1022 (native-inputs
1023 `(("fiasco" ,sbcl-fiasco)))
1024 (home-page "http://www.cliki.net/portable-clx")
1025 (synopsis "X11 client library for Common Lisp")
1026 (description "CLX is an X11 client library for Common Lisp. The code was
1027 originally taken from a CMUCL distribution, was modified somewhat in order to
1028 make it compile and run under SBCL, then a selection of patches were added
1029 from other CLXes around the net.")
1030 (license license:x11)))
1031
1032 (define-public cl-clx
1033 (sbcl-package->cl-source-package sbcl-clx))
1034
1035 (define-public ecl-clx
1036 (sbcl-package->ecl-package sbcl-clx))
1037
1038 (define-public sbcl-cl-ppcre-unicode
1039 (package (inherit sbcl-cl-ppcre)
1040 (name "sbcl-cl-ppcre-unicode")
1041 (arguments
1042 `(#:tests? #f ; tests fail with "Component :CL-PPCRE-TEST not found"
1043 #:asd-file "cl-ppcre-unicode.asd"))
1044 (inputs
1045 `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
1046 ("sbcl-cl-unicode" ,sbcl-cl-unicode)))))
1047
1048 (define-public stumpwm
1049 (package
1050 (name "stumpwm")
1051 (version "18.11")
1052 (source
1053 (origin
1054 (method git-fetch)
1055 (uri (git-reference
1056 (url "https://github.com/stumpwm/stumpwm.git")
1057 (commit version)))
1058 (file-name (git-file-name "stumpwm" version))
1059 (sha256
1060 (base32 "003g1fmh7446ws49866kzny4lrk1wf034dq5fa4m9mq1nzc7cwv7"))
1061 (patches
1062 ;; This patch is included in the post-18.11 git master tree
1063 ;; and can be removed when we move to the next release.
1064 (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
1065 (build-system asdf-build-system/sbcl)
1066 (native-inputs `(("fiasco" ,sbcl-fiasco)
1067 ("texinfo" ,texinfo)))
1068 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
1069 ("clx" ,sbcl-clx)
1070 ("alexandria" ,sbcl-alexandria)))
1071 (outputs '("out" "lib"))
1072 (arguments
1073 '(#:asd-system-name "stumpwm"
1074 #:phases
1075 (modify-phases %standard-phases
1076 (add-after 'create-symlinks 'build-program
1077 (lambda* (#:key outputs #:allow-other-keys)
1078 (build-program
1079 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
1080 outputs
1081 #:entry-program '((stumpwm:stumpwm) 0))))
1082 (add-after 'build-program 'create-desktop-file
1083 (lambda* (#:key outputs #:allow-other-keys)
1084 (let* ((out (assoc-ref outputs "out"))
1085 (xsessions (string-append out "/share/xsessions")))
1086 (mkdir-p xsessions)
1087 (call-with-output-file
1088 (string-append xsessions "/stumpwm.desktop")
1089 (lambda (file)
1090 (format file
1091 "[Desktop Entry]~@
1092 Name=stumpwm~@
1093 Comment=The Stump Window Manager~@
1094 Exec=~a/bin/stumpwm~@
1095 TryExec=~@*~a/bin/stumpwm~@
1096 Icon=~@
1097 Type=Application~%"
1098 out)))
1099 #t)))
1100 (add-after 'install 'install-manual
1101 (lambda* (#:key outputs #:allow-other-keys)
1102 ;; The proper way to the manual is bootstrapping a full autotools
1103 ;; build system and running ‘./configure && make stumpwm.info’ to
1104 ;; do some macro substitution. We can get away with much less.
1105 (let* ((out (assoc-ref outputs "out"))
1106 (info (string-append out "/share/info")))
1107 (invoke "makeinfo" "stumpwm.texi.in")
1108 (install-file "stumpwm.info" info)
1109 #t))))))
1110 (synopsis "Window manager written in Common Lisp")
1111 (description "Stumpwm is a window manager written entirely in Common Lisp.
1112 It attempts to be highly customizable while relying entirely on the keyboard
1113 for input. These design decisions reflect the growing popularity of
1114 productive, customizable lisp based systems.")
1115 (home-page "https://github.com/stumpwm/stumpwm")
1116 (license license:gpl2+)
1117 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
1118
1119 (define-public sbcl-stumpwm
1120 (deprecated-package "sbcl-stumpwm" stumpwm))
1121
1122 (define-public cl-stumpwm
1123 (package
1124 (inherit (sbcl-package->cl-source-package stumpwm))
1125 (name "cl-stumpwm")))
1126
1127 ;; The slynk that users expect to install includes all of slynk's contrib
1128 ;; modules. Therefore, we build the base module and all contribs first; then
1129 ;; we expose the union of these as `sbcl-slynk'. The following variable
1130 ;; describes the base module.
1131 (define sbcl-slynk-boot0
1132 (let ((revision "2")
1133 (commit "cbf84c36c4eca8b032e3fd16177a7bc02df3ec4c"))
1134 (package
1135 (name "sbcl-slynk-boot0")
1136 (version (string-append "1.0.0-beta-" revision "." (string-take commit 7)))
1137 (source
1138 (origin
1139 (method git-fetch)
1140 (uri
1141 (git-reference
1142 (url "https://github.com/joaotavora/sly.git")
1143 (commit commit)))
1144 (sha256
1145 (base32 "13dyhsravn591p7g6is01mp2ynzjnnj7pwgi57r6xqmd4611y9vh"))
1146 (file-name (string-append "slynk-" version "-checkout"))
1147 (modules '((guix build utils)
1148 (ice-9 ftw)))
1149 (snippet
1150 '(begin
1151 ;; Move the contribs into the main source directory for easier
1152 ;; access
1153 (substitute* "slynk/slynk.asd"
1154 (("\\.\\./contrib")
1155 "contrib")
1156 (("\\(defsystem :slynk/util")
1157 "(defsystem :slynk/util :depends-on (:slynk)")
1158 ((":depends-on \\(:slynk :slynk/util\\)")
1159 ":depends-on (:slynk :slynk-util)"))
1160 (substitute* "contrib/slynk-trace-dialog.lisp"
1161 (("\\(slynk::reset-inspector\\)") ; Causes problems on load
1162 "nil"))
1163 (substitute* "contrib/slynk-profiler.lisp"
1164 (("slynk:to-line")
1165 "slynk-pprint-to-line"))
1166 (substitute* "contrib/slynk-fancy-inspector.lisp"
1167 (("slynk/util") "slynk-util")
1168 ((":compile-toplevel :load-toplevel") ""))
1169 (rename-file "contrib" "slynk/contrib")
1170 ;; Move slynk's contents into the base directory for easier
1171 ;; access
1172 (for-each (lambda (file)
1173 (unless (string-prefix? "." file)
1174 (rename-file (string-append "slynk/" file)
1175 (string-append "./" (basename file)))))
1176 (scandir "slynk"))
1177 #t))))
1178 (build-system asdf-build-system/sbcl)
1179 (arguments
1180 `(#:tests? #f ; No test suite
1181 #:asd-system-name "slynk"))
1182 (synopsis "Common Lisp IDE for Emacs")
1183 (description "SLY is a fork of SLIME, an IDE backend for Common Lisp.
1184 It also features a completely redesigned REPL based on Emacs's own
1185 full-featured comint.el, live code annotations, and a consistent interactive
1186 button interface. Everything can be copied to the REPL. One can create
1187 multiple inspectors with independent history.")
1188 (home-page "https://github.com/joaotavora/sly")
1189 (license license:public-domain)
1190 (properties `((cl-source-variant . ,(delay cl-slynk)))))))
1191
1192 (define-public cl-slynk
1193 (package
1194 (inherit (sbcl-package->cl-source-package sbcl-slynk-boot0))
1195 (name "cl-slynk")))
1196
1197 (define ecl-slynk-boot0
1198 (sbcl-package->ecl-package sbcl-slynk-boot0))
1199
1200 (define sbcl-slynk-arglists
1201 (package
1202 (inherit sbcl-slynk-boot0)
1203 (name "sbcl-slynk-arglists")
1204 (inputs `(("slynk" ,sbcl-slynk-boot0)))
1205 (arguments
1206 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1207 ((#:asd-file _ "") "slynk.asd")
1208 ((#:asd-system-name _ #f) "slynk/arglists")))))
1209
1210 (define ecl-slynk-arglists
1211 (sbcl-package->ecl-package sbcl-slynk-arglists))
1212
1213 (define sbcl-slynk-util
1214 (package
1215 (inherit sbcl-slynk-boot0)
1216 (name "sbcl-slynk-util")
1217 (inputs `(("slynk" ,sbcl-slynk-boot0)))
1218 (arguments
1219 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1220 ((#:asd-file _ "") "slynk.asd")
1221 ((#:asd-system-name _ #f) "slynk/util")))))
1222
1223 (define ecl-slynk-util
1224 (sbcl-package->ecl-package sbcl-slynk-util))
1225
1226 (define sbcl-slynk-fancy-inspector
1227 (package
1228 (inherit sbcl-slynk-arglists)
1229 (name "sbcl-slynk-fancy-inspector")
1230 (inputs `(("slynk-util" ,sbcl-slynk-util)
1231 ,@(package-inputs sbcl-slynk-arglists)))
1232 (arguments
1233 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1234 ((#:asd-system-name _ #f) "slynk/fancy-inspector")))))
1235
1236 (define ecl-slynk-fancy-inspector
1237 (sbcl-package->ecl-package sbcl-slynk-fancy-inspector))
1238
1239 (define sbcl-slynk-package-fu
1240 (package
1241 (inherit sbcl-slynk-arglists)
1242 (name "sbcl-slynk-package-fu")
1243 (arguments
1244 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1245 ((#:asd-system-name _ #f) "slynk/package-fu")))))
1246
1247 (define ecl-slynk-package-fu
1248 (sbcl-package->ecl-package sbcl-slynk-package-fu))
1249
1250 (define sbcl-slynk-mrepl
1251 (package
1252 (inherit sbcl-slynk-fancy-inspector)
1253 (name "sbcl-slynk-mrepl")
1254 (arguments
1255 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1256 ((#:asd-system-name _ #f) "slynk/mrepl")))))
1257
1258 (define ecl-slynk-mrepl
1259 (sbcl-package->ecl-package sbcl-slynk-mrepl))
1260
1261 (define sbcl-slynk-trace-dialog
1262 (package
1263 (inherit sbcl-slynk-arglists)
1264 (name "sbcl-slynk-trace-dialog")
1265 (arguments
1266 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1267 ((#:asd-system-name _ #f) "slynk/trace-dialog")))))
1268
1269 (define ecl-slynk-trace-dialog
1270 (sbcl-package->ecl-package sbcl-slynk-trace-dialog))
1271
1272 (define sbcl-slynk-profiler
1273 (package
1274 (inherit sbcl-slynk-arglists)
1275 (name "sbcl-slynk-profiler")
1276 (arguments
1277 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1278 ((#:asd-system-name _ #f) "slynk/profiler")))))
1279
1280 (define ecl-slynk-profiler
1281 (sbcl-package->ecl-package sbcl-slynk-profiler))
1282
1283 (define sbcl-slynk-stickers
1284 (package
1285 (inherit sbcl-slynk-arglists)
1286 (name "sbcl-slynk-stickers")
1287 (arguments
1288 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1289 ((#:asd-system-name _ #f) "slynk/stickers")))))
1290
1291 (define ecl-slynk-stickers
1292 (sbcl-package->ecl-package sbcl-slynk-stickers))
1293
1294 (define sbcl-slynk-indentation
1295 (package
1296 (inherit sbcl-slynk-arglists)
1297 (name "sbcl-slynk-indentation")
1298 (arguments
1299 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1300 ((#:asd-system-name _ #f) "slynk/indentation")))))
1301
1302 (define ecl-slynk-indentation
1303 (sbcl-package->ecl-package sbcl-slynk-indentation))
1304
1305 (define sbcl-slynk-retro
1306 (package
1307 (inherit sbcl-slynk-arglists)
1308 (name "sbcl-slynk-retro")
1309 (arguments
1310 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1311 ((#:asd-system-name _ #f) "slynk/retro")))))
1312
1313 (define ecl-slynk-retro
1314 (sbcl-package->ecl-package sbcl-slynk-retro))
1315
1316 (define slynk-systems
1317 '("slynk"
1318 "slynk-util"
1319 "slynk-arglists"
1320 "slynk-fancy-inspector"
1321 "slynk-package-fu"
1322 "slynk-mrepl"
1323 "slynk-profiler"
1324 "slynk-trace-dialog"
1325 "slynk-stickers"
1326 "slynk-indentation"
1327 "slynk-retro"))
1328
1329 (define-public sbcl-slynk
1330 (package
1331 (inherit sbcl-slynk-boot0)
1332 (name "sbcl-slynk")
1333 (inputs
1334 `(("slynk" ,sbcl-slynk-boot0)
1335 ("slynk-util" ,sbcl-slynk-util)
1336 ("slynk-arglists" ,sbcl-slynk-arglists)
1337 ("slynk-fancy-inspector" ,sbcl-slynk-fancy-inspector)
1338 ("slynk-package-fu" ,sbcl-slynk-package-fu)
1339 ("slynk-mrepl" ,sbcl-slynk-mrepl)
1340 ("slynk-profiler" ,sbcl-slynk-profiler)
1341 ("slynk-trace-dialog" ,sbcl-slynk-trace-dialog)
1342 ("slynk-stickers" ,sbcl-slynk-stickers)
1343 ("slynk-indentation" ,sbcl-slynk-indentation)
1344 ("slynk-retro" ,sbcl-slynk-retro)))
1345 (native-inputs `(("sbcl" ,sbcl)))
1346 (build-system trivial-build-system)
1347 (source #f)
1348 (outputs '("out" "image"))
1349 (arguments
1350 `(#:modules ((guix build union)
1351 (guix build utils)
1352 (guix build lisp-utils))
1353 #:builder
1354 (begin
1355 (use-modules (ice-9 match)
1356 (srfi srfi-1)
1357 (guix build union)
1358 (guix build lisp-utils))
1359
1360 (union-build
1361 (assoc-ref %outputs "out")
1362 (filter-map
1363 (match-lambda
1364 ((name . path)
1365 (if (string-prefix? "slynk" name) path #f)))
1366 %build-inputs))
1367
1368 (prepend-to-source-registry
1369 (string-append (assoc-ref %outputs "out") "//"))
1370
1371 (parameterize ((%lisp-type "sbcl")
1372 (%lisp (string-append (assoc-ref %build-inputs "sbcl")
1373 "/bin/sbcl")))
1374 (build-image (string-append
1375 (assoc-ref %outputs "image")
1376 "/bin/slynk")
1377 %outputs
1378 #:dependencies ',slynk-systems))
1379 #t)))))
1380
1381 (define-public ecl-slynk
1382 (package
1383 (inherit sbcl-slynk)
1384 (name "ecl-slynk")
1385 (inputs
1386 (map (match-lambda
1387 ((name pkg . _)
1388 (list name (sbcl-package->ecl-package pkg))))
1389 (package-inputs sbcl-slynk)))
1390 (native-inputs '())
1391 (outputs '("out"))
1392 (arguments
1393 '(#:modules ((guix build union))
1394 #:builder
1395 (begin
1396 (use-modules (ice-9 match)
1397 (guix build union))
1398 (match %build-inputs
1399 (((names . paths) ...)
1400 (union-build (assoc-ref %outputs "out")
1401 paths)
1402 #t)))))))
1403
1404 (define-public stumpwm+slynk
1405 (package
1406 (inherit stumpwm)
1407 (name "stumpwm-with-slynk")
1408 (outputs '("out"))
1409 (inputs
1410 `(("stumpwm" ,stumpwm "lib")
1411 ("slynk" ,sbcl-slynk)))
1412 (arguments
1413 (substitute-keyword-arguments (package-arguments stumpwm)
1414 ((#:phases phases)
1415 `(modify-phases ,phases
1416 (replace 'build-program
1417 (lambda* (#:key inputs outputs #:allow-other-keys)
1418 (let* ((out (assoc-ref outputs "out"))
1419 (program (string-append out "/bin/stumpwm")))
1420 (build-program program outputs
1421 #:entry-program '((stumpwm:stumpwm) 0)
1422 #:dependencies '("stumpwm"
1423 ,@slynk-systems)
1424 #:dependency-prefixes
1425 (map (lambda (input) (assoc-ref inputs input))
1426 '("stumpwm" "slynk")))
1427 ;; Remove unneeded file.
1428 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
1429 #t)))
1430 (delete 'copy-source)
1431 (delete 'build)
1432 (delete 'check)
1433 (delete 'create-asd-file)
1434 (delete 'cleanup)
1435 (delete 'create-symlinks)))))))
1436
1437 (define-public sbcl-stumpwm+slynk
1438 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
1439
1440 (define-public sbcl-parse-js
1441 (let ((commit "fbadc6029bec7039602abfc06c73bb52970998f6")
1442 (revision "1"))
1443 (package
1444 (name "sbcl-parse-js")
1445 (version (string-append "0.0.0-" revision "." (string-take commit 9)))
1446 (source
1447 (origin
1448 (method git-fetch)
1449 (uri (git-reference
1450 (url "http://marijn.haverbeke.nl/git/parse-js")
1451 (commit commit)))
1452 (file-name (string-append name "-" commit "-checkout"))
1453 (sha256
1454 (base32
1455 "1wddrnr5kiya5s3gp4cdq6crbfy9fqcz7fr44p81502sj3bvdv39"))))
1456 (build-system asdf-build-system/sbcl)
1457 (home-page "http://marijnhaverbeke.nl/parse-js/")
1458 (synopsis "Parse JavaScript")
1459 (description "Parse-js is a Common Lisp package for parsing
1460 JavaScript (ECMAScript 3). It has basic support for ECMAScript 5.")
1461 (license license:zlib))))
1462
1463 (define-public sbcl-parse-number
1464 (package
1465 (name "sbcl-parse-number")
1466 (version "1.5")
1467 (source
1468 (origin
1469 (method url-fetch)
1470 (uri (string-append "https://github.com/sharplispers/parse-number/"
1471 "archive/v" version ".tar.gz"))
1472 (file-name (string-append name "-" version ".tar.gz"))
1473 (sha256
1474 (base32
1475 "1k6s4v65ksc1j5i0dprvzfvj213v6nah7i0rgd0726ngfjisj9ir"))))
1476 (build-system asdf-build-system/sbcl)
1477 (home-page "http://www.cliki.net/PARSE-NUMBER")
1478 (synopsis "Parse numbers")
1479 (description "@code{parse-number} is a library of functions for parsing
1480 strings into one of the standard Common Lisp number types without using the
1481 reader. @code{parse-number} accepts an arbitrary string and attempts to parse
1482 the string into one of the standard Common Lisp number types, if possible, or
1483 else @code{parse-number} signals an error of type @code{invalid-number}.")
1484 (license license:bsd-3)))
1485
1486 (define-public sbcl-iterate
1487 (package
1488 (name "sbcl-iterate")
1489 ;; The latest official release (1.4.3) fails to build so we have to take
1490 ;; the current darcs tarball from quicklisp.
1491 (version "20160825")
1492 (source
1493 (origin
1494 (method url-fetch)
1495 (uri (string-append "http://beta.quicklisp.org/archive/iterate/"
1496 "2016-08-25/iterate-"
1497 version "-darcs.tgz"))
1498 (sha256
1499 (base32
1500 "0kvz16gnxnkdz0fy1x8y5yr28nfm7i2qpvix7mgwccdpjmsb4pgm"))))
1501 (build-system asdf-build-system/sbcl)
1502 (home-page "https://common-lisp.net/project/iterate/")
1503 (synopsis "Iteration construct for Common Lisp")
1504 (description "@code{iterate} is an iteration construct for Common Lisp.
1505 It is similar to the @code{CL:LOOP} macro, with these distinguishing marks:
1506
1507 @itemize
1508 @item it is extensible,
1509 @item it helps editors like Emacs indent iterate forms by having a more
1510 lisp-like syntax, and
1511 @item it isn't part of the ANSI standard for Common Lisp.
1512 @end itemize\n")
1513 (license license:expat)))
1514
1515 (define-public sbcl-cl-uglify-js
1516 ;; There have been many bug fixes since the 2010 release.
1517 (let ((commit "429c5e1d844e2f96b44db8fccc92d6e8e28afdd5")
1518 (revision "1"))
1519 (package
1520 (name "sbcl-cl-uglify-js")
1521 (version (string-append "0.1-" revision "." (string-take commit 9)))
1522 (source
1523 (origin
1524 (method git-fetch)
1525 (uri (git-reference
1526 (url "https://github.com/mishoo/cl-uglify-js.git")
1527 (commit commit)))
1528 (file-name (git-file-name name version))
1529 (sha256
1530 (base32
1531 "0k39y3c93jgxpr7gwz7w0d8yknn1fdnxrjhd03057lvk5w8js27a"))))
1532 (build-system asdf-build-system/sbcl)
1533 (inputs
1534 `(("sbcl-parse-js" ,sbcl-parse-js)
1535 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
1536 ("sbcl-cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
1537 ("sbcl-parse-number" ,sbcl-parse-number)
1538 ("sbcl-iterate" ,sbcl-iterate)))
1539 (home-page "https://github.com/mishoo/cl-uglify-js")
1540 (synopsis "JavaScript compressor library for Common Lisp")
1541 (description "This is a Common Lisp version of UglifyJS, a JavaScript
1542 compressor. It works on data produced by @code{parse-js} to generate a
1543 @dfn{minified} version of the code. Currently it can:
1544
1545 @itemize
1546 @item reduce variable names (usually to single letters)
1547 @item join consecutive @code{var} statements
1548 @item resolve simple binary expressions
1549 @item group most consecutive statements using the @code{sequence} operator (comma)
1550 @item remove unnecessary blocks
1551 @item convert @code{IF} expressions in various ways that result in smaller code
1552 @item remove some unreachable code
1553 @end itemize\n")
1554 (license license:zlib))))
1555
1556 (define-public uglify-js
1557 (package
1558 (inherit sbcl-cl-uglify-js)
1559 (name "uglify-js")
1560 (build-system trivial-build-system)
1561 (arguments
1562 `(#:modules ((guix build utils))
1563 #:builder
1564 (let* ((bin (string-append (assoc-ref %outputs "out") "/bin/"))
1565 (script (string-append bin "uglify-js")))
1566 (use-modules (guix build utils))
1567 (mkdir-p bin)
1568 (with-output-to-file script
1569 (lambda _
1570 (format #t "#!~a/bin/sbcl --script
1571 (require :asdf)
1572 (push (truename \"~a/lib/sbcl\") asdf:*central-registry*)"
1573 (assoc-ref %build-inputs "sbcl")
1574 (assoc-ref %build-inputs "sbcl-cl-uglify-js"))
1575 ;; FIXME: cannot use progn here because otherwise it fails to
1576 ;; find cl-uglify-js.
1577 (for-each
1578 write
1579 '(;; Quiet, please!
1580 (let ((*standard-output* (make-broadcast-stream))
1581 (*error-output* (make-broadcast-stream)))
1582 (asdf:load-system :cl-uglify-js))
1583 (let ((file (cadr *posix-argv*)))
1584 (if file
1585 (format t "~a"
1586 (cl-uglify-js:ast-gen-code
1587 (cl-uglify-js:ast-mangle
1588 (cl-uglify-js:ast-squeeze
1589 (with-open-file (in file)
1590 (parse-js:parse-js in))))
1591 :beautify nil))
1592 (progn
1593 (format *error-output*
1594 "Please provide a JavaScript file.~%")
1595 (sb-ext:exit :code 1))))))))
1596 (chmod script #o755)
1597 #t)))
1598 (inputs
1599 `(("sbcl" ,sbcl)
1600 ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js)))
1601 (synopsis "JavaScript compressor")))
1602
1603 (define-public confusion-mdl
1604 (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
1605 (package
1606 (name "confusion-mdl")
1607 (version "0.2")
1608 (source (origin
1609 (method git-fetch)
1610 (uri (git-reference
1611 (url (string-append "https://gitlab.com/emacsomancer/" name))
1612 (commit commit)))
1613 (sha256
1614 (base32
1615 "1zi8kflzvwqg97ha1sa5xjisbjs5z1mvbpa772vfxiv5ksnpxp0d"))
1616 (file-name (git-file-name name version))))
1617 (build-system gnu-build-system)
1618 (arguments
1619 `(#:tests? #f ; there are no tests
1620 #:phases
1621 (modify-phases %standard-phases
1622 (delete 'configure)
1623 (replace 'build
1624 (lambda* (#:key (make-flags '()) #:allow-other-keys)
1625 (apply invoke "make" "CC=gcc" make-flags)))
1626 (replace 'install
1627 (lambda* (#:key outputs #:allow-other-keys)
1628 (let* ((out (assoc-ref outputs "out"))
1629 (bin (string-append out "/bin")))
1630 (install-file "mdli" bin)
1631 #t))))))
1632 (native-inputs
1633 `(("perl" ,perl)))
1634 (inputs
1635 `(("libgc" ,libgc)))
1636 (synopsis "Interpreter for the MIT Design Language (MDL)")
1637 (description "MDL (the MIT Design Language) is a descendant of Lisp. It
1638 was originally developed in 1971 on the PDP-10 computer under the Incompatible
1639 Timesharing System (ITS) to provide high level language support for the
1640 Dynamic Modeling Group at MIT's Project MAC. Infocom built the original
1641 PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
1642 based on a subset of MDL. Confusion is a MDL interpreter that works just well
1643 enough to play the original mainframe Zork all the way through.")
1644 (home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
1645 (license license:gpl3+))))
1646
1647 (define-public sbcl-cl-strings
1648 (let ((revision "1")
1649 (commit "c5c5cbafbf3e6181d03c354d66e41a4f063f00ae"))
1650 (package
1651 (name "sbcl-cl-strings")
1652 (version (git-version "0.0.0" revision commit))
1653 (source
1654 (origin
1655 (method git-fetch)
1656 (uri (git-reference
1657 (url "https://github.com/diogoalexandrefranco/cl-strings")
1658 (commit commit)))
1659 (sha256
1660 (base32
1661 "00754mfaqallj480lwd346nkfb6ra8pa8xcxcylf4baqn604zlmv"))
1662 (file-name (string-append "cl-strings-" version "-checkout"))))
1663 (build-system asdf-build-system/sbcl)
1664 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
1665 (description
1666 "@command{cl-strings} is a small, portable, dependency-free set of
1667 utilities that make it even easier to manipulate text in Common Lisp. It has
1668 100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")
1669 (home-page "https://github.com/diogoalexandrefranco/cl-strings")
1670 (license license:expat))))
1671
1672 (define-public cl-strings
1673 (sbcl-package->cl-source-package sbcl-cl-strings))
1674
1675 (define-public ecl-cl-strings
1676 (sbcl-package->ecl-package sbcl-cl-strings))
1677
1678 (define-public sbcl-trivial-features
1679 (package
1680 (name "sbcl-trivial-features")
1681 (version "0.8")
1682 (source
1683 (origin
1684 (method git-fetch)
1685 (uri (git-reference
1686 (url "https://github.com/trivial-features/trivial-features.git")
1687 (commit (string-append "v" version))))
1688 (file-name (git-file-name "trivial-features" version))
1689 (sha256
1690 (base32 "0ccv7dqyrk55xga78i5vzlic7mdwp28in3g1a8fqhlk6626scsq9"))))
1691 (build-system asdf-build-system/sbcl)
1692 (arguments '(#:tests? #f))
1693 (home-page "http://cliki.net/trivial-features")
1694 (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp")
1695 (description "Trivial-features ensures that @code{*FEATURES*} is
1696 consistent across multiple Common Lisp implementations.")
1697 (license license:expat)))
1698
1699 (define-public cl-trivial-features
1700 (sbcl-package->cl-source-package sbcl-trivial-features))
1701
1702 (define-public ecl-trivial-features
1703 (sbcl-package->ecl-package sbcl-trivial-features))
1704
1705 (define-public sbcl-hu.dwim.asdf
1706 (let ((commit "170b0e4fdde3df0bc537327e7600575daac9e141"))
1707 (package
1708 (name "sbcl-hu.dwim.asdf")
1709 (version (git-version "0.0.0" "1" commit))
1710 (source
1711 (origin
1712 (method git-fetch)
1713 (uri
1714 (git-reference
1715 (url "https://github.com/nixeagle/hu.dwim.asdf")
1716 (commit commit)))
1717 (sha256
1718 (base32 "10ax7p8y6vjqxzcq125p62kf68zi455a65ysgk0kl1f2v839c33v"))
1719 (file-name (git-file-name "hu.dwim.asdf" version))))
1720 (build-system asdf-build-system/sbcl)
1721 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.asdf")
1722 (synopsis "Extensions to ASDF")
1723 (description "Various ASDF extensions such as attached test and
1724 documentation system, explicit development support, etc.")
1725 (license license:public-domain))))
1726
1727 (define-public cl-hu.dwim.asdf
1728 (sbcl-package->cl-source-package sbcl-hu.dwim.asdf))
1729
1730 (define-public ecl-hu.dwim.asdf
1731 (sbcl-package->ecl-package sbcl-hu.dwim.asdf))
1732
1733 (define-public sbcl-hu.dwim.stefil
1734 (let ((commit "ab6d1aa8995878a1b66d745dfd0ba021090bbcf9"))
1735 (package
1736 (name "sbcl-hu.dwim.stefil")
1737 (version (git-version "0.0.0" "1" commit))
1738 (source
1739 (origin
1740 (method git-fetch)
1741 (uri
1742 (git-reference
1743 (url "https://gitlab.common-lisp.net/xcvb/hu.dwim.stefil.git")
1744 (commit commit)))
1745 (sha256
1746 (base32 "1d8yccw65zj3zh46cbi3x6nmn1dwdb76s9d0av035077mvyirqqp"))
1747 (file-name (git-file-name "hu.dwim.stefil" version))))
1748 (build-system asdf-build-system/sbcl)
1749 (native-inputs
1750 `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
1751 (inputs
1752 `(("sbcl-alexandria" ,sbcl-alexandria)))
1753 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.stefil")
1754 (synopsis "Simple test framework")
1755 (description "Stefil is a simple test framework for Common Lisp,
1756 with a focus on interactive development.")
1757 (license license:public-domain))))
1758
1759 (define-public cl-hu.dwim.stefil
1760 (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
1761
1762 (define-public ecl-hu.dwim.stefil
1763 (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
1764
1765 (define-public sbcl-babel
1766 (package
1767 (name "sbcl-babel")
1768 (version "0.5.0")
1769 (source
1770 (origin
1771 (method git-fetch)
1772 (uri (git-reference
1773 (url "https://github.com/cl-babel/babel.git")
1774 (commit (string-append "v" version))))
1775 (file-name (git-file-name "babel" version))
1776 (sha256
1777 (base32 "139a8rn2gnhj082n8jg01gc8fyr63hkj57hgrnmb3d1r327yc77f"))))
1778 (build-system asdf-build-system/sbcl)
1779 (native-inputs
1780 `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
1781 (inputs
1782 `(("sbcl-alexandria" ,sbcl-alexandria)
1783 ("sbcl-trivial-features" ,sbcl-trivial-features)))
1784 (home-page "https://common-lisp.net/project/babel/")
1785 (synopsis "Charset encoding and decoding library")
1786 (description "Babel is a charset encoding and decoding library, not unlike
1787 GNU libiconv, but completely written in Common Lisp.")
1788 (license license:expat)))
1789
1790 (define-public cl-babel
1791 (sbcl-package->cl-source-package sbcl-babel))
1792
1793 (define-public ecl-babel
1794 (sbcl-package->ecl-package sbcl-babel))
1795
1796 (define-public sbcl-cl-yacc
1797 (package
1798 (name "sbcl-cl-yacc")
1799 (version "0.3")
1800 (source
1801 (origin
1802 (method git-fetch)
1803 (uri (git-reference
1804 (url "https://github.com/jech/cl-yacc")
1805 (commit (string-append "cl-yacc-" version))))
1806 (sha256
1807 (base32
1808 "16946pzf8vvadnyfayvj8rbh4zjzw90h0azz2qk1mxrvhh5wklib"))
1809 (file-name (string-append "cl-yacc-" version "-checkout"))))
1810 (build-system asdf-build-system/sbcl)
1811 (arguments
1812 `(#:asd-file "yacc.asd"
1813 #:asd-system-name "yacc"))
1814 (synopsis "LALR(1) parser generator for Common Lisp, similar in spirit to Yacc")
1815 (description
1816 "CL-Yacc is a LALR(1) parser generator for Common Lisp, similar in spirit
1817 to AT&T Yacc, Berkeley Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm.
1818
1819 CL-Yacc uses the algorithm due to Aho and Ullman, which is the one also used
1820 by AT&T Yacc, Berkeley Yacc and Zebu. It does not use the faster algorithm due
1821 to DeRemer and Pennello, which is used by Bison and lalr.scm (not lalr.cl).")
1822 (home-page "https://www.irif.fr/~jch//software/cl-yacc/")
1823 (license license:expat)))
1824
1825 (define-public cl-yacc
1826 (sbcl-package->cl-source-package sbcl-cl-yacc))
1827
1828 (define-public ecl-cl-yacc
1829 (sbcl-package->ecl-package sbcl-cl-yacc))
1830
1831 (define-public sbcl-jpl-util
1832 (let ((commit "0311ed374e19a49d43318064d729fe3abd9a3b62"))
1833 (package
1834 (name "sbcl-jpl-util")
1835 (version "20151005")
1836 (source
1837 (origin
1838 (method git-fetch)
1839 (uri (git-reference
1840 ;; Quicklisp uses this fork.
1841 (url "https://github.com/hawkir/cl-jpl-util")
1842 (commit commit)))
1843 (file-name
1844 (git-file-name "jpl-util" version))
1845 (sha256
1846 (base32
1847 "0nc0rk9n8grkg3045xsw34whmcmddn2sfrxki4268g7kpgz0d2yz"))))
1848 (build-system asdf-build-system/sbcl)
1849 (synopsis "Collection of Common Lisp utility functions and macros")
1850 (description
1851 "@command{cl-jpl-util} is a collection of Common Lisp utility functions
1852 and macros, primarily for software projects written in CL by the author.")
1853 (home-page "https://www.thoughtcrime.us/software/cl-jpl-util/")
1854 (license license:isc))))
1855
1856 (define-public cl-jpl-util
1857 (sbcl-package->cl-source-package sbcl-jpl-util))
1858
1859 (define-public ecl-jpl-util
1860 (sbcl-package->ecl-package sbcl-jpl-util))
1861
1862 (define-public sbcl-jpl-queues
1863 (package
1864 (name "sbcl-jpl-queues")
1865 (version "0.1")
1866 (source
1867 (origin
1868 (method url-fetch)
1869 (uri (string-append
1870 "http://www.thoughtcrime.us/software/jpl-queues/jpl-queues-"
1871 version
1872 ".tar.gz"))
1873 (sha256
1874 (base32
1875 "1wvvv7j117h9a42qaj1g4fh4mji28xqs7s60rn6d11gk9jl76h96"))))
1876 (build-system asdf-build-system/sbcl)
1877 (inputs
1878 `(("jpl-util" ,sbcl-jpl-util)
1879 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
1880 (arguments
1881 ;; Tests seem to be broken.
1882 `(#:tests? #f))
1883 (synopsis "Common Lisp library implementing a few different kinds of queues")
1884 (description
1885 "A Common Lisp library implementing a few different kinds of queues:
1886
1887 @itemize
1888 @item Bounded and unbounded FIFO queues.
1889 @item Lossy bounded FIFO queues that drop elements when full.
1890 @item Unbounded random-order queues that use less memory than unbounded FIFO queues.
1891 @end itemize
1892
1893 Additionally, a synchronization wrapper is provided to make any queue
1894 conforming to the @command{jpl-queues} API thread-safe for lightweight
1895 multithreading applications. (See Calispel for a more sophisticated CL
1896 multithreaded message-passing library with timeouts and alternation among
1897 several blockable channels.)")
1898 (home-page "https://www.thoughtcrime.us/software/jpl-queues/")
1899 (license license:isc)))
1900
1901 (define-public cl-jpl-queues
1902 (sbcl-package->cl-source-package sbcl-jpl-queues))
1903
1904 (define-public ecl-jpl-queues
1905 (sbcl-package->ecl-package sbcl-jpl-queues))
1906
1907 (define-public sbcl-eos
1908 (let ((commit "b0faca83781ead9a588661e37bd47f90362ccd94"))
1909 (package
1910 (name "sbcl-eos")
1911 (version (git-version "0.0.0" "1" commit))
1912 (source
1913 (origin
1914 (method git-fetch)
1915 (uri (git-reference
1916 (url "https://github.com/adlai/Eos")
1917 (commit commit)))
1918 (sha256
1919 (base32
1920 "1bq8cfg087iyxmxi1mwgx5cfgy3b8ydrf81xljcis8qbgb2vszph"))
1921 (file-name (git-file-name "eos" version))))
1922 (build-system asdf-build-system/sbcl)
1923 (synopsis "Unit Testing for Common Lisp")
1924 (description
1925 "Eos was a unit testing library for Common Lisp.
1926 It began as a fork of FiveAM; however, FiveAM development has continued, while
1927 that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
1928 (home-page "https://github.com/adlai/Eos")
1929 (license license:expat))))
1930
1931 (define-public cl-eos
1932 (sbcl-package->cl-source-package sbcl-eos))
1933
1934 (define-public ecl-eos
1935 (sbcl-package->ecl-package sbcl-eos))
1936
1937 (define-public sbcl-esrap
1938 (let ((commit "133be8b05c2aae48696fe5b739eea2fa573fa48d"))
1939 (package
1940 (name "sbcl-esrap")
1941 (version (git-version "0.0.0" "1" commit))
1942 (source
1943 (origin
1944 (method git-fetch)
1945 (uri (git-reference
1946 (url "https://github.com/nikodemus/esrap")
1947 (commit commit)))
1948 (sha256
1949 (base32
1950 "02d5clihsdryhf7pix8c5di2571fdsffh75d40fkzhws90r5mksl"))
1951 (file-name (git-file-name "esrap" version))))
1952 (build-system asdf-build-system/sbcl)
1953 (native-inputs
1954 `(("eos" ,sbcl-eos))) ;For testing only.
1955 (inputs
1956 `(("alexandria" ,sbcl-alexandria)))
1957 (synopsis "Common Lisp packrat parser")
1958 (description
1959 "A packrat parser for Common Lisp.
1960 In addition to regular Packrat / Parsing Grammar / TDPL features ESRAP supports:
1961
1962 @itemize
1963 @item dynamic redefinition of nonterminals
1964 @item inline grammars
1965 @item semantic predicates
1966 @item introspective facilities (describing grammars, tracing, setting breaks)
1967 @end itemize\n")
1968 (home-page "https://nikodemus.github.io/esrap/")
1969 (license license:expat))))
1970
1971 (define-public cl-esrap
1972 (sbcl-package->cl-source-package sbcl-esrap))
1973
1974 (define-public ecl-esrap
1975 (sbcl-package->ecl-package sbcl-esrap))
1976
1977 (define-public sbcl-split-sequence
1978 (package
1979 (name "sbcl-split-sequence")
1980 (version "1.4.1")
1981 (source
1982 (origin
1983 (method git-fetch)
1984 (uri (git-reference
1985 (url "https://github.com/sharplispers/split-sequence")
1986 (commit (string-append "v" version))))
1987 (sha256
1988 (base32
1989 "0c3zp6b7fmmp93sfhq112ind4zkld49ycw68z409xpnz3gc0wpf0"))
1990 (file-name (git-file-name "split-sequence" version))))
1991 (build-system asdf-build-system/sbcl)
1992 (arguments
1993 ;; TODO: Tests seem to be broken.
1994 ;; https://github.com/sharplispers/split-sequence/issues/8
1995 `(#:tests? #f))
1996 (synopsis "Member of the Common Lisp Utilities family of programs")
1997 (description
1998 "Splits sequence into a list of subsequences delimited by objects
1999 satisfying the test.")
2000 (home-page "https://cliki.net/split-sequence")
2001 (license license:expat)))
2002
2003 (define-public cl-split-sequence
2004 (sbcl-package->cl-source-package sbcl-split-sequence))
2005
2006 (define-public ecl-split-sequence
2007 (sbcl-package->ecl-package sbcl-split-sequence))
2008
2009 (define-public sbcl-html-encode
2010 (package
2011 (name "sbcl-html-encode")
2012 (version "1.2")
2013 (source
2014 (origin
2015 (method url-fetch)
2016 (uri (string-append
2017 "http://beta.quicklisp.org/archive/html-encode/2010-10-06/html-encode-"
2018 version ".tgz"))
2019 (sha256
2020 (base32
2021 "06mf8wn95yf5swhmzk4vp0xr4ylfl33dgfknkabbkd8n6jns8gcf"))
2022 (file-name (string-append "colorize" version "-checkout"))))
2023 (build-system asdf-build-system/sbcl)
2024 (synopsis "Common Lisp library for encoding text in various web-savvy encodings")
2025 (description
2026 "A library for encoding text in various web-savvy encodings.")
2027 (home-page "http://quickdocs.org/html-encode/")
2028 (license license:expat)))
2029
2030 (define-public cl-html-encode
2031 (sbcl-package->cl-source-package sbcl-html-encode))
2032
2033 (define-public ecl-html-encode
2034 (sbcl-package->ecl-package sbcl-html-encode))
2035
2036 (define-public sbcl-colorize
2037 (let ((commit "ea676b584e0899cec82f21a9e6871172fe3c0eb5"))
2038 (package
2039 (name "sbcl-colorize")
2040 (version (git-version "0.0.0" "1" commit))
2041 (source
2042 (origin
2043 (method git-fetch)
2044 (uri (git-reference
2045 (url "https://github.com/kingcons/colorize")
2046 (commit commit)))
2047 (sha256
2048 (base32
2049 "1pdg4kiaczmr3ivffhirp7m3lbr1q27rn7dhaay0vwghmi31zcw9"))
2050 (file-name (git-file-name "colorize" version))))
2051 (build-system asdf-build-system/sbcl)
2052 (inputs
2053 `(("alexandria" ,sbcl-alexandria)
2054 ("split-sequence" ,sbcl-split-sequence)
2055 ("html-encode" ,sbcl-html-encode)))
2056 (synopsis "Common Lisp for syntax highlighting")
2057 (description
2058 "@command{colorize} is a Lisp library for syntax highlighting
2059 supporting the following languages: Common Lisp, Emacs Lisp, Scheme, Clojure,
2060 C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
2061 (home-page "https://github.com/kingcons/colorize")
2062 ;; TODO: Missing license?
2063 (license license:expat))))
2064
2065 (define-public cl-colorize
2066 (sbcl-package->cl-source-package sbcl-colorize))
2067
2068 (define-public ecl-colorize
2069 (sbcl-package->ecl-package sbcl-colorize))
2070
2071 (define-public sbcl-3bmd
2072 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
2073 (package
2074 (name "sbcl-3bmd")
2075 (version (git-version "0.0.0" "1" commit))
2076 (source
2077 (origin
2078 (method git-fetch)
2079 (uri (git-reference
2080 (url "https://github.com/3b/3bmd")
2081 (commit commit)))
2082 (sha256
2083 (base32
2084 "1rgv3gi7wf963ikmmpk132wgn0icddf226gq3bmcnk1fr3v9gf2f"))
2085 (file-name (git-file-name "3bmd" version))))
2086 (build-system asdf-build-system/sbcl)
2087 (arguments
2088 ;; FIXME: We need to specify the name because the build-system thinks
2089 ;; "3" is a version marker.
2090 `(#:asd-system-name "3bmd"))
2091 (inputs
2092 `(("esrap" ,sbcl-esrap)
2093 ("split-sequence" ,sbcl-split-sequence)))
2094 (synopsis "Markdown processor in Command Lisp using esrap parser")
2095 (description
2096 "Common Lisp Markdown -> HTML converter, using @command{esrap} for
2097 parsing, and grammar based on @command{peg-markdown}.")
2098 (home-page "https://github.com/3b/3bmd")
2099 (license license:expat))))
2100
2101 (define-public cl-3bmd
2102 (sbcl-package->cl-source-package sbcl-3bmd))
2103
2104 (define-public ecl-3bmd
2105 (sbcl-package->ecl-package sbcl-3bmd))
2106
2107 (define-public sbcl-3bmd-ext-code-blocks
2108 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
2109 (package
2110 (inherit sbcl-3bmd)
2111 (name "sbcl-3bmd-ext-code-blocks")
2112 (arguments
2113 `(#:asd-system-name "3bmd-ext-code-blocks"
2114 #:asd-file "3bmd-ext-code-blocks.asd"))
2115 (inputs
2116 `(("3bmd" ,sbcl-3bmd)
2117 ("colorize" ,sbcl-colorize)))
2118 (synopsis "3bmd extension which adds support for GitHub-style fenced
2119 code blocks")
2120 (description
2121 "3bmd extension which adds support for GitHub-style fenced code blocks,
2122 with @command{colorize} support."))))
2123
2124 (define-public cl-3bmd-ext-code-blocks
2125 (sbcl-package->cl-source-package sbcl-3bmd-ext-code-blocks))
2126
2127 (define-public ecl-3bmd-ext-code-blocks
2128 (sbcl-package->ecl-package sbcl-3bmd-ext-code-blocks))
2129
2130 (define-public sbcl-cl-fad
2131 (package
2132 (name "sbcl-cl-fad")
2133 (version "0.7.5")
2134 (source
2135 (origin
2136 (method git-fetch)
2137 (uri (git-reference
2138 (url "https://github.com/edicl/cl-fad/")
2139 (commit (string-append "v" version))))
2140 (sha256
2141 (base32
2142 "1l1qmk9z57q84bz5r04sxsksggsnd7dgkxlybzh9imz6ma7sm52m"))
2143 (file-name (string-append "cl-fad" version "-checkout"))))
2144 (build-system asdf-build-system/sbcl)
2145 (inputs
2146 `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
2147 (synopsis "Portable pathname library for Common Lisp")
2148 (description
2149 "CL-FAD (for \"Files and Directories\") is a thin layer atop Common
2150 Lisp's standard pathname functions. It is intended to provide some
2151 unification between current CL implementations on Windows, OS X, Linux, and
2152 Unix. Most of the code was written by Peter Seibel for his book Practical
2153 Common Lisp.")
2154 (home-page "https://edicl.github.io/cl-fad/")
2155 (license license:bsd-2)))
2156
2157 (define-public cl-fad
2158 (sbcl-package->cl-source-package sbcl-cl-fad))
2159
2160 (define-public ecl-cl-fad
2161 (sbcl-package->ecl-package sbcl-cl-fad))
2162
2163 (define-public sbcl-rt
2164 (package
2165 (name "sbcl-rt")
2166 (version "1990.12.19")
2167 (source
2168 (origin
2169 (method url-fetch)
2170 (uri (string-append "http://beta.quicklisp.org/archive/rt/2010-10-06/rt-"
2171 "20101006-git" ".tgz"))
2172 (sha256
2173 (base32
2174 "1jncar0xwkqk8yrc2dln389ivvgzs7ijdhhs3zpfyi5d21f0qa1v"))))
2175 (build-system asdf-build-system/sbcl)
2176 (synopsis "MIT Regression Tester")
2177 (description
2178 "RT provides a framework for writing regression test suites.")
2179 (home-page "https://github.com/sharplispers/nibbles")
2180 (license license:unlicense)))
2181
2182 (define-public cl-rt
2183 (sbcl-package->cl-source-package sbcl-rt))
2184
2185 (define-public ecl-rt
2186 (sbcl-package->ecl-package sbcl-rt))
2187
2188 (define-public sbcl-nibbles
2189 (package
2190 (name "sbcl-nibbles")
2191 (version "0.14")
2192 (source
2193 (origin
2194 (method git-fetch)
2195 (uri (git-reference
2196 (url "https://github.com/sharplispers/nibbles/")
2197 (commit (string-append "v" version))))
2198 (sha256
2199 (base32
2200 "1v7qfgpvdr6nz7v63dj69d26dis0kff3rd8xamr1llfdvza2pm8f"))
2201 (file-name (git-file-name "nibbles" version))))
2202 (build-system asdf-build-system/sbcl)
2203 (native-inputs
2204 ;; Tests only.
2205 `(("rt" ,sbcl-rt)))
2206 (synopsis "Common Lisp library for accessing octet-addressed blocks of data")
2207 (description
2208 "When dealing with network protocols and file formats, it's common to
2209 have to read or write 16-, 32-, or 64-bit datatypes in signed or unsigned
2210 flavors. Common Lisp sort of supports this by specifying :element-type for
2211 streams, but that facility is underspecified and there's nothing similar for
2212 read/write from octet vectors. What most people wind up doing is rolling their
2213 own small facility for their particular needs and calling it a day.
2214
2215 This library attempts to be comprehensive and centralize such
2216 facilities. Functions to read 16-, 32-, and 64-bit quantities from octet
2217 vectors in signed or unsigned flavors are provided; these functions are also
2218 SETFable. Since it's sometimes desirable to read/write directly from streams,
2219 functions for doing so are also provided. On some implementations,
2220 reading/writing IEEE singles/doubles (i.e. single-float and double-float) will
2221 also be supported.")
2222 (home-page "https://github.com/sharplispers/nibbles")
2223 (license license:bsd-3)))
2224
2225 (define-public cl-nibbles
2226 (sbcl-package->cl-source-package sbcl-nibbles))
2227
2228 (define-public ecl-nibbles
2229 (sbcl-package->ecl-package sbcl-nibbles))
2230
2231 (define-public sbcl-ironclad
2232 (package
2233 (name "sbcl-ironclad")
2234 (version "0.46")
2235 (source
2236 (origin
2237 (method git-fetch)
2238 (uri (git-reference
2239 (url "https://github.com/sharplispers/ironclad/")
2240 (commit (string-append "v" version))))
2241 (sha256
2242 (base32
2243 "1s391awi2lsl7m1dbjirgpkm4p9p8wd076pakgvsvpn1rrznisnd"))
2244 (file-name (git-file-name name version))))
2245 (build-system asdf-build-system/sbcl)
2246 (native-inputs
2247 ;; Tests only.
2248 `(("rt" ,sbcl-rt)))
2249 (inputs
2250 `(("bordeaux-threads" ,sbcl-bordeaux-threads)
2251 ("flexi-streams" ,sbcl-flexi-streams)
2252 ("nibbles" ,sbcl-nibbles)))
2253 (synopsis "Cryptographic toolkit written in Common Lisp")
2254 (description
2255 "Ironclad is a cryptography library written entirely in Common Lisp.
2256 It includes support for several popular ciphers, digests, MACs and public key
2257 cryptography algorithms. For several implementations that support Gray
2258 streams, support is included for convenient stream wrappers.")
2259 (home-page "https://github.com/sharplispers/ironclad")
2260 (license license:bsd-3)))
2261
2262 (define-public cl-ironclad
2263 (sbcl-package->cl-source-package sbcl-ironclad))
2264
2265 (define-public ecl-ironclad
2266 (sbcl-package->ecl-package sbcl-ironclad))
2267
2268 (define-public sbcl-named-readtables
2269 (let ((commit "4dfb89fa1af6b305b6492b8af042f5190c11e9fc")
2270 (revision "1"))
2271 (package
2272 (name "sbcl-named-readtables")
2273 (version (string-append "0.9-" revision "." (string-take commit 7)))
2274 (source
2275 (origin
2276 (method git-fetch)
2277 (uri (git-reference
2278 (url "https://github.com/melisgl/named-readtables.git")
2279 (commit commit)))
2280 (sha256
2281 (base32 "083kgh5462iqbb4px6kq8s7sggvpvkm36hx4qi9rnaw53b6ilqkk"))
2282 (file-name (git-file-name "named-readtables" version))))
2283 (build-system asdf-build-system/sbcl)
2284 (arguments
2285 ;; Tests seem to be broken.
2286 `(#:tests? #f))
2287 (home-page "https://github.com/melisgl/named-readtables/")
2288 (synopsis "Library that creates a namespace for named readtables")
2289 (description "Named readtables is a library that creates a namespace for
2290 named readtables, which is akin to package namespacing in Common Lisp.")
2291 (license license:bsd-3))))
2292
2293 (define-public cl-named-readtables
2294 (sbcl-package->cl-source-package sbcl-named-readtables))
2295
2296 (define-public ecl-named-readtables
2297 (sbcl-package->ecl-package sbcl-named-readtables))
2298
2299 (define-public sbcl-pythonic-string-reader
2300 (let ((commit "47a70ba1e32362e03dad6ef8e6f36180b560f86a"))
2301 (package
2302 (name "sbcl-pythonic-string-reader")
2303 (version (git-version "0.0.0" "1" commit))
2304 (source
2305 (origin
2306 (method git-fetch)
2307 (uri (git-reference
2308 (url "https://github.com/smithzvk/pythonic-string-reader/")
2309 (commit commit)))
2310 (sha256
2311 (base32 "1b5iryqw8xsh36swckmz8rrngmc39k92si33fgy5pml3n9l5rq3j"))
2312 (file-name (git-file-name "pythonic-string-reader" version))))
2313 (build-system asdf-build-system/sbcl)
2314 (inputs
2315 `(("named-readtables" ,sbcl-named-readtables)))
2316 (home-page "https://github.com/smithzvk/pythonic-string-reader")
2317 (synopsis "Read table modification inspired by Python's three quote strings")
2318 (description "This piece of code sets up some reader macros that make it
2319 simpler to input string literals which contain backslashes and double quotes
2320 This is very useful for writing complicated docstrings and, as it turns out,
2321 writing code that contains string literals that contain code themselves.")
2322 (license license:bsd-3))))
2323
2324 (define-public cl-pythonic-string-reader
2325 (sbcl-package->cl-source-package sbcl-pythonic-string-reader))
2326
2327 (define-public ecl-pythonic-string-reader
2328 (sbcl-package->ecl-package sbcl-pythonic-string-reader))
2329
2330 ;; SLIME does not have a ASDF system definition to build all of Swank. As a
2331 ;; result, the asdf-build-system/sbcl will produce an almost empty package.
2332 ;; Some work was done to fix this at
2333 ;; https://github.com/sionescu/slime/tree/swank-asdf but it was never merged
2334 ;; and is now lagging behind. Building SBCL fasls might not be worth the
2335 ;; hassle, so let's just ship the source then.
2336 (define-public cl-slime-swank
2337 (package
2338 (name "cl-slime-swank")
2339 (version "2.24")
2340 (source
2341 (origin
2342 (file-name (string-append name "-" version ".tar.gz"))
2343 (method git-fetch)
2344 (uri (git-reference
2345 (url "https://github.com/slime/slime/")
2346 (commit (string-append "v" version))))
2347 (sha256
2348 (base32
2349 "0js24x42m7b5iymb4rxz501dff19vav5pywnzv50b673rbkaaqvh"))))
2350 (build-system asdf-build-system/source)
2351 (home-page "https://github.com/slime/slime")
2352 (synopsis "Common Lisp Swank server")
2353 (description
2354 "This is only useful if you want to start a Swank server in a Lisp
2355 processes that doesn't run under Emacs. Lisp processes created by
2356 @command{M-x slime} automatically start the server.")
2357 (license (list license:gpl2+ license:public-domain))))
2358
2359 (define-public sbcl-slime-swank
2360 (deprecated-package "sbcl-slime-swank" cl-slime-swank))
2361
2362 (define-public sbcl-mgl-pax
2363 (let ((commit "818448418d6b9de74620f606f5b23033c6082769"))
2364 (package
2365 (name "sbcl-mgl-pax")
2366 (version (git-version "0.0.0" "1" commit))
2367 (source
2368 (origin
2369 (method git-fetch)
2370 (uri (git-reference
2371 (url "https://github.com/melisgl/mgl-pax")
2372 (commit commit)))
2373 (sha256
2374 (base32
2375 "1p97zfkh130bdxqqxwaw2j9psv58751wakx7czbfpq410lg7dd7i"))
2376 (file-name (git-file-name "mgl-pax" version))))
2377 (build-system asdf-build-system/sbcl)
2378 (inputs
2379 `(("3bmd" ,sbcl-3bmd)
2380 ("3bmd-ext-code-blocks" ,sbcl-3bmd-ext-code-blocks)
2381 ("babel" ,sbcl-babel)
2382 ("cl-fad" ,sbcl-cl-fad)
2383 ("ironclad" ,sbcl-ironclad)
2384 ("named-readtables" ,sbcl-named-readtables)
2385 ("pythonic-string-reader" ,sbcl-pythonic-string-reader)
2386 ("swank" ,cl-slime-swank)))
2387 (synopsis "Exploratory programming environment and documentation generator")
2388 (description
2389 "PAX provides an extremely poor man's Explorable Programming
2390 environment. Narrative primarily lives in so called sections that mix markdown
2391 docstrings with references to functions, variables, etc, all of which should
2392 probably have their own docstrings.
2393
2394 The primary focus is on making code easily explorable by using SLIME's
2395 @command{M-.} (@command{slime-edit-definition}). See how to enable some
2396 fanciness in Emacs Integration. Generating documentation from sections and all
2397 the referenced items in Markdown or HTML format is also implemented.
2398
2399 With the simplistic tools provided, one may accomplish similar effects as with
2400 Literate Programming, but documentation is generated from code, not vice versa
2401 and there is no support for chunking yet. Code is first, code must look
2402 pretty, documentation is code.")
2403 (home-page "http://quotenil.com/")
2404 (license license:expat))))
2405
2406 (define-public cl-mgl-pax
2407 (sbcl-package->cl-source-package sbcl-mgl-pax))
2408
2409 (define-public ecl-mgl-pax
2410 (sbcl-package->ecl-package sbcl-mgl-pax))
2411
2412 (define-public sbcl-lisp-unit
2413 (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
2414 (package
2415 (name "sbcl-lisp-unit")
2416 (version (git-version "0.0.0" "1" commit))
2417 (source
2418 (origin
2419 (method git-fetch)
2420 (uri (git-reference
2421 (url "https://github.com/OdonataResearchLLC/lisp-unit")
2422 (commit commit)))
2423 (sha256
2424 (base32
2425 "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
2426 (file-name (git-file-name "lisp-unit" version))))
2427 (build-system asdf-build-system/sbcl)
2428 (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
2429 (description
2430 "@command{lisp-unit} is a Common Lisp library that supports unit
2431 testing. It is an extension of the library written by Chris Riesbeck.")
2432 (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
2433 (license license:expat))))
2434
2435 (define-public cl-lisp-unit
2436 (sbcl-package->cl-source-package sbcl-lisp-unit))
2437
2438 (define-public ecl-lisp-unit
2439 (sbcl-package->ecl-package sbcl-lisp-unit))
2440
2441 (define-public sbcl-anaphora
2442 (package
2443 (name "sbcl-anaphora")
2444 (version "0.9.6")
2445 (source
2446 (origin
2447 (method git-fetch)
2448 (uri (git-reference
2449 (url "https://github.com/tokenrove/anaphora")
2450 (commit version)))
2451 (sha256
2452 (base32
2453 "19wfrk3asimznkli0x2rfy637hwpdgqyvwj3vhq9x7vjvyf5vv6x"))
2454 (file-name (git-file-name "anaphora" version))))
2455 (build-system asdf-build-system/sbcl)
2456 (native-inputs
2457 `(("rt" ,sbcl-rt)))
2458 (synopsis "The anaphoric macro collection from Hell")
2459 (description
2460 "Anaphora is the anaphoric macro collection from Hell: it includes many
2461 new fiends in addition to old friends like @command{aif} and
2462 @command{awhen}.")
2463 (home-page "https://github.com/tokenrove/anaphora")
2464 (license license:public-domain)))
2465
2466 (define-public cl-anaphora
2467 (sbcl-package->cl-source-package sbcl-anaphora))
2468
2469 (define-public ecl-anaphora
2470 (sbcl-package->ecl-package sbcl-anaphora))
2471
2472 (define-public sbcl-lift
2473 (let ((commit "7d49a66c62759535624037826891152223d4206c"))
2474 (package
2475 (name "sbcl-lift")
2476 (version (git-version "1.7.1" "1" commit))
2477 (source
2478 (origin
2479 (method git-fetch)
2480 (uri (git-reference
2481 (url "https://github.com/gwkkwg/lift")
2482 (commit commit)))
2483 (sha256
2484 (base32
2485 "127v5avpz1i4m0lkaxqrq8hrl69rdazqaxf6s8awf0nd7wj2g4dp"))
2486 (file-name (git-file-name "lift" version))
2487 (modules '((guix build utils)))
2488 (snippet
2489 ;; Don't keep the bundled website
2490 `(begin
2491 (delete-file-recursively "website")
2492 #t))))
2493 (build-system asdf-build-system/sbcl)
2494 (arguments
2495 ;; The tests require a debugger, but we run with the debugger disabled.
2496 '(#:tests? #f))
2497 (synopsis "LIsp Framework for Testing")
2498 (description
2499 "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
2500 Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
2501 testcases are organized into hierarchical testsuites each of which can have
2502 its own fixture. When run, a testcase can succeed, fail, or error. LIFT
2503 supports randomized testing, benchmarking, profiling, and reporting.")
2504 (home-page "https://github.com/gwkkwg/lift")
2505 (license license:expat))))
2506
2507 (define-public cl-lift
2508 (sbcl-package->cl-source-package sbcl-lift))
2509
2510 (define-public ecl-lift
2511 (sbcl-package->ecl-package sbcl-lift))
2512
2513 (define-public sbcl-let-plus
2514 (let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb"))
2515 (package
2516 (name "sbcl-let-plus")
2517 (version (git-version "0.0.0" "1" commit))
2518 (source
2519 (origin
2520 (method git-fetch)
2521 (uri (git-reference
2522 (url "https://github.com/sharplispers/let-plus")
2523 (commit commit)))
2524 (sha256
2525 (base32
2526 "0i050ca2iys9f5mb7dgqgqdxfnc3b0rnjdwv95sqd490vkiwrsaj"))
2527 (file-name (git-file-name "let-plus" version))))
2528 (build-system asdf-build-system/sbcl)
2529 (inputs
2530 `(("alexandria" ,sbcl-alexandria)
2531 ("anaphora" ,sbcl-anaphora)))
2532 (native-inputs
2533 `(("lift" ,sbcl-lift)))
2534 (synopsis "Destructuring extension of let*")
2535 (description
2536 "This library implements the let+ macro, which is a dectructuring
2537 extension of let*. It features:
2538
2539 @itemize
2540 @item Clean, consistent syntax and small implementation (less than 300 LOC,
2541 not counting tests)
2542 @item Placeholder macros allow editor hints and syntax highlighting
2543 @item @command{&ign} for ignored values (in forms where that makes sense)
2544 @item Very easy to extend
2545 @end itemize\n")
2546 (home-page "https://github.com/sharplispers/let-plus")
2547 (license license:boost1.0))))
2548
2549 (define-public cl-let-plus
2550 (sbcl-package->cl-source-package sbcl-let-plus))
2551
2552 (define-public ecl-let-plus
2553 (sbcl-package->ecl-package sbcl-let-plus))
2554
2555 (define-public sbcl-cl-colors
2556 (let ((commit "827410584553f5c717eec6182343b7605f707f75"))
2557 (package
2558 (name "sbcl-cl-colors")
2559 (version (git-version "0.0.0" "1" commit))
2560 (source
2561 (origin
2562 (method git-fetch)
2563 (uri (git-reference
2564 (url "https://github.com/tpapp/cl-colors")
2565 (commit commit)))
2566 (sha256
2567 (base32
2568 "0l446lday4hybsm9bq3jli97fvv8jb1d33abg79vbylpwjmf3y9a"))
2569 (file-name (git-file-name "cl-colors" version))))
2570 (build-system asdf-build-system/sbcl)
2571 (inputs
2572 `(("alexandria" ,sbcl-alexandria)
2573 ("let-plus" ,sbcl-let-plus)))
2574 (synopsis "Simple color library for Common Lisp")
2575 (description
2576 "This is a very simple color library for Common Lisp, providing
2577
2578 @itemize
2579 @item Types for representing colors in HSV and RGB spaces.
2580 @item Simple conversion functions between the above types (and also
2581 hexadecimal representation for RGB).
2582 @item Some predefined colors (currently X11 color names – of course the
2583 library does not depend on X11).Because color in your terminal is nice.
2584 @end itemize
2585
2586 This library is no longer supported by its author.")
2587 (home-page "https://github.com/tpapp/cl-colors")
2588 (license license:boost1.0))))
2589
2590 (define-public cl-colors
2591 (sbcl-package->cl-source-package sbcl-cl-colors))
2592
2593 (define-public ecl-cl-colors
2594 (sbcl-package->ecl-package sbcl-cl-colors))
2595
2596 (define-public sbcl-cl-ansi-text
2597 (let ((commit "53badf7878f27f22f2d4a2a43e6df458e43acbe9"))
2598 (package
2599 (name "sbcl-cl-ansi-text")
2600 (version (git-version "1.0.0" "1" commit))
2601 (source
2602 (origin
2603 (method git-fetch)
2604 (uri (git-reference
2605 (url "https://github.com/pnathan/cl-ansi-text")
2606 (commit commit)))
2607 (sha256
2608 (base32
2609 "11i27n0dbz5lmygiw65zzr8lx0rac6b6yysqranphn31wls6ja3v"))
2610 (file-name (git-file-name "cl-ansi-text" version))))
2611 (build-system asdf-build-system/sbcl)
2612 (inputs
2613 `(("alexandria" ,sbcl-alexandria)
2614 ("cl-colors" ,sbcl-cl-colors)))
2615 (native-inputs
2616 `(("fiveam" ,sbcl-fiveam)))
2617 (synopsis "ANSI terminal color implementation for Common Lisp")
2618 (description
2619 "@command{cl-ansi-text} provides utilities which enable printing to an
2620 ANSI terminal with colored text. It provides the macro @command{with-color}
2621 which causes everything printed in the body to be displayed with the provided
2622 color. It further provides functions which will print the argument with the
2623 named color.")
2624 (home-page "https://github.com/pnathan/cl-ansi-text")
2625 (license license:llgpl))))
2626
2627 (define-public cl-ansi-text
2628 (sbcl-package->cl-source-package sbcl-cl-ansi-text))
2629
2630 (define-public ecl-cl-ansi-text
2631 (sbcl-package->ecl-package sbcl-cl-ansi-text))
2632
2633 (define-public sbcl-prove-asdf
2634 (let ((commit "4f9122bd393e63c5c70c1fba23070622317cfaa0"))
2635 (package
2636 (name "sbcl-prove-asdf")
2637 (version (git-version "1.0.0" "1" commit))
2638 (source
2639 (origin
2640 (method git-fetch)
2641 (uri (git-reference
2642 (url "https://github.com/fukamachi/prove")
2643 (commit commit)))
2644 (sha256
2645 (base32
2646 "07sbfw459z8bbjvx1qlmfa8qk2mvbjnnzi2mi0x72blaj8bkl4vc"))
2647 (file-name (git-file-name "prove" version))))
2648 (build-system asdf-build-system/sbcl)
2649 (arguments
2650 `(#:asd-file "prove-asdf.asd"))
2651 (synopsis "Test requirement for the Common Lisp 'prove' library")
2652 (description
2653 "Test requirement for the Common Lisp @command{prove} library.")
2654 (home-page "https://github.com/fukamachi/prove")
2655 (license license:expat))))
2656
2657 (define-public cl-prove-asdf
2658 (sbcl-package->cl-source-package sbcl-prove-asdf))
2659
2660 (define-public ecl-prove-asdf
2661 (sbcl-package->ecl-package sbcl-prove-asdf))
2662
2663 (define-public sbcl-prove
2664 (package
2665 (inherit sbcl-prove-asdf)
2666 (name "sbcl-prove")
2667 (inputs
2668 `(("alexandria" ,sbcl-alexandria)
2669 ("cl-ppcre" ,sbcl-cl-ppcre)
2670 ("cl-ansi-text" ,sbcl-cl-ansi-text)))
2671 (native-inputs
2672 `(("prove-asdf" ,sbcl-prove-asdf)))
2673 (arguments
2674 `(#:asd-file "prove.asd"))
2675 (synopsis "Yet another unit testing framework for Common Lisp")
2676 (description
2677 "This project was originally called @command{cl-test-more}.
2678 @command{prove} is yet another unit testing framework for Common Lisp. The
2679 advantages of @command{prove} are:
2680
2681 @itemize
2682 @item Various simple functions for testing and informative error messages
2683 @item ASDF integration
2684 @item Extensible test reporters
2685 @item Colorizes the report if it's available (note for SLIME)
2686 @item Reports test durations
2687 @end itemize\n")))
2688
2689 (define-public cl-prove
2690 (sbcl-package->cl-source-package sbcl-prove))
2691
2692 (define-public ecl-prove
2693 (sbcl-package->ecl-package sbcl-prove))
2694
2695 (define-public sbcl-proc-parse
2696 (let ((commit "ac3636834d561bdc2686c956dbd82494537285fd"))
2697 (package
2698 (name "sbcl-proc-parse")
2699 (version (git-version "0.0.0" "1" commit))
2700 (source
2701 (origin
2702 (method git-fetch)
2703 (uri (git-reference
2704 (url "https://github.com/fukamachi/proc-parse")
2705 (commit commit)))
2706 (sha256
2707 (base32
2708 "06rnl0h4cx6xv2wj3jczmmcxqn2703inmmvg1s4npbghmijsybfh"))
2709 (file-name (git-file-name "proc-parse" version))))
2710 (build-system asdf-build-system/sbcl)
2711 (inputs
2712 `(("alexandria" ,sbcl-alexandria)
2713 ("babel" ,sbcl-babel)))
2714 (native-inputs
2715 `(("prove" ,sbcl-prove)
2716 ("prove-asdf" ,sbcl-prove-asdf)))
2717 (arguments
2718 ;; TODO: Tests don't find "proc-parse-test", why?
2719 `(#:tests? #f))
2720 (synopsis "Procedural vector parser")
2721 (description
2722 "This is a string/octets parser library for Common Lisp with speed and
2723 readability in mind. Unlike other libraries, the code is not a
2724 pattern-matching-like, but a char-by-char procedural parser.")
2725 (home-page "https://github.com/fukamachi/proc-parse")
2726 (license license:bsd-2))))
2727
2728 (define-public cl-proc-parse
2729 (sbcl-package->cl-source-package sbcl-proc-parse))
2730
2731 (define-public ecl-proc-parse
2732 (sbcl-package->ecl-package sbcl-proc-parse))
2733
2734 (define-public sbcl-parse-float
2735 (let ((commit "2aae569f2a4b2eb3bfb5401a959425dcf151b09c"))
2736 (package
2737 (name "sbcl-parse-float")
2738 (version (git-version "0.0.0" "1" commit))
2739 (source
2740 (origin
2741 (method git-fetch)
2742 (uri (git-reference
2743 (url "https://github.com/soemraws/parse-float")
2744 (commit commit)))
2745 (sha256
2746 (base32
2747 "08xw8cchhmqcc0byng69m3f5a2izc9y2290jzz2k0qrbibp1fdk7"))
2748 (file-name (git-file-name "proc-parse" version))))
2749 (build-system asdf-build-system/sbcl)
2750 (inputs
2751 `(("alexandria" ,sbcl-alexandria)
2752 ("babel" ,sbcl-babel)))
2753 (native-inputs
2754 `(("prove" ,sbcl-prove)
2755 ("prove-asdf" ,sbcl-prove-asdf)))
2756 (arguments
2757 ;; TODO: Tests don't find "proc-parse-test", why?
2758 `(#:tests? #f))
2759 (synopsis "Parse a floating point value from a string in Common Lisp")
2760 (description
2761 "This package exports the following function to parse floating-point
2762 values from a string in Common Lisp.")
2763 (home-page "https://github.com/soemraws/parse-float")
2764 (license license:public-domain))))
2765
2766 (define-public cl-parse-float
2767 (sbcl-package->cl-source-package sbcl-parse-float))
2768
2769 (define-public ecl-parse-float
2770 (sbcl-package->ecl-package sbcl-parse-float))
2771
2772 (define-public sbcl-ascii-strings
2773 (let ((revision "1")
2774 (changeset "5048480a61243e6f1b02884012c8f25cdbee6d97"))
2775 (package
2776 (name "sbcl-ascii-strings")
2777 (version (string-append "0-" revision "." (string-take changeset 7)))
2778 (source
2779 (origin
2780 (method hg-fetch)
2781 (uri (hg-reference
2782 (url "https://bitbucket.org/vityok/cl-string-match/")
2783 (changeset changeset)))
2784 (sha256
2785 (base32
2786 "01wn5qx562w43ssy92xlfgv79w7p0nv0wbl76mpmba131n9ziq2y"))
2787 (file-name (git-file-name "cl-string-match" version))))
2788 (build-system asdf-build-system/sbcl)
2789 (inputs
2790 `(("alexandria" ,sbcl-alexandria)
2791 ("babel" ,sbcl-babel)))
2792 (arguments
2793 `(#:asd-file "ascii-strings.asd"))
2794 (synopsis "Operations on ASCII strings")
2795 (description
2796 "Operations on ASCII strings. Essentially this can be any kind of
2797 single-byte encoded strings.")
2798 (home-page "https://bitbucket.org/vityok/cl-string-match/")
2799 (license license:bsd-3))))
2800
2801 (define-public cl-ascii-strings
2802 (sbcl-package->cl-source-package sbcl-ascii-strings))
2803
2804 (define-public ecl-ascii-strings
2805 (sbcl-package->ecl-package sbcl-ascii-strings))
2806
2807 (define-public sbcl-simple-scanf
2808 (package
2809 (inherit sbcl-ascii-strings)
2810 (name "sbcl-simple-scanf")
2811 (inputs
2812 `(("alexandria" ,sbcl-alexandria)
2813 ("iterate" ,sbcl-iterate)
2814 ("proc-parse" ,sbcl-proc-parse)
2815 ("parse-float" ,sbcl-parse-float)))
2816 (arguments
2817 `(#:asd-file "simple-scanf.asd"))
2818 (synopsis "Simple scanf-like functionality implementation")
2819 (description
2820 "A simple scanf-like functionality implementation.")))
2821
2822 (define-public cl-simple-scanf
2823 (sbcl-package->cl-source-package sbcl-simple-scanf))
2824
2825 (define-public ecl-simple-scanf
2826 (sbcl-package->ecl-package sbcl-simple-scanf))
2827
2828 (define-public sbcl-cl-string-match
2829 (package
2830 (inherit sbcl-ascii-strings)
2831 (name "sbcl-cl-string-match")
2832 (inputs
2833 `(("alexandria" ,sbcl-alexandria)
2834 ("ascii-strings" ,sbcl-ascii-strings)
2835 ("yacc" ,sbcl-cl-yacc)
2836 ("jpl-util" ,sbcl-jpl-util)
2837 ("jpl-queues" ,sbcl-jpl-queues)
2838 ("mgl-pax" ,sbcl-mgl-pax)
2839 ("iterate" ,sbcl-iterate)))
2840 ;; TODO: Tests are not evaluated properly.
2841 (native-inputs
2842 ;; For testing:
2843 `(("lisp-unit" ,sbcl-lisp-unit)
2844 ("simple-scanf" ,sbcl-simple-scanf)))
2845 (arguments
2846 `(#:tests? #f
2847 #:asd-file "cl-string-match.asd"))
2848 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
2849 (description
2850 "@command{cl-strings} is a small, portable, dependency-free set of
2851 utilities that make it even easier to manipulate text in Common Lisp. It has
2852 100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")))
2853
2854 (define-public cl-string-match
2855 (sbcl-package->cl-source-package sbcl-cl-string-match))
2856
2857 (define-public ecl-cl-string-match
2858 (sbcl-package->ecl-package sbcl-cl-string-match))
2859
2860 (define-public sbcl-ptester
2861 (package
2862 (name "sbcl-ptester")
2863 (version "20160929")
2864 (source
2865 (origin
2866 (method url-fetch)
2867 (uri (string-append "http://beta.quicklisp.org/archive/ptester/"
2868 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2869 "/ptester-"
2870 version
2871 "-git.tgz"))
2872 (sha256
2873 (base32
2874 "04rlq1zljhxc65pm31bah3sq3as24l0sdivz440s79qlnnyh13hz"))))
2875 (build-system asdf-build-system/sbcl)
2876 (home-page "http://quickdocs.org/ptester/")
2877 (synopsis "Portable test harness package")
2878 (description
2879 "@command{ptester} is a portable testing framework based on Franz's
2880 tester module.")
2881 (license license:lgpl3+)))
2882
2883 (define-public cl-ptester
2884 (sbcl-package->cl-source-package sbcl-ptester))
2885
2886 (define-public ecl-ptester
2887 (sbcl-package->ecl-package sbcl-ptester))
2888
2889 (define-public sbcl-puri
2890 (package
2891 (name "sbcl-puri")
2892 (version "20180228")
2893 (source
2894 (origin
2895 (method url-fetch)
2896 (uri (string-append "http://beta.quicklisp.org/archive/puri/"
2897 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2898 "/puri-"
2899 version
2900 "-git.tgz"))
2901 (sha256
2902 (base32
2903 "1s4r5adrjy5asry45xbcbklxhdjydvf6n55z897nvyw33bigrnbz"))))
2904 (build-system asdf-build-system/sbcl)
2905 ;; REVIEW: Webiste down?
2906 (native-inputs
2907 `(("ptester" ,sbcl-ptester)))
2908 (home-page "http://files.kpe.io/puri/")
2909 (synopsis "Portable URI Library")
2910 (description
2911 "This is portable Universal Resource Identifier library for Common Lisp
2912 programs. It parses URI according to the RFC 2396 specification")
2913 (license license:lgpl3+)))
2914
2915 (define-public cl-puri
2916 (sbcl-package->cl-source-package sbcl-puri))
2917
2918 (define-public ecl-puri
2919 (sbcl-package->ecl-package sbcl-puri))
2920
2921 (define-public sbcl-queues
2922 (let ((commit "47d4da65e9ea20953b74aeeab7e89a831b66bc94"))
2923 (package
2924 (name "sbcl-queues")
2925 (version (git-version "0.0.0" "1" commit))
2926 (source
2927 (origin
2928 (method git-fetch)
2929 (uri (git-reference
2930 (url "https://github.com/oconnore/queues")
2931 (commit commit)))
2932 (file-name (git-file-name "queues" version))
2933 (sha256
2934 (base32
2935 "0wdhfnzi4v6d97pggzj2aw55si94w4327br94jrmyvwf351wqjvv"))))
2936 (build-system asdf-build-system/sbcl)
2937 (home-page "https://github.com/oconnore/queues")
2938 (synopsis "Common Lisp queue library")
2939 (description
2940 "This is a simple queue library for Common Lisp with features such as
2941 non-consing thread safe queues and fibonacci priority queues.")
2942 (license license:expat))))
2943
2944 (define-public cl-queues
2945 (sbcl-package->cl-source-package sbcl-queues))
2946
2947 (define-public ecl-queues
2948 (sbcl-package->ecl-package sbcl-queues))
2949
2950 (define-public sbcl-queues.simple-queue
2951 (package
2952 (inherit sbcl-queues)
2953 (name "sbcl-queues.simple-queue")
2954 (inputs
2955 `(("sbcl-queues" ,sbcl-queues)))
2956 (arguments
2957 `(#:asd-file "queues.simple-queue.asd"))
2958 (synopsis "Simple queue implementation")
2959 (description
2960 "This is a simple queue library for Common Lisp with features such as
2961 non-consing thread safe queues and fibonacci priority queues.")
2962 (license license:expat)))
2963
2964 (define-public cl-queues.simple-queue
2965 (sbcl-package->cl-source-package sbcl-queues.simple-queue))
2966
2967 (define-public ecl-queues.simple-queue
2968 (sbcl-package->ecl-package sbcl-queues.simple-queue))
2969
2970 (define-public sbcl-queues.simple-cqueue
2971 (package
2972 (inherit sbcl-queues)
2973 (name "sbcl-queues.simple-cqueue")
2974 (inputs
2975 `(("sbcl-queues" ,sbcl-queues)
2976 ("sbcl-queues.simple-queue" ,sbcl-queues.simple-queue)
2977 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2978 (arguments
2979 `(#:asd-file "queues.simple-cqueue.asd"))
2980 (synopsis "Thread safe queue implementation")
2981 (description
2982 "This is a simple queue library for Common Lisp with features such as
2983 non-consing thread safe queues and fibonacci priority queues.")
2984 (license license:expat)))
2985
2986 (define-public cl-queues.simple-cqueue
2987 (sbcl-package->cl-source-package sbcl-queues.simple-cqueue))
2988
2989 (define-public ecl-queues.simple-cqueue
2990 (sbcl-package->ecl-package sbcl-queues.simple-cqueue))
2991
2992 (define-public sbcl-queues.priority-queue
2993 (package
2994 (inherit sbcl-queues)
2995 (name "sbcl-queues.priority-queue")
2996 (inputs
2997 `(("sbcl-queues" ,sbcl-queues)))
2998 (arguments
2999 `(#:asd-file "queues.priority-queue.asd"))
3000 (synopsis "Priority queue (Fibonacci) implementation")
3001 (description
3002 "This is a simple queue library for Common Lisp with features such as
3003 non-consing thread safe queues and fibonacci priority queues.")
3004 (license license:expat)))
3005
3006 (define-public cl-queues.priority-queue
3007 (sbcl-package->cl-source-package sbcl-queues.priority-queue))
3008
3009 (define-public ecl-queues.priority-queue
3010 (sbcl-package->ecl-package sbcl-queues.priority-queue))
3011
3012 (define-public sbcl-queues.priority-cqueue
3013 (package
3014 (inherit sbcl-queues)
3015 (name "sbcl-queues.priority-cqueue")
3016 (inputs
3017 `(("sbcl-queues" ,sbcl-queues)
3018 ("sbcl-queues.priority-queue" ,sbcl-queues.priority-queue)
3019 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
3020 (arguments
3021 `(#:asd-file "queues.priority-cqueue.asd"))
3022 (synopsis "Thread safe fibonacci priority queue implementation")
3023 (description
3024 "This is a simple queue library for Common Lisp with features such as
3025 non-consing thread safe queues and fibonacci priority queues.")
3026 (license license:expat)))
3027
3028 (define-public cl-queues.priority-cqueue
3029 (sbcl-package->cl-source-package sbcl-queues.priority-cqueue))
3030
3031 (define-public ecl-queues.priority-cqueue
3032 (sbcl-package->ecl-package sbcl-queues.priority-cqueue))
3033
3034 (define sbcl-cffi-bootstrap
3035 (package
3036 (name "sbcl-cffi-bootstrap")
3037 (version "0.19.0")
3038 (source
3039 (origin
3040 (method git-fetch)
3041 (uri (git-reference
3042 (url "https://github.com/cffi/cffi.git")
3043 (commit (string-append "v" version))))
3044 (file-name (git-file-name "cffi-bootstrap" version))
3045 (sha256
3046 (base32 "09sfgc6r7ihmbkwfpvkq5fxc7h45cabpvgbvs47i5cvnmv3k72xy"))))
3047 (build-system asdf-build-system/sbcl)
3048 (inputs
3049 `(("libffi" ,libffi)
3050 ("alexandria" ,sbcl-alexandria)
3051 ("babel" ,sbcl-babel)
3052 ("trivial-features" ,sbcl-trivial-features)))
3053 (native-inputs
3054 `(("pkg-config" ,pkg-config)))
3055 (arguments
3056 '(#:phases
3057 (modify-phases %standard-phases
3058 (add-after 'unpack 'fix-paths
3059 (lambda* (#:key inputs #:allow-other-keys)
3060 (substitute* "libffi/libffi.lisp"
3061 (("libffi.so.6" all) (string-append
3062 (assoc-ref inputs "libffi")
3063 "/lib/" all)))
3064 (substitute* "toolchain/c-toolchain.lisp"
3065 (("\"cc\"") (format #f "~S" (which "gcc")))))))
3066 #:asd-system-name "cffi"
3067 #:tests? #f))
3068 (home-page "https://common-lisp.net/project/cffi/")
3069 (synopsis "Common Foreign Function Interface for Common Lisp")
3070 (description "The Common Foreign Function Interface (CFFI)
3071 purports to be a portable foreign function interface for Common Lisp.
3072 The CFFI library is composed of a Lisp-implementation-specific backend
3073 in the CFFI-SYS package, and a portable frontend in the CFFI
3074 package.")
3075 (license license:expat)))
3076
3077 (define-public sbcl-cffi-toolchain
3078 (package
3079 (inherit sbcl-cffi-bootstrap)
3080 (name "sbcl-cffi-toolchain")
3081 (inputs
3082 `(("libffi" ,libffi)
3083 ("sbcl-cffi" ,sbcl-cffi-bootstrap)))
3084 (arguments
3085 (substitute-keyword-arguments (package-arguments sbcl-cffi-bootstrap)
3086 ((#:asd-system-name _) #f)
3087 ((#:tests? _) #t)))))
3088
3089 (define-public sbcl-cffi-libffi
3090 (package
3091 (inherit sbcl-cffi-toolchain)
3092 (name "sbcl-cffi-libffi")
3093 (inputs
3094 `(("cffi" ,sbcl-cffi-bootstrap)
3095 ("cffi-grovel" ,sbcl-cffi-grovel)
3096 ("trivial-features" ,sbcl-trivial-features)
3097 ("libffi" ,libffi)))))
3098
3099 (define-public sbcl-cffi-grovel
3100 (package
3101 (inherit sbcl-cffi-toolchain)
3102 (name "sbcl-cffi-grovel")
3103 (inputs
3104 `(("libffi" ,libffi)
3105 ("cffi" ,sbcl-cffi-bootstrap)
3106 ("cffi-toolchain" ,sbcl-cffi-toolchain)
3107 ("alexandria" ,sbcl-alexandria)))
3108 (arguments
3109 (substitute-keyword-arguments (package-arguments sbcl-cffi-toolchain)
3110 ((#:phases phases)
3111 `(modify-phases ,phases
3112 (add-after 'build 'install-headers
3113 (lambda* (#:key outputs #:allow-other-keys)
3114 (install-file "grovel/common.h"
3115 (string-append
3116 (assoc-ref outputs "out")
3117 "/include/grovel"))))))))))
3118
3119 (define-public sbcl-cffi
3120 (package
3121 (inherit sbcl-cffi-toolchain)
3122 (name "sbcl-cffi")
3123 (inputs (package-inputs sbcl-cffi-bootstrap))
3124 (native-inputs
3125 `(("cffi-grovel" ,sbcl-cffi-grovel)
3126 ("cffi-libffi" ,sbcl-cffi-libffi)
3127 ("rt" ,sbcl-rt)
3128 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3129 ,@(package-native-inputs sbcl-cffi-bootstrap)))))
3130
3131 (define-public sbcl-cl-sqlite
3132 (let ((commit "c738e66d4266ef63a1debc4ef4a1b871a068c112"))
3133 (package
3134 (name "sbcl-cl-sqlite")
3135 (version (git-version "0.2" "1" commit))
3136 (source
3137 (origin
3138 (method git-fetch)
3139 (uri (git-reference
3140 (url "https://github.com/dmitryvk/cl-sqlite")
3141 (commit commit)))
3142 (file-name (git-file-name "cl-sqlite" version))
3143 (sha256
3144 (base32
3145 "1ng45k1hdb84sqjryrfx93g66bsbybmpy301wd0fdybnc5jzr36q"))))
3146 (build-system asdf-build-system/sbcl)
3147 (inputs
3148 `(("iterate" ,sbcl-iterate)
3149 ("cffi" ,sbcl-cffi)
3150 ("sqlite" ,sqlite)))
3151 (native-inputs
3152 `(("fiveam" ,sbcl-fiveam)
3153 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
3154 (arguments
3155 `(#:tests? #f ; Upstream seems to have issues with tests: https://github.com/dmitryvk/cl-sqlite/issues/7
3156 #:asd-file "sqlite.asd"
3157 #:asd-system-name "sqlite"
3158 #:phases
3159 (modify-phases %standard-phases
3160 (add-after 'unpack 'fix-paths
3161 (lambda* (#:key inputs #:allow-other-keys)
3162 (substitute* "sqlite-ffi.lisp"
3163 (("libsqlite3" all) (string-append
3164 (assoc-ref inputs "sqlite")"/lib/" all))))))))
3165 (home-page "https://common-lisp.net/project/cl-sqlite/")
3166 (synopsis "Common Lisp binding for SQLite")
3167 (description
3168 "The @command{cl-sqlite} package is an interface to the SQLite embedded
3169 relational database engine.")
3170 (license license:public-domain))))
3171
3172 (define-public sbcl-parenscript
3173 (let ((commit "061d8e286c81c3f45c84fb2b11ee7d83f590a8f8"))
3174 (package
3175 (name "sbcl-parenscript")
3176 (version (git-version "2.6" "1" commit))
3177 (source
3178 (origin
3179 (method git-fetch)
3180 (uri (git-reference
3181 (url "https://gitlab.common-lisp.net/parenscript/parenscript")
3182 (commit commit)))
3183 (file-name (git-file-name "parenscript" version))
3184 (sha256
3185 (base32
3186 "1kbhgsjbikc73m5cwdp4d4fdafyqcr1b7b630qjrziql0nh6mi3k"))))
3187 (build-system asdf-build-system/sbcl)
3188 (inputs
3189 `(("cl-ppcre" ,sbcl-cl-ppcre)
3190 ("anaphora" ,sbcl-anaphora)
3191 ("named-readtables" ,sbcl-named-readtables)))
3192 (home-page "https://common-lisp.net/project/parenscript/")
3193 (synopsis "Translator from a subset of Common Lisp to JavaScript")
3194 (description
3195 "Parenscript is a translator from an extended subset of Common Lisp to
3196 JavaScript. Parenscript code can run almost identically on both the
3197 browser (as JavaScript) and server (as Common Lisp).
3198
3199 Parenscript code is treated the same way as Common Lisp code, making the full
3200 power of Lisp macros available for JavaScript. This provides a web
3201 development environment that is unmatched in its ability to reduce code
3202 duplication and provide advanced meta-programming facilities to web
3203 developers.
3204
3205 At the same time, Parenscript is different from almost all other \"language
3206 X\" to JavaScript translators in that it imposes almost no overhead:
3207
3208 @itemize
3209 @item No run-time dependencies: Any piece of Parenscript code is runnable
3210 as-is. There are no JavaScript files to include.
3211 @item Native types: Parenscript works entirely with native JavaScript data
3212 types. There are no new types introduced, and object prototypes are not
3213 touched.
3214 @item Native calling convention: Any JavaScript code can be called without the
3215 need for bindings. Likewise, Parenscript can be used to make efficient,
3216 self-contained JavaScript libraries.
3217 @item Readable code: Parenscript generates concise, formatted, idiomatic
3218 JavaScript code. Identifier names are preserved. This enables seamless
3219 debugging in tools like Firebug.
3220 @item Efficiency: Parenscript introduces minimal overhead for advanced Common
3221 Lisp features. The generated code is almost as fast as hand-written
3222 JavaScript.
3223 @end itemize\n")
3224 (license license:bsd-3))))
3225
3226 (define-public cl-parenscript
3227 (sbcl-package->cl-source-package sbcl-parenscript))
3228
3229 (define-public ecl-parenscript
3230 (sbcl-package->ecl-package sbcl-parenscript))
3231
3232 (define-public sbcl-cl-json
3233 (let ((commit "6dfebb9540bfc3cc33582d0c03c9ec27cb913e79"))
3234 (package
3235 (name "sbcl-cl-json")
3236 (version (git-version "0.5" "1" commit))
3237 (source
3238 (origin
3239 (method git-fetch)
3240 (uri (git-reference
3241 (url "https://github.com/hankhero/cl-json")
3242 (commit commit)))
3243 (file-name (git-file-name "cl-json" version))
3244 (sha256
3245 (base32
3246 "0fx3m3x3s5ji950yzpazz4s0img3l6b3d6l3jrfjv0lr702496lh"))))
3247 (build-system asdf-build-system/sbcl)
3248 (native-inputs
3249 `(("fiveam" ,sbcl-fiveam)))
3250 (home-page "https://github.com/hankhero/cl-json")
3251 (synopsis "JSON encoder and decoder for Common-Lisp")
3252 (description
3253 "@command{cl-json} provides an encoder of Lisp objects to JSON format
3254 and a corresponding decoder of JSON data to Lisp objects. Both the encoder
3255 and the decoder are highly customizable; at the same time, the default
3256 settings ensure a very simple mode of operation, similar to that provided by
3257 @command{yason} or @command{st-json}.")
3258 (license license:expat))))
3259
3260 (define-public cl-json
3261 (sbcl-package->cl-source-package sbcl-cl-json))
3262
3263 (define-public ecl-cl-json
3264 (sbcl-package->ecl-package sbcl-cl-json))
3265
3266 (define-public sbcl-unix-opts
3267 (package
3268 (name "sbcl-unix-opts")
3269 (version "0.1.7")
3270 (source
3271 (origin
3272 (method git-fetch)
3273 (uri (git-reference
3274 (url "https://github.com/libre-man/unix-opts")
3275 (commit version)))
3276 (file-name (git-file-name "unix-opts" version))
3277 (sha256
3278 (base32
3279 "08djdi1ard09fijb7w9bdmhmwd98b1hzmcnjw9fqjiqa0g3b44rr"))))
3280 (build-system asdf-build-system/sbcl)
3281 (home-page "https://github.com/hankhero/cl-json")
3282 (synopsis "Unix-style command line options parser")
3283 (description
3284 "This is a minimalistic parser of command line options. The main
3285 advantage of the library is the ability to concisely define command line
3286 options once and then use this definition for parsing and extraction of
3287 command line arguments, as well as printing description of command line
3288 options (you get --help for free). This way you don't need to repeat
3289 yourself. Also, @command{unix-opts} doesn't depend on anything and allows to
3290 precisely control behavior of the parser via Common Lisp restarts.")
3291 (license license:expat)))
3292
3293 (define-public cl-unix-opts
3294 (sbcl-package->cl-source-package sbcl-unix-opts))
3295
3296 (define-public ecl-unix-opts
3297 (sbcl-package->ecl-package sbcl-unix-opts))
3298
3299 (define-public sbcl-trivial-garbage
3300 (package
3301 (name "sbcl-trivial-garbage")
3302 (version "0.21")
3303 (source
3304 (origin
3305 (method git-fetch)
3306 (uri (git-reference
3307 (url "https://github.com/trivial-garbage/trivial-garbage.git")
3308 (commit (string-append "v" version))))
3309 (file-name (git-file-name "trivial-garbage" version))
3310 (sha256
3311 (base32 "0122jicfg7pca1wxw8zak1n92h5friqy60988ns0ysksj3fphw9n"))))
3312 (build-system asdf-build-system/sbcl)
3313 (native-inputs
3314 `(("rt" ,sbcl-rt)))
3315 (home-page "https://common-lisp.net/project/trivial-garbage/")
3316 (synopsis "Portable GC-related APIs for Common Lisp")
3317 (description "@command{trivial-garbage} provides a portable API to
3318 finalizers, weak hash-tables and weak pointers on all major implementations of
3319 the Common Lisp programming language.")
3320 (license license:public-domain)))
3321
3322 (define-public cl-trivial-garbage
3323 (sbcl-package->cl-source-package sbcl-trivial-garbage))
3324
3325 (define-public ecl-trivial-garbage
3326 (sbcl-package->ecl-package sbcl-trivial-garbage))
3327
3328 (define-public sbcl-closer-mop
3329 (let ((commit "fac29ce90e3a46e1fc6cf182190e193526fa9dbc"))
3330 (package
3331 (name "sbcl-closer-mop")
3332 (version (git-version "1.0.0" "1" commit))
3333 (source
3334 (origin
3335 (method git-fetch)
3336 (uri (git-reference
3337 (url "https://github.com/pcostanza/closer-mop")
3338 (commit commit)))
3339 (sha256
3340 (base32 "0hvh77y869h8fg9di5snyg85fxq6fdh9gj1igmx1g6j6j5x915dl"))
3341 (file-name (git-file-name "closer-mop" version ))))
3342 (build-system asdf-build-system/sbcl)
3343 (home-page "https://github.com/pcostanza/closer-mop")
3344 (synopsis "Rectifies absent or incorrect CLOS MOP features")
3345 (description "Closer to MOP is a compatibility layer that rectifies many
3346 of the absent or incorrect CLOS MOP features across a broad range of Common
3347 Lisp implementations.")
3348 (license license:expat))))
3349
3350 (define-public cl-closer-mop
3351 (sbcl-package->cl-source-package sbcl-closer-mop))
3352
3353 (define-public ecl-closer-mop
3354 (sbcl-package->ecl-package sbcl-closer-mop))
3355
3356 (define sbcl-cl-cffi-gtk-boot0
3357 (let ((commit "29443c5aaca975709df8025c4649366d882033cb"))
3358 (package
3359 (name "sbcl-cl-cffi-gtk-boot0")
3360 (version (git-version "0.11.2" "1" commit))
3361 (source
3362 (origin
3363 (method git-fetch)
3364 (uri (git-reference
3365 (url "https://github.com/Ferada/cl-cffi-gtk/")
3366 (commit commit)))
3367 (file-name (git-file-name "cl-cffi-gtk" version))
3368 (sha256
3369 (base32
3370 "0f6s92sf8xyzh1yksqx8bsy1sv0zmy0c13j3b8bavaba5hlxpxah"))))
3371 (build-system asdf-build-system/sbcl)
3372 (inputs
3373 `(("iterate" ,sbcl-iterate)
3374 ("cffi" ,sbcl-cffi)
3375 ("trivial-features" ,sbcl-trivial-features)))
3376 (home-page "https://github.com/Ferada/cl-cffi-gtk/")
3377 (synopsis "Common Lisp binding for GTK+3")
3378 (description
3379 "@command{cl-cffi-gtk} is a Lisp binding to GTK+ 3 (GIMP Toolkit) which
3380 is a library for creating graphical user interfaces.")
3381 (license license:lgpl3))))
3382
3383 (define-public sbcl-cl-cffi-gtk-glib
3384 (package
3385 (inherit sbcl-cl-cffi-gtk-boot0)
3386 (name "sbcl-cl-cffi-gtk-glib")
3387 (inputs
3388 `(("glib" ,glib)
3389 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3390 (arguments
3391 `(#:asd-file "glib/cl-cffi-gtk-glib.asd"
3392 #:phases
3393 (modify-phases %standard-phases
3394 (add-after 'unpack 'fix-paths
3395 (lambda* (#:key inputs #:allow-other-keys)
3396 (substitute* "glib/glib.init.lisp"
3397 (("libglib|libgthread" all) (string-append
3398 (assoc-ref inputs "glib") "/lib/" all))))))))))
3399
3400 (define-public sbcl-cl-cffi-gtk-gobject
3401 (package
3402 (inherit sbcl-cl-cffi-gtk-boot0)
3403 (name "sbcl-cl-cffi-gtk-gobject")
3404 (inputs
3405 `(("glib" ,glib)
3406 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3407 ("trivial-garbage" ,sbcl-trivial-garbage)
3408 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3409 ("closer-mop" ,sbcl-closer-mop)
3410 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3411 (arguments
3412 `(#:asd-file "gobject/cl-cffi-gtk-gobject.asd"
3413 #:phases
3414 (modify-phases %standard-phases
3415 (add-after 'unpack 'fix-paths
3416 (lambda* (#:key inputs #:allow-other-keys)
3417 (substitute* "gobject/gobject.init.lisp"
3418 (("libgobject" all) (string-append
3419 (assoc-ref inputs "glib") "/lib/" all))))))))))
3420
3421 (define-public sbcl-cl-cffi-gtk-gio
3422 (package
3423 (inherit sbcl-cl-cffi-gtk-boot0)
3424 (name "sbcl-cl-cffi-gtk-gio")
3425 (inputs
3426 `(("glib" ,glib)
3427 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3428 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3429 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3430 (arguments
3431 `(#:asd-file "gio/cl-cffi-gtk-gio.asd"
3432 #:phases
3433 (modify-phases %standard-phases
3434 (add-after 'unpack 'fix-paths
3435 (lambda* (#:key inputs #:allow-other-keys)
3436 (substitute* "gio/gio.init.lisp"
3437 (("libgio" all)
3438 (string-append
3439 (assoc-ref inputs "glib") "/lib/" all))))))))))
3440
3441 (define-public sbcl-cl-cffi-gtk-cairo
3442 (package
3443 (inherit sbcl-cl-cffi-gtk-boot0)
3444 (name "sbcl-cl-cffi-gtk-cairo")
3445 (inputs
3446 `(("cairo" ,cairo)
3447 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3448 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3449 (arguments
3450 `(#:asd-file "cairo/cl-cffi-gtk-cairo.asd"
3451 #:phases
3452 (modify-phases %standard-phases
3453 (add-after 'unpack 'fix-paths
3454 (lambda* (#:key inputs #:allow-other-keys)
3455 (substitute* "cairo/cairo.init.lisp"
3456 (("libcairo" all)
3457 (string-append
3458 (assoc-ref inputs "cairo") "/lib/" all))))))))))
3459
3460 (define-public sbcl-cl-cffi-gtk-pango
3461 (package
3462 (inherit sbcl-cl-cffi-gtk-boot0)
3463 (name "sbcl-cl-cffi-gtk-pango")
3464 (inputs
3465 `(("pango" ,pango)
3466 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3467 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3468 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3469 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3470 (arguments
3471 `(#:asd-file "pango/cl-cffi-gtk-pango.asd"
3472 #:phases
3473 (modify-phases %standard-phases
3474 (add-after 'unpack 'fix-paths
3475 (lambda* (#:key inputs #:allow-other-keys)
3476 (substitute* "pango/pango.init.lisp"
3477 (("libpango" all)
3478 (string-append
3479 (assoc-ref inputs "pango") "/lib/" all))))))))))
3480
3481 (define-public sbcl-cl-cffi-gtk-gdk-pixbuf
3482 (package
3483 (inherit sbcl-cl-cffi-gtk-boot0)
3484 (name "sbcl-cl-cffi-gtk-gdk-pixbuf")
3485 (inputs
3486 `(("gdk-pixbuf" ,gdk-pixbuf)
3487 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3488 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3489 (arguments
3490 `(#:asd-file "gdk-pixbuf/cl-cffi-gtk-gdk-pixbuf.asd"
3491 #:phases
3492 (modify-phases %standard-phases
3493 (add-after 'unpack 'fix-paths
3494 (lambda* (#:key inputs #:allow-other-keys)
3495 (substitute* "gdk-pixbuf/gdk-pixbuf.init.lisp"
3496 (("libgdk_pixbuf" all)
3497 (string-append
3498 (assoc-ref inputs "gdk-pixbuf") "/lib/" all))))))))))
3499
3500 (define-public sbcl-cl-cffi-gtk-gdk
3501 (package
3502 (inherit sbcl-cl-cffi-gtk-boot0)
3503 (name "sbcl-cl-cffi-gtk-gdk")
3504 (inputs
3505 `(("gtk" ,gtk+)
3506 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3507 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3508 ("cl-cffi-gtk-gdk-pixbuf" ,sbcl-cl-cffi-gtk-gdk-pixbuf)
3509 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3510 ("cl-cffi-gtk-pango" ,sbcl-cl-cffi-gtk-pango)
3511 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3512 (arguments
3513 `(#:asd-file "gdk/cl-cffi-gtk-gdk.asd"
3514 #:phases
3515 (modify-phases %standard-phases
3516 (add-after 'unpack 'fix-paths
3517 (lambda* (#:key inputs #:allow-other-keys)
3518 (substitute* "gdk/gdk.init.lisp"
3519 (("libgdk" all)
3520 (string-append
3521 (assoc-ref inputs "gtk") "/lib/" all)))
3522 (substitute* "gdk/gdk.package.lisp"
3523 (("libgtk" all)
3524 (string-append
3525 (assoc-ref inputs "gtk") "/lib/" all))))))))))
3526
3527 (define-public sbcl-cl-cffi-gtk
3528 (package
3529 (inherit sbcl-cl-cffi-gtk-boot0)
3530 (name "sbcl-cl-cffi-gtk")
3531 (inputs
3532 `(("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3533 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3534 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3535 ("cl-cffi-gtk-gdk" ,sbcl-cl-cffi-gtk-gdk)
3536 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3537 (native-inputs
3538 `(("fiveam" ,sbcl-fiveam)))
3539 (arguments
3540 `(#:asd-file "gtk/cl-cffi-gtk.asd"
3541 #:test-asd-file "test/cl-cffi-gtk-test.asd"
3542 ;; TODO: Tests fail with memory fault.
3543 ;; See https://github.com/Ferada/cl-cffi-gtk/issues/24.
3544 #:tests? #f))))
3545
3546 (define-public sbcl-cl-webkit
3547 (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31"))
3548 (package
3549 (name "sbcl-cl-webkit")
3550 (version (git-version "2.4" "1" commit))
3551 (source
3552 (origin
3553 (method git-fetch)
3554 (uri (git-reference
3555 (url "https://github.com/jmercouris/cl-webkit")
3556 (commit commit)))
3557 (file-name (git-file-name "cl-webkit" version))
3558 (sha256
3559 (base32
3560 "0f5lyn9i7xrn3g1bddga377mcbawkbxydijpg389q4n04gqj0vwf"))))
3561 (build-system asdf-build-system/sbcl)
3562 (inputs
3563 `(("cffi" ,sbcl-cffi)
3564 ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
3565 ("webkitgtk" ,webkitgtk)))
3566 (arguments
3567 `(#:asd-file "webkit2/cl-webkit2.asd"
3568 #:asd-system-name "cl-webkit2"
3569 #:phases
3570 (modify-phases %standard-phases
3571 (add-after 'unpack 'fix-paths
3572 (lambda* (#:key inputs #:allow-other-keys)
3573 (substitute* "webkit2/webkit2.init.lisp"
3574 (("libwebkit2gtk" all)
3575 (string-append
3576 (assoc-ref inputs "webkitgtk") "/lib/" all))))))))
3577 (home-page "https://github.com/jmercouris/cl-webkit")
3578 (synopsis "Binding to WebKitGTK+ for Common Lisp")
3579 (description
3580 "@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp,
3581 currently targeting WebKit version 2. The WebKitGTK+ library adds web
3582 browsing capabilities to an application, leveraging the full power of the
3583 WebKit browsing engine.")
3584 (license license:expat))))
3585
3586 (define-public sbcl-lparallel
3587 (package
3588 (name "sbcl-lparallel")
3589 (version "2.8.4")
3590 (source
3591 (origin
3592 (method git-fetch)
3593 (uri (git-reference
3594 (url "https://github.com/lmj/lparallel/")
3595 (commit (string-append "lparallel-" version))))
3596 (file-name (git-file-name "lparallel" version))
3597 (sha256
3598 (base32
3599 "0g0aylrbbrqsz0ahmwhvnk4cmc2931fllbpcfgzsprwnqqd7vwq9"))))
3600 (build-system asdf-build-system/sbcl)
3601 (inputs
3602 `(("alexandria" ,sbcl-alexandria)
3603 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3604 ("trivial-garbage" ,sbcl-trivial-garbage)))
3605 (home-page "https://lparallel.org/")
3606 (synopsis "Parallelism for Common Lisp")
3607 (description
3608 "@command{lparallel} is a library for parallel programming in Common
3609 Lisp, featuring:
3610
3611 @itemize
3612 @item a simple model of task submission with receiving queue,
3613 @item constructs for expressing fine-grained parallelism,
3614 @item asynchronous condition handling across thread boundaries,
3615 @item parallel versions of map, reduce, sort, remove, and many others,
3616 @item promises, futures, and delayed evaluation constructs,
3617 @item computation trees for parallelizing interconnected tasks,
3618 @item bounded and unbounded FIFO queues,
3619 @item high and low priority tasks,
3620 @item task killing by category,
3621 @item integrated timeouts.
3622 @end itemize\n")
3623 (license license:expat)))
3624
3625 (define-public cl-lparallel
3626 (sbcl-package->cl-source-package sbcl-lparallel))
3627
3628 (define-public ecl-lparallel
3629 (sbcl-package->ecl-package sbcl-lparallel))
3630
3631 (define-public sbcl-cl-markup
3632 (let ((commit "e0eb7debf4bdff98d1f49d0f811321a6a637b390"))
3633 (package
3634 (name "sbcl-cl-markup")
3635 (version (git-version "0.1" "1" commit))
3636 (source
3637 (origin
3638 (method git-fetch)
3639 (uri (git-reference
3640 (url "https://github.com/arielnetworks/cl-markup/")
3641 (commit commit)))
3642 (file-name (git-file-name "cl-markup" version))
3643 (sha256
3644 (base32
3645 "10l6k45971dl13fkdmva7zc6i453lmq9j4xax2ci6pjzlc6xjhp7"))))
3646 (build-system asdf-build-system/sbcl)
3647 (home-page "https://github.com/arielnetworks/cl-markup/")
3648 (synopsis "Markup generation library for Common Lisp")
3649 (description
3650 "A modern markup generation library for Common Lisp that features:
3651
3652 @itemize
3653 @item Fast (even faster through compiling the code)
3654 @item Safety
3655 @item Support for multiple document types (markup, xml, html, html5, xhtml)
3656 @item Output with doctype
3657 @item Direct output to stream
3658 @end itemize\n")
3659 (license license:lgpl3+))))
3660
3661 (define-public cl-markup
3662 (sbcl-package->cl-source-package sbcl-cl-markup))
3663
3664 (define-public ecl-cl-markup
3665 (sbcl-package->ecl-package sbcl-cl-markup))
3666
3667 (define-public sbcl-cl-css
3668 (let ((commit "8fe654c8f0cf95b300718101cce4feb517f78e2f"))
3669 (package
3670 (name "sbcl-cl-css")
3671 (version (git-version "0.1" "1" commit))
3672 (source
3673 (origin
3674 (method git-fetch)
3675 (uri (git-reference
3676 (url "https://github.com/inaimathi/cl-css/")
3677 (commit commit)))
3678 (file-name (git-file-name "cl-css" version))
3679 (sha256
3680 (base32
3681 "1lc42zi2sw11fl2589sc19nr5sd2p0wy7wgvgwaggxa5f3ajhsmd"))))
3682 (build-system asdf-build-system/sbcl)
3683 (home-page "https://github.com/inaimathi/cl-css/")
3684 (synopsis "Non-validating, inline CSS generator for Common Lisp")
3685 (description
3686 "This is a dead-simple, non validating, inline CSS generator for Common
3687 Lisp. Its goals are axiomatic syntax, simple implementation to support
3688 portability, and boilerplate reduction in CSS.")
3689 (license license:expat))))
3690
3691 (define-public cl-css
3692 (sbcl-package->cl-source-package sbcl-cl-css))
3693
3694 (define-public ecl-cl-css
3695 (sbcl-package->ecl-package sbcl-cl-css))
3696
3697 (define-public sbcl-portable-threads
3698 (let ((commit "c0e61a1faeb0583c80fd3f20b16cc4c555226920"))
3699 (package
3700 (name "sbcl-portable-threads")
3701 (version (git-version "2.3" "1" commit))
3702 (source
3703 (origin
3704 (method git-fetch)
3705 (uri (git-reference
3706 (url "https://github.com/binghe/portable-threads/")
3707 (commit commit)))
3708 (file-name (git-file-name "portable-threads" version))
3709 (sha256
3710 (base32
3711 "03fmxyarc0xf4kavwkfa0a2spkyfrz6hbgbi9y4q7ny5aykdyfaq"))))
3712 (build-system asdf-build-system/sbcl)
3713 (arguments
3714 `(;; Tests seem broken.
3715 #:tests? #f))
3716 (home-page "https://github.com/binghe/portable-threads")
3717 (synopsis "Portable threads (and scheduled and periodic functions) API for Common Lisp")
3718 (description
3719 "Portable Threads (and Scheduled and Periodic Functions) API for Common
3720 Lisp (from GBBopen project).")
3721 (license license:asl2.0))))
3722
3723 (define-public cl-portable-threads
3724 (sbcl-package->cl-source-package sbcl-portable-threads))
3725
3726 (define-public ecl-portable-threada
3727 (sbcl-package->ecl-package sbcl-portable-threads))
3728
3729 (define-public sbcl-usocket-boot0
3730 ;; usocket's test rely on usocket-server which depends on usocket itself.
3731 ;; We break this cyclic dependency with -boot0 that packages usocket.
3732 (let ((commit "86e7efbfe50101931edf4b67cdcfa7e221ecfde9"))
3733 (package
3734 (name "sbcl-usocket-boot0")
3735 (version (git-version "0.7.1" "1" commit))
3736 (source
3737 (origin
3738 (method git-fetch)
3739 (uri (git-reference
3740 (url "https://github.com/usocket/usocket/")
3741 (commit commit)))
3742 (file-name (git-file-name "usocket" version))
3743 (sha256
3744 (base32
3745 "1lk6ipakrib7kdgzw44hrgmls9akp5pz4h35yynw0k5zwmmq6374"))))
3746 (build-system asdf-build-system/sbcl)
3747 (inputs
3748 `(("split-sequence" ,sbcl-split-sequence)))
3749 (arguments
3750 `(#:tests? #f
3751 #:asd-system-name "usocket"))
3752 (home-page "https://common-lisp.net/project/usocket/")
3753 (synopsis "Universal socket library for Common Lisp (server side)")
3754 (description
3755 "This library strives to provide a portable TCP/IP and UDP/IP socket
3756 interface for as many Common Lisp implementations as possible, while keeping
3757 the abstraction and portability layer as thin as possible.")
3758 (license license:expat))))
3759
3760 (define-public sbcl-usocket-server
3761 (package
3762 (inherit sbcl-usocket-boot0)
3763 (name "sbcl-usocket-server")
3764 (inputs
3765 `(("usocket" ,sbcl-usocket-boot0)
3766 ("portable-threads" ,sbcl-portable-threads)))
3767 (arguments
3768 '(#:asd-system-name "usocket-server"))
3769 (synopsis "Universal socket library for Common Lisp (server side)")))
3770
3771 (define-public cl-usocket-server
3772 (sbcl-package->cl-source-package sbcl-usocket-server))
3773
3774 (define-public ecl-socket-server
3775 (sbcl-package->ecl-package sbcl-usocket-server))
3776
3777 (define-public sbcl-usocket
3778 (package
3779 (inherit sbcl-usocket-boot0)
3780 (name "sbcl-usocket")
3781 (arguments
3782 ;; FIXME: Tests need network access?
3783 `(#:tests? #f))
3784 (native-inputs
3785 ;; Testing only.
3786 `(("usocket-server" ,sbcl-usocket-server)
3787 ("rt" ,sbcl-rt)))))
3788
3789 (define-public cl-usocket
3790 (sbcl-package->cl-source-package sbcl-usocket))
3791
3792 (define-public ecl-socket
3793 (sbcl-package->ecl-package sbcl-usocket))
3794
3795 (define-public sbcl-s-xml
3796 (package
3797 (name "sbcl-s-xml")
3798 (version "3")
3799 (source
3800 (origin
3801 (method url-fetch)
3802 (uri "https://common-lisp.net/project/s-xml/s-xml.tgz")
3803 (sha256
3804 (base32
3805 "061qcr0dzshsa38s5ma4ay924cwak2nq9gy59dw6v9p0qb58nzjf"))))
3806 (build-system asdf-build-system/sbcl)
3807 (home-page "https://common-lisp.net/project/s-xml/")
3808 (synopsis "Simple XML parser implemented in Common Lisp")
3809 (description
3810 "S-XML is a simple XML parser implemented in Common Lisp. This XML
3811 parser implementation has the following features:
3812
3813 @itemize
3814 @item It works (handling many common XML usages).
3815 @item It is very small (the core is about 700 lines of code, including
3816 comments and whitespace).
3817 @item It has a core API that is simple, efficient and pure functional, much
3818 like that from SSAX (see also http://ssax.sourceforge.net).
3819 @item It supports different DOM models: an XSML-based one, an LXML-based one
3820 and a classic xml-element struct based one.
3821 @item It is reasonably time and space efficient (internally avoiding garbage
3822 generatation as much as possible).
3823 @item It does support CDATA.
3824 @item It should support the same character sets as your Common Lisp
3825 implementation.
3826 @item It does support XML name spaces.
3827 @end itemize
3828
3829 This XML parser implementation has the following limitations:
3830
3831 @itemize
3832 @item It does not support any special tags (like processing instructions).
3833 @item It is not validating, even skips DTD's all together.
3834 @end itemize\n")
3835 (license license:lgpl3+)))
3836
3837 (define-public cl-s-xml
3838 (sbcl-package->cl-source-package sbcl-s-xml))
3839
3840 (define-public ecl-s-xml
3841 (sbcl-package->ecl-package sbcl-s-xml))
3842
3843 (define-public sbcl-s-xml-rpc
3844 (package
3845 (name "sbcl-s-xml-rpc")
3846 (version "7")
3847 (source
3848 (origin
3849 (method url-fetch)
3850 (uri "https://common-lisp.net/project/s-xml-rpc/s-xml-rpc.tgz")
3851 (sha256
3852 (base32
3853 "02z7k163d51v0pzk8mn1xb6h5s6x64gjqkslhwm3a5x26k2gfs11"))))
3854 (build-system asdf-build-system/sbcl)
3855 (inputs
3856 `(("s-xml" ,sbcl-s-xml)))
3857 (home-page "https://common-lisp.net/project/s-xml-rpc/")
3858 (synopsis "Implementation of XML-RPC in Common Lisp for both client and server")
3859 (description
3860 "S-XML-RPC is an implementation of XML-RPC in Common Lisp for both
3861 client and server.")
3862 (license license:lgpl3+)))
3863
3864 (define-public cl-s-xml-rpc
3865 (sbcl-package->cl-source-package sbcl-s-xml-rpc))
3866
3867 (define-public ecl-s-xml-rpc
3868 (sbcl-package->ecl-package sbcl-s-xml-rpc))
3869
3870 (define-public sbcl-trivial-clipboard
3871 (let ((commit "5af3415d1484e6d69a1b5c178f24680d9fd01796"))
3872 (package
3873 (name "sbcl-trivial-clipboard")
3874 (version (git-version "0.0.0.0" "2" commit))
3875 (source
3876 (origin
3877 (method git-fetch)
3878 (uri (git-reference
3879 (url "https://github.com/snmsts/trivial-clipboard")
3880 (commit commit)))
3881 (file-name (git-file-name "trivial-clipboard" version))
3882 (sha256
3883 (base32
3884 "1gb515z5yq6h5548pb1fwhmb0hhq1ssyb78pvxh4alq799xipxs9"))))
3885 (build-system asdf-build-system/sbcl)
3886 (inputs
3887 `(("xclip" ,xclip)))
3888 (native-inputs
3889 `(("fiveam" ,sbcl-fiveam)))
3890 (arguments
3891 `(#:phases
3892 (modify-phases %standard-phases
3893 (add-after 'unpack 'fix-paths
3894 (lambda* (#:key inputs #:allow-other-keys)
3895 (substitute* "src/text.lisp"
3896 (("\\(executable-find \"xclip\"\\)")
3897 (string-append "(executable-find \""
3898 (assoc-ref inputs "xclip")
3899 "/bin/xclip\")"))))))))
3900 (home-page "https://github.com/snmsts/trivial-clipboard")
3901 (synopsis "Access system clipboard in Common Lisp")
3902 (description
3903 "@command{trivial-clipboard} gives access to the system clipboard.")
3904 (license license:expat))))
3905
3906 (define-public cl-trivial-clipboard
3907 (sbcl-package->cl-source-package sbcl-trivial-clipboard))
3908
3909 (define-public ecl-trivial-clipboard
3910 (sbcl-package->ecl-package sbcl-trivial-clipboard))
3911
3912 (define-public sbcl-trivial-backtrace
3913 (let ((commit "ca81c011b86424a381a7563cea3b924f24e6fbeb")
3914 (revision "1"))
3915 (package
3916 (name "sbcl-trivial-backtrace")
3917 (version (git-version "0.0.0" revision commit))
3918 (source
3919 (origin
3920 (method git-fetch)
3921 (uri (git-reference
3922 (url "https://github.com/gwkkwg/trivial-backtrace.git")
3923 (commit commit)))
3924 (file-name (git-file-name "trivial-backtrace" version))
3925 (sha256
3926 (base32 "10p41p43skj6cimdg8skjy7372s8v2xpkg8djjy0l8rm45i654k1"))))
3927 (build-system asdf-build-system/sbcl)
3928 (inputs
3929 `(("sbcl-lift" ,sbcl-lift)))
3930 (home-page "https://common-lisp.net/project/trivial-backtrace/")
3931 (synopsis "Portable simple API to work with backtraces in Common Lisp")
3932 (description
3933 "On of the many things that didn't quite get into the Common Lisp
3934 standard was how to get a Lisp to output its call stack when something has
3935 gone wrong. As such, each Lisp has developed its own notion of what to
3936 display, how to display it, and what sort of arguments can be used to
3937 customize it. @code{trivial-backtrace} is a simple solution to generating a
3938 backtrace portably.")
3939 (license license:expat))))
3940
3941 (define-public cl-trivial-backtrace
3942 (sbcl-package->cl-source-package sbcl-trivial-backtrace))
3943
3944 (define-public sbcl-rfc2388
3945 (let ((commit "591bcf7e77f2c222c43953a80f8c297751dc0c4e")
3946 (revision "1"))
3947 (package
3948 (name "sbcl-rfc2388")
3949 (version (git-version "0.0.0" revision commit))
3950 (source
3951 (origin
3952 (method git-fetch)
3953 (uri (git-reference
3954 (url "https://github.com/jdz/rfc2388.git")
3955 (commit commit)))
3956 (file-name (git-file-name "rfc2388" version))
3957 (sha256
3958 (base32 "0phh5n3clhl9ji8jaxrajidn22d3f0aq87mlbfkkxlnx2pnw694k"))))
3959 (build-system asdf-build-system/sbcl)
3960 (home-page "https://github.com/jdz/rfc2388/")
3961 (synopsis "An implementation of RFC 2388 in Common Lisp")
3962 (description
3963 "This package contains an implementation of RFC 2388, which is used to
3964 process form data posted with HTTP POST method using enctype
3965 \"multipart/form-data\".")
3966 (license license:bsd-2))))
3967
3968 (define-public cl-rfc2388
3969 (sbcl-package->cl-source-package sbcl-rfc2388))
3970
3971 (define-public sbcl-md5
3972 (package
3973 (name "sbcl-md5")
3974 (version "2.0.4")
3975 (source
3976 (origin
3977 (method url-fetch)
3978 (uri (string-append
3979 "https://github.com/pmai/md5/archive/release-" version ".tar.gz"))
3980 (sha256
3981 (base32 "19yl9n0pjdz5gw4qi711lka97xcd9f81ylg434hk7jwn9f2s6w11"))))
3982 (build-system asdf-build-system/sbcl)
3983 (home-page "https://github.com/pmai/md5")
3984 (synopsis
3985 "Common Lisp implementation of the MD5 Message-Digest Algorithm (RFC 1321)")
3986 (description
3987 "This package implements The MD5 Message-Digest Algorithm, as defined in
3988 RFC 1321 by R. Rivest, published April 1992.")
3989 (license license:public-domain)))
3990
3991 (define-public cl-md5
3992 (sbcl-package->cl-source-package sbcl-md5))
3993
3994 (define-public sbcl-cl+ssl
3995 (let ((commit "b81c1135cf5700e870ce2573d5035d249e491788")
3996 (revision "1"))
3997 (package
3998 (name "sbcl-cl+ssl")
3999 (version (git-version "0.0.0" revision commit))
4000 (source
4001 (origin
4002 (method git-fetch)
4003 (uri (git-reference
4004 (url "https://github.com/cl-plus-ssl/cl-plus-ssl.git")
4005 (commit commit)))
4006 (file-name (git-file-name "cl+ssl" version))
4007 (sha256
4008 (base32 "1845i1pafmqb6cdlr53yaqy67kjrhkvbx6c37ca15cw70vhdr3z9"))))
4009 (build-system asdf-build-system/sbcl)
4010 (arguments
4011 '(#:phases
4012 (modify-phases %standard-phases
4013 (add-after 'unpack 'fix-paths
4014 (lambda* (#:key inputs #:allow-other-keys)
4015 (substitute* "src/reload.lisp"
4016 (("libssl.so" all)
4017 (string-append
4018 (assoc-ref inputs "openssl") "/lib/" all))))))))
4019 (inputs
4020 `(("openssl" ,openssl)
4021 ("sbcl-cffi" ,sbcl-cffi)
4022 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
4023 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
4024 ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)
4025 ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
4026 (home-page "http://common-lisp.net/project/cl-plus-ssl/")
4027 (synopsis "Common Lisp bindings to OpenSSL")
4028 (description
4029 "This library is a fork of SSL-CMUCL. The original SSL-CMUCL source
4030 code was written by Eric Marsden and includes contributions by Jochen Schmidt.
4031 Development into CL+SSL was done by David Lichteblau.")
4032 (license license:expat))))
4033
4034 (define-public cl-cl+ssl
4035 (sbcl-package->cl-source-package sbcl-cl+ssl))
4036
4037 (define-public sbcl-kmrcl
4038 (let ((version "1.109.0")
4039 (commit "5260068b2eb735af6796740c2db4955afac21636")
4040 (revision "1"))
4041 (package
4042 (name "sbcl-kmrcl")
4043 (version (git-version version revision commit))
4044 (source
4045 (origin
4046 (method git-fetch)
4047 (uri (git-reference
4048 (url "http://git.kpe.io/kmrcl.git/")
4049 (commit commit)))
4050 (file-name (git-file-name name version))
4051 (sha256
4052 (base32 "1va7xjgzfv674bpsli674i7zj3f7wg5kxic41kz18r6hh4n52dfv"))))
4053 (build-system asdf-build-system/sbcl)
4054 (arguments
4055 ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed in a
4056 ;; nested call to ASDF/OPERATE:OPERATE unless identically to toplevel
4057 '(#:tests? #f))
4058 (inputs
4059 `(("sbcl-rt" ,sbcl-rt)))
4060 (home-page "http://files.kpe.io/kmrcl/")
4061 (synopsis "General utilities for Common Lisp programs")
4062 (description
4063 "KMRCL is a collection of utilities used by a number of Kevin
4064 Rosenberg's CL packages.")
4065 (license license:llgpl))))
4066
4067 (define-public cl-kmrcl
4068 (sbcl-package->cl-source-package sbcl-kmrcl))
4069
4070 (define-public sbcl-cl-base64
4071 (let ((version "3.3.3"))
4072 (package
4073 (name "sbcl-cl-base64")
4074 (version version)
4075 (source
4076 (origin
4077 (method git-fetch)
4078 (uri (git-reference
4079 (url "http://git.kpe.io/cl-base64.git")
4080 (commit (string-append "v" version))))
4081 (file-name (git-file-name "cl-base64" version))
4082 (sha256
4083 (base32 "1dw6j7n6gsd2qa0p0rbsjxj00acxx3i9ca1qkgl0liy8lpnwkypl"))))
4084 (build-system asdf-build-system/sbcl)
4085 (arguments
4086 ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed
4087 ;; in a nested call to ASDF/OPERATE:OPERATE unless identically
4088 ;; to toplevel
4089 '(#:tests? #f))
4090 (inputs
4091 `(("sbcl-ptester" ,sbcl-ptester)
4092 ("sbcl-kmrcl" ,sbcl-kmrcl)))
4093 (home-page "http://files.kpe.io/cl-base64/")
4094 (synopsis
4095 "Common Lisp package to encode and decode base64 with URI support")
4096 (description
4097 "This package provides highly optimized base64 encoding and decoding.
4098 Besides conversion to and from strings, integer conversions are supported.
4099 Encoding with Uniform Resource Identifiers is supported by using a modified
4100 encoding table that uses only URI-compatible characters.")
4101 (license license:bsd-3))))
4102
4103 (define-public cl-base64
4104 (sbcl-package->cl-source-package sbcl-cl-base64))
4105
4106 (define-public sbcl-chunga
4107 (package
4108 (name "sbcl-chunga")
4109 (version "1.1.7")
4110 (source
4111 (origin
4112 (method url-fetch)
4113 (uri (string-append
4114 "https://github.com/edicl/chunga/archive/v" version ".tar.gz"))
4115 (sha256
4116 (base32 "0ra17kyc9l7qbaw003ly111r1cbn4zixbfq1ydr9cxw10v30q1n7"))))
4117 (build-system asdf-build-system/sbcl)
4118 (inputs
4119 `(("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
4120 (home-page "https://edicl.github.io/chunga/")
4121 (synopsis "Portable chunked streams for Common Lisp")
4122 (description
4123 "Chunga implements streams capable of chunked encoding on demand as
4124 defined in RFC 2616.")
4125 (license license:bsd-2)))
4126
4127 (define-public cl-chunga
4128 (sbcl-package->cl-source-package sbcl-chunga))
4129
4130 (define-public sbcl-cl-who
4131 (let ((version "1.1.4")
4132 (commit "2c08caa4bafba720409af9171feeba3f32e86d32")
4133 (revision "1"))
4134 (package
4135 (name "sbcl-cl-who")
4136 (version (git-version version revision commit))
4137 (source
4138 (origin
4139 (method git-fetch)
4140 (uri (git-reference
4141 (url "https://github.com/edicl/cl-who.git")
4142 (commit commit)))
4143 (file-name (git-file-name name version))
4144 (sha256
4145 (base32
4146 "0yjb6sr3yazm288m318kqvj9xk8rm9n1lpimgf65ymqv0i5agxsb"))))
4147 (build-system asdf-build-system/sbcl)
4148 (native-inputs
4149 `(("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4150 (home-page "https://edicl.github.io/cl-who/")
4151 (synopsis "Yet another Lisp markup language")
4152 (description
4153 "There are plenty of Lisp Markup Languages out there - every Lisp
4154 programmer seems to write at least one during his career - and CL-WHO (where
4155 WHO means \"with-html-output\" for want of a better acronym) is probably just
4156 as good or bad as the next one.")
4157 (license license:bsd-2))))
4158
4159 (define-public cl-cl-who
4160 (sbcl-package->cl-source-package sbcl-cl-who))
4161
4162 (define-public sbcl-chipz
4163 (let ((version "0.8")
4164 (commit "75dfbc660a5a28161c57f115adf74c8a926bfc4d")
4165 (revision "1"))
4166 (package
4167 (name "sbcl-chipz")
4168 (version (git-version version revision commit))
4169 (source
4170 (origin
4171 (method git-fetch)
4172 (uri (git-reference
4173 (url "https://github.com/froydnj/chipz.git")
4174 (commit commit)))
4175 (file-name (git-file-name name version))
4176 (sha256
4177 (base32
4178 "0plx4rs39zbs4gjk77h4a2q11zpy75fh9v8hnxrvsf8fnakajhwg"))))
4179 (build-system asdf-build-system/sbcl)
4180 (native-inputs
4181 `(("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4182 (home-page "http://method-combination.net/lisp/chipz/")
4183 (synopsis
4184 "Common Lisp library for decompressing deflate, zlib, gzip, and bzip2
4185 data")
4186 (description
4187 "DEFLATE data, defined in RFC1951, forms the core of popular
4188 compression formats such as zlib (RFC 1950) and gzip (RFC 1952). As such,
4189 Chipz also provides for decompressing data in those formats as well. BZIP2 is
4190 the format used by the popular compression tool bzip2.")
4191 ;; The author describes it as "MIT-like"
4192 (license license:expat))))
4193
4194 (define-public cl-chipz
4195 (sbcl-package->cl-source-package sbcl-chipz))
4196
4197 (define-public sbcl-drakma
4198 (let ((version "2.0.4")
4199 (commit "7647c0ae842ff2058624e53979c7f297760c97a7")
4200 (revision "1"))
4201 (package
4202 (name "sbcl-drakma")
4203 (version (git-version version revision commit))
4204 (source
4205 (origin
4206 (method git-fetch)
4207 (uri (git-reference
4208 (url "https://github.com/edicl/drakma.git")
4209 (commit commit)))
4210 (file-name (git-file-name name version))
4211 (sha256
4212 (base32
4213 "1c4i9wakhj5pxfyyykxshdmv3180sbkrx6fcyynikmc0jd0rh84r"))))
4214 (build-system asdf-build-system/sbcl)
4215 (inputs
4216 `(("sbcl-puri" ,sbcl-puri)
4217 ("sbcl-cl-base64" ,sbcl-cl-base64)
4218 ("sbcl-chunga" ,sbcl-chunga)
4219 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
4220 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4221 ("sbcl-chipz" ,sbcl-chipz)
4222 ("sbcl-usocket" ,sbcl-usocket)
4223 ("sbcl-cl+ssl" ,sbcl-cl+ssl)))
4224 (native-inputs
4225 `(("sbcl-fiveam" ,sbcl-fiveam)))
4226 (home-page "https://edicl.github.io/drakma/")
4227 (synopsis "HTTP client written in Common Lisp")
4228 (description
4229 "Drakma is a full-featured HTTP client implemented in Common Lisp. It
4230 knows how to handle HTTP/1.1 chunking, persistent connections, re-usable
4231 sockets, SSL, continuable uploads, file uploads, cookies, and more.")
4232 (license license:bsd-2))))
4233
4234 (define-public cl-drakma
4235 (sbcl-package->cl-source-package sbcl-drakma))
4236
4237 (define-public sbcl-hunchentoot
4238 (package
4239 (name "sbcl-hunchentoot")
4240 (version "1.2.38")
4241 (source
4242 (origin
4243 (method git-fetch)
4244 (uri (git-reference
4245 (url "https://github.com/edicl/hunchentoot.git")
4246 (commit (string-append "v" version))))
4247 (file-name (git-file-name "hunchentoot" version))
4248 (sha256
4249 (base32 "1anpcad7w045m4rsjs1f3xdhjwx5cppq1h0vlb3q7dz81fi3i6yq"))))
4250 (build-system asdf-build-system/sbcl)
4251 (native-inputs
4252 `(("sbcl-cl-who" ,sbcl-cl-who)
4253 ("sbcl-drakma" ,sbcl-drakma)))
4254 (inputs
4255 `(("sbcl-chunga" ,sbcl-chunga)
4256 ("sbcl-cl-base64" ,sbcl-cl-base64)
4257 ("sbcl-cl-fad" ,sbcl-cl-fad)
4258 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4259 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
4260 ("sbcl-cl+ssl" ,sbcl-cl+ssl)
4261 ("sbcl-md5" ,sbcl-md5)
4262 ("sbcl-rfc2388" ,sbcl-rfc2388)
4263 ("sbcl-trivial-backtrace" ,sbcl-trivial-backtrace)
4264 ("sbcl-usocket" ,sbcl-usocket)))
4265 (home-page "https://edicl.github.io/hunchentoot/")
4266 (synopsis "Web server written in Common Lisp")
4267 (description
4268 "Hunchentoot is a web server written in Common Lisp and at the same
4269 time a toolkit for building dynamic websites. As a stand-alone web server,
4270 Hunchentoot is capable of HTTP/1.1 chunking (both directions), persistent
4271 connections (keep-alive), and SSL.")
4272 (license license:bsd-2)))
4273
4274 (define-public cl-hunchentoot
4275 (sbcl-package->cl-source-package sbcl-hunchentoot))
4276
4277 (define-public sbcl-trivial-types
4278 (package
4279 (name "sbcl-trivial-types")
4280 (version "0.0.1")
4281 (source
4282 (origin
4283 (method git-fetch)
4284 (uri (git-reference
4285 (url "https://github.com/m2ym/trivial-types.git")
4286 (commit "ee869f2b7504d8aa9a74403641a5b42b16f47d88")))
4287 (file-name (git-file-name name version))
4288 (sha256
4289 (base32 "1s4cp9bdlbn8447q7w7f1wkgwrbvfzp20mgs307l5pxvdslin341"))))
4290 (build-system asdf-build-system/sbcl)
4291 (home-page "https://github.com/m2ym/trivial-types")
4292 (synopsis "Trivial type definitions for Common Lisp")
4293 (description
4294 "TRIVIAL-TYPES provides missing but important type definitions such as
4295 PROPER-LIST, ASSOCIATION-LIST, PROPERTY-LIST and TUPLE.")
4296 (license license:llgpl)))
4297
4298 (define-public cl-trivial-types
4299 (sbcl-package->cl-source-package sbcl-trivial-types))
4300
4301 (define-public sbcl-cl-syntax
4302 (package
4303 (name "sbcl-cl-syntax")
4304 (version "0.0.3")
4305 (source
4306 (origin
4307 (method git-fetch)
4308 (uri (git-reference
4309 (url "https://github.com/m2ym/cl-syntax.git")
4310 (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
4311 (file-name (git-file-name "cl-syntax" version))
4312 (sha256
4313 (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y"))))
4314 (build-system asdf-build-system/sbcl)
4315 (arguments
4316 '(#:asd-file "cl-syntax.asd"
4317 #:asd-system-name "cl-syntax"))
4318 (inputs `(("sbcl-trivial-types" ,sbcl-trivial-types)
4319 ("sbcl-named-readtables" ,sbcl-named-readtables)))
4320 (home-page "https://github.com/m2ym/cl-syntax")
4321 (synopsis "Reader Syntax Coventions for Common Lisp and SLIME")
4322 (description
4323 "CL-SYNTAX provides Reader Syntax Coventions for Common Lisp and SLIME.")
4324 (license license:llgpl)))
4325
4326 (define-public cl-syntax
4327 (sbcl-package->cl-source-package sbcl-cl-syntax))
4328
4329 (define-public sbcl-cl-annot
4330 (let ((commit "c99e69c15d935eabc671b483349a406e0da9518d")
4331 (revision "1"))
4332 (package
4333 (name "sbcl-cl-annot")
4334 (version (git-version "0.0.0" revision commit))
4335 (source
4336 (origin
4337 (method git-fetch)
4338 (uri (git-reference
4339 (url "https://github.com/m2ym/cl-annot.git")
4340 (commit commit)))
4341 (file-name (git-file-name name version))
4342 (sha256
4343 (base32 "1wq1gs9jjd5m6iwrv06c2d7i5dvqsfjcljgbspfbc93cg5xahk4n"))))
4344 (build-system asdf-build-system/sbcl)
4345 (arguments
4346 '(#:asd-file "cl-annot.asd"
4347 #:asd-system-name "cl-annot"))
4348 (inputs
4349 `(("sbcl-alexandria" ,sbcl-alexandria)))
4350 (home-page "https://github.com/m2ym/cl-annot")
4351 (synopsis "Python-like Annotation Syntax for Common Lisp.")
4352 (description
4353 "@code{cl-annot} is an general annotation library for Common Lisp.")
4354 (license license:llgpl))))
4355
4356 (define-public cl-annot
4357 (sbcl-package->cl-source-package sbcl-cl-annot))
4358
4359 (define-public sbcl-cl-syntax-annot
4360 (package
4361 (name "sbcl-cl-syntax-annot")
4362 (version "0.0.3")
4363 (source
4364 (origin
4365 (method git-fetch)
4366 (uri (git-reference
4367 (url "https://github.com/m2ym/cl-syntax.git")
4368 (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
4369 (file-name (git-file-name name version))
4370 (sha256
4371 (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y"))))
4372 (build-system asdf-build-system/sbcl)
4373 (arguments
4374 '(#:asd-file "cl-syntax-annot.asd"
4375 #:asd-system-name "cl-syntax-annot"))
4376 (inputs
4377 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
4378 ("sbcl-cl-annot" ,sbcl-cl-annot)))
4379 (home-page "https://github.com/m2ym/cl-syntax")
4380 (synopsis "Reader Syntax Coventions for Common Lisp and SLIME")
4381 (description
4382 "CL-SYNTAX provides Reader Syntax Coventions for Common Lisp and
4383 SLIME.")
4384 (license license:llgpl)))
4385
4386 (define-public cl-syntax-annot
4387 (sbcl-package->cl-source-package sbcl-cl-syntax-annot))
4388
4389 (define-public sbcl-cl-utilities
4390 (let ((commit "dce2d2f6387091ea90357a130fa6d13a6776884b")
4391 (revision "1"))
4392 (package
4393 (name "sbcl-cl-utilities")
4394 (version (git-version "0.0.0" revision commit))
4395 (source
4396 (origin
4397 (method url-fetch)
4398 (uri
4399 (string-append
4400 "https://gitlab.common-lisp.net/cl-utilities/cl-utilities/-/"
4401 "archive/" commit "/cl-utilities-" commit ".tar.gz"))
4402 (sha256
4403 (base32 "1r46v730yf96nk2vb24qmagv9x96xvd08abqwhf02ghgydv1a7z2"))))
4404 (build-system asdf-build-system/sbcl)
4405 (arguments
4406 '(#:asd-file "cl-utilities.asd"
4407 #:asd-system-name "cl-utilities"
4408 #:phases
4409 (modify-phases %standard-phases
4410 (add-after 'unpack 'fix-paths
4411 (lambda* (#:key inputs #:allow-other-keys)
4412 (substitute* "rotate-byte.lisp"
4413 (("in-package :cl-utilities)" all)
4414 "in-package :cl-utilities)\n\n#+sbcl\n(require :sb-rotate-byte)")))))))
4415 (home-page "http://common-lisp.net/project/cl-utilities")
4416 (synopsis "A collection of semi-standard utilities")
4417 (description
4418 "On Cliki.net <http://www.cliki.net/Common%20Lisp%20Utilities>, there
4419 is a collection of Common Lisp Utilities, things that everybody writes since
4420 they're not part of the official standard. There are some very useful things
4421 there; the only problems are that they aren't implemented as well as you'd
4422 like (some aren't implemented at all) and they aren't conveniently packaged
4423 and maintained. It takes quite a bit of work to carefully implement utilities
4424 for common use, commented and documented, with error checking placed
4425 everywhere some dumb user might make a mistake.")
4426 (license license:public-domain))))
4427
4428 (define-public cl-utilities
4429 (sbcl-package->cl-source-package sbcl-cl-utilities))
4430
4431 (define-public sbcl-map-set
4432 (let ((commit "7b4b545b68b8")
4433 (revision "1"))
4434 (package
4435 (name "sbcl-map-set")
4436 (version (git-version "0.0.0" revision commit))
4437 (source
4438 (origin
4439 (method url-fetch)
4440 (uri (string-append
4441 "https://bitbucket.org/tarballs_are_good/map-set/get/"
4442 commit ".tar.gz"))
4443 (sha256
4444 (base32 "1sx5j5qdsy5fklspfammwb16kjrhkggdavm922a9q86jm5l0b239"))))
4445 (build-system asdf-build-system/sbcl)
4446 (home-page "https://bitbucket.org/tarballs_are_good/map-set")
4447 (synopsis "Set-like data structure")
4448 (description
4449 "Implementation of a set-like data structure with constant time
4450 addition, removal, and random selection.")
4451 (license license:bsd-3))))
4452
4453 (define-public cl-map-set
4454 (sbcl-package->cl-source-package sbcl-map-set))
4455
4456 (define-public sbcl-quri
4457 (let ((commit "76b75103f21ead092c9f715512fa82441ef61185")
4458 (revision "1"))
4459 (package
4460 (name "sbcl-quri")
4461 (version (git-version "0.1.0" revision commit))
4462 (source
4463 (origin
4464 (method git-fetch)
4465 (uri (git-reference
4466 (url "https://github.com/fukamachi/quri.git")
4467 (commit commit)))
4468 (file-name (git-file-name name version))
4469 (sha256
4470 (base32 "1ccbxsgzdibmzq33mmbmmz9vwl6l03xh6nbpsh1hkdvdcl7q0a60"))))
4471 (build-system asdf-build-system/sbcl)
4472 (arguments
4473 ;; Tests fail with: Component QURI-ASD::QURI-TEST not found,
4474 ;; required by #<SYSTEM "quri">. Why?
4475 '(#:tests? #f))
4476 (native-inputs `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4477 ("sbcl-prove" ,sbcl-prove)))
4478 (inputs `(("sbcl-babel" ,sbcl-babel)
4479 ("sbcl-split-sequence" ,sbcl-split-sequence)
4480 ("sbcl-cl-utilities" ,sbcl-cl-utilities)
4481 ("sbcl-alexandria" ,sbcl-alexandria)))
4482 (home-page "https://github.com/fukamachi/quri")
4483 (synopsis "Yet another URI library for Common Lisp")
4484 (description
4485 "QURI (pronounced \"Q-ree\") is yet another URI library for Common
4486 Lisp. It is intended to be a replacement of PURI.")
4487 (license license:bsd-3))))
4488
4489 (define-public cl-quri
4490 (sbcl-package->cl-source-package sbcl-quri))
4491
4492 (define-public sbcl-myway
4493 (let ((commit "286230082a11f879c18b93f17ca571c5f676bfb7")
4494 (revision "1"))
4495 (package
4496 (name "sbcl-myway")
4497 (version (git-version "0.1.0" revision commit))
4498 (source
4499 (origin
4500 (method git-fetch)
4501 (uri (git-reference
4502 (url "https://github.com/fukamachi/myway.git")
4503 (commit commit)))
4504 (file-name (git-file-name "myway" version))
4505 (sha256
4506 (base32 "0briia9bk3lbr0frnx39d1qg6i38dm4j6z9w3yga3d40k6df4a90"))))
4507 (build-system asdf-build-system/sbcl)
4508 (arguments
4509 ;; Tests fail with: Component MYWAY-ASD::MYWAY-TEST not found, required
4510 ;; by #<SYSTEM "myway">. Why?
4511 '(#:tests? #f))
4512 (native-inputs
4513 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4514 ("sbcl-prove" ,sbcl-prove)))
4515 (inputs
4516 `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4517 ("sbcl-quri" ,sbcl-quri)
4518 ("sbcl-map-set" ,sbcl-map-set)))
4519 (home-page "https://github.com/fukamachi/myway")
4520 (synopsis "Sinatra-compatible URL routing library for Common Lisp")
4521 (description "My Way is a Sinatra-compatible URL routing library.")
4522 (license license:llgpl))))
4523
4524 (define-public cl-myway
4525 (sbcl-package->cl-source-package sbcl-myway))
4526
4527 (define-public sbcl-xsubseq
4528 (let ((commit "5ce430b3da5cda3a73b9cf5cee4df2843034422b")
4529 (revision "1"))
4530 (package
4531 (name "sbcl-xsubseq")
4532 (version (git-version "0.0.1" revision commit))
4533 (source
4534 (origin
4535 (method git-fetch)
4536 (uri (git-reference
4537 (url "https://github.com/fukamachi/xsubseq")
4538 (commit commit)))
4539 (file-name (git-file-name name version))
4540 (sha256
4541 (base32 "1xz79q0p2mclf3sqjiwf6izdpb6xrsr350bv4mlmdlm6rg5r99px"))))
4542 (build-system asdf-build-system/sbcl)
4543 (arguments
4544 ;; Tests fail with: Component XSUBSEQ-ASD::XSUBSEQ-TEST not found,
4545 ;; required by #<SYSTEM "xsubseq">. Why?
4546 '(#:tests? #f))
4547 (native-inputs
4548 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4549 ("sbcl-prove" ,sbcl-prove)))
4550 (home-page "https://github.com/fukamachi/xsubseq")
4551 (synopsis "Efficient way to use \"subseq\"s in Common Lisp")
4552 (description
4553 "XSubseq provides functions to be able to handle \"subseq\"s more
4554 effieiently.")
4555 (license license:bsd-2))))
4556
4557 (define-public cl-xsubseq
4558 (sbcl-package->cl-source-package sbcl-xsubseq))
4559
4560 (define-public sbcl-smart-buffer
4561 (let ((commit "09b9a9a0b3abaa37abe9a730f5aac2643dca4e62")
4562 (revision "1"))
4563 (package
4564 (name "sbcl-smart-buffer")
4565 (version (git-version "0.0.1" revision commit))
4566 (source
4567 (origin
4568 (method git-fetch)
4569 (uri (git-reference
4570 (url "https://github.com/fukamachi/smart-buffer")
4571 (commit commit)))
4572 (file-name (git-file-name name version))
4573 (sha256
4574 (base32 "0qz1zzxx0wm5ff7gpgsq550a59p0qj594zfmm2rglj97dahj54l7"))))
4575 (build-system asdf-build-system/sbcl)
4576 (arguments
4577 ;; Tests fail with: Component SMART-BUFFER-ASD::SMART-BUFFER-TEST not
4578 ;; found, required by #<SYSTEM "smart-buffer">. Why?
4579 `(#:tests? #f))
4580 (native-inputs
4581 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4582 ("sbcl-prove" ,sbcl-prove)))
4583 (inputs
4584 `(("sbcl-xsubseq" ,sbcl-xsubseq)
4585 ("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4586 (home-page "https://github.com/fukamachi/smart-buffer")
4587 (synopsis "Smart octets buffer")
4588 (description
4589 "Smart-buffer provides an output buffer which changes the destination
4590 depending on content size.")
4591 (license license:bsd-3))))
4592
4593 (define-public cl-smart-buffer
4594 (sbcl-package->cl-source-package sbcl-smart-buffer))
4595
4596 (define-public sbcl-fast-http
4597 (let ((commit "f9e7597191bae380503e20724fd493a24d024935")
4598 (revision "1"))
4599 (package
4600 (name "sbcl-fast-http")
4601 (version (git-version "0.2.0" revision commit))
4602 (source
4603 (origin
4604 (method git-fetch)
4605 (uri (git-reference
4606 (url "https://github.com/fukamachi/fast-http")
4607 (commit commit)))
4608 (file-name (git-file-name name version))
4609 (sha256
4610 (base32 "0qdmwv2zm0sizxdb8nnclgwl0nfjcbjaimbakavikijw7lr9b4jp"))))
4611 (build-system asdf-build-system/sbcl)
4612 (arguments
4613 ;; Tests fail with: Component FAST-HTTP-ASD::FAST-HTTP-TEST not found,
4614 ;; required by #<SYSTEM "fast-http">. Why?
4615 `(#:tests? #f))
4616 (native-inputs
4617 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4618 ("sbcl-prove" ,sbcl-prove)))
4619 (inputs
4620 `(("sbcl-alexandria" ,sbcl-alexandria)
4621 ("sbcl-proc-parse" ,sbcl-proc-parse)
4622 ("sbcl-xsubseq" ,sbcl-xsubseq)
4623 ("sbcl-smart-buffer" ,sbcl-smart-buffer)
4624 ("sbcl-cl-utilities" ,sbcl-cl-utilities)))
4625 (home-page "https://github.com/fukamachi/fast-http")
4626 (synopsis "HTTP request/response parser for Common Lisp")
4627 (description
4628 "@code{fast-http} is a HTTP request/response protocol parser for Common
4629 Lisp.")
4630 ;; Author specified the MIT license
4631 (license license:expat))))
4632
4633 (define-public cl-fast-http
4634 (sbcl-package->cl-source-package sbcl-fast-http))
4635
4636 (define-public sbcl-static-vectors
4637 (let ((commit "0681eac1f49370cde03e64b077251e8abf47d702")
4638 (revision "1"))
4639 (package
4640 (name "sbcl-static-vectors")
4641 (version (git-version "1.8.3" revision commit))
4642 (source
4643 (origin
4644 (method git-fetch)
4645 (uri (git-reference
4646 (url "https://github.com/sionescu/static-vectors.git")
4647 (commit commit)))
4648 (file-name (git-file-name name version))
4649 (sha256
4650 (base32 "138nlsq14hv8785ycjm6jw3i6ablhq8vcwys7q09y80arcgrg6r3"))))
4651 (native-inputs
4652 `(("sbcl-fiveam" ,sbcl-fiveam)))
4653 (inputs
4654 `(("sbcl-cffi-grovel" ,sbcl-cffi-grovel)
4655 ("sbcl-cffi" ,sbcl-cffi)))
4656 (build-system asdf-build-system/sbcl)
4657 (home-page "http://common-lisp.net/projects/iolib/")
4658 (synopsis "Allocate SIMPLE-ARRAYs in static memory")
4659 (description
4660 "With @code{static-vectors}, you can create vectors allocated in static
4661 memory.")
4662 (license license:expat))))
4663
4664 (define-public cl-static-vectors
4665 (sbcl-package->cl-source-package sbcl-static-vectors))
4666
4667 (define-public sbcl-marshal
4668 (let ((commit "eff1b15f2b0af2f26f71ad6a4dd5c4beab9299ec")
4669 (revision "1"))
4670 (package
4671 (name "sbcl-marshal")
4672 (version (git-version "1.3.0" revision commit))
4673 (source
4674 (origin
4675 (method git-fetch)
4676 (uri (git-reference
4677 (url "https://github.com/wlbr/cl-marshal.git")
4678 (commit commit)))
4679 (file-name (git-file-name name version))
4680 (sha256
4681 (base32 "08qs6fhk38xpkkjkpcj92mxx0lgy4ygrbbzrmnivdx281syr0gwh"))))
4682 (build-system asdf-build-system/sbcl)
4683 (home-page "https://github.com/wlbr/cl-marshal")
4684 (synopsis "Simple (de)serialization of Lisp datastructures")
4685 (description
4686 "Simple and fast marshalling of Lisp datastructures. Convert any object
4687 into a string representation, put it on a stream an revive it from there.
4688 Only minimal changes required to make your CLOS objects serializable.")
4689 (license license:expat))))
4690
4691 (define-public cl-marshal
4692 (sbcl-package->cl-source-package sbcl-marshal))
4693
4694 (define-public sbcl-checkl
4695 (let ((commit "80328800d047fef9b6e32dfe6bdc98396aee3cc9")
4696 (revision "1"))
4697 (package
4698 (name "sbcl-checkl")
4699 (version (git-version "0.0.0" revision commit))
4700 (source
4701 (origin
4702 (method git-fetch)
4703 (uri (git-reference
4704 (url "https://github.com/rpav/CheckL.git")
4705 (commit commit)))
4706 (file-name (git-file-name name version))
4707 (sha256
4708 (base32 "0bpisihx1gay44xmyr1dmhlwh00j0zzi04rp9fy35i95l2r4xdlx"))))
4709 (build-system asdf-build-system/sbcl)
4710 (arguments
4711 ;; Error while trying to load definition for system checkl-test from
4712 ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
4713 ;; is undefined.
4714 '(#:tests? #f))
4715 (native-inputs
4716 `(("sbcl-fiveam" ,sbcl-fiveam)))
4717 (inputs
4718 `(("sbcl-marshal" ,sbcl-marshal)))
4719 (home-page "https://github.com/rpav/CheckL/")
4720 (synopsis "Dynamic testing for Common Lisp")
4721 (description
4722 "CheckL lets you write tests dynamically, it checks resulting values
4723 against the last run.")
4724 ;; The author specifies both LLGPL and "BSD", but the "BSD" license
4725 ;; isn't specified anywhere, so I don't know which kind. LLGPL is the
4726 ;; stronger of the two and so I think only listing this should suffice.
4727 (license license:llgpl))))
4728
4729 (define-public cl-checkl
4730 (sbcl-package->cl-source-package sbcl-checkl))
4731
4732 (define-public sbcl-fast-io
4733 (let ((commit "dc3a71db7e9b756a88781ae9c342fe9d4bbab51c")
4734 (revision "1"))
4735 (package
4736 (name "sbcl-fast-io")
4737 (version (git-version "1.0.0" revision commit))
4738 (source
4739 (origin
4740 (method git-fetch)
4741 (uri (git-reference
4742 (url "https://github.com/rpav/fast-io.git")
4743 (commit commit)))
4744 (file-name (git-file-name name version))
4745 (sha256
4746 (base32 "1jsp6xvi26ln6fdy5j5zi05xvan8jsqdhisv552dy6xg6ws8i1yq"))))
4747 (build-system asdf-build-system/sbcl)
4748 (arguments
4749 ;; Error while trying to load definition for system fast-io-test from
4750 ;; pathname [...]/fast-io-test.asd: The function CHECKL:DEFINE-TEST-OP
4751 ;; is undefined.
4752 '(#:tests? #f))
4753 (native-inputs
4754 `(("sbcl-fiveam" ,sbcl-fiveam)
4755 ("sbcl-checkl" ,sbcl-checkl)))
4756 (inputs
4757 `(("sbcl-alexandria" ,sbcl-alexandria)
4758 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
4759 ("sbcl-static-vectors" ,sbcl-static-vectors)))
4760 (home-page "https://github.com/rpav/fast-io")
4761 (synopsis "Fast octet-vector/stream I/O for Common Lisp")
4762 (description
4763 "Fast-io is about improving performance to octet-vectors and octet
4764 streams (though primarily the former, while wrapping the latter).")
4765 ;; Author specifies this as NewBSD which is an alias
4766 (license license:bsd-3))))
4767
4768 (define-public cl-fast-io
4769 (sbcl-package->cl-source-package sbcl-fast-io))
4770
4771 (define-public sbcl-jonathan
4772 (let ((commit "1f448b4f7ac8265e56e1c02b32ce383e65316300")
4773 (revision "1"))
4774 (package
4775 (name "sbcl-jonathan")
4776 (version (git-version "0.1.0" revision commit))
4777 (source
4778 (origin
4779 (method git-fetch)
4780 (uri (git-reference
4781 (url "https://github.com/Rudolph-Miller/jonathan.git")
4782 (commit commit)))
4783 (file-name (git-file-name name version))
4784 (sha256
4785 (base32 "14x4iwz3mbag5jzzzr4sb6ai0m9r4q4kyypbq32jmsk2dx1hi807"))))
4786 (build-system asdf-build-system/sbcl)
4787 (arguments
4788 ;; Tests fail with: Component JONATHAN-ASD::JONATHAN-TEST not found,
4789 ;; required by #<SYSTEM "jonathan">. Why?
4790 `(#:tests? #f))
4791 (native-inputs
4792 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4793 ("sbcl-prove" ,sbcl-prove)))
4794 (inputs
4795 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
4796 ("sbcl-cl-syntax-annot" ,sbcl-cl-syntax-annot)
4797 ("sbcl-fast-io" ,sbcl-fast-io)
4798 ("sbcl-proc-parse" ,sbcl-proc-parse)
4799 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)))
4800 (home-page "http://rudolph-miller.github.io/jonathan/overview.html")
4801 (synopsis "JSON encoder and decoder")
4802 (description
4803 "High performance JSON encoder and decoder. Currently support: SBCL,
4804 CCL.")
4805 ;; Author specifies the MIT license
4806 (license license:expat))))
4807
4808 (define-public cl-jonathan
4809 (sbcl-package->cl-source-package sbcl-jonathan))
4810
4811 (define-public sbcl-http-body
4812 (let ((commit "dd01dc4f5842e3d29728552e5163acce8386eb73")
4813 (revision "1"))
4814 (package
4815 (name "sbcl-http-body")
4816 (version (git-version "0.1.0" revision commit))
4817 (source
4818 (origin
4819 (method git-fetch)
4820 (uri (git-reference
4821 (url "https://github.com/fukamachi/http-body")
4822 (commit commit)))
4823 (file-name (git-file-name name version))
4824 (sha256
4825 (base32 "1jd06snjvxcprhapgfq8sx0y5lrldkvhf206ix6d5a23dd6zcmr0"))))
4826 (build-system asdf-build-system/sbcl)
4827 (arguments
4828 ;; Tests fail with: Component HTTP-BODY-ASD::HTTP-BODY-TEST not
4829 ;; found, required by #<SYSTEM "http-body">. Why?
4830 `(#:tests? #f))
4831 (native-inputs
4832 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4833 ("sbcl-prove" ,sbcl-prove)))
4834 (inputs
4835 `(("sbcl-fast-http" ,sbcl-fast-http)
4836 ("sbcl-jonathan" ,sbcl-jonathan)
4837 ("sbcl-quri" ,sbcl-quri)))
4838 (home-page "https://github.com/fukamachi/http-body")
4839 (synopsis "HTTP POST data parser")
4840 (description
4841 "HTTP-Body parses HTTP POST data and returns POST parameters. It
4842 supports application/x-www-form-urlencoded, application/json, and
4843 multipart/form-data.")
4844 (license license:bsd-2))))
4845
4846 (define-public cl-http-body
4847 (sbcl-package->cl-source-package sbcl-http-body))
4848
4849 (define-public sbcl-circular-streams
4850 (let ((commit "e770bade1919c5e8533dd2078c93c3d3bbeb38df")
4851 (revision "1"))
4852 (package
4853 (name "sbcl-circular-streams")
4854 (version (git-version "0.1.0" revision commit))
4855 (source
4856 (origin
4857 (method git-fetch)
4858 (uri (git-reference
4859 (url "https://github.com/fukamachi/circular-streams")
4860 (commit commit)))
4861 (file-name (git-file-name name version))
4862 (sha256
4863 (base32 "1wpw6d5cciyqcf92f7mvihak52pd5s47kk4qq6f0r2z2as68p5rs"))))
4864 (build-system asdf-build-system/sbcl)
4865 (arguments
4866 ;; The tests depend on cl-test-more which is now prove. Prove
4867 ;; tests aren't working for some reason.
4868 `(#:tests? #f))
4869 (inputs
4870 `(("sbcl-fast-io" ,sbcl-fast-io)
4871 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
4872 (home-page "https://github.com/fukamachi/circular-streams")
4873 (synopsis "Circularly readable streams for Common Lisp")
4874 (description
4875 "Circular-Streams allows you to read streams circularly by wrapping real
4876 streams. Once you reach end-of-file of a stream, it's file position will be
4877 reset to 0 and you're able to read it again.")
4878 (license license:llgpl))))
4879
4880 (define-public cl-circular-streams
4881 (sbcl-package->cl-source-package sbcl-circular-streams))
4882
4883 (define-public sbcl-lack-request
4884 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4885 (revision "1"))
4886 (package
4887 (name "sbcl-lack-request")
4888 (version (git-version "0.1.0" revision commit))
4889 (source
4890 (origin
4891 (method git-fetch)
4892 (uri (git-reference
4893 (url "https://github.com/fukamachi/lack.git")
4894 (commit commit)))
4895 (sha256
4896 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4897 (build-system asdf-build-system/sbcl)
4898 (arguments
4899 '(#:asd-file "lack-request.asd"
4900 #:asd-system-name "lack-request"
4901 #:test-asd-file "t-lack-request.asd"
4902 ;; XXX: Component :CLACK-TEST not found
4903 #:tests? #f))
4904 (native-inputs
4905 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4906 ("sbcl-prove" ,sbcl-prove)))
4907 (inputs
4908 `(("sbcl-quri" ,sbcl-quri)
4909 ("sbcl-http-body" ,sbcl-http-body)
4910 ("sbcl-circular-streams" ,sbcl-circular-streams)))
4911 (home-page "https://github.com/fukamachi/lack")
4912 (synopsis "Lack, the core of Clack")
4913 (description
4914 "Lack is a Common Lisp library which allows web applications to be
4915 constructed of modular components. It was originally a part of Clack, however
4916 it's going to be rewritten as an individual project since Clack v2 with
4917 performance and simplicity in mind.")
4918 (license license:llgpl))))
4919
4920 (define-public cl-lack-request
4921 (sbcl-package->cl-source-package sbcl-lack-request))
4922
4923 (define-public sbcl-local-time
4924 (let ((commit "beac054eef428552b63d4ae7820c32ffef9a3015")
4925 (revision "1"))
4926 (package
4927 (name "sbcl-local-time")
4928 (version (git-version "1.0.6" revision commit))
4929 (source
4930 (origin
4931 (method git-fetch)
4932 (uri (git-reference
4933 (url "https://github.com/dlowe-net/local-time.git")
4934 (commit commit)))
4935 (file-name (git-file-name name version))
4936 (sha256
4937 (base32 "0xhkmgxh41dg2wwlsp0h2l41jp144xn4gpxhh0lna6kh0560w2cc"))))
4938 (build-system asdf-build-system/sbcl)
4939 (arguments
4940 ;; TODO: Component :STEFIL not found, required by #<SYSTEM
4941 ;; "local-time/test">
4942 '(#:tests? #f))
4943 (native-inputs
4944 `(("stefil" ,sbcl-hu.dwim.stefil)))
4945 (inputs
4946 `(("sbcl-cl-fad" ,sbcl-cl-fad)))
4947 (home-page "https://common-lisp.net/project/local-time/")
4948 (synopsis "Time manipulation library for Common Lisp")
4949 (description
4950 "The LOCAL-TIME library is a Common Lisp library for the manipulation of
4951 dates and times. It is based almost entirely upon Erik Naggum's paper \"The
4952 Long Painful History of Time\".")
4953 (license license:expat))))
4954
4955 (define-public cl-local-time
4956 (sbcl-package->cl-source-package sbcl-local-time))
4957
4958 (define-public sbcl-lack-response
4959 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4960 (revision "1"))
4961 (package
4962 (name "sbcl-lack-response")
4963 (version (git-version "0.1.0" revision commit))
4964 (source
4965 (origin
4966 (method git-fetch)
4967 (uri (git-reference
4968 (url "https://github.com/fukamachi/lack.git")
4969 (commit commit)))
4970 (file-name (git-file-name name version))
4971 (sha256
4972 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4973 (build-system asdf-build-system/sbcl)
4974 (arguments
4975 '(#:asd-file "lack-response.asd"
4976 #:asd-system-name "lack-response"
4977 ;; XXX: no tests for lack-response.
4978 #:tests? #f))
4979 (native-inputs
4980 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4981 ("sbcl-prove" ,sbcl-prove)))
4982 (inputs
4983 `(("sbcl-quri" ,sbcl-quri)
4984 ("sbcl-http-body" ,sbcl-http-body)
4985 ("sbcl-circular-streams" ,sbcl-circular-streams)
4986 ("sbcl-local-time" ,sbcl-local-time)))
4987 (home-page "https://github.com/fukamachi/lack")
4988 (synopsis "Lack, the core of Clack")
4989 (description
4990 "Lack is a Common Lisp library which allows web applications to be
4991 constructed of modular components. It was originally a part of Clack, however
4992 it's going to be rewritten as an individual project since Clack v2 with
4993 performance and simplicity in mind.")
4994 (license license:llgpl))))
4995
4996 (define-public cl-lack-response
4997 (sbcl-package->cl-source-package sbcl-lack-response))
4998
4999 (define-public sbcl-lack-component
5000 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5001 (revision "1"))
5002 (package
5003 (name "sbcl-lack-component")
5004 (version (git-version "0.0.0" revision commit))
5005 (source
5006 (origin
5007 (method git-fetch)
5008 (uri (git-reference
5009 (url "https://github.com/fukamachi/lack.git")
5010 (commit commit)))
5011 (sha256
5012 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5013 (build-system asdf-build-system/sbcl)
5014 (arguments
5015 '(#:asd-file "lack-component.asd"
5016 #:asd-system-name "lack-component"
5017 #:test-asd-file "t-lack-component.asd"
5018 ;; XXX: Component :LACK-TEST not found
5019 #:tests? #f))
5020 (native-inputs
5021 `(("prove-asdf" ,sbcl-prove-asdf)))
5022 (home-page "https://github.com/fukamachi/lack")
5023 (synopsis "Lack, the core of Clack")
5024 (description
5025 "Lack is a Common Lisp library which allows web applications to be
5026 constructed of modular components. It was originally a part of Clack, however
5027 it's going to be rewritten as an individual project since Clack v2 with
5028 performance and simplicity in mind.")
5029 (license license:llgpl))))
5030
5031 (define-public cl-lack-component
5032 (sbcl-package->cl-source-package sbcl-lack-component))
5033
5034 (define-public sbcl-lack-util
5035 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5036 (revision "1"))
5037 (package
5038 (name "sbcl-lack-util")
5039 (version (git-version "0.1.0" revision commit))
5040 (source
5041 (origin
5042 (method git-fetch)
5043 (uri (git-reference
5044 (url "https://github.com/fukamachi/lack.git")
5045 (commit commit)))
5046 (sha256
5047 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5048 (build-system asdf-build-system/sbcl)
5049 (arguments
5050 '(#:asd-file "lack-util.asd"
5051 #:asd-system-name "lack-util"
5052 #:test-asd-file "t-lack-util.asd"
5053 ;; XXX: Component :LACK-TEST not found
5054 #:tests? #f))
5055 (native-inputs
5056 `(("prove-asdf" ,sbcl-prove-asdf)))
5057 (inputs
5058 `(("sbcl-ironclad" ,sbcl-ironclad)))
5059 (home-page "https://github.com/fukamachi/lack")
5060 (synopsis "Lack, the core of Clack")
5061 (description
5062 "Lack is a Common Lisp library which allows web applications to be
5063 constructed of modular components. It was originally a part of Clack, however
5064 it's going to be rewritten as an individual project since Clack v2 with
5065 performance and simplicity in mind.")
5066 (license license:llgpl))))
5067
5068 (define-public cl-lack-util
5069 (sbcl-package->cl-source-package sbcl-lack-util))
5070
5071 (define-public sbcl-lack-middleware-backtrace
5072 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5073 (revision "1"))
5074 (package
5075 (name "sbcl-lack-middleware-backtrace")
5076 (version (git-version "0.1.0" revision commit))
5077 (source
5078 (origin
5079 (method git-fetch)
5080 (uri (git-reference
5081 (url "https://github.com/fukamachi/lack.git")
5082 (commit commit)))
5083 (sha256
5084 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5085 (build-system asdf-build-system/sbcl)
5086 (arguments
5087 '(#:asd-file "lack-middleware-backtrace.asd"
5088 #:asd-system-name "lack-middleware-backtrace"
5089 #:test-asd-file "t-lack-middleware-backtrace.asd"
5090 ;; XXX: Component :LACK not found
5091 #:tests? #f))
5092 (native-inputs
5093 `(("prove-asdf" ,sbcl-prove-asdf)))
5094 (home-page "https://github.com/fukamachi/lack")
5095 (synopsis "Lack, the core of Clack")
5096 (description
5097 "Lack is a Common Lisp library which allows web applications to be
5098 constructed of modular components. It was originally a part of Clack, however
5099 it's going to be rewritten as an individual project since Clack v2 with
5100 performance and simplicity in mind.")
5101 (license license:llgpl))))
5102
5103 (define-public cl-lack-middleware-backtrace
5104 (sbcl-package->cl-source-package sbcl-lack-middleware-backtrace))
5105
5106 (define-public sbcl-trivial-mimes
5107 (let ((commit "303f8ac0aa6ca0bc139aa3c34822e623c3723fab")
5108 (revision "1"))
5109 (package
5110 (name "sbcl-trivial-mimes")
5111 (version (git-version "1.1.0" revision commit))
5112 (source
5113 (origin
5114 (method git-fetch)
5115 (uri (git-reference
5116 (url "https://github.com/Shinmera/trivial-mimes.git")
5117 (commit commit)))
5118 (file-name (git-file-name name version))
5119 (sha256
5120 (base32 "17jxgl47r695bvsb7wi3n2ws5rp1zzgvw0zii8cy5ggw4b4ayv6m"))))
5121 (build-system asdf-build-system/sbcl)
5122 (arguments
5123 '(#:phases
5124 (modify-phases %standard-phases
5125 (add-after
5126 'unpack 'fix-paths
5127 (lambda* (#:key inputs #:allow-other-keys)
5128 (let ((anchor "#p\"/etc/mime.types\""))
5129 (substitute* "mime-types.lisp"
5130 ((anchor all)
5131 (string-append
5132 anchor "\n"
5133 "(asdf:system-relative-pathname :trivial-mimes \"../../share/common-lisp/sbcl-source/trivial-mimes/mime.types\")")))))))))
5134 (native-inputs
5135 `(("stefil" ,sbcl-hu.dwim.stefil)))
5136 (inputs
5137 `(("sbcl-cl-fad" ,sbcl-cl-fad)))
5138 (home-page "http://shinmera.github.io/trivial-mimes/")
5139 (synopsis "Tiny Common Lisp library to detect mime types in files")
5140 (description
5141 "This is a teensy library that provides some functions to determine the
5142 mime-type of a file.")
5143 (license license:artistic2.0))))
5144
5145 (define-public cl-trivial-mimes
5146 (sbcl-package->cl-source-package sbcl-trivial-mimes))
5147
5148 (define-public sbcl-lack-middleware-static
5149 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5150 (revision "1"))
5151 (package
5152 (name "sbcl-lack-middleware-static")
5153 (version (git-version "0.1.0" revision commit))
5154 (source
5155 (origin
5156 (method git-fetch)
5157 (uri (git-reference
5158 (url "https://github.com/fukamachi/lack.git")
5159 (commit commit)))
5160 (sha256
5161 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5162 (build-system asdf-build-system/sbcl)
5163 (arguments
5164 '(#:asd-file "lack-middleware-static.asd"
5165 #:asd-system-name "lack-middleware-static"
5166 #:test-asd-file "t-lack-middleware-static.asd"
5167 ;; XXX: Component :LACK not found
5168 #:tests? #f))
5169 (native-inputs
5170 `(("prove-asdf" ,sbcl-prove-asdf)))
5171 (inputs
5172 `(("sbcl-ironclad" ,sbcl-ironclad)
5173 ("sbcl-trivial-mimes" ,sbcl-trivial-mimes)
5174 ("sbcl-local-time" ,sbcl-local-time)))
5175 (home-page "https://github.com/fukamachi/lack")
5176 (synopsis "Lack, the core of Clack")
5177 (description
5178 "Lack is a Common Lisp library which allows web applications to be
5179 constructed of modular components. It was originally a part of Clack, however
5180 it's going to be rewritten as an individual project since Clack v2 with
5181 performance and simplicity in mind.")
5182 (license license:llgpl))))
5183
5184 (define-public cl-lack-middleware-static
5185 (sbcl-package->cl-source-package sbcl-lack-middleware-static))
5186
5187 (define-public sbcl-lack
5188 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5189 (revision "1"))
5190 (package
5191 (name "sbcl-lack")
5192 (version (git-version "0.1.0" revision commit))
5193 (source
5194 (origin
5195 (method git-fetch)
5196 (uri (git-reference
5197 (url "https://github.com/fukamachi/lack.git")
5198 (commit commit)))
5199 (sha256
5200 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5201 (build-system asdf-build-system/sbcl)
5202 (arguments
5203 '(#:test-asd-file "t-lack.asd"
5204 ;; XXX: Component :CLACK not found
5205 #:tests? #f))
5206 (native-inputs
5207 `(("prove-asdf" ,sbcl-prove-asdf)))
5208 (inputs
5209 `(("sbcl-lack-component" ,sbcl-lack-component)
5210 ("sbcl-lack-util" ,sbcl-lack-util)))
5211 (home-page "https://github.com/fukamachi/lack")
5212 (synopsis "Lack, the core of Clack")
5213 (description
5214 "Lack is a Common Lisp library which allows web applications to be
5215 constructed of modular components. It was originally a part of Clack, however
5216 it's going to be rewritten as an individual project since Clack v2 with
5217 performance and simplicity in mind.")
5218 (license license:llgpl))))
5219
5220 (define-public cl-lack
5221 (sbcl-package->cl-source-package sbcl-lack))
5222
5223 (define-public sbcl-ningle
5224 (let ((commit "50bd4f09b5a03a7249bd4d78265d6451563b25ad")
5225 (revision "1"))
5226 (package
5227 (name "sbcl-ningle")
5228 (version (git-version "0.3.0" revision commit))
5229 (source
5230 (origin
5231 (method git-fetch)
5232 (uri (git-reference
5233 (url "https://github.com/fukamachi/ningle.git")
5234 (commit commit)))
5235 (file-name (git-file-name name version))
5236 (sha256
5237 (base32 "1bsl8cnxhacb8p92z9n89vhk1ikmij5zavk0m2zvmj7iqm79jzgw"))))
5238 (build-system asdf-build-system/sbcl)
5239 (arguments
5240 ;; TODO: pull in clack-test
5241 '(#:tests? #f
5242 #:phases
5243 (modify-phases %standard-phases
5244 (delete 'cleanup-files)
5245 (delete 'cleanup)
5246 (add-before 'cleanup 'combine-fasls
5247 (lambda* (#:key outputs #:allow-other-keys)
5248 (let* ((out (assoc-ref outputs "out"))
5249 (lib (string-append out "/lib/sbcl"))
5250 (ningle-path (string-append lib "/ningle"))
5251 (fasl-files (find-files out "\\.fasl$")))
5252 (mkdir-p ningle-path)
5253 (let ((fasl-path (lambda (name)
5254 (string-append ningle-path
5255 "/"
5256 (basename name)
5257 "--system.fasl"))))
5258 (for-each (lambda (file)
5259 (rename-file file
5260 (fasl-path
5261 (basename file ".fasl"))))
5262 fasl-files))
5263 fasl-files)
5264 #t)))))
5265 (native-inputs
5266 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
5267 ("sbcl-prove" ,sbcl-prove)))
5268 (inputs
5269 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
5270 ("sbcl-cl-syntax-annot" ,sbcl-cl-syntax-annot)
5271 ("sbcl-myway" ,sbcl-myway)
5272 ("sbcl-lack-request" ,sbcl-lack-request)
5273 ("sbcl-lack-response" ,sbcl-lack-response)
5274 ("sbcl-lack-component" ,sbcl-lack-component)
5275 ("sbcl-alexandria" ,sbcl-alexandria)
5276 ("sbcl-babel" ,sbcl-babel)))
5277 (home-page "http://8arrow.org/ningle/")
5278 (synopsis "Super micro framework for Common Lisp")
5279 (description
5280 "Ningle is a lightweight web application framework for Common Lisp.")
5281 (license license:llgpl))))
5282
5283 (define-public cl-ningle
5284 (sbcl-package->cl-source-package sbcl-ningle))
5285
5286 (define-public sbcl-clack
5287 (let ((commit "e3e032843bb1220ab96263c411aa7f2feb4746e0")
5288 (revision "1"))
5289 (package
5290 (name "sbcl-clack")
5291 (version (git-version "2.0.0" revision commit))
5292 (source
5293 (origin
5294 (method git-fetch)
5295 (uri (git-reference
5296 (url "https://github.com/fukamachi/clack.git")
5297 (commit commit)))
5298 (file-name (git-file-name name version))
5299 (sha256
5300 (base32 "1ymzs6qyrwhlj6cgqsnpyn6g5cbp7a3s1vgxwna20y2q7y4iacy0"))))
5301 (build-system asdf-build-system/sbcl)
5302 (inputs
5303 `(("sbcl-lack" ,sbcl-lack)
5304 ("sbcl-lack-middleware-backtrace" ,sbcl-lack-middleware-backtrace)
5305 ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)))
5306 (home-page "https://github.com/fukamachi/clack")
5307 (synopsis "Web Application Environment for Common Lisp")
5308 (description
5309 "Clack is a web application environment for Common Lisp inspired by
5310 Python's WSGI and Ruby's Rack.")
5311 (license license:llgpl))))
5312
5313 (define-public cl-clack
5314 (sbcl-package->cl-source-package sbcl-clack))
5315
5316 (define-public sbcl-log4cl
5317 (let ((commit "611e094458504b938d49de904eab141285328c7c")
5318 (revision "1"))
5319 (package
5320 (name "sbcl-log4cl")
5321 (build-system asdf-build-system/sbcl)
5322 (version "1.1.2")
5323 (source
5324 (origin
5325 (method git-fetch)
5326 (uri (git-reference
5327 (url "https://github.com/sharplispers/log4cl")
5328 (commit commit)))
5329 (file-name (git-file-name name version))
5330 (sha256
5331 (base32
5332 "08jly0s0g26b56hhpfizxsb4j0yvbh946sd205gr42dkzv8l7dsc"))))
5333 ;; FIXME: tests require stefil, sbcl-hu.dwim.stefil wont work
5334 (arguments
5335 `(#:tests? #f))
5336 (inputs `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
5337 (synopsis "Common Lisp logging framework, modeled after Log4J")
5338 (home-page "https://github.com/7max/log4cl")
5339 (description "This is a Common Lisp logging framework that can log at
5340 various levels and mix text with expressions.")
5341 (license license:asl2.0))))
5342
5343 (define-public cl-log4cl
5344 (sbcl-package->cl-source-package sbcl-log4cl))
5345
5346 (define-public ecl-log4cl
5347 (sbcl-package->ecl-package sbcl-log4cl))
5348
5349 (define-public sbcl-find-port
5350 (let ((commit "00c96a25af93a0f8681d34ec548861f2d7485478")
5351 (revision "1"))
5352 (package
5353 (name "sbcl-find-port")
5354 (build-system asdf-build-system/sbcl)
5355 (version "0.1")
5356 (home-page "https://github.com/eudoxia0/find-port")
5357 (source
5358 (origin
5359 (method git-fetch)
5360 (uri (git-reference
5361 (url home-page)
5362 (commit commit)))
5363 (file-name (git-file-name name version))
5364 (sha256
5365 (base32
5366 "0d6dzbb45jh0rx90wgs6v020k2xa87mvzas3mvfzvivjvqqlpryq"))))
5367 (native-inputs
5368 `(("fiveam" ,sbcl-fiveam)))
5369 (inputs
5370 `(("sbcl-usocket" ,sbcl-usocket)))
5371 (synopsis "Find open ports programmatically in Common Lisp")
5372 (description "This is a small Common Lisp library that finds an open
5373 port within a range.")
5374 (license license:expat))))
5375
5376 (define-public cl-find-port
5377 (sbcl-package->cl-source-package sbcl-find-port))
5378
5379 (define-public ecl-find-port
5380 (sbcl-package->ecl-package sbcl-find-port))
5381
5382 (define-public txr
5383 (package
5384 (name "txr")
5385 (version "224")
5386 (source
5387 (origin
5388 (method git-fetch)
5389 (uri (git-reference
5390 (url "http://www.kylheku.com/git/txr/")
5391 (commit (string-append "txr-" version))))
5392 (file-name (git-file-name name version))
5393 (patches (search-patches "txr-shell.patch"))
5394 (sha256
5395 (base32
5396 "1036k71f6mffy9rjwzmhr5nnp1n0wzb0rqvilpzvb8jc5yxv0810"))))
5397 (build-system gnu-build-system)
5398 (arguments
5399 '(#:configure-flags '("cc=gcc")
5400 #:phases (modify-phases %standard-phases
5401 (add-after 'configure 'fix-tests
5402 (lambda _
5403 (substitute* "tests/017/realpath.tl"
5404 (("/usr/bin") "/"))
5405 (substitute* "tests/017/realpath.expected"
5406 (("/usr/bin") "/"))
5407 #t))
5408 (replace 'check
5409 (lambda _
5410 (invoke "make" "tests"))))))
5411 (native-inputs
5412 `(("bison" ,bison)
5413 ("flex" ,flex)))
5414 (inputs
5415 `(("libffi" ,libffi)))
5416 (synopsis "General-purpose, multi-paradigm programming language")
5417 (description
5418 "TXR is a general-purpose, multi-paradigm programming language. It
5419 comprises two languages integrated into a single tool: a text scanning and
5420 extraction language referred to as the TXR Pattern Language (sometimes just
5421 \"TXR\"), and a general-purpose dialect of Lisp called TXR Lisp. TXR can be
5422 used for everything from \"one liner\" data transformation tasks at the
5423 command line, to data scanning and extracting scripts, to full application
5424 development in a wide-range of areas.")
5425 (home-page "https://nongnu.org/txr/")
5426 (license license:bsd-2)))
5427
5428 (define-public sbcl-clunit
5429 (let ((commit "6f6d72873f0e1207f037470105969384f8380628")
5430 (revision "1"))
5431 (package
5432 (name "sbcl-clunit")
5433 (version (git-version "0.2.3" revision commit))
5434 (source
5435 (origin
5436 (method git-fetch)
5437 (uri (git-reference
5438 (url "https://github.com/tgutu/clunit.git")
5439 (commit commit)))
5440 (file-name (git-file-name name version))
5441 (sha256
5442 (base32
5443 "1idf2xnqzlhi8rbrqmzpmb3i1l6pbdzhhajkmhwbp6qjkmxa4h85"))))
5444 (build-system asdf-build-system/sbcl)
5445 (synopsis "CLUnit is a Common Lisp unit testing framework")
5446 (description
5447 "CLUnit is a Common Lisp unit testing framework. It is designed
5448 to be easy to use so that you can quickly start testing. CLUnit
5449 provides a rich set of features aimed at improving your unit testing
5450 experience.")
5451 (home-page "http://tgutu.github.io/clunit/")
5452 ;; MIT License
5453 (license license:expat))))
5454
5455 (define-public cl-clunit
5456 (sbcl-package->cl-source-package sbcl-clunit))
5457
5458 (define-public ecl-clunit
5459 (sbcl-package->ecl-package sbcl-clunit))
5460
5461 (define-public sbcl-py4cl
5462 (let ((commit "4c8a2b0814fd311f978964f825ce012290f60136")
5463 (revision "1"))
5464 (package
5465 (name "sbcl-py4cl")
5466 (version (git-version "0.0.0" revision commit))
5467 (source
5468 (origin
5469 (method git-fetch)
5470 (uri (git-reference
5471 (url "https://github.com/bendudson/py4cl.git")
5472 (commit commit)))
5473 (file-name (git-file-name name version))
5474 (sha256
5475 (base32
5476 "15mk7qdqjkj56gdnbyrdyz6r7m1h26ldvn6ch96pmvg5vmr1m45r"))
5477 (modules '((guix build utils)))))
5478 (build-system asdf-build-system/sbcl)
5479 (native-inputs
5480 `(("sbcl-clunit" ,sbcl-clunit)))
5481 (inputs
5482 `(("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
5483 (propagated-inputs
5484 ;; This package doesn't do anything without python available
5485 `(("python" ,python)
5486 ;; For multi-dimensional array support
5487 ("python-numpy" ,python-numpy)))
5488 (arguments
5489 '(#:phases
5490 (modify-phases %standard-phases
5491 (add-after 'unpack 'replace-*base-directory*-var
5492 (lambda* (#:key outputs #:allow-other-keys)
5493 ;; In the ASD, the author makes an attempt to
5494 ;; programatically determine the location of the
5495 ;; source-code so lisp can call into "py4cl.py". We can
5496 ;; hard-code this since we know where this file will
5497 ;; reside.
5498 (substitute* "src/callpython.lisp"
5499 (("py4cl/config:\\*base-directory\\*")
5500 (string-append
5501 "\""
5502 (assoc-ref outputs "out")
5503 "/share/common-lisp/sbcl-source/py4cl/"
5504 "\""))))))))
5505 (synopsis "Call python from Common Lisp")
5506 (description
5507 "Py4CL is a bridge between Common Lisp and Python, which enables Common
5508 Lisp to interact with Python code. It uses streams to communicate with a
5509 separate python process, the approach taken by cl4py. This is different to
5510 the CFFI approach used by burgled-batteries, but has the same goal.")
5511 (home-page "https://github.com/bendudson/py4cl")
5512 ;; MIT License
5513 (license license:expat))))
5514
5515 (define-public cl-py4cl
5516 (sbcl-package->cl-source-package sbcl-py4cl))
5517
5518 (define-public ecl-py4cl
5519 (sbcl-package->ecl-package sbcl-py4cl))
5520
5521 (define-public sbcl-parse-declarations
5522 (package
5523 (name "sbcl-parse-declarations")
5524 (version "1.0.0")
5525 (source
5526 (origin
5527 (method url-fetch)
5528 (uri (string-append
5529 "http://beta.quicklisp.org/archive/parse-declarations/"
5530 "2010-10-06/parse-declarations-20101006-darcs.tgz"))
5531 (sha256
5532 (base32
5533 "0r85b0jfacd28kr65kw9c13dx4i6id1dpmby68zjy63mqbnyawrd"))))
5534 (build-system asdf-build-system/sbcl)
5535 (arguments
5536 `(#:asd-file "parse-declarations-1.0.asd"
5537 #:asd-system-name "parse-declarations-1.0"))
5538 (home-page "https://common-lisp.net/project/parse-declarations/")
5539 (synopsis "Parse, filter, and build declarations")
5540 (description
5541 "Parse-Declarations is a Common Lisp library to help writing
5542 macros which establish bindings. To be semantically correct, such
5543 macros must take user declarations into account, as these may affect
5544 the bindings they establish. Yet the ANSI standard of Common Lisp does
5545 not provide any operators to work with declarations in a convenient,
5546 high-level way. This library provides such operators.")
5547 ;; MIT License
5548 (license license:expat)))
5549
5550 (define-public cl-parse-declarations
5551 (sbcl-package->cl-source-package sbcl-parse-declarations))
5552
5553 (define-public ecl-parse-declarations
5554 (sbcl-package->ecl-package sbcl-parse-declarations))
5555
5556 (define-public sbcl-cl-quickcheck
5557 (let ((commit "807b2792a30c883a2fbecea8e7db355b50ba662f")
5558 (revision "1"))
5559 (package
5560 (name "sbcl-cl-quickcheck")
5561 (version (git-version "0.0.4" revision commit))
5562 (source
5563 (origin
5564 (method git-fetch)
5565 (uri (git-reference
5566 (url "https://github.com/mcandre/cl-quickcheck.git")
5567 (commit commit)))
5568 (file-name (git-file-name name version))
5569 (sha256
5570 (base32
5571 "165lhypq5xkcys6hvzb3jq7ywnmqvzaflda29qk2cbs3ggas4767"))))
5572 (build-system asdf-build-system/sbcl)
5573 (synopsis
5574 "Common Lisp port of the QuickCheck unit test framework")
5575 (description
5576 "Common Lisp port of the QuickCheck unit test framework")
5577 (home-page "https://github.com/mcandre/cl-quickcheck")
5578 ;; MIT
5579 (license license:expat))))
5580
5581 (define-public cl-cl-quickcheck
5582 (sbcl-package->cl-source-package sbcl-cl-quickcheck))
5583
5584 (define-public ecl-cl-quickcheck
5585 (sbcl-package->ecl-package sbcl-cl-quickcheck))
5586
5587 (define-public sbcl-burgled-batteries3
5588 (let ((commit "9c0f6667e1a71ddf77e21793a0bea524710fef6e")
5589 (revision "1"))
5590 (package
5591 (name "sbcl-burgled-batteries3")
5592 (version (git-version "0.0.0" revision commit))
5593 (source
5594 (origin
5595 (method git-fetch)
5596 (uri (git-reference
5597 (url "https://github.com/snmsts/burgled-batteries3.git")
5598 (commit commit)))
5599 (file-name (git-file-name name version))
5600 (sha256
5601 (base32
5602 "0b726kz2xxcg5l930gz035rsdvhxrzmp05iwfwympnb4z4ammicb"))))
5603 (build-system asdf-build-system/sbcl)
5604 (arguments
5605 '(#:tests? #f
5606 #:phases
5607 (modify-phases %standard-phases
5608 (add-after 'unpack 'set-*cpython-include-dir*-var
5609 (lambda* (#:key inputs #:allow-other-keys)
5610 (substitute* "grovel-include-dir.lisp"
5611 (("\\(defparameter \\*cpython-include-dir\\* \\(detect-python\\)\\)")
5612 (string-append
5613 "(defparameter *cpython-include-dir* \""
5614 (assoc-ref inputs "python")
5615 "/include/python3.7m"
5616 "\")")))
5617 (substitute* "ffi-interface.lisp"
5618 (("\\*cpython-lib\\*")
5619 (format #f "'(\"~a/lib/libpython3.so\")"
5620 (assoc-ref inputs "python"))))
5621 #t)))))
5622 (native-inputs
5623 `(("python" ,python)
5624 ("sbcl-cl-fad" ,sbcl-cl-fad)
5625 ("sbcl-lift" ,sbcl-lift)
5626 ("sbcl-cl-quickcheck" ,sbcl-cl-quickcheck)))
5627 (inputs
5628 `(("sbcl-cffi" ,sbcl-cffi)
5629 ("sbcl-cffi-grovel" ,sbcl-cffi-grovel)
5630 ("sbcl-alexandria" , sbcl-alexandria)
5631 ("sbcl-parse-declarations-1.0" ,sbcl-parse-declarations)
5632 ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
5633 (synopsis "Bridge between Python and Lisp (FFI bindings, etc.)")
5634 (description
5635 "This package provides a shim between Python3 (specifically, the
5636 CPython implementation of Python) and Common Lisp.")
5637 (home-page "https://github.com/snmsts/burgled-batteries3")
5638 ;; MIT
5639 (license license:expat))))
5640
5641 (define-public cl-burgled-batteries3
5642 (sbcl-package->cl-source-package sbcl-burgled-batteries3))
5643
5644 (define-public ecl-burgled-batteries3
5645 (sbcl-package->ecl-package sbcl-burgled-batteries3))
5646
5647 (define-public sbcl-metabang-bind
5648 (let ((commit "c93b7f7e1c18c954c2283efd6a7fdab36746ab5e")
5649 (revision "1"))
5650 (package
5651 (name "sbcl-metabang-bind")
5652 (version (git-version "0.8.0" revision commit))
5653 (source
5654 (origin
5655 (method git-fetch)
5656 (uri (git-reference
5657 (url "https://github.com/gwkkwg/metabang-bind.git")
5658 (commit commit)))
5659 (file-name (git-file-name name version))
5660 (sha256
5661 (base32
5662 "0hd0kr91795v77akpbcyqiss9p0p7ypa9dznrllincnmgvsxlmf0"))))
5663 (build-system asdf-build-system/sbcl)
5664 (native-inputs
5665 `(("sbcl-lift" ,sbcl-lift)))
5666 (synopsis "Macro that generalizes @code{multiple-value-bind} etc.")
5667 (description
5668 "Bind extends the idea of of let and destructing to provide a uniform
5669 syntax for all your accessor needs. It combines @code{let},
5670 @code{destructuring-bind}, @code{with-slots}, @code{with-accessors}, structure
5671 editing, property or association-lists, and @code{multiple-value-bind} and a
5672 whole lot more into a single form.")
5673 (home-page "https://common-lisp.net/project/metabang-bind/")
5674 ;; MIT License
5675 (license license:expat))))
5676
5677 (define-public cl-metabang-bind
5678 (sbcl-package->cl-source-package sbcl-metabang-bind))
5679
5680 (define-public ecl-metabang-bind
5681 (sbcl-package->ecl-package sbcl-metabang-bind))
5682
5683 (define-public sbcl-fare-utils
5684 (let ((commit "66e9c6f1499140bc00ccc22febf2aa528cbb5724")
5685 (revision "1"))
5686 (package
5687 (name "sbcl-fare-utils")
5688 (version (git-version "1.0.0.5" revision commit))
5689 (source
5690 (origin
5691 (method git-fetch)
5692 (uri
5693 (git-reference
5694 (url
5695 "https://gitlab.common-lisp.net/frideau/fare-utils.git")
5696 (commit commit)))
5697 (file-name (git-file-name name version))
5698 (sha256
5699 (base32
5700 "01wsr1aap3jdzhn4hrqjbhsjx6qci9dbd3gh4gayv1p49rbg8aqr"))))
5701 (build-system asdf-build-system/sbcl)
5702 (arguments
5703 `(#:test-asd-file "test/fare-utils-test.asd"))
5704 (native-inputs
5705 `(("sbcl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
5706 (synopsis "Collection of utilities and data structures")
5707 (description
5708 "fare-utils is a small collection of utilities. It contains a lot of
5709 basic everyday functions and macros.")
5710 (home-page "https://gitlab.common-lisp.net/frideau/fare-utils")
5711 ;; MIT License
5712 (license license:expat))))
5713
5714 (define-public cl-fare-utils
5715 (sbcl-package->cl-source-package sbcl-fare-utils))
5716
5717 (define-public ecl-fare-utils
5718 (sbcl-package->ecl-package sbcl-fare-utils))
5719
5720 (define-public sbcl-trivial-utf-8
5721 (let ((commit "4d427cfbb1c452436a0efb71c3205c9da67f718f")
5722 (revision "1"))
5723 (package
5724 (name "sbcl-trivial-utf-8")
5725 (version (git-version "0.0.0" revision commit))
5726 (source
5727 (origin
5728 (method git-fetch)
5729 (uri
5730 (git-reference
5731 (url (string-append "https://gitlab.common-lisp.net/"
5732 "trivial-utf-8/trivial-utf-8.git"))
5733 (commit commit)))
5734 (file-name (git-file-name name version))
5735 (sha256
5736 (base32
5737 "1jz27gz8gvqdmvp3k9bxschs6d5b3qgk94qp2bj6nv1d0jc3m1l1"))))
5738 (arguments
5739 ;; Guix incorrectly assumes the "8" is part of the version
5740 ;; number and lobs it off.
5741 `(#:asd-file "trivial-utf-8.asd"
5742 #:asd-system-name "trivial-utf-8"))
5743 (build-system asdf-build-system/sbcl)
5744 (synopsis "UTF-8 input/output library")
5745 (description
5746 "The Babel library solves a similar problem while understanding more
5747 encodings. Trivial UTF-8 was written before Babel existed, but for new
5748 projects you might be better off going with Babel. The one plus that Trivial
5749 UTF-8 has is that it doesn't depend on any other libraries.")
5750 (home-page "https://common-lisp.net/project/trivial-utf-8/")
5751 (license license:bsd-3))))
5752
5753 (define-public cl-trivial-utf-8
5754 (sbcl-package->cl-source-package sbcl-trivial-utf-8))
5755
5756 (define-public ecl-trivial-utf-8
5757 (sbcl-package->ecl-package sbcl-trivial-utf-8))
5758
5759 (define-public sbcl-idna
5760 (package
5761 (name "sbcl-idna")
5762 (build-system asdf-build-system/sbcl)
5763 (version "0.2.2")
5764 (home-page "https://github.com/antifuchs/idna")
5765 (source
5766 (origin
5767 (method git-fetch)
5768 (uri (git-reference
5769 (url home-page)
5770 (commit version)))
5771 (file-name (git-file-name name version))
5772 (sha256
5773 (base32
5774 "00nbr3mffxhlq14gg9d16pa6691s4qh35inyw76v906s77khm5a2"))))
5775 (inputs
5776 `(("split-sequence" ,sbcl-split-sequence)))
5777 (synopsis "IDNA string encoding and decoding routines for Common Lisp")
5778 (description "This Common Lisp library provides string encoding and
5779 decoding routines for IDNA, the International Domain Names in Applications.")
5780 (license license:expat)))
5781
5782 (define-public cl-idna
5783 (sbcl-package->cl-source-package sbcl-idna))
5784
5785 (define-public ecl-idna
5786 (sbcl-package->ecl-package sbcl-idna))
5787
5788 (define-public sbcl-swap-bytes
5789 (package
5790 (name "sbcl-swap-bytes")
5791 (build-system asdf-build-system/sbcl)
5792 (version "1.1")
5793 (home-page "https://github.com/sionescu/swap-bytes")
5794 (source
5795 (origin
5796 (method git-fetch)
5797 (uri (git-reference
5798 (url home-page)
5799 (commit (string-append "v" version))))
5800 (file-name (git-file-name name version))
5801 (sha256
5802 (base32
5803 "1qysbv0jngdfkv53y874qjhcxc4qi8ixaqq6j8bzxh5z0931wv55"))))
5804 (inputs
5805 `(("trivial-features" ,sbcl-trivial-features)))
5806 (native-inputs
5807 `(("fiveam" ,sbcl-fiveam)))
5808 (arguments
5809 ;; TODO: Tests fail, why?
5810 `(#:tests? #f))
5811 (synopsis "Efficient endianness conversion for Common Lisp")
5812 (description "This Common Lisp library provides optimized byte-swapping
5813 primitives. The library can change endianness of unsigned integers of length
5814 1/2/4/8. Very useful in implementing various network protocols and file
5815 formats.")
5816 (license license:expat)))
5817
5818 (define-public cl-swap-bytes
5819 (sbcl-package->cl-source-package sbcl-swap-bytes))
5820
5821 (define-public ecl-swap-bytes
5822 (sbcl-package->ecl-package sbcl-swap-bytes))
5823
5824 (define-public sbcl-iolib.asdf
5825 ;; Latest release is from June 2017.
5826 (let ((commit "81e20614c0d27f9605bf9766214e236fd31b99b4")
5827 (revision "1"))
5828 (package
5829 (name "sbcl-iolib.asdf")
5830 (build-system asdf-build-system/sbcl)
5831 (version "0.8.3")
5832 (home-page "https://github.com/sionescu/iolib")
5833 (source
5834 (origin
5835 (method git-fetch)
5836 (uri (git-reference
5837 (url home-page)
5838 (commit commit)))
5839 (file-name (git-file-name name version))
5840 (sha256
5841 (base32
5842 "1j81r0wm7nfbwl991f26s4npcy7kybzybd3m47rbxy31h0cfcmdm"))))
5843 (inputs
5844 `(("alexandria" ,sbcl-alexandria)))
5845 (arguments
5846 '(#:asd-file "iolib.asdf.asd"))
5847 (synopsis "ASDF component classes for IOLib, a Common Lisp I/O library")
5848 (description "IOlib is to be a better and more modern I/O library than
5849 the standard Common Lisp library. It contains a socket library, a DNS
5850 resolver, an I/O multiplexer(which supports @code{select(2)}, @code{epoll(4)}
5851 and @code{kqueue(2)}), a pathname library and file-system utilities.")
5852 (license license:expat))))
5853
5854 (define-public sbcl-iolib.conf
5855 (package
5856 (inherit sbcl-iolib.asdf)
5857 (name "sbcl-iolib.conf")
5858 (inputs
5859 `(("iolib.asdf" ,sbcl-iolib.asdf)))
5860 (arguments
5861 '(#:asd-file "iolib.conf.asd"))
5862 (synopsis "Compile-time configuration for IOLib, a Common Lisp I/O library")))
5863
5864 (define-public sbcl-iolib.common-lisp
5865 (package
5866 (inherit sbcl-iolib.asdf)
5867 (name "sbcl-iolib.common-lisp")
5868 (inputs
5869 `(("iolib.asdf" ,sbcl-iolib.asdf)
5870 ("iolib.conf" ,sbcl-iolib.conf)))
5871 (arguments
5872 '(#:asd-file "iolib.common-lisp.asd"))
5873 (synopsis "Slightly modified Common Lisp for IOLib, a Common Lisp I/O library")))
5874
5875 (define-public sbcl-iolib.base
5876 (package
5877 (inherit sbcl-iolib.asdf)
5878 (name "sbcl-iolib.base")
5879 (inputs
5880 `(("iolib.asdf" ,sbcl-iolib.asdf)
5881 ("iolib.conf" ,sbcl-iolib.conf)
5882 ("iolib.common-lisp" ,sbcl-iolib.common-lisp)
5883 ("split-sequence" ,sbcl-split-sequence)))
5884 (arguments
5885 '(#:asd-file "iolib.base.asd"))
5886 (synopsis "Base package for IOLib, a Common Lisp I/O library")))
5887
5888 (define-public sbcl-iolib.grovel
5889 (package
5890 (inherit sbcl-iolib.asdf)
5891 (name "sbcl-iolib.grovel")
5892 (inputs
5893 `(("iolib.asdf" ,sbcl-iolib.asdf)
5894 ("iolib.conf" ,sbcl-iolib.conf)
5895 ("iolib.base", sbcl-iolib.base)
5896 ("cffi", sbcl-cffi)))
5897 (arguments
5898 '(#:asd-file "iolib.grovel.asd"
5899 #:phases
5900 (modify-phases %standard-phases
5901 (add-after 'install 'install-header
5902 (lambda* (#:key outputs #:allow-other-keys)
5903 ;; This header is required by sbcl-iolib.
5904 (install-file "src/grovel/grovel-common.h"
5905 (string-append (assoc-ref outputs "out")
5906 "/lib/sbcl"))
5907 #t)))))
5908 (synopsis "CFFI Groveller for IOLib, a Common Lisp I/O library")))
5909
5910 (define-public sbcl-iolib
5911 (package
5912 (inherit sbcl-iolib.asdf)
5913 (name "sbcl-iolib")
5914 (inputs
5915 `(("iolib.asdf" ,sbcl-iolib.asdf)
5916 ("iolib.conf" ,sbcl-iolib.conf)
5917 ("iolib.grovel" ,sbcl-iolib.grovel)
5918 ("iolib.base" ,sbcl-iolib.base)
5919 ("bordeaux-threads" ,sbcl-bordeaux-threads)
5920 ("idna" ,sbcl-idna)
5921 ("swap-bytes" ,sbcl-swap-bytes)
5922 ("libfixposix" ,libfixposix)
5923 ("cffi" ,sbcl-cffi)))
5924 (native-inputs
5925 `(("fiveam" ,sbcl-fiveam)))
5926 (arguments
5927 '(#:asd-file "iolib.asd"
5928 #:asd-system-name "iolib"
5929 #:test-asd-file "iolib.tests.asd"
5930 #:phases
5931 (modify-phases %standard-phases
5932 (add-after 'unpack 'fix-paths
5933 (lambda* (#:key inputs #:allow-other-keys)
5934 (substitute* "src/syscalls/ffi-functions-unix.lisp"
5935 (("\\(:default \"libfixposix\"\\)")
5936 (string-append
5937 "(:default \""
5938 (assoc-ref inputs "libfixposix") "/lib/libfixposix\")")))
5939 ;; Socket tests need Internet access, disable them.
5940 (substitute* "iolib.tests.asd"
5941 (("\\(:file \"sockets\" :depends-on \\(\"pkgdcl\" \"defsuites\"\\)\\)")
5942 "")))))))
5943 (synopsis "Common Lisp I/O library")))
5944
5945 (define sbcl-iolib+multiplex
5946 (package
5947 (inherit sbcl-iolib)
5948 (name "sbcl-iolib+multiplex")
5949 (arguments
5950 (substitute-keyword-arguments (package-arguments sbcl-iolib)
5951 ((#:asd-system-name _) "iolib/multiplex")))))
5952
5953 (define sbcl-iolib+syscalls
5954 (package
5955 (inherit sbcl-iolib)
5956 (name "sbcl-iolib+syscalls")
5957 (arguments
5958 (substitute-keyword-arguments (package-arguments sbcl-iolib)
5959 ((#:asd-system-name _) "iolib/syscalls")))))
5960
5961 (define sbcl-iolib+streams
5962 (package
5963 (inherit sbcl-iolib)
5964 (name "sbcl-iolib+streams")
5965 (arguments
5966 (substitute-keyword-arguments (package-arguments sbcl-iolib)
5967 ((#:asd-system-name _) "iolib/streams")))))
5968
5969 (define sbcl-iolib+sockets
5970 (package
5971 (inherit sbcl-iolib)
5972 (name "sbcl-iolib+sockets")
5973 (arguments
5974 (substitute-keyword-arguments (package-arguments sbcl-iolib)
5975 ((#:asd-system-name _) "iolib/sockets")))))
5976
5977 (define-public sbcl-ieee-floats
5978 (let ((commit "566b51a005e81ff618554b9b2f0b795d3b29398d")
5979 (revision "1"))
5980 (package
5981 (name "sbcl-ieee-floats")
5982 (build-system asdf-build-system/sbcl)
5983 (version (git-version "20170924" revision commit))
5984 (home-page "https://github.com/marijnh/ieee-floats/")
5985 (source
5986 (origin
5987 (method git-fetch)
5988 (uri (git-reference
5989 (url home-page)
5990 (commit commit)))
5991 (file-name (git-file-name name version))
5992 (sha256
5993 (base32
5994 "1xyj49j9x3lc84cv3dhbf9ja34ywjk1c46dklx425fxw9mkwm83m"))))
5995 (native-inputs
5996 `(("fiveam" ,sbcl-fiveam)))
5997 (synopsis "IEEE 754 binary representation for floats in Common Lisp")
5998 (description "This is a Common Lisp library that allows to convert
5999 floating point values to IEEE 754 binary representation.")
6000 (license license:bsd-3))))
6001
6002 (define sbcl-closure-common
6003 (let ((commit "e3c5f5f454b72b01b89115e581c3c52a7e201e5c")
6004 (revision "1"))
6005 (package
6006 (name "sbcl-closure-common")
6007 (build-system asdf-build-system/sbcl)
6008 (version (git-version "20101006" revision commit))
6009 (home-page "https://common-lisp.net/project/cxml/")
6010 (source
6011 (origin
6012 (method git-fetch)
6013 (uri (git-reference
6014 (url "https://github.com/sharplispers/closure-common")
6015 (commit commit)))
6016 (file-name (git-file-name name version))
6017 (sha256
6018 (base32
6019 "0k5r2qxn122pxi301ijir3nayi9sg4d7yiy276l36qmzwhp4mg5n"))))
6020 (inputs
6021 `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)
6022 ("babel" ,sbcl-babel)))
6023 (synopsis "Support Common Lisp library for CXML")
6024 (description "Closure-common is an internal helper library. The name
6025 Closure is a reference to the web browser it was originally written for.")
6026 ;; TODO: License?
6027 (license #f))))
6028
6029 (define-public sbcl-cxml+xml
6030 (let ((commit "00b22bf4c4cf11c993d5866fae284f95ab18e6bf")
6031 (revision "1"))
6032 (package
6033 (name "sbcl-cxml+xml")
6034 (build-system asdf-build-system/sbcl)
6035 (version (git-version "0.0.0" revision commit))
6036 (home-page "https://common-lisp.net/project/cxml/")
6037 (source
6038 (origin
6039 (method git-fetch)
6040 (uri (git-reference
6041 (url "https://github.com/sharplispers/cxml")
6042 (commit commit)))
6043 (file-name (git-file-name name version))
6044 (sha256
6045 (base32
6046 "13kif7rf3gqdycsk9zq0d7y0g9y81krkl0z87k0p2fkbjfgrph37"))))
6047 (inputs
6048 `(("closure-common" ,sbcl-closure-common)
6049 ("puri" ,sbcl-puri)
6050 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
6051 (arguments
6052 `(#:asd-file "cxml.asd"
6053 #:asd-system-name "cxml/xml"))
6054 (synopsis "Common Lisp XML parser")
6055 (description "CXML implements a namespace-aware, validating XML 1.0
6056 parser as well as the DOM Level 2 Core interfaces. Two parser interfaces are
6057 offered, one SAX-like, the other similar to StAX.")
6058 (license license:llgpl))))
6059
6060 (define sbcl-cxml+dom
6061 (package
6062 (inherit sbcl-cxml+xml)
6063 (name "sbcl-cxml+dom")
6064 (inputs
6065 `(("closure-common" ,sbcl-closure-common)
6066 ("puri" ,sbcl-puri)
6067 ("cxml+xml" ,sbcl-cxml+xml)))
6068 (arguments
6069 `(#:asd-file "cxml.asd"
6070 #:asd-system-name "cxml/dom"))))
6071
6072 (define sbcl-cxml+klacks
6073 (package
6074 (inherit sbcl-cxml+xml)
6075 (name "sbcl-cxml+klacks")
6076 (inputs
6077 `(("closure-common" ,sbcl-closure-common)
6078 ("puri" ,sbcl-puri)
6079 ("cxml+xml" ,sbcl-cxml+xml)))
6080 (arguments
6081 `(#:asd-file "cxml.asd"
6082 #:asd-system-name "cxml/klacks"))))
6083
6084 (define sbcl-cxml+test
6085 (package
6086 (inherit sbcl-cxml+xml)
6087 (name "sbcl-cxml+test")
6088 (inputs
6089 `(("closure-common" ,sbcl-closure-common)
6090 ("puri" ,sbcl-puri)
6091 ("cxml+xml" ,sbcl-cxml+xml)))
6092 (arguments
6093 `(#:asd-file "cxml.asd"
6094 #:asd-system-name "cxml/test"))))
6095
6096 (define-public sbcl-cxml
6097 (package
6098 (inherit sbcl-cxml+xml)
6099 (name "sbcl-cxml")
6100 (inputs
6101 `(("closure-common" ,sbcl-closure-common)
6102 ("puri" ,sbcl-puri)
6103 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)
6104 ("cxml+dom" ,sbcl-cxml+dom)
6105 ("cxml+klacks" ,sbcl-cxml+klacks)
6106 ("cxml+test" ,sbcl-cxml+test)))
6107 (arguments
6108 `(#:asd-file "cxml.asd"
6109 #:asd-system-name "cxml"
6110 #:phases
6111 (modify-phases %standard-phases
6112 (add-after 'build 'install-dtd
6113 (lambda* (#:key outputs #:allow-other-keys)
6114 (install-file "catalog.dtd"
6115 (string-append
6116 (assoc-ref outputs "out")
6117 "/lib/" (%lisp-type)))))
6118 (add-after 'create-asd 'remove-component
6119 ;; XXX: The original .asd has no components, but our build system
6120 ;; creates an entry nonetheless. We need to remove it for the
6121 ;; generated .asd to load properly. See trivia.trivial for a
6122 ;; similar problem.
6123 (lambda* (#:key outputs #:allow-other-keys)
6124 (let* ((out (assoc-ref outputs "out"))
6125 (asd (string-append out "/lib/sbcl/cxml.asd")))
6126 (substitute* asd
6127 ((" :components
6128 ")
6129 ""))
6130 (substitute* asd
6131 ((" *\\(\\(:compiled-file \"cxml--system\"\\)\\)")
6132 ""))))))))))
6133
6134 (define-public sbcl-cl-reexport
6135 (let ((commit "312f3661bbe187b5f28536cd7ec2956e91366c3b")
6136 (revision "1"))
6137 (package
6138 (name "sbcl-cl-reexport")
6139 (build-system asdf-build-system/sbcl)
6140 (version (git-version "0.1" revision commit))
6141 (home-page "https://github.com/takagi/cl-reexport")
6142 (source
6143 (origin
6144 (method git-fetch)
6145 (uri (git-reference
6146 (url home-page)
6147 (commit commit)))
6148 (file-name (git-file-name name version))
6149 (sha256
6150 (base32
6151 "1cwpn1m3wrl0fl9plznn7p464db646gnfc8zkyk97dyxski2aq0x"))))
6152 (inputs
6153 `(("alexandria" ,sbcl-alexandria)))
6154 (arguments
6155 ;; TODO: Tests fail because cl-test-more is missing, but I can't find it online.
6156 `(#:tests? #f))
6157 (synopsis "HTTP cookie manager for Common Lisp")
6158 (description "cl-cookie is a Common Lisp library featuring parsing of
6159 cookie headers, cookie creation, cookie jar creation and more.")
6160 (license license:llgpl))))
6161
6162 (define-public sbcl-cl-cookie
6163 (let ((commit "cea55aed8b9ad25fafd13defbcb9fe8f41b29546")
6164 (revision "1"))
6165 (package
6166 (name "sbcl-cl-cookie")
6167 (build-system asdf-build-system/sbcl)
6168 (version (git-version "0.9.10" revision commit))
6169 (home-page "https://github.com/fukamachi/cl-cookie")
6170 (source
6171 (origin
6172 (method git-fetch)
6173 (uri (git-reference
6174 (url home-page)
6175 (commit commit)))
6176 (file-name (git-file-name name version))
6177 (sha256
6178 (base32
6179 "090g7z75h98zvc1ldx0vh4jn4086dhjm2w30jcwkq553qmyxwl8h"))))
6180 (inputs
6181 `(("proc-parse" ,sbcl-proc-parse)
6182 ("alexandria" ,sbcl-alexandria)
6183 ("quri" ,sbcl-quri)
6184 ("cl-ppcre" ,sbcl-cl-ppcre)
6185 ("local-time" ,sbcl-local-time)))
6186 (native-inputs
6187 `(("prove-asdf" ,sbcl-prove-asdf)
6188 ("prove" ,sbcl-prove)))
6189 (arguments
6190 ;; TODO: Tests fail because cl-cookie depends on cl-cookie-test.
6191 `(#:tests? #f))
6192 (synopsis "HTTP cookie manager for Common Lisp")
6193 (description "cl-cookie is a Common Lisp library featuring parsing of
6194 cookie headers, cookie creation, cookie jar creation and more.")
6195 (license license:bsd-2))))
6196
6197 (define-public sbcl-dexador
6198 (let ((commit "a2714d126cc94bc7a9a6e1e3c08de455b3a66378")
6199 (revision "1"))
6200 (package
6201 (name "sbcl-dexador")
6202 (build-system asdf-build-system/sbcl)
6203 (version (git-version "0.9.10" revision commit))
6204 (home-page "https://github.com/fukamachi/dexador")
6205 (source
6206 (origin
6207 (method git-fetch)
6208 (uri (git-reference
6209 (url home-page)
6210 (commit commit)))
6211 (file-name (git-file-name name version))
6212 (sha256
6213 (base32
6214 "0nbqgn4v3l2z6m1k1bdxfnqpfrk84nxdmz7csz11zzcfs4flkv79"))))
6215 (inputs
6216 `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)
6217 ("babel" ,sbcl-babel)
6218 ("usocket" ,sbcl-usocket)
6219 ("fast-http" ,sbcl-fast-http)
6220 ("quri" ,sbcl-quri)
6221 ("fast-io" ,sbcl-fast-io)
6222 ("chunga" ,sbcl-chunga)
6223 ("cl-ppcre" ,sbcl-cl-ppcre)
6224 ("cl-cookie" ,sbcl-cl-cookie)
6225 ("trivial-mimes" ,sbcl-trivial-mimes)
6226 ("chipz" ,sbcl-chipz)
6227 ("cl-base64" ,sbcl-cl-base64)
6228 ("cl-reexport" ,sbcl-cl-reexport)
6229 ("cl+ssl" ,sbcl-cl+ssl)
6230 ("bordeaux-threads" ,sbcl-bordeaux-threads)
6231 ("alexandria" ,sbcl-alexandria)))
6232 (native-inputs
6233 `(("prove" ,sbcl-prove)
6234 ("prove-asdf" ,sbcl-prove-asdf)
6235 ("lack-request" ,sbcl-lack-request)
6236 ("clack" ,sbcl-clack)
6237 ("babel" ,sbcl-babel)
6238 ("alexandria" ,sbcl-alexandria)
6239 ("quri" ,sbcl-quri)
6240 ("cl-ppcre" ,sbcl-cl-ppcre)
6241 ("local-time" ,sbcl-local-time)))
6242 (arguments
6243 ;; TODO: Circular dependency: tests depend on clack-test which depends on dexador.
6244 `(#:tests? #f
6245 #:phases
6246 (modify-phases %standard-phases
6247 (add-after 'unpack 'fix-permissions
6248 (lambda _ (make-file-writable "t/data/test.gz") #t)))))
6249 (synopsis "Yet another HTTP client for Common Lisp")
6250 (description "Dexador is yet another HTTP client for Common Lisp with
6251 neat APIs and connection-pooling. It is meant to supersede Drakma.")
6252 (license license:expat))))
6253
6254 (define-public sbcl-lisp-namespace
6255 (let ((commit "28107cafe34e4c1c67490fde60c7f92dc610b2e0")
6256 (revision "1"))
6257 (package
6258 (name "sbcl-lisp-namespace")
6259 (build-system asdf-build-system/sbcl)
6260 (version (git-version "0.1" revision commit))
6261 (home-page "https://github.com/guicho271828/lisp-namespace")
6262 (source
6263 (origin
6264 (method git-fetch)
6265 (uri (git-reference
6266 (url home-page)
6267 (commit commit)))
6268 (file-name (git-file-name name version))
6269 (sha256
6270 (base32
6271 "1jw2wykp06z2afb9nm1lgfzll5cjlj36pnknjx614057zkkxq4iy"))))
6272 (inputs
6273 `(("alexandria" ,sbcl-alexandria)))
6274 (native-inputs
6275 `(("fiveam" ,sbcl-fiveam)))
6276 (arguments
6277 `(#:test-asd-file "lisp-namespace.test.asd"
6278 ;; XXX: Component LISP-NAMESPACE-ASD::LISP-NAMESPACE.TEST not found
6279 #:tests? #f))
6280 (synopsis "LISP-N, or extensible namespaces in Common Lisp")
6281 (description "Common Lisp already has major 2 namespaces, function
6282 namespace and value namespace (or variable namespace), but there are actually
6283 more — e.g., class namespace.
6284 This library offers macros to deal with symbols from any namespace.")
6285 (license license:llgpl))))
6286
6287 (define-public sbcl-trivial-cltl2
6288 (let ((commit "8eec8407df833e8f27df8a388bc10913f16d9e83")
6289 (revision "1"))
6290 (package
6291 (name "sbcl-trivial-cltl2")
6292 (build-system asdf-build-system/sbcl)
6293 (version (git-version "0.1.1" revision commit))
6294 (home-page "https://github.com/Zulu-Inuoe/trivial-cltl2")
6295 (source
6296 (origin
6297 (method git-fetch)
6298 (uri (git-reference
6299 (url home-page)
6300 (commit commit)))
6301 (file-name (git-file-name name version))
6302 (sha256
6303 (base32
6304 "1dyyxz17vqv8hlfwq287gl8xxbvcnq798ajb7p5jdjz91wqf4bgk"))))
6305 (synopsis "Simple CLtL2 compatibility layer for Common Lisp")
6306 (description "This library is a portable compatibility layer around
6307 \"Common Lisp the Language, 2nd
6308 Edition\" (@url{https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node102.html})
6309 and it exports symbols from implementation-specific packages.")
6310 (license license:llgpl))))
6311
6312 (define-public sbcl-introspect-environment
6313 (let ((commit "fff42f8f8fd0d99db5ad6c5812e53de7d660020b")
6314 (revision "1"))
6315 (package
6316 (name "sbcl-introspect-environment")
6317 (build-system asdf-build-system/sbcl)
6318 (version (git-version "0.1" revision commit))
6319 (home-page "https://github.com/Bike/introspect-environment")
6320 (source
6321 (origin
6322 (method git-fetch)
6323 (uri (git-reference
6324 (url home-page)
6325 (commit commit)))
6326 (file-name (git-file-name name version))
6327 (sha256
6328 (base32
6329 "1i305n0wfmpac63ni4i3vixnnkl8daw5ncxy0k3dv92krgx6qzhp"))))
6330 (native-inputs
6331 `(("fiveam" ,sbcl-fiveam)))
6332 (synopsis "Common Lisp environment introspection portability layer")
6333 (description "This library is a small interface to portable but
6334 nonstandard introspection of Common Lisp environments. It is intended to
6335 allow a bit more compile-time introspection of environments in Common Lisp.
6336
6337 Quite a bit of information is available at the time a macro or compiler-macro
6338 runs; inlining info, type declarations, that sort of thing. This information
6339 is all standard - any Common Lisp program can @code{(declare (integer x))} and
6340 such.
6341
6342 This info ought to be accessible through the standard @code{&environment}
6343 parameters, but it is not. Several implementations keep the information for
6344 their own purposes but do not make it available to user programs, because
6345 there is no standard mechanism to do so.
6346
6347 This library uses implementation-specific hooks to make information available
6348 to users. This is currently supported on SBCL, CCL, and CMUCL. Other
6349 implementations have implementations of the functions that do as much as they
6350 can and/or provide reasonable defaults.")
6351 (license license:wtfpl2))))
6352
6353 (define-public sbcl-type-i
6354 (let ((commit "dea233f45f94064105ec09f0767de338f67dcbe2")
6355 (revision "1"))
6356 (package
6357 (name "sbcl-type-i")
6358 (build-system asdf-build-system/sbcl)
6359 (version (git-version "0.1" revision commit))
6360 (home-page "https://github.com/guicho271828/type-i")
6361 (source
6362 (origin
6363 (method git-fetch)
6364 (uri (git-reference
6365 (url home-page)
6366 (commit commit)))
6367 (file-name (git-file-name name version))
6368 (sha256
6369 (base32
6370 "039g5pbrhh65s0bhr9314gmd2nwc2y5lp2377c5qrc2lxky89qs3"))))
6371 (inputs
6372 `(("alexandria" ,sbcl-alexandria)
6373 ("introspect-environment" ,sbcl-introspect-environment)
6374 ("trivia.trivial" ,sbcl-trivia.trivial)))
6375 (native-inputs
6376 `(("fiveam" ,sbcl-fiveam)))
6377 (arguments
6378 `(#:test-asd-file "type-i.test.asd"))
6379 (synopsis "Type inference utility on unary predicates for Common Lisp")
6380 (description "This library tries to provide a way to detect what kind of
6381 type the given predicate is trying to check. This is different from inferring
6382 the return type of a function.")
6383 (license license:llgpl))))
6384
6385 (define-public sbcl-optima
6386 (let ((commit "373b245b928c1a5cce91a6cb5bfe5dd77eb36195")
6387 (revision "1"))
6388 (package
6389 (name "sbcl-optima")
6390 (build-system asdf-build-system/sbcl)
6391 (version (git-version "0.1" revision commit))
6392 (home-page "https://github.com/m2ym/optima")
6393 (source
6394 (origin
6395 (method git-fetch)
6396 (uri (git-reference
6397 (url home-page)
6398 (commit commit)))
6399 (file-name (git-file-name name version))
6400 (sha256
6401 (base32
6402 "1yw4ymq7ms89342kkvb3aqxgv0w38m9kd8ikdqxxzyybnkjhndal"))))
6403 (inputs
6404 `(("alexandria" ,sbcl-alexandria)
6405 ("closer-mop" ,sbcl-closer-mop)))
6406 (native-inputs
6407 `(("eos" ,sbcl-eos)))
6408 (arguments
6409 ;; XXX: Circular dependencies: tests depend on optima.ppcre which depends on optima.
6410 `(#:tests? #f
6411 #:test-asd-file "optima.test.asd"))
6412 (synopsis "Optimized pattern matching library for Common Lisp")
6413 (description "Optima is a fast pattern matching library which uses
6414 optimizing techniques widely used in the functional programming world.")
6415 (license license:expat))))
6416
6417 (define-public sbcl-fare-quasiquote
6418 (package
6419 (name "sbcl-fare-quasiquote")
6420 (build-system asdf-build-system/sbcl)
6421 (version "20171130")
6422 (home-page "http://common-lisp.net/project/fare-quasiquote")
6423 (source
6424 (origin
6425 (method url-fetch)
6426 (uri (string-append "http://beta.quicklisp.org/archive/fare-quasiquote/"
6427 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
6428 "/fare-quasiquote-"
6429 version
6430 "-git.tgz"))
6431 (sha256
6432 (base32
6433 "00brmh7ndsi0c97nibi8cy10j3l4gmkyrfrr5jr5lzkfb7ngyfqa"))))
6434 (inputs
6435 `(("fare-utils" ,sbcl-fare-utils)))
6436 (arguments
6437 ;; XXX: Circular dependencies: Tests depend on subsystems, which depend on the main systems.
6438 `(#:tests? #f
6439 #:phases
6440 (modify-phases %standard-phases
6441 ;; XXX: Require 1.0.0 version of fare-utils, and we package some
6442 ;; commits after 1.0.0.5, but ASDF fails to read the
6443 ;; "-REVISION-COMMIT" part generated by Guix.
6444 (add-after 'unpack 'patch-requirement
6445 (lambda _
6446 (substitute* "fare-quasiquote.asd"
6447 (("\\(:version \"fare-utils\" \"1.0.0\"\\)") "\"fare-utils\"")))))))
6448 (synopsis "Pattern-matching friendly implementation of quasiquote for Common Lisp")
6449 (description "The main purpose of this n+2nd reimplementation of
6450 quasiquote is enable matching of quasiquoted patterns, using Optima or
6451 Trivia.")
6452 (license license:expat)))
6453
6454 (define-public sbcl-fare-quasiquote-readtable
6455 (package
6456 (inherit sbcl-fare-quasiquote)
6457 (name "sbcl-fare-quasiquote-readtable")
6458 (inputs
6459 `(("fare-quasiquote" ,sbcl-fare-quasiquote)
6460 ("named-readtables" ,sbcl-named-readtables)))
6461 (description "The main purpose of this n+2nd reimplementation of
6462 quasiquote is enable matching of quasiquoted patterns, using Optima or
6463 Trivia.
6464
6465 This package uses fare-quasiquote with named-readtable.")))
6466
6467 (define-public sbcl-trivia.level0
6468 (let ((commit "902e0c65602bbfe96ae82e679330b3771ddc7603")
6469 (revision "1"))
6470 (package
6471 (name "sbcl-trivia.level0")
6472 (build-system asdf-build-system/sbcl)
6473 (version (git-version "0.0.0" revision commit))
6474 (home-page "https://github.com/guicho271828/trivia")
6475 (source
6476 (origin
6477 (method git-fetch)
6478 (uri (git-reference
6479 (url home-page)
6480 (commit commit)))
6481 (file-name (git-file-name name version))
6482 (sha256
6483 (base32
6484 "11qbab30qqnfy9mx3x9fvgcw1jbvh1qn2cqv3p8xdn2m8981jvhr"))))
6485 (inputs
6486 `(("alexandria" ,sbcl-alexandria)))
6487 (synopsis "Pattern matching in Common Lisp")
6488 (description "Trivia is a pattern matching compiler that is compatible
6489 with Optima, another pattern matching library for Common Lisp. It is meant to
6490 be faster and more extensible than Optima.")
6491 (license license:llgpl))))
6492
6493 (define-public sbcl-trivia.level1
6494 (package
6495 (inherit sbcl-trivia.level0)
6496 (name "sbcl-trivia.level1")
6497 (inputs
6498 `(("trivia.level0" ,sbcl-trivia.level0)))
6499 (description "Trivia is a pattern matching compiler that is compatible
6500 with Optima, another pattern matching library for Common Lisp. It is meant to
6501 be faster and more extensible than Optima.
6502
6503 This system contains the core patterns of Trivia.")))
6504
6505 (define-public sbcl-trivia.level2
6506 (package
6507 (inherit sbcl-trivia.level0)
6508 (name "sbcl-trivia.level2")
6509 (inputs
6510 `(("trivia.level1" ,sbcl-trivia.level1)
6511 ("lisp-namespace" ,sbcl-lisp-namespace)
6512 ("trivial-cltl2" ,sbcl-trivial-cltl2)
6513 ("closer-mop" ,sbcl-closer-mop)))
6514 (description "Trivia is a pattern matching compiler that is compatible
6515 with Optima, another pattern matching library for Common Lisp. It is meant to
6516 be faster and more extensible than Optima.
6517
6518 This system contains a non-optimized pattern matcher compatible with Optima,
6519 with extensible optimizer interface.")))
6520
6521 (define-public sbcl-trivia.trivial
6522 (package
6523 (inherit sbcl-trivia.level0)
6524 (name "sbcl-trivia.trivial")
6525 (inputs
6526 `(("trivia.level2" ,sbcl-trivia.level2)))
6527 (arguments
6528 `(#:phases
6529 (modify-phases %standard-phases
6530 (replace 'create-asd-file
6531 (lambda* (#:key outputs inputs #:allow-other-keys)
6532 (let* ((out (assoc-ref outputs "out"))
6533 (lib (string-append out "/lib/" (%lisp-type)))
6534 (level2 (assoc-ref inputs "trivia.level2")))
6535 (mkdir-p lib)
6536 (install-file "trivia.trivial.asd" lib)
6537 ;; XXX: This .asd does not have any component and the build
6538 ;; system fails to work in this case. We should update the
6539 ;; build system to handle component-less .asd.
6540 ;; TODO: How do we append to file in Guile? It seems that
6541 ;; (open-file ... "a") gets a "Permission denied".
6542 (substitute* (string-append lib "/trivia.trivial.asd")
6543 (("\"\\)")
6544 (string-append "\")
6545
6546 (progn (asdf/source-registry:ensure-source-registry)
6547 (setf (gethash
6548 \"trivia.level2\"
6549 asdf/source-registry:*source-registry*)
6550 #p\""
6551 level2
6552 "/share/common-lisp/sbcl-bundle-systems/trivia.level2.asd\"))")))))))))
6553 (description "Trivia is a pattern matching compiler that is compatible
6554 with Optima, another pattern matching library for Common Lisp. It is meant to
6555 be faster and more extensible than Optima.
6556
6557 This system contains the base level system of Trivia with a trivial optimizer.")))
6558
6559 (define-public sbcl-trivia.balland2006
6560 (package
6561 (inherit sbcl-trivia.level0)
6562 (name "sbcl-trivia.balland2006")
6563 (inputs
6564 `(("trivia.trivial" ,sbcl-trivia.trivial)
6565 ("iterate" ,sbcl-iterate)
6566 ("type-i" ,sbcl-type-i)
6567 ("alexandria" ,sbcl-alexandria)))
6568 (arguments
6569 ;; Tests are done in trivia itself.
6570 `(#:tests? #f))
6571 (description "Trivia is a pattern matching compiler that is compatible
6572 with Optima, another pattern matching library for Common Lisp. It is meant to
6573 be faster and more extensible than Optima.
6574
6575 This system contains the base level system of Trivia with a trivial optimizer.")))
6576
6577 (define-public sbcl-trivia.ppcre
6578 (package
6579 (inherit sbcl-trivia.level0)
6580 (name "sbcl-trivia.ppcre")
6581 (inputs
6582 `(("trivia.trivial" ,sbcl-trivia.trivial)
6583 ("cl-ppcre" ,sbcl-cl-ppcre)))
6584 (description "Trivia is a pattern matching compiler that is compatible
6585 with Optima, another pattern matching library for Common Lisp. It is meant to
6586 be faster and more extensible than Optima.
6587
6588 This system contains the PPCRE extension.")))
6589
6590 (define-public sbcl-trivia.quasiquote
6591 (package
6592 (inherit sbcl-trivia.level0)
6593 (name "sbcl-trivia.quasiquote")
6594 (inputs
6595 `(("trivia.trivial" ,sbcl-trivia.trivial)
6596 ("fare-quasiquote" ,sbcl-fare-quasiquote)
6597 ("fare-quasiquote-readtable" ,sbcl-fare-quasiquote-readtable)))
6598 (description "Trivia is a pattern matching compiler that is compatible
6599 with Optima, another pattern matching library for Common Lisp. It is meant to
6600 be faster and more extensible than Optima.
6601
6602 This system contains the fare-quasiquote extension.")))
6603
6604 (define-public sbcl-trivia.cffi
6605 (package
6606 (inherit sbcl-trivia.level0)
6607 (name "sbcl-trivia.cffi")
6608 (inputs
6609 `(("cffi" ,sbcl-cffi)
6610 ("trivia.trivial" ,sbcl-trivia.trivial)))
6611 (description "Trivia is a pattern matching compiler that is compatible
6612 with Optima, another pattern matching library for Common Lisp. It is meant to
6613 be faster and more extensible than Optima.
6614
6615 This system contains the CFFI foreign slot access extension.")))
6616
6617 (define-public sbcl-trivia
6618 (package
6619 (inherit sbcl-trivia.level0)
6620 (name "sbcl-trivia")
6621 (inputs
6622 `(("trivia.balland2006" ,sbcl-trivia.balland2006)))
6623 (native-inputs
6624 `(("fiveam" ,sbcl-fiveam)
6625 ("trivia.ppcre" ,sbcl-trivia.ppcre)
6626 ("trivia.quasiquote" ,sbcl-trivia.quasiquote)
6627 ("trivia.cffi" ,sbcl-trivia.cffi)
6628 ("optima" ,sbcl-optima)))
6629 (arguments
6630 `(#:test-asd-file "trivia.test.asd"
6631 #:phases
6632 (modify-phases %standard-phases
6633 (add-after 'create-asd 'remove-component
6634 ;; XXX: The original .asd has no components, but our build system
6635 ;; creates an entry nonetheless. We need to remove it for the
6636 ;; generated .asd to load properly. See trivia.trivial for a
6637 ;; similar problem.
6638 (lambda* (#:key outputs #:allow-other-keys)
6639 (let* ((out (assoc-ref outputs "out"))
6640 (asd (string-append out "/lib/" (%lisp-type) "/trivia.asd")))
6641 (substitute* asd
6642 ((" :components
6643 ")
6644 ""))
6645 (substitute* asd
6646 ((" *\\(\\(:compiled-file \"trivia--system\"\\)\\)")
6647 ""))))))))
6648 (description "Trivia is a pattern matching compiler that is compatible
6649 with Optima, another pattern matching library for Common Lisp. It is meant to
6650 be faster and more extensible than Optima.")))
6651
6652 (define-public sbcl-mk-string-metrics
6653 (package
6654 (name "sbcl-mk-string-metrics")
6655 (version "0.1.2")
6656 (home-page "https://github.com/cbaggers/mk-string-metrics/")
6657 (source (origin
6658 (method git-fetch)
6659 (uri (git-reference
6660 (url home-page)
6661 (commit version)))
6662 (sha256
6663 (base32 "0bg0bv2mfd4k0g3x72x563hvmrx18xavaffr6xk5rh4if5j7kcf6"))
6664 (file-name (git-file-name name version))))
6665 (build-system asdf-build-system/sbcl)
6666 (synopsis "Calculate various string metrics efficiently in Common Lisp")
6667 (description "This library implements efficient algorithms that calculate
6668 various string metrics in Common Lisp:
6669
6670 @itemize
6671 @item Damerau-Levenshtein distance
6672 @item Hamming distance
6673 @item Jaccard similarity coefficient
6674 @item Jaro distance
6675 @item Jaro-Winkler distance
6676 @item Levenshtein distance
6677 @item Normalized Damerau-Levenshtein distance
6678 @item Normalized Levenshtein distance
6679 @item Overlap coefficient
6680 @end itemize\n")
6681 (license license:x11)))
6682
6683 (define-public sbcl-cl-str
6684 (let ((commit "3d5ec86e3a0199e5973aacde951086dfd754b5e5"))
6685 (package
6686 (name "sbcl-cl-str")
6687 (version (git-version "0.8" "1" commit))
6688 (home-page "https://github.com/vindarel/cl-str")
6689 (source (origin
6690 (method git-fetch)
6691 (uri (git-reference
6692 (url home-page)
6693 (commit commit)))
6694 (sha256
6695 (base32 "0szzzbygw9h985yxz909vvqrp69pmpcpahn7hn350lnyjislk9ga"))
6696 (file-name (git-file-name name version))))
6697 (build-system asdf-build-system/sbcl)
6698 (inputs
6699 `(("cl-ppcre" ,sbcl-cl-ppcre)
6700 ("cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)))
6701 (native-inputs
6702 `(("prove" ,sbcl-prove)
6703 ("prove-asdf" ,sbcl-prove-asdf)))
6704 (arguments
6705 `(#:asd-file "str.asd"
6706 #:asd-system-name "str"
6707 #:test-asd-file "str.test.asd"))
6708 (synopsis "Modern, consistent and terse Common Lisp string manipulation library")
6709 (description "A modern and consistent Common Lisp string manipulation
6710 library that focuses on modernity, simplicity and discoverability:
6711 @code{(str:trim s)} instead of @code{(string-trim '(#\\Space ...) s)}), or
6712 @code{str:concat strings} instead of an unusual format construct; one
6713 discoverable library instead of many; consistency and composability, where
6714 @code{s} is always the last argument, which makes it easier to feed pipes and
6715 arrows.")
6716 (license license:expat))))
6717
6718 (define-public sbcl-cl-xmlspam
6719 (let ((commit "ea06abcca2a73a9779bcfb09081e56665f94e22a"))
6720 (package
6721 (name "sbcl-cl-xmlspam")
6722 (build-system asdf-build-system/sbcl)
6723 (version (git-version "0.0.0" "1" commit))
6724 (home-page "https://github.com/rogpeppe/cl-xmlspam")
6725 (source
6726 (origin
6727 (method git-fetch)
6728 (uri (git-reference
6729 (url home-page)
6730 (commit commit)))
6731 (file-name (string-append name "-" version))
6732 (sha256
6733 (base32
6734 "0w4rqvrgdgk3fwfq3kx4r7wwdr2bv3b6n3bdqwsiriw9psqzpz2s"))))
6735 (inputs
6736 `(("cxml" ,sbcl-cxml)
6737 ("cl-ppcre" ,sbcl-cl-ppcre)))
6738 (synopsis "Concise, regexp-like pattern matching on streaming XML for Common Lisp")
6739 (description "CXML does an excellent job at parsing XML elements, but what
6740 do you do when you have a XML file that's larger than you want to fit in
6741 memory, and you want to extract some information from it? Writing code to deal
6742 with SAX events, or even using Klacks, quickly becomes tedious.
6743 @code{cl-xmlspam} (for XML Stream PAttern Matcher) is designed to make it easy
6744 to write code that mirrors the structure of the XML that it's parsing. It
6745 also makes it easy to shift paradigms when necessary - the usual Lisp control
6746 constructs can be used interchangeably with pattern matching, and the full
6747 power of CXML is available when necessary.")
6748 (license license:bsd-3))))
6749
6750 ;; TODO: dbus uses ASDF's package-inferred-system which is not supported by
6751 ;; asdf-build-system/sbcl as of 2019-08-02. We should fix
6752 ;; asdf-build-system/sbcl.
6753 (define-public cl-dbus
6754 (let ((commit "24b452df3a45ca5dc95015500f34baad175c981a")
6755 (revision "1"))
6756 (package
6757 (name "cl-dbus")
6758 (build-system asdf-build-system/source)
6759 (version (git-version "20190408" revision commit))
6760 (home-page "https://github.com/death/dbus")
6761 (source
6762 (origin
6763 (method git-fetch)
6764 (uri (git-reference
6765 (url home-page)
6766 (commit commit)))
6767 (file-name (git-file-name name version))
6768 (sha256
6769 (base32
6770 "0fw2q866yddbf23nk9pxphm9gsasx35vjyss82xzvndnjmzlqfl5"))))
6771 ;; Inputs must be propagated or else packages depending on this won't have the necessary packages.
6772 (propagated-inputs
6773 `(("alexandria" ,sbcl-alexandria)
6774 ("trivial-garbage" ,sbcl-trivial-garbage)
6775 ("babel" ,sbcl-babel)
6776 ("iolib" ,sbcl-iolib)
6777 ("iolib+multiplex" ,(@@ (gnu packages lisp) sbcl-iolib+multiplex))
6778 ("iolib+syscalls" ,(@@ (gnu packages lisp) sbcl-iolib+syscalls))
6779 ("iolib+streams" ,(@@ (gnu packages lisp) sbcl-iolib+streams))
6780 ("iolib+sockets" ,(@@ (gnu packages lisp) sbcl-iolib+sockets))
6781 ("ieee-floats" ,sbcl-ieee-floats)
6782 ("flexi-streams" ,sbcl-flexi-streams)
6783 ("cl-xmlspam" ,sbcl-cl-xmlspam)
6784 ("ironclad" ,sbcl-ironclad)))
6785 (synopsis "D-Bus client library for Common Lisp")
6786 (description "This is a Common Lisp library that allows to publish D-Bus
6787 objects as well as send and notify other objects connected to a bus.")
6788 (license license:bsd-2))))
6789
6790 (define-public sbcl-cl-hooks
6791 (let ((commit "5b638083f3b4f1221a52631d9c8a0a265565cac7")
6792 (revision "1"))
6793 (package
6794 (name "sbcl-cl-hooks")
6795 (build-system asdf-build-system/sbcl)
6796 (version (git-version "0.2.1" revision commit))
6797 (home-page "https://github.com/scymtym/architecture.hooks")
6798 (source
6799 (origin
6800 (method git-fetch)
6801 (uri (git-reference
6802 (url home-page)
6803 (commit commit)))
6804 (file-name (git-file-name name version))
6805 (sha256
6806 (base32
6807 "0bg3l0a28lw5gqqjp6p6b5nhwqk46sgkb7184w5qbfngw1hk8x9y"))))
6808 (inputs
6809 `(("alexandria" ,sbcl-alexandria)
6810 ("let-plus" ,sbcl-let-plus)
6811 ("trivial-garbage" ,sbcl-trivial-garbage)
6812 ("closer-mop" ,sbcl-closer-mop)))
6813 (native-inputs
6814 `(("fiveam" ,sbcl-fiveam)))
6815 (synopsis "Hooks extension point mechanism (as in Emacs) for Common Lisp")
6816 (description "A hook, in the present context, is a certain kind of
6817 extension point in a program that allows interleaving the execution of
6818 arbitrary code with the execution of a the program without introducing any
6819 coupling between the two. Hooks are used extensively in the extensible editor
6820 Emacs.
6821
6822 In the Common LISP Object System (CLOS), a similar kind of extensibility is
6823 possible using the flexible multi-method dispatch mechanism. It may even seem
6824 that the concept of hooks does not provide any benefits over the possibilities
6825 of CLOS. However, there are some differences:
6826
6827 @itemize
6828
6829 @item There can be only one method for each combination of specializers and
6830 qualifiers. As a result this kind of extension point cannot be used by
6831 multiple extensions independently.
6832 @item Removing code previously attached via a @code{:before}, @code{:after} or
6833 @code{:around} method can be cumbersome.
6834 @item There could be other or even multiple extension points besides @code{:before}
6835 and @code{:after} in a single method.
6836 @item Attaching codes to individual objects using eql specializers can be
6837 cumbersome.
6838 @item Introspection of code attached a particular extension point is
6839 cumbersome since this requires enumerating and inspecting the methods of a
6840 generic function.
6841 @end itemize
6842
6843 This library tries to complement some of these weaknesses of method-based
6844 extension-points via the concept of hooks.")
6845 (license license:llgpl))))
6846
6847 (define-public cl-hooks
6848 (sbcl-package->cl-source-package sbcl-cl-hooks))
6849
6850 (define-public ecl-cl-hooks
6851 (sbcl-package->ecl-package sbcl-cl-hooks))
6852
6853 (define-public sbcl-s-sysdeps
6854 (let ((commit "d28246b5dffef9e73a0e0e6cfbc4e878006fe34d")
6855 (revision "1"))
6856 (package
6857 (name "sbcl-s-sysdeps")
6858 (build-system asdf-build-system/sbcl)
6859 (version (git-version "1" revision commit))
6860 (home-page "https://github.com/svenvc/s-sysdeps")
6861 (source
6862 (origin
6863 (method git-fetch)
6864 (uri (git-reference
6865 (url home-page)
6866 (commit commit)))
6867 (file-name (git-file-name name version))
6868 (sha256
6869 (base32
6870 "14b69b81yrxmjlvmm3lfxk04x5v7hqz4fql121334wh72czznfh9"))))
6871 (synopsis "Common Lisp abstraction layer over platform dependent functionality")
6872 (description "@code{s-sysdeps} is an abstraction layer over platform
6873 dependent functionality. This simple package is used as a building block in a
6874 number of other open source projects.
6875
6876 @code{s-sysdeps} abstracts:
6877
6878 @itemize
6879 @item managing processes,
6880 @item implementing a standard TCP/IP server,
6881 @item opening a client TCP/IP socket stream,
6882 @item working with process locks.
6883 @end itemize\n")
6884 (license license:llgpl))))
6885
6886 (define-public cl-s-sysdeps
6887 (sbcl-package->cl-source-package sbcl-s-sysdeps))
6888
6889 (define-public ecl-s-sysdeps
6890 (sbcl-package->ecl-package sbcl-s-sysdeps))
6891
6892 (define-public sbcl-cl-prevalence
6893 (let ((commit "c163c227ed85d430b82cb1e3502f72d4f88e3cfa")
6894 (revision "1"))
6895 (package
6896 (name "sbcl-cl-prevalence")
6897 (build-system asdf-build-system/sbcl)
6898 (version (git-version "5" revision commit))
6899 (home-page "https://github.com/40ants/cl-prevalence")
6900 (source
6901 (origin
6902 (method git-fetch)
6903 (uri (git-reference
6904 (url home-page)
6905 (commit commit)))
6906 (file-name (git-file-name name version))
6907 (sha256
6908 (base32
6909 "1i9zj1q2ahgwch56an21yzbgkynz0kab9fyxkq9mg8p3xrv38jjn"))))
6910 (inputs
6911 `(("s-sysdeps" ,sbcl-s-sysdeps)
6912 ("s-xml" ,sbcl-s-xml)))
6913 (synopsis "Implementation of object prevalence for Common Lisp")
6914 (description "This Common Lisp library implements object prevalence (see
6915 @url{https://en.wikipedia.org/wiki/System_prevalence}). It allows
6916 for (de)serializing to and from s-exps as well as XML. Serialization of arbitrary
6917 classes and cyclic data structures are supported.")
6918 (license license:llgpl))))
6919
6920 (define-public cl-prevalence
6921 (sbcl-package->cl-source-package sbcl-cl-prevalence))
6922
6923 (define-public ecl-cl-prevalence
6924 (sbcl-package->ecl-package sbcl-cl-prevalence))
6925
6926 (define-public sbcl-series
6927 (let ((commit "da9061b336119d1e5214aff9117171d494d5a58a")
6928 (revision "1"))
6929 (package
6930 (name "sbcl-series")
6931 (version (git-version "2.2.11" revision commit))
6932 (source
6933 (origin
6934 (method git-fetch)
6935 (uri (git-reference
6936 (url "git://git.code.sf.net/p/series/series")
6937 (commit commit)))
6938 (file-name (git-file-name name version))
6939 (sha256
6940 (base32
6941 "07hk2lhfx42zk018pxqvn4gs77vd4n4g8m4xxbqaxgca76mifwfw"))))
6942 (build-system asdf-build-system/sbcl)
6943 (arguments
6944 ;; Disable the tests, they are apparently buggy and I didn't find
6945 ;; a simple way to make them run and pass.
6946 '(#:tests? #f))
6947 (synopsis "Series data structure for Common Lisp")
6948 (description
6949 "This Common Lisp library provides a series data structure much like
6950 a sequence, with similar kinds of operations. The difference is that in many
6951 situations, operations on series may be composed functionally and yet execute
6952 iteratively, without the need to construct intermediate series values
6953 explicitly. In this manner, series provide both the clarity of a functional
6954 programming style and the efficiency of an iterative programming style.")
6955 (home-page "http://series.sourceforge.net/")
6956 (license license:expat))))
6957
6958 (define-public cl-series
6959 (sbcl-package->cl-source-package sbcl-series))
6960
6961 (define-public ecl-series
6962 (sbcl-package->ecl-package sbcl-series))
6963
6964 (define-public sbcl-periods
6965 (let ((commit "983d4a57325db3c8def942f163133cec5391ec28")
6966 (revision "1"))
6967 (package
6968 (name "sbcl-periods")
6969 (version (git-version "0.0.2" revision commit))
6970 (source
6971 (origin
6972 (method git-fetch)
6973 (uri (git-reference
6974 (url "https://github.com/jwiegley/periods.git")
6975 (commit commit)))
6976 (file-name (git-file-name name version))
6977 (sha256
6978 (base32
6979 "0z30jr3lxz3cmi019fsl4lgcgwf0yqpn95v9zkkkwgymdrkd4lga"))))
6980 (build-system asdf-build-system/sbcl)
6981 (inputs
6982 `(("local-time" ,sbcl-local-time)))
6983 (synopsis "Common Lisp library for manipulating date/time objects")
6984 (description
6985 "Periods is a Common Lisp library providing a set of utilities for
6986 manipulating times, distances between times, and both contiguous and
6987 discontiguous ranges of time.")
6988 (home-page "https://github.com/jwiegley/periods")
6989 (license license:bsd-3))))
6990
6991 (define-public cl-periods
6992 (sbcl-package->cl-source-package sbcl-periods))
6993
6994 (define-public ecl-periods
6995 (sbcl-package->ecl-package sbcl-periods))
6996
6997 (define-public sbcl-periods-series
6998 (package
6999 (inherit sbcl-periods)
7000 (name "sbcl-periods-series")
7001 (inputs
7002 `(("periods" ,sbcl-periods)
7003 ("series" ,sbcl-series)))
7004 (arguments
7005 '(#:asd-file "periods-series.asd"
7006 #:asd-system-name "periods-series"))
7007 (description
7008 "Periods-series is an extension of the periods Common Lisp library
7009 providing functions compatible with the series Common Lisp library.")))
7010
7011 (define-public cl-periods-series
7012 (sbcl-package->cl-source-package sbcl-periods-series))
7013
7014 (define-public ecl-periods-series
7015 (sbcl-package->ecl-package sbcl-periods-series))
7016
7017 (define-public sbcl-metatilities-base
7018 (let ((commit "6eaa9e3ff0939a93a92109dd0fcd218de85417d5")
7019 (revision "1"))
7020 (package
7021 (name "sbcl-metatilities-base")
7022 (version (git-version "0.6.6" revision commit))
7023 (source
7024 (origin
7025 (method git-fetch)
7026 (uri (git-reference
7027 (url "https://github.com/gwkkwg/metatilities-base.git")
7028 (commit commit)))
7029 (file-name (git-file-name name version))
7030 (sha256
7031 (base32
7032 "0xpa86pdzlnf4v5g64j3ifaplx71sx2ha8b7vvakswi652679ma0"))))
7033 (build-system asdf-build-system/sbcl)
7034 (native-inputs
7035 `(("lift" ,sbcl-lift)))
7036 (synopsis "Core of the metatilities Common Lisp library")
7037 (description
7038 "Metatilities-base is the core of the metatilities Common Lisp library
7039 which implements a set of utilities.")
7040 (home-page "https://common-lisp.net/project/metatilities-base/")
7041 (license license:expat))))
7042
7043 (define-public cl-metatilities-base
7044 (sbcl-package->cl-source-package sbcl-metatilities-base))
7045
7046 (define-public ecl-metatilities-base
7047 (sbcl-package->ecl-package sbcl-metatilities-base))
7048
7049 (define-public sbcl-cl-containers
7050 (let ((commit "810927e19d933bcf38ffeb7a23ce521efc432d45")
7051 (revision "1"))
7052 (package
7053 (name "sbcl-cl-containers")
7054 (version (git-version "0.12.1" revision commit))
7055 (source
7056 (origin
7057 (method git-fetch)
7058 (uri (git-reference
7059 (url "https://github.com/gwkkwg/cl-containers.git")
7060 (commit commit)))
7061 (file-name (git-file-name name version))
7062 (sha256
7063 (base32
7064 "1s9faxw7svhbjpkhfrz2qxgjm3cvyjb8wpyb4m8dx4i5g7vvprkv"))))
7065 (build-system asdf-build-system/sbcl)
7066 (native-inputs
7067 `(("lift" ,sbcl-lift)))
7068 (inputs
7069 `(("metatilities-base" ,sbcl-metatilities-base)))
7070 (arguments
7071 '(#:phases
7072 (modify-phases %standard-phases
7073 (add-after 'unpack 'relax-version-checks
7074 (lambda _
7075 (substitute* "cl-containers.asd"
7076 (("\\(:version \"metatilities-base\" \"0\\.6\\.6\"\\)")
7077 "\"metatilities-base\""))
7078 (substitute* "cl-containers-test.asd"
7079 (("\\(:version \"lift\" \"1\\.7\\.0\"\\)")
7080 "\"lift\""))
7081 #t)))))
7082 (synopsis "Container library for Common Lisp")
7083 (description
7084 "Common Lisp ships with a set of powerful built in data structures
7085 including the venerable list, full featured arrays, and hash-tables.
7086 CL-containers enhances and builds on these structures by adding containers
7087 that are not available in native Lisp (for example: binary search trees,
7088 red-black trees, sparse arrays and so on), and by providing a standard
7089 interface so that they are simpler to use and so that changing design
7090 decisions becomes significantly easier.")
7091 (home-page "https://common-lisp.net/project/cl-containers/")
7092 (license license:expat))))
7093
7094 (define-public cl-containers
7095 (sbcl-package->cl-source-package sbcl-cl-containers))
7096
7097 (define-public ecl-cl-containers
7098 (sbcl-package->ecl-package sbcl-cl-containers))
7099
7100 (define-public sbcl-xlunit
7101 (let ((commit "3805d34b1d8dc77f7e0ee527a2490194292dd0fc")
7102 (revision "1"))
7103 (package
7104 (name "sbcl-xlunit")
7105 (version (git-version "0.6.3" revision commit))
7106 (source
7107 (origin
7108 (method git-fetch)
7109 (uri (git-reference
7110 (url "http://git.kpe.io/xlunit.git")
7111 (commit commit)))
7112 (file-name (git-file-name name version))
7113 (sha256
7114 (base32
7115 "0argfmp9nghs4sihyj3f8ch9qfib2b7ll07v5m9ziajgzsfl5xw3"))))
7116 (build-system asdf-build-system/sbcl)
7117 (arguments
7118 '(#:phases
7119 (modify-phases %standard-phases
7120 (add-after 'unpack 'fix-tests
7121 (lambda _
7122 (substitute* "xlunit.asd"
7123 ((" :force t") ""))
7124 #t)))))
7125 (synopsis "Unit testing package for Common Lisp")
7126 (description
7127 "The XLUnit package is a toolkit for building test suites. It is based
7128 on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
7129 (home-page "http://quickdocs.org/xlunit/")
7130 (license license:bsd-3))))
7131
7132 (define-public cl-xlunit
7133 (sbcl-package->cl-source-package sbcl-xlunit))
7134
7135 (define-public ecl-xlunit
7136 (sbcl-package->ecl-package sbcl-xlunit))
7137
7138 (define-public sbcl-fprog
7139 (let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
7140 (revision "1"))
7141 (package
7142 (name "sbcl-fprog")
7143 (version (git-version "1.0.0" revision commit))
7144 (source
7145 (origin
7146 (method git-fetch)
7147 (uri (git-reference
7148 (url "https://github.com/jwiegley/cambl.git")
7149 (commit commit)))
7150 (file-name (git-file-name name version))
7151 (sha256
7152 (base32
7153 "103mry04j2k9vznsxm7wcvccgxkil92cdrv52miwcmxl8daa4jiz"))))
7154 (build-system asdf-build-system/sbcl)
7155 (synopsis "Functional programming utilities for Common Lisp")
7156 (description
7157 "@code{fprog} is a Common Lisp library allowing iteration over
7158 immutable lists sharing identical sublists.")
7159 (home-page "https://github.com/jwiegley/cambl")
7160 (license license:bsd-3))))
7161
7162 (define-public cl-fprog
7163 (sbcl-package->cl-source-package sbcl-fprog))
7164
7165 (define-public ecl-fprog
7166 (sbcl-package->ecl-package sbcl-fprog))
7167
7168 (define-public sbcl-cambl
7169 (let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
7170 (revision "1"))
7171 (package
7172 (inherit sbcl-fprog)
7173 (name "sbcl-cambl")
7174 (version (git-version "4.0.0" revision commit))
7175 (native-inputs
7176 `(("xlunit" ,sbcl-xlunit)))
7177 (inputs
7178 `(("alexandria" ,sbcl-alexandria)
7179 ("cl-containers" ,sbcl-cl-containers)
7180 ("local-time" ,sbcl-local-time)
7181 ("periods" ,sbcl-periods)
7182 ("fprog" ,sbcl-fprog)))
7183 (synopsis "Commoditized amounts and balances for Common Lisp")
7184 (description
7185 "CAMBL is a Common Lisp library providing a convenient facility for
7186 working with commoditized values. It does not allow compound units (and so is
7187 not suited for scientific operations) but does work rather nicely for the
7188 purpose of financial calculations."))))
7189
7190 (define-public cl-cambl
7191 (sbcl-package->cl-source-package sbcl-cambl))
7192
7193 (define-public ecl-cambl
7194 (sbcl-package->ecl-package sbcl-cambl))
7195
7196 (define-public sbcl-cl-ledger
7197 (let ((commit "08e0be41795e804cd36142e51756ad0b1caa377b")
7198 (revision "1"))
7199 (package
7200 (name "sbcl-cl-ledger")
7201 (version (git-version "4.0.0" revision commit))
7202 (source
7203 (origin
7204 (method git-fetch)
7205 (uri (git-reference
7206 (url "https://github.com/ledger/cl-ledger.git")
7207 (commit commit)))
7208 (file-name (git-file-name name version))
7209 (sha256
7210 (base32
7211 "1via0qf6wjcyxnfbmfxjvms0ik9j8rqbifgpmnhrzvkhrq9pv8h1"))))
7212 (build-system asdf-build-system/sbcl)
7213 (inputs
7214 `(("cambl" ,sbcl-cambl)
7215 ("cl-ppcre" ,sbcl-cl-ppcre)
7216 ("local-time" ,sbcl-local-time)
7217 ("periods-series" ,sbcl-periods-series)))
7218 (arguments
7219 '(#:phases
7220 (modify-phases %standard-phases
7221 (add-after 'unpack 'fix-system-definition
7222 (lambda _
7223 (substitute* "cl-ledger.asd"
7224 ((" :build-operation program-op") "")
7225 ((" :build-pathname \"cl-ledger\"") "")
7226 ((" :entry-point \"ledger::main\"") ""))
7227 #t)))))
7228 (synopsis "Common Lisp port of the Ledger accounting system")
7229 (description
7230 "CL-Ledger is a Common Lisp port of the Ledger double-entry accounting
7231 system.")
7232 (home-page "https://github.com/ledger/cl-ledger")
7233 (license license:bsd-3))))
7234
7235 (define-public cl-ledger
7236 (sbcl-package->cl-source-package sbcl-cl-ledger))
7237
7238 (define-public ecl-cl-ledger
7239 (sbcl-package->ecl-package sbcl-cl-ledger))
7240
7241 (define-public sbcl-bst
7242 (let ((commit "34f9c7e8e0a9f2c952fe310ab36cb630d5d9c15a")
7243 (revision "1"))
7244 (package
7245 (name "sbcl-bst")
7246 (version (git-version "1.1" revision commit))
7247 (source
7248 (origin
7249 (method git-fetch)
7250 (uri (git-reference
7251 (url "https://github.com/glv2/bst.git")
7252 (commit commit)))
7253 (file-name (git-file-name name version))
7254 (sha256
7255 (base32
7256 "1amxns7hvvh4arwbh8ciwfzplg127vh37dnbamv1m1kmmnmihfc8"))))
7257 (build-system asdf-build-system/sbcl)
7258 (native-inputs
7259 `(("alexandria" ,sbcl-alexandria)
7260 ("fiveam" ,sbcl-fiveam)))
7261 (synopsis "Binary search tree for Common Lisp")
7262 (description
7263 "BST is a Common Lisp library for working with binary search trees that
7264 can contain any kind of values.")
7265 (home-page "https://github.com/glv2/bst")
7266 (license license:gpl3))))
7267
7268 (define-public cl-bst
7269 (sbcl-package->cl-source-package sbcl-bst))
7270
7271 (define-public ecl-bst
7272 (sbcl-package->ecl-package sbcl-bst))
7273
7274 (define-public sbcl-cl-octet-streams
7275 (package
7276 (name "sbcl-cl-octet-streams")
7277 (version "1.0")
7278 (source
7279 (origin
7280 (method git-fetch)
7281 (uri (git-reference
7282 (url "https://github.com/glv2/cl-octet-streams.git")
7283 (commit (string-append "v" version))))
7284 (file-name (git-file-name name version))
7285 (sha256
7286 (base32
7287 "1d7mn6ydv0j2x4r7clpc9ijjwrnfpxmvhifv8n5j7jh7s744sf8d"))))
7288 (build-system asdf-build-system/sbcl)
7289 (native-inputs
7290 `(("fiveam" ,sbcl-fiveam)))
7291 (inputs
7292 `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
7293 (synopsis "In-memory octet streams for Common Lisp")
7294 (description
7295 "CL-octet-streams is a library implementing in-memory octet
7296 streams for Common Lisp. It was inspired by the trivial-octet-streams and
7297 cl-plumbing libraries.")
7298 (home-page "https://github.com/glv2/cl-octet-streams")
7299 (license license:gpl3+)))
7300
7301 (define-public cl-octet-streams
7302 (sbcl-package->cl-source-package sbcl-cl-octet-streams))
7303
7304 (define-public ecl-cl-octet-streams
7305 (sbcl-package->ecl-package sbcl-cl-octet-streams))
7306
7307 (define-public sbcl-lzlib
7308 (let ((commit "0de1db7129fef9a58a059d35a2fa2ecfc5b47b47")
7309 (revision "1"))
7310 (package
7311 (name "sbcl-lzlib")
7312 (version (git-version "1.0" revision commit))
7313 (source
7314 (origin
7315 (method git-fetch)
7316 (uri (git-reference
7317 (url "https://github.com/glv2/cl-lzlib.git")
7318 (commit commit)))
7319 (file-name (git-file-name name version))
7320 (sha256
7321 (base32
7322 "12ny7vj52fgnd8hb8fc8mry92vq4c1x72x2350191m4476j95clz"))))
7323 (build-system asdf-build-system/sbcl)
7324 (native-inputs
7325 `(("fiveam" ,sbcl-fiveam)))
7326 (inputs
7327 `(("cffi" ,sbcl-cffi)
7328 ("cl-octet-streams" ,sbcl-cl-octet-streams)
7329 ("lzlib" ,lzlib)))
7330 (arguments
7331 '(#:phases
7332 (modify-phases %standard-phases
7333 (add-after 'unpack 'fix-paths
7334 (lambda* (#:key inputs #:allow-other-keys)
7335 (substitute* "src/lzlib.lisp"
7336 (("liblz\\.so")
7337 (string-append (assoc-ref inputs "lzlib") "/lib/liblz.so")))
7338 #t)))))
7339 (synopsis "Common Lisp library for lzip (de)compression")
7340 (description
7341 "This Common Lisp library provides functions for lzip (LZMA)
7342 compression/decompression using bindings to the lzlib C library.")
7343 (home-page "https://github.com/glv2/cl-lzlib")
7344 (license license:gpl3+))))
7345
7346 (define-public cl-lzlib
7347 (sbcl-package->cl-source-package sbcl-lzlib))
7348
7349 (define-public ecl-lzlib
7350 (sbcl-package->ecl-package sbcl-lzlib))
7351
7352 (define-public sbcl-chanl
7353 (let ((commit "2362b57550c2c9238cc882d03553aaa1040b7340")
7354 (revision "0"))
7355 (package
7356 (name "sbcl-chanl")
7357 (version (git-version "0.4.1" revision commit))
7358 (source
7359 (origin
7360 (method git-fetch)
7361 (uri (git-reference
7362 (url "https://github.com/zkat/chanl.git")
7363 (commit commit)))
7364 (file-name (git-file-name name version))
7365 (sha256
7366 (base32
7367 "0ag3wz7yrqwp0s5069wwda98z3rrqd25spg8sa8rdqghj084w28w"))))
7368 (build-system asdf-build-system/sbcl)
7369 (native-inputs
7370 `(("fiveam" ,sbcl-fiveam)))
7371 (inputs
7372 `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
7373 (synopsis "Portable channel-based concurrency for Common Lisp")
7374 (description "Common Lisp library for channel-based concurrency. In
7375 a nutshell, you create various threads sequentially executing tasks you need
7376 done, and use channel objects to communicate and synchronize the state of these
7377 threads.")
7378 (home-page "https://github.com/zkat/chanl")
7379 (license (list license:expat license:bsd-3)))))
7380
7381 (define-public cl-chanl
7382 (sbcl-package->cl-source-package sbcl-chanl))
7383
7384 (define-public ecl-chanl
7385 (let ((base (sbcl-package->ecl-package sbcl-chanl)))
7386 (package
7387 (inherit base)
7388 (arguments
7389 (substitute-keyword-arguments (package-arguments base)
7390 ;; The CHANL.ACTORS package uses the :ARGUMENTS option of
7391 ;; DEFINE-METHOD-COMBINATION, which is not implemented in ECL yet
7392 ;; (see https://gitlab.com/embeddable-common-lisp/ecl/issues/305).
7393 ;; So let's disable it for now, as it allows compiling the library
7394 ;; and using the rest of it.
7395 ((#:phases phases '%standard-phases)
7396 `(modify-phases ,phases
7397 (add-after 'unpack 'disable-chanl-actors
7398 (lambda _
7399 (substitute* "chanl.asd"
7400 (("\\(:file \"actors\"\\)") ""))
7401 #t))))
7402 ;; Disable the tests for now, as the SEND-SEQUENCE test seems to
7403 ;; never end.
7404 ((#:tests? _ #f) #f))))))