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