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