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