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