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