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