gnu: sbcl-trivial-backtrace: Name checkout.
[jackhill/guix/guix.git] / gnu / packages / lisp.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
3 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
4 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
5 ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
6 ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
7 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
8 ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
9 ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
10 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
11 ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
12 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
13 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
14 ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
15 ;;; Copyright © 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
16 ;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
17 ;;;
18 ;;; This file is part of GNU Guix.
19 ;;;
20 ;;; GNU Guix is free software; you can redistribute it and/or modify it
21 ;;; under the terms of the GNU General Public License as published by
22 ;;; the Free Software Foundation; either version 3 of the License, or (at
23 ;;; your option) any later version.
24 ;;;
25 ;;; GNU Guix is distributed in the hope that it will be useful, but
26 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 ;;; GNU General Public License for more details.
29 ;;;
30 ;;; You should have received a copy of the GNU General Public License
31 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
32
33 (define-module (gnu packages lisp)
34 #:use-module (gnu packages)
35 #:use-module ((guix licenses) #:prefix license:)
36 #:use-module (guix packages)
37 #:use-module (guix download)
38 #:use-module (guix git-download)
39 #:use-module (guix hg-download)
40 #:use-module (guix utils)
41 #:use-module (guix build-system gnu)
42 #:use-module (guix build-system ant)
43 #:use-module (guix build-system asdf)
44 #:use-module (guix build-system trivial)
45 #:use-module (gnu packages admin)
46 #:use-module (gnu packages base)
47 #:use-module (gnu packages bdw-gc)
48 #:use-module (gnu packages compression)
49 #:use-module (gnu packages ed)
50 #:use-module (gnu packages fontutils)
51 #:use-module (gnu packages gcc)
52 #:use-module (gnu packages gettext)
53 #:use-module (gnu packages gl)
54 #:use-module (gnu packages glib)
55 #:use-module (gnu packages m4)
56 #:use-module (gnu packages maths)
57 #:use-module (gnu packages multiprecision)
58 #:use-module (gnu packages ncurses)
59 #:use-module (gnu packages libffcall)
60 #:use-module (gnu packages libffi)
61 #:use-module (gnu packages libsigsegv)
62 #:use-module (gnu packages linux)
63 #:use-module (gnu packages perl)
64 #:use-module (gnu packages pkg-config)
65 #:use-module (gnu packages readline)
66 #:use-module (gnu packages sdl)
67 #:use-module (gnu packages sqlite)
68 #:use-module (gnu packages tex)
69 #:use-module (gnu packages texinfo)
70 #:use-module (gnu packages tls)
71 #:use-module (gnu packages version-control)
72 #:use-module (gnu packages xorg)
73 #:use-module (gnu packages databases)
74 #:use-module (gnu packages gtk)
75 #:use-module (gnu packages webkit)
76 #:use-module (gnu packages xdisorg)
77 #:use-module (ice-9 match)
78 #:use-module (srfi srfi-19))
79
80 (define (asdf-substitutions lisp)
81 ;; Prepend XDG_DATA_DIRS/LISP-bundle-systems to ASDF's
82 ;; 'default-system-source-registry'.
83 `((("\\(,dir \"systems/\"\\)\\)")
84 (format #f
85 "(,dir \"~a-bundle-systems\")))
86
87 ,@(loop :for dir :in (xdg-data-dirs \"common-lisp/\")
88 :collect `(:directory (,dir \"systems\"))"
89 ,lisp))))
90
91 (define-public gcl
92 (let ((commit "d3335e2b3deb63f930eb0328e9b05377744c9512")
93 (revision "2")) ;Guix package revision
94 (package
95 (name "gcl")
96 (version (string-append "2.6.12-" revision "."
97 (string-take commit 7)))
98 (source
99 (origin
100 (method git-fetch)
101 (uri (git-reference
102 (url "https://git.savannah.gnu.org/r/gcl.git")
103 (commit commit)))
104 (file-name (string-append "gcl-" version "-checkout"))
105 (sha256
106 (base32 "05v86lhvsby05nzvcd3c4k0wljvgdgd0i6arzd2fx1yd67dl6fgj"))))
107 (build-system gnu-build-system)
108 (arguments
109 `(#:parallel-build? #f ; The build system seems not to be thread safe.
110 #:tests? #f ; There does not seem to be make check or anything similar.
111 #:configure-flags '("--enable-ansi") ; required for use by the maxima package
112 #:make-flags (list
113 (string-append "GCL_CC=" (assoc-ref %build-inputs "gcc")
114 "/bin/gcc")
115 (string-append "CC=" (assoc-ref %build-inputs "gcc")
116 "/bin/gcc"))
117 #:phases
118 (modify-phases %standard-phases
119 (add-before 'configure 'pre-conf
120 (lambda* (#:key inputs #:allow-other-keys)
121 (chdir "gcl")
122 (substitute*
123 (append
124 '("pcl/impl/kcl/makefile.akcl"
125 "add-defs"
126 "unixport/makefile.dos"
127 "add-defs.bat"
128 "gcl-tk/makefile.prev"
129 "add-defs1")
130 (find-files "h" "\\.defs"))
131 (("SHELL=/bin/bash")
132 (string-append "SHELL=" (which "bash")))
133 (("SHELL=/bin/sh")
134 (string-append "SHELL=" (which "sh"))))
135 (substitute* "h/linux.defs"
136 (("#CC") "CC")
137 (("-fwritable-strings") "")
138 (("-Werror") ""))
139 (substitute* "lsp/gcl_top.lsp"
140 (("\"cc\"")
141 (string-append "\"" (assoc-ref %build-inputs "gcc")
142 "/bin/gcc\""))
143 (("\\(or \\(get-path \\*cc\\*\\) \\*cc\\*\\)") "*cc*")
144 (("\"ld\"")
145 (string-append "\"" (assoc-ref %build-inputs "binutils")
146 "/bin/ld\""))
147 (("\\(or \\(get-path \\*ld\\*\\) \\*ld\\*\\)") "*ld*")
148 (("\\(get-path \"objdump --source \"\\)")
149 (string-append "\"" (assoc-ref %build-inputs "binutils")
150 "/bin/objdump --source \"")))
151 #t))
152 (add-after 'install 'wrap
153 (lambda* (#:key inputs outputs #:allow-other-keys)
154 (let* ((gcl (assoc-ref outputs "out"))
155 (input-path (lambda (lib path)
156 (string-append
157 (assoc-ref inputs lib) path)))
158 (binaries '("binutils")))
159 ;; GCC and the GNU binutils are necessary for GCL to be
160 ;; able to compile Lisp functions and programs (this is
161 ;; a standard feature in Common Lisp). While the
162 ;; the location of GCC is specified in the make-flags,
163 ;; the GNU binutils must be available in GCL's $PATH.
164 (wrap-program (string-append gcl "/bin/gcl")
165 `("PATH" prefix ,(map (lambda (binary)
166 (input-path binary "/bin"))
167 binaries))))
168 #t))
169 ;; drop strip phase to make maxima build, see
170 ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html
171 (delete 'strip))))
172 (inputs
173 `(("gmp" ,gmp)
174 ("readline" ,readline)))
175 (native-inputs
176 `(("m4" ,m4)
177 ("texinfo" ,texinfo)))
178 (home-page "https://www.gnu.org/software/gcl/")
179 (synopsis "A Common Lisp implementation")
180 (description "GCL is an implementation of the Common Lisp language. It
181 features the ability to compile to native object code and to load native
182 object code modules directly into its lisp core. It also features a
183 stratified garbage collection strategy, a source-level debugger and a built-in
184 interface to the Tk widget system.")
185 (license license:lgpl2.0+))))
186
187 (define-public ecl
188 (package
189 (name "ecl")
190 (version "16.1.3")
191 (source
192 (origin
193 (method url-fetch)
194 (uri (string-append
195 "https://common-lisp.net/project/ecl/static/files/release/"
196 name "-" version ".tgz"))
197 (sha256
198 (base32 "0m0j24w5d5a9dwwqyrg0d35c0nys16ijb4r0nyk87yp82v38b9bn"))
199 (modules '((guix build utils)))
200 (snippet
201 ;; Add ecl-bundle-systems to 'default-system-source-registry'.
202 `(begin
203 (substitute* "contrib/asdf/asdf.lisp"
204 ,@(asdf-substitutions name))
205 #t))))
206 (build-system gnu-build-system)
207 ;; src/configure uses 'which' to confirm the existence of 'gzip'.
208 (native-inputs `(("which" ,which)))
209 (inputs `(("gmp" ,gmp)
210 ("libatomic-ops" ,libatomic-ops)
211 ("libgc" ,libgc)
212 ("libffi" ,libffi)))
213 (arguments
214 '(#:tests? #t
215 #:parallel-tests? #f
216 #:phases
217 (modify-phases %standard-phases
218 (delete 'check)
219 (add-after 'install 'wrap
220 (lambda* (#:key inputs outputs #:allow-other-keys)
221 (let* ((ecl (assoc-ref outputs "out"))
222 (input-path (lambda (lib path)
223 (string-append
224 (assoc-ref inputs lib) path)))
225 (libraries '("gmp" "libatomic-ops" "libgc" "libffi" "libc"))
226 (binaries '("gcc" "ld-wrapper" "binutils"))
227 (library-directories
228 (map (lambda (lib) (input-path lib "/lib"))
229 libraries)))
230
231 (wrap-program (string-append ecl "/bin/ecl")
232 `("PATH" prefix
233 ,(map (lambda (binary)
234 (input-path binary "/bin"))
235 binaries))
236 `("CPATH" suffix
237 ,(map (lambda (lib)
238 (input-path lib "/include"))
239 `("kernel-headers" ,@libraries)))
240 `("LIBRARY_PATH" suffix ,library-directories)
241 `("LD_LIBRARY_PATH" suffix ,library-directories)))))
242 (add-after 'wrap 'check (assoc-ref %standard-phases 'check))
243 (add-before 'check 'fix-path-to-ecl
244 (lambda _
245 (substitute* "build/tests/Makefile"
246 (("\\$\\{exec_prefix\\}/") ""))
247 #t)))))
248 (native-search-paths
249 (list (search-path-specification
250 (variable "XDG_DATA_DIRS")
251 (files '("share")))))
252 (home-page "http://ecls.sourceforge.net/")
253 (synopsis "Embeddable Common Lisp")
254 (description "ECL is an implementation of the Common Lisp language as
255 defined by the ANSI X3J13 specification. Its most relevant features are: a
256 bytecode compiler and interpreter, being able to compile Common Lisp with any
257 C/C++ compiler, being able to build standalone executables and libraries, and
258 supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
259 ;; Note that the file "Copyright" points to some files and directories
260 ;; which aren't under the lgpl2.0+ and instead contain many different,
261 ;; non-copyleft licenses.
262 (license license:lgpl2.0+)))
263
264 (define-public clisp
265 (package
266 (name "clisp")
267 (version "2.49-92")
268 (source
269 (origin
270 (method git-fetch)
271 (uri (git-reference
272 (url "https://gitlab.com/gnu-clisp/clisp")
273 (commit "clisp-2.49.92-2018-02-18")))
274 (file-name (git-file-name name version))
275 (sha256
276 (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))
277 (patches (search-patches "clisp-remove-failing-test.patch"))))
278 (build-system gnu-build-system)
279 (inputs `(("libffcall" ,libffcall)
280 ("ncurses" ,ncurses)
281 ("readline" ,readline)
282 ("libsigsegv" ,libsigsegv)))
283 (arguments
284 `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"
285 (or (%current-system)
286 (%current-target-system)))
287 '("CFLAGS=-falign-functions=4")
288 '())
289 "--with-dynamic-ffi"
290 "--with-dynamic-modules"
291 "--with-module=rawsock")
292 #:build #f
293 #:phases
294 (modify-phases %standard-phases
295 (add-after 'unpack 'patch-sh-and-pwd
296 (lambda _
297 ;; The package is very messy with its references to "/bin/sh" and
298 ;; some other absolute paths to traditional tools. These appear in
299 ;; many places where our automatic patching misses them. Therefore
300 ;; we do the following, in this early (post-unpack) phase, to solve
301 ;; the problem from its root.
302 (substitute* '("src/clisp-link.in"
303 "src/unix.d"
304 "src/makemake.in")
305 (("/bin/sh") (which "sh")))
306 (substitute* (find-files "." "configure|Makefile")
307 (("/bin/sh") "sh"))
308 (substitute* '("src/clisp-link.in")
309 (("/bin/pwd") "pwd"))
310 #t)))
311 ;; Makefiles seem to have race conditions.
312 #:parallel-build? #f))
313 (home-page "https://clisp.sourceforge.io/")
314 (synopsis "A Common Lisp implementation")
315 (description
316 "GNU CLISP is an implementation of ANSI Common Lisp. Common Lisp is a
317 high-level, object-oriented functional programming language. CLISP includes
318 an interpreter, a compiler, a debugger, and much more.")
319 (license license:gpl2+)))
320
321 (define-public sbcl
322 (package
323 (name "sbcl")
324 (version "1.5.1")
325 (source
326 (origin
327 (method url-fetch)
328 (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
329 version "-source.tar.bz2"))
330 (sha256
331 (base32 "08z62qba0kmm15k93s2rq7ipi769895g8iwigcp20qjh6amwnwph"))
332 (modules '((guix build utils)))
333 (snippet
334 ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
335 `(begin
336 (substitute* "contrib/asdf/asdf.lisp"
337 ,@(asdf-substitutions name))
338 #t))))
339 (build-system gnu-build-system)
340 (outputs '("out" "doc"))
341 (native-inputs
342 ;; From INSTALL:
343 ;; Supported build hosts are:
344 ;; SBCL
345 ;; CMUCL
346 ;; CCL (formerly known as OpenMCL)
347 ;; ABCL (recent versions only)
348 ;; CLISP (only some versions: 2.44.1 is OK, 2.47 is not)
349 ;; XCL
350 ;; CCL seems ideal then, but it unfortunately only builds reliably
351 ;; on some architectures.
352 `(,@(match (%current-system)
353 ((or "x86_64-linux" "i686-linux")
354 `(("ccl" ,ccl)))
355 (_
356 `(("clisp" ,clisp))))
357 ("which" ,which)
358 ("inetutils" ,inetutils) ;for hostname(1)
359 ("ed" ,ed)
360 ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
361 ("texinfo" ,texinfo)))
362 (arguments
363 `(#:modules ((guix build gnu-build-system)
364 (guix build utils)
365 (srfi srfi-1))
366 #:phases
367 (modify-phases %standard-phases
368 (delete 'configure)
369 (add-before 'build 'patch-unix-tool-paths
370 (lambda* (#:key outputs inputs #:allow-other-keys)
371 (let ((out (assoc-ref outputs "out"))
372 (bash (assoc-ref inputs "bash"))
373 (coreutils (assoc-ref inputs "coreutils"))
374 (ed (assoc-ref inputs "ed")))
375 (define (quoted-path input path)
376 (string-append "\"" input path "\""))
377 ;; Patch absolute paths in string literals. Note that this
378 ;; occurs in some .sh files too (which contain Lisp code). Use
379 ;; ISO-8859-1 because some of the files are ISO-8859-1 encoded.
380 (with-fluids ((%default-port-encoding #f))
381 ;; The removed file is utf-16-be encoded, which gives substitute*
382 ;; trouble. It does not contain references to the listed programs.
383 (substitute* (delete
384 "./tests/data/compile-file-pos-utf16be.lisp"
385 (find-files "." "\\.(lisp|sh)$"))
386 (("\"/bin/sh\"") (quoted-path bash "/bin/sh"))
387 (("\"/usr/bin/env\"") (quoted-path coreutils "/usr/bin/env"))
388 (("\"/bin/cat\"") (quoted-path coreutils "/bin/cat"))
389 (("\"/bin/ed\"") (quoted-path ed "/bin/ed"))
390 (("\"/bin/echo\"") (quoted-path coreutils "/bin/echo"))
391 (("\"/bin/uname\"") (quoted-path coreutils "/bin/uname"))))
392 ;; This one script has a non-string occurrence of /bin/sh.
393 (substitute* '("tests/foreign.test.sh")
394 ;; Leave whitespace so we don't match the shebang.
395 ((" /bin/sh ") " sh "))
396 ;; This file contains a module that can create executable files
397 ;; which depend on the presence of SBCL. It generates shell
398 ;; scripts doing "exec sbcl ..." to achieve this. We patch both
399 ;; the shebang and the reference to "sbcl", tying the generated
400 ;; executables to the exact SBCL package that generated them.
401 (substitute* '("contrib/sb-executable/sb-executable.lisp")
402 (("/bin/sh") (string-append bash "/bin/sh"))
403 (("exec sbcl") (string-append "exec " out "/bin/sbcl")))
404 ;; Disable some tests that fail in our build environment.
405 (substitute* '("contrib/sb-bsd-sockets/tests.lisp")
406 ;; This requires /etc/protocols.
407 (("\\(deftest get-protocol-by-name/error" all)
408 (string-append "#+nil ;disabled by Guix\n" all)))
409 (substitute* '("contrib/sb-posix/posix-tests.lisp")
410 ;; These assume some users/groups which we don't have.
411 (("\\(deftest pwent\\.[12]" all)
412 (string-append "#+nil ;disabled by Guix\n" all))
413 (("\\(deftest grent\\.[12]" all)
414 (string-append "#+nil ;disabled by Guix\n" all))))))
415 ;; FIXME: the texlive-union insists on regenerating fonts. It stores
416 ;; them in HOME, so it needs to be writeable.
417 (add-before 'build 'set-HOME
418 (lambda _ (setenv "HOME" "/tmp") #t))
419 (replace 'build
420 (lambda* (#:key outputs #:allow-other-keys)
421 (setenv "CC" "gcc")
422 (invoke "sh" "make.sh" ,@(match (%current-system)
423 ((or "x86_64-linux" "i686-linux")
424 `("ccl"))
425 (_
426 `("clisp")))
427 (string-append "--prefix="
428 (assoc-ref outputs "out")))))
429 (replace 'install
430 (lambda _
431 (invoke "sh" "install.sh")))
432 (add-after 'build 'build-doc
433 (lambda _
434 (with-directory-excursion "doc/manual"
435 (and (invoke "make" "info")
436 (invoke "make" "dist")))))
437 (add-after 'install 'install-doc
438 (lambda* (#:key outputs #:allow-other-keys)
439 (let* ((out (assoc-ref outputs "out"))
440 (doc (assoc-ref outputs "doc"))
441 (old-doc-dir (string-append out "/share/doc"))
442 (new-doc/sbcl-dir (string-append doc "/share/doc/sbcl")))
443 (rmdir (string-append old-doc-dir "/sbcl/html"))
444 (mkdir-p new-doc/sbcl-dir)
445 (copy-recursively (string-append old-doc-dir "/sbcl")
446 new-doc/sbcl-dir)
447 (delete-file-recursively old-doc-dir)
448 #t))))
449 ;; No 'check' target, though "make.sh" (build phase) runs tests.
450 #:tests? #f))
451 (native-search-paths
452 (list (search-path-specification
453 (variable "XDG_DATA_DIRS")
454 (files '("share")))))
455 (home-page "http://www.sbcl.org/")
456 (synopsis "Common Lisp implementation")
457 (description "Steel Bank Common Lisp (SBCL) is a high performance Common
458 Lisp compiler. In addition to the compiler and runtime system for ANSI Common
459 Lisp, it provides an interactive environment including a debugger, a
460 statistical profiler, a code coverage tool, and many other extensions.")
461 ;; Public domain in jurisdictions that allow it, bsd-2 otherwise. MIT
462 ;; loop macro has its own license. See COPYING file for further notes.
463 (license (list license:public-domain license:bsd-2
464 (license:x11-style "file://src/code/loop.lisp")))))
465
466 (define-public ccl
467 (package
468 (name "ccl")
469 (version "1.11.5")
470 (source #f)
471 (build-system gnu-build-system)
472 ;; CCL consists of a "lisp kernel" and "heap image", both of which are
473 ;; shipped in precompiled form in source tarballs. The former is a C
474 ;; program which we can rebuild from scratch, but the latter cannot be
475 ;; generated without an already working copy of CCL, and is platform
476 ;; dependent, so we need to fetch the correct tarball for the platform.
477 (inputs
478 `(("ccl"
479 ,(origin
480 (method url-fetch)
481 (uri (string-append
482 "https://github.com/Clozure/ccl/releases/download/v" version
483 "/ccl-" version "-"
484 (match (%current-system)
485 ((or "i686-linux" "x86_64-linux") "linuxx86")
486 ("armhf-linux" "linuxarm")
487 ;; Prevent errors when querying this package on unsupported
488 ;; platforms, e.g. when running "guix package --search="
489 (_ "UNSUPPORTED"))
490 ".tar.gz"))
491 (sha256
492 (base32
493 (match (%current-system)
494 ((or "i686-linux" "x86_64-linux")
495 "0hs1f3z7crgzvinpj990kv9gvbsipxvcvwbmk54n51nasvc5025q")
496 ("armhf-linux"
497 "0p0l1dzsygb6i1xxgbipjpxkn46xhq3jm41a34ga1qqp4x8lkr62")
498 (_ ""))))))))
499 (native-inputs
500 `(("m4" ,m4)
501 ("subversion" ,subversion)))
502 (arguments
503 `(#:tests? #f ;no 'check' target
504 #:modules ((srfi srfi-26)
505 (guix build utils)
506 (guix build gnu-build-system))
507 #:phases
508 (modify-phases %standard-phases
509 (replace 'unpack
510 (lambda* (#:key inputs #:allow-other-keys)
511 (invoke "tar" "xzvf" (assoc-ref inputs "ccl"))
512 (chdir "ccl")
513 #t))
514 (delete 'configure)
515 (add-before 'build 'pre-build
516 ;; Enter the source directory for the current platform's lisp
517 ;; kernel, and run 'make clean' to remove the precompiled one.
518 (lambda _
519 (substitute* "lisp-kernel/m4macros.m4"
520 (("/bin/pwd") (which "pwd")))
521 (chdir (string-append
522 "lisp-kernel/"
523 ,(match (or (%current-target-system) (%current-system))
524 ("i686-linux" "linuxx8632")
525 ("x86_64-linux" "linuxx8664")
526 ("armhf-linux" "linuxarm")
527 ;; Prevent errors when querying this package
528 ;; on unsupported platforms, e.g. when running
529 ;; "guix package --search="
530 (_ "UNSUPPORTED"))))
531 (substitute* '("Makefile")
532 (("/bin/rm") "rm"))
533 (setenv "CC" "gcc")
534 (invoke "make" "clean")))
535 ;; XXX Do we need to recompile the heap image as well for Guix?
536 ;; For now just use the one we already got in the tarball.
537 (replace 'install
538 (lambda* (#:key outputs inputs #:allow-other-keys)
539 ;; The lisp kernel built by running 'make' in lisp-kernel/$system
540 ;; is put back into the original directory, so go back. The heap
541 ;; image is there as well.
542 (chdir "../..")
543 (let* ((out (assoc-ref outputs "out"))
544 (libdir (string-append out "/lib/"))
545 (bindir (string-append out "/bin/"))
546 (wrapper (string-append bindir "ccl"))
547 (bash (assoc-ref inputs "bash"))
548 (kernel
549 ,(match (or (%current-target-system) (%current-system))
550 ("i686-linux" "lx86cl")
551 ("x86_64-linux" "lx86cl64")
552 ("armhf-linux" "armcl")
553 ;; Prevent errors when querying this package
554 ;; on unsupported platforms, e.g. when running
555 ;; "guix package --search="
556 (_ "UNSUPPORTED")))
557 (heap (string-append kernel ".image")))
558 (install-file kernel libdir)
559 (install-file heap libdir)
560
561 (let ((dirs '("lib" "library" "examples" "tools" "objc-bridge"
562 ,@(match (%current-system)
563 ("x86_64-linux"
564 '("x86-headers64"))
565 ("i686-linux"
566 '("x86-headers"))
567 (_ '())))))
568 (for-each copy-recursively
569 dirs
570 (map (cut string-append libdir <>) dirs)))
571
572 (mkdir-p bindir)
573 (with-output-to-file wrapper
574 (lambda ()
575 (display
576 (string-append
577 "#!" bash "/bin/sh\n"
578 "export CCL_DEFAULT_DIRECTORY=" libdir "\n"
579 "exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
580 (chmod wrapper #o755))
581 #t)))))
582 (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
583 (home-page "https://ccl.clozure.com/")
584 (synopsis "Common Lisp implementation")
585 (description "Clozure CL (often called CCL for short) is a Common Lisp
586 implementation featuring fast compilation speed, native threads, a precise,
587 generational, compacting garbage collector, and a convenient foreign-function
588 interface.")
589 ;; See file doc/LICENSE for clarifications it makes regarding how the LGPL
590 ;; applies to Lisp code according to them.
591 (license (list license:lgpl2.1
592 license:clarified-artistic)))) ;TRIVIAL-LDAP package
593
594 (define-public lush2
595 (package
596 (name "lush2")
597 (version "2.0.1")
598 (source
599 (origin
600 (method url-fetch)
601 (uri (string-append "mirror://sourceforge/lush/lush2/lush-"
602 version ".tar.gz"))
603 (modules '((guix build utils)))
604 (snippet
605 '(begin
606 (substitute* "src/unix.c"
607 (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
608 (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
609 (substitute* "src/main.c"
610 (("\" \\(built \" __DATE__ \"\\)\"") ""))
611 #t))
612 (sha256
613 (base32
614 "02pkfn3nqdkm9fm44911dbcz0v3r0l53vygj8xigl6id5g3iwi4k"))))
615 (build-system gnu-build-system)
616 (arguments
617 `(;; We have to add these LIBS so that they are found.
618 #:configure-flags (list "LIBS=-lz"
619 "X_EXTRA_LIBS=-lfontconfig"
620 "--with-x")
621 #:tests? #f)) ; No make check.
622 (native-inputs `(("intltool" ,intltool)))
623 (inputs
624 `(("alsa-lib" ,alsa-lib)
625 ("sdl" ,sdl)
626 ("sdl-image" ,sdl-image)
627 ("sdl-mixer" ,sdl-mixer)
628 ("sdl-net" ,sdl-net)
629 ("sdl-ttf" ,sdl-ttf)
630 ("lapack" ,lapack)
631 ("libxft" ,libxft)
632 ("fontconfig" ,fontconfig)
633 ("gsl" ,gsl)
634 ("openblas" ,openblas)
635 ("glu" ,glu)
636 ("mesa" ,mesa)
637 ("mesa-utils" ,mesa-utils)
638 ("binutils" ,binutils)
639 ("libiberty" ,libiberty)
640 ("readline" ,readline)
641 ("zlib" ,zlib)
642 ("gettext-minimal" ,gettext-minimal)))
643 (synopsis "Lisp Universal Shell")
644 (description
645 "Lush is an object-oriented Lisp interpreter/compiler with features
646 designed to please people who want to prototype large numerical
647 applications. Lush includes an extensive library of
648 vector/matrix/tensor manipulation, numerous numerical libraries
649 (including GSL, LAPACK, and BLAS), a set of graphic functions, a
650 simple GUI toolkit, and interfaces to various graphic and multimedia
651 libraries such as OpenGL, SDL, Video4Linux, and ALSA (video/audio
652 grabbing), and others. Lush is an ideal frontend script language for
653 programming projects written in C or other languages. Lush also has
654 libraries for Machine Learning, Neural Nets and statistical estimation.")
655 (home-page "http://lush.sourceforge.net/")
656 (license license:lgpl2.1+)))
657
658 (define-public sbcl-alexandria
659 (let ((revision "1")
660 (commit "926a066611b7b11cb71e26c827a271e500888c30"))
661 (package
662 (name "sbcl-alexandria")
663 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
664 (source
665 (origin
666 (method git-fetch)
667 (uri (git-reference
668 (url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
669 (commit commit)))
670 (sha256
671 (base32
672 "18yncicdkh294j05rhgm23gzi36y9qy6vrfba8vg69jrxjp1hx8l"))
673 (file-name (string-append "alexandria-" version "-checkout"))))
674 (build-system asdf-build-system/sbcl)
675 (synopsis "Collection of portable utilities for Common Lisp")
676 (description
677 "Alexandria is a collection of portable utilities. It does not contain
678 conceptual extensions to Common Lisp. It is conservative in scope, and
679 portable between implementations.")
680 (home-page "https://common-lisp.net/project/alexandria/")
681 (license license:public-domain))))
682
683 (define-public cl-alexandria
684 (sbcl-package->cl-source-package sbcl-alexandria))
685
686 (define-public ecl-alexandria
687 (sbcl-package->ecl-package sbcl-alexandria))
688
689 (define-public sbcl-fiveam
690 (package
691 (name "sbcl-fiveam")
692 (version "1.2")
693 (source
694 (origin
695 (method git-fetch)
696 (uri (git-reference
697 (url "https://github.com/sionescu/fiveam.git")
698 (commit (string-append "v" version))))
699 (file-name (git-file-name "fiveam" version))
700 (sha256
701 (base32 "1yx9716mk8pq9076q6cjx4c9lyax3amiccy37sh0913k2x8gsm4l"))))
702 (inputs `(("alexandria" ,sbcl-alexandria)))
703 (build-system asdf-build-system/sbcl)
704 (synopsis "Common Lisp testing framework")
705 (description "FiveAM is a simple (as far as writing and running tests
706 goes) regression testing framework. It has been designed with Common Lisp's
707 interactive development model in mind.")
708 (home-page "https://common-lisp.net/project/fiveam/")
709 (license license:bsd-3)))
710
711 (define-public cl-fiveam
712 (sbcl-package->cl-source-package sbcl-fiveam))
713
714 (define-public ecl-fiveam
715 (sbcl-package->ecl-package sbcl-fiveam))
716
717 (define-public sbcl-bordeaux-threads
718 (let ((commit "5dce49fbc829f4d136a734f5ef4f5d599660984f")
719 (revision "1"))
720 (package
721 (name "sbcl-bordeaux-threads")
722 (version (git-version "0.8.6" revision commit))
723 (source (origin
724 (method git-fetch)
725 (uri (git-reference
726 (url "https://github.com/sionescu/bordeaux-threads.git")
727 (commit commit)))
728 (sha256
729 (base32 "1gkh9rz7zw57n3110ikcf4835950wr4hgp8l79id5ai6nd86x7wv"))
730 (file-name
731 (git-file-name "bordeaux-threads" version))))
732 (inputs `(("alexandria" ,sbcl-alexandria)))
733 (native-inputs `(("fiveam" ,sbcl-fiveam)))
734 (build-system asdf-build-system/sbcl)
735 (synopsis "Portable shared-state concurrency library for Common Lisp")
736 (description "BORDEAUX-THREADS is a proposed standard for a minimal
737 MP/Threading interface. It is similar to the CLIM-SYS threading and lock
738 support.")
739 (home-page "https://common-lisp.net/project/bordeaux-threads/")
740 (license license:x11))))
741
742 (define-public cl-bordeaux-threads
743 (sbcl-package->cl-source-package sbcl-bordeaux-threads))
744
745 (define-public ecl-bordeaux-threads
746 (sbcl-package->ecl-package sbcl-bordeaux-threads))
747
748 (define-public sbcl-trivial-gray-streams
749 (let ((revision "1")
750 (commit "0483ade330508b4b2edeabdb47d16ec9437ee1cb"))
751 (package
752 (name "sbcl-trivial-gray-streams")
753 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
754 (source
755 (origin
756 (method git-fetch)
757 (uri
758 (git-reference
759 (url "https://github.com/trivial-gray-streams/trivial-gray-streams.git")
760 (commit commit)))
761 (sha256
762 (base32 "0m3rpf2x0zmdk3nf1qfa01j6a55vj7gkwhyw78qslcgbjlgh8p4d"))
763 (file-name
764 (string-append "trivial-gray-streams-" version "-checkout"))))
765 (build-system asdf-build-system/sbcl)
766 (synopsis "Compatibility layer for Gray streams implementations")
767 (description "Gray streams is an interface proposed for inclusion with
768 ANSI CL by David N. Gray. The proposal did not make it into ANSI CL, but most
769 popular CL implementations implement it. This package provides an extremely
770 thin compatibility layer for gray streams.")
771 (home-page "http://www.cliki.net/trivial-gray-streams")
772 (license license:x11))))
773
774 (define-public cl-trivial-gray-streams
775 (sbcl-package->cl-source-package sbcl-trivial-gray-streams))
776
777 (define-public ecl-trivial-gray-streams
778 (sbcl-package->ecl-package sbcl-trivial-gray-streams))
779
780 (define-public sbcl-fiasco
781 (let ((commit "d62f7558b21addc89f87e306f65d7f760632655f")
782 (revision "1"))
783 (package
784 (name "sbcl-fiasco")
785 (version (git-version "0.0.1" revision commit))
786 (source
787 (origin
788 (method git-fetch)
789 (uri (git-reference
790 (url "https://github.com/joaotavora/fiasco.git")
791 (commit commit)))
792 (file-name (git-file-name "fiasco" version))
793 (sha256
794 (base32
795 "1zwxs3d6iswayavcmb49z2892xhym7n556d8dnmvalc32pm9bkjh"))))
796 (build-system asdf-build-system/sbcl)
797 (inputs
798 `(("alexandria" ,sbcl-alexandria)
799 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
800 (synopsis "Simple and powerful test framework for Common Lisp")
801 (description "A Common Lisp test framework that treasures your failures,
802 logical continuation of Stefil. It focuses on interactive debugging.")
803 (home-page "https://github.com/joaotavora/fiasco")
804 ;; LICENCE specifies this is public-domain unless the legislation
805 ;; doesn't allow or recognize it. In that case it falls back to a
806 ;; permissive licence.
807 (license (list license:public-domain
808 (license:x11-style "file://LICENCE"))))))
809
810 (define-public cl-fiasco
811 (sbcl-package->cl-source-package sbcl-fiasco))
812
813 (define-public ecl-fiasco
814 (sbcl-package->ecl-package sbcl-fiasco))
815
816 (define-public sbcl-flexi-streams
817 (package
818 (name "sbcl-flexi-streams")
819 (version "1.0.16")
820 (source
821 (origin
822 (method git-fetch)
823 (uri (git-reference
824 (url "https://github.com/edicl/flexi-streams.git")
825 (commit (string-append "v" version))))
826 (file-name (git-file-name "flexi-streams" version))
827 (sha256
828 (base32 "0gvykjlmja060zqq6nn6aqxlshh6r6ijahmmgf20q0d839rwpgxc"))))
829 (build-system asdf-build-system/sbcl)
830 (arguments
831 `(#:phases
832 (modify-phases %standard-phases
833 (add-after 'unpack 'make-git-checkout-writable
834 (lambda _
835 (for-each make-file-writable (find-files "."))
836 #t)))))
837 (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
838 (synopsis "Implementation of virtual bivalent streams for Common Lisp")
839 (description "Flexi-streams is an implementation of \"virtual\" bivalent
840 streams that can be layered atop real binary or bivalent streams and that can
841 be used to read and write character data in various single- or multi-octet
842 encodings which can be changed on the fly. It also supplies in-memory binary
843 streams which are similar to string streams.")
844 (home-page "http://weitz.de/flexi-streams/")
845 (license license:bsd-3)))
846
847 (define-public cl-flexi-streams
848 (sbcl-package->cl-source-package sbcl-flexi-streams))
849
850 (define-public ecl-flexi-streams
851 (sbcl-package->ecl-package sbcl-flexi-streams))
852
853 (define-public sbcl-cl-ppcre
854 (package
855 (name "sbcl-cl-ppcre")
856 (version "2.0.11")
857 (source
858 (origin
859 (method git-fetch)
860 (uri (git-reference
861 (url "https://github.com/edicl/cl-ppcre.git")
862 (commit (string-append "v" version))))
863 (file-name (git-file-name "cl-ppcre" version))
864 (sha256
865 (base32 "0q3iany07vgqm144lw6pj0af2d3vsikpbkwcxr30fci3kzsq4f49"))))
866 (build-system asdf-build-system/sbcl)
867 (native-inputs `(("flexi-streams" ,sbcl-flexi-streams)))
868 (synopsis "Portable regular expression library for Common Lisp")
869 (description "CL-PPCRE is a portable regular expression library for Common
870 Lisp, which is compatible with perl. It is pretty fast, thread-safe, and
871 compatible with ANSI-compliant Common Lisp implementations.")
872 (home-page "http://weitz.de/cl-ppcre/")
873 (license license:bsd-2)))
874
875 (define-public cl-ppcre
876 (sbcl-package->cl-source-package sbcl-cl-ppcre))
877
878 (define-public ecl-cl-ppcre
879 (sbcl-package->ecl-package sbcl-cl-ppcre))
880
881 (define sbcl-cl-unicode-base
882 (let ((revision "1")
883 (commit "9fcd06fba1ddc9e66aed2f2d6c32dc9b764f03ea"))
884 (package
885 (name "sbcl-cl-unicode-base")
886 (version (string-append "0.1.5-" revision "." (string-take commit 7)))
887 (source (origin
888 (method git-fetch)
889 (uri (git-reference
890 (url "https://github.com/edicl/cl-unicode.git")
891 (commit commit)))
892 (file-name (string-append "cl-unicode-" version "-checkout"))
893 (sha256
894 (base32
895 "1jicprb5b3bv57dy1kg03572gxkcaqdjhak00426s76g0plmx5ki"))))
896 (build-system asdf-build-system/sbcl)
897 (arguments
898 '(#:asd-file "cl-unicode.asd"
899 #:asd-system-name "cl-unicode/base"))
900 (inputs
901 `(("cl-ppcre" ,sbcl-cl-ppcre)))
902 (home-page "http://weitz.de/cl-unicode/")
903 (synopsis "Portable Unicode library for Common Lisp")
904 (description "CL-UNICODE is a portable Unicode library Common Lisp, which
905 is compatible with perl. It is pretty fast, thread-safe, and compatible with
906 ANSI-compliant Common Lisp implementations.")
907 (license license:bsd-2))))
908
909 (define-public sbcl-cl-unicode
910 (package
911 (inherit sbcl-cl-unicode-base)
912 (name "sbcl-cl-unicode")
913 (inputs
914 `(("cl-unicode/base" ,sbcl-cl-unicode-base)
915 ,@(package-inputs sbcl-cl-unicode-base)))
916 (native-inputs
917 `(("flexi-streams" ,sbcl-flexi-streams)))
918 (arguments '())))
919
920 (define-public ecl-cl-unicode
921 (sbcl-package->ecl-package sbcl-cl-unicode))
922
923 (define-public cl-unicode
924 (sbcl-package->cl-source-package sbcl-cl-unicode))
925
926 (define-public sbcl-clx
927 (let ((revision "1")
928 (commit "1c62774b03c1cf3fe6e5cb532df8b14b44c96b95"))
929 (package
930 (name "sbcl-clx")
931 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
932 (source
933 (origin
934 (method git-fetch)
935 (uri
936 (git-reference
937 (url "https://github.com/sharplispers/clx.git")
938 (commit commit)))
939 (sha256
940 (base32 "0qffag03ns52kwq9xjns2qg1yr0bf3ba507iwq5cmx5xz0b0rmjm"))
941 (file-name (string-append "clx-" version "-checkout"))
942 (patches
943 (list
944 (search-patch "clx-remove-demo.patch")))
945 (modules '((guix build utils)))
946 (snippet
947 '(begin
948 ;; These removed files cause the compiled system to crash when
949 ;; loading.
950 (delete-file-recursively "demo")
951 (delete-file "test/trapezoid.lisp")
952 (substitute* "clx.asd"
953 (("\\(:file \"trapezoid\"\\)") ""))
954 #t))))
955 (build-system asdf-build-system/sbcl)
956 (home-page "http://www.cliki.net/portable-clx")
957 (synopsis "X11 client library for Common Lisp")
958 (description "CLX is an X11 client library for Common Lisp. The code was
959 originally taken from a CMUCL distribution, was modified somewhat in order to
960 make it compile and run under SBCL, then a selection of patches were added
961 from other CLXes around the net.")
962 (license license:x11))))
963
964 (define-public cl-clx
965 (sbcl-package->cl-source-package sbcl-clx))
966
967 (define-public ecl-clx
968 (sbcl-package->ecl-package sbcl-clx))
969
970 (define-public sbcl-cl-ppcre-unicode
971 (package (inherit sbcl-cl-ppcre)
972 (name "sbcl-cl-ppcre-unicode")
973 (arguments
974 `(#:tests? #f ; tests fail with "Component :CL-PPCRE-TEST not found"
975 #:asd-file "cl-ppcre-unicode.asd"))
976 (inputs
977 `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
978 ("sbcl-cl-unicode" ,sbcl-cl-unicode)))))
979
980 (define-public stumpwm
981 (package
982 (name "stumpwm")
983 (version "18.11")
984 (source
985 (origin
986 (method git-fetch)
987 (uri (git-reference
988 (url "https://github.com/stumpwm/stumpwm.git")
989 (commit version)))
990 (file-name (git-file-name "stumpwm" version))
991 (sha256
992 (base32 "003g1fmh7446ws49866kzny4lrk1wf034dq5fa4m9mq1nzc7cwv7"))
993 (patches
994 ;; This patch is included in the post-18.11 git master tree
995 ;; and can be removed when we move to the next release.
996 (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
997 (build-system asdf-build-system/sbcl)
998 (native-inputs `(("fiasco" ,sbcl-fiasco)
999 ("texinfo" ,texinfo)))
1000 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
1001 ("clx" ,sbcl-clx)
1002 ("alexandria" ,sbcl-alexandria)))
1003 (outputs '("out" "lib"))
1004 (arguments
1005 '(#:asd-system-name "stumpwm"
1006 #:phases
1007 (modify-phases %standard-phases
1008 (add-after 'create-symlinks 'build-program
1009 (lambda* (#:key outputs #:allow-other-keys)
1010 (build-program
1011 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
1012 outputs
1013 #:entry-program '((stumpwm:stumpwm) 0))))
1014 (add-after 'build-program 'create-desktop-file
1015 (lambda* (#:key outputs #:allow-other-keys)
1016 (let* ((out (assoc-ref outputs "out"))
1017 (xsessions (string-append out "/share/xsessions")))
1018 (mkdir-p xsessions)
1019 (call-with-output-file
1020 (string-append xsessions "/stumpwm.desktop")
1021 (lambda (file)
1022 (format file
1023 "[Desktop Entry]~@
1024 Name=stumpwm~@
1025 Comment=The Stump Window Manager~@
1026 Exec=~a/bin/stumpwm~@
1027 TryExec=~@*~a/bin/stumpwm~@
1028 Icon=~@
1029 Type=Application~%"
1030 out)))
1031 #t)))
1032 (add-after 'install 'install-manual
1033 (lambda* (#:key outputs #:allow-other-keys)
1034 ;; The proper way to the manual is bootstrapping a full autotools
1035 ;; build system and running ‘./configure && make stumpwm.info’ to
1036 ;; do some macro substitution. We can get away with much less.
1037 (let* ((out (assoc-ref outputs "out"))
1038 (info (string-append out "/share/info")))
1039 (invoke "makeinfo" "stumpwm.texi.in")
1040 (install-file "stumpwm.info" info)
1041 #t))))))
1042 (synopsis "Window manager written in Common Lisp")
1043 (description "Stumpwm is a window manager written entirely in Common Lisp.
1044 It attempts to be highly customizable while relying entirely on the keyboard
1045 for input. These design decisions reflect the growing popularity of
1046 productive, customizable lisp based systems.")
1047 (home-page "https://github.com/stumpwm/stumpwm")
1048 (license license:gpl2+)
1049 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
1050
1051 (define-public sbcl-stumpwm
1052 (deprecated-package "sbcl-stumpwm" stumpwm))
1053
1054 (define-public cl-stumpwm
1055 (package
1056 (inherit (sbcl-package->cl-source-package stumpwm))
1057 (name "cl-stumpwm")))
1058
1059 ;; The slynk that users expect to install includes all of slynk's contrib
1060 ;; modules. Therefore, we build the base module and all contribs first; then
1061 ;; we expose the union of these as `sbcl-slynk'. The following variable
1062 ;; describes the base module.
1063 (define sbcl-slynk-boot0
1064 (let ((revision "2")
1065 (commit "cbf84c36c4eca8b032e3fd16177a7bc02df3ec4c"))
1066 (package
1067 (name "sbcl-slynk-boot0")
1068 (version (string-append "1.0.0-beta-" revision "." (string-take commit 7)))
1069 (source
1070 (origin
1071 (method git-fetch)
1072 (uri
1073 (git-reference
1074 (url "https://github.com/joaotavora/sly.git")
1075 (commit commit)))
1076 (sha256
1077 (base32 "13dyhsravn591p7g6is01mp2ynzjnnj7pwgi57r6xqmd4611y9vh"))
1078 (file-name (string-append "slynk-" version "-checkout"))
1079 (modules '((guix build utils)
1080 (ice-9 ftw)))
1081 (snippet
1082 '(begin
1083 ;; Move the contribs into the main source directory for easier
1084 ;; access
1085 (substitute* "slynk/slynk.asd"
1086 (("\\.\\./contrib")
1087 "contrib")
1088 (("\\(defsystem :slynk/util")
1089 "(defsystem :slynk/util :depends-on (:slynk)")
1090 ((":depends-on \\(:slynk :slynk/util\\)")
1091 ":depends-on (:slynk :slynk-util)"))
1092 (substitute* "contrib/slynk-trace-dialog.lisp"
1093 (("\\(slynk::reset-inspector\\)") ; Causes problems on load
1094 "nil"))
1095 (substitute* "contrib/slynk-profiler.lisp"
1096 (("slynk:to-line")
1097 "slynk-pprint-to-line"))
1098 (substitute* "contrib/slynk-fancy-inspector.lisp"
1099 (("slynk/util") "slynk-util")
1100 ((":compile-toplevel :load-toplevel") ""))
1101 (rename-file "contrib" "slynk/contrib")
1102 ;; Move slynk's contents into the base directory for easier
1103 ;; access
1104 (for-each (lambda (file)
1105 (unless (string-prefix? "." file)
1106 (rename-file (string-append "slynk/" file)
1107 (string-append "./" (basename file)))))
1108 (scandir "slynk"))
1109 #t))))
1110 (build-system asdf-build-system/sbcl)
1111 (arguments
1112 `(#:tests? #f ; No test suite
1113 #:asd-system-name "slynk"))
1114 (synopsis "Common Lisp IDE for Emacs")
1115 (description "SLY is a fork of SLIME, an IDE backend for Common Lisp.
1116 It also features a completely redesigned REPL based on Emacs's own
1117 full-featured comint.el, live code annotations, and a consistent interactive
1118 button interface. Everything can be copied to the REPL. One can create
1119 multiple inspectors with independent history.")
1120 (home-page "https://github.com/joaotavora/sly")
1121 (license license:public-domain)
1122 (properties `((cl-source-variant . ,(delay cl-slynk)))))))
1123
1124 (define-public cl-slynk
1125 (package
1126 (inherit (sbcl-package->cl-source-package sbcl-slynk-boot0))
1127 (name "cl-slynk")))
1128
1129 (define ecl-slynk-boot0
1130 (sbcl-package->ecl-package sbcl-slynk-boot0))
1131
1132 (define sbcl-slynk-arglists
1133 (package
1134 (inherit sbcl-slynk-boot0)
1135 (name "sbcl-slynk-arglists")
1136 (inputs `(("slynk" ,sbcl-slynk-boot0)))
1137 (arguments
1138 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1139 ((#:asd-file _ "") "slynk.asd")
1140 ((#:asd-system-name _ #f) "slynk/arglists")))))
1141
1142 (define ecl-slynk-arglists
1143 (sbcl-package->ecl-package sbcl-slynk-arglists))
1144
1145 (define sbcl-slynk-util
1146 (package
1147 (inherit sbcl-slynk-boot0)
1148 (name "sbcl-slynk-util")
1149 (inputs `(("slynk" ,sbcl-slynk-boot0)))
1150 (arguments
1151 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1152 ((#:asd-file _ "") "slynk.asd")
1153 ((#:asd-system-name _ #f) "slynk/util")))))
1154
1155 (define ecl-slynk-util
1156 (sbcl-package->ecl-package sbcl-slynk-util))
1157
1158 (define sbcl-slynk-fancy-inspector
1159 (package
1160 (inherit sbcl-slynk-arglists)
1161 (name "sbcl-slynk-fancy-inspector")
1162 (inputs `(("slynk-util" ,sbcl-slynk-util)
1163 ,@(package-inputs sbcl-slynk-arglists)))
1164 (arguments
1165 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1166 ((#:asd-system-name _ #f) "slynk/fancy-inspector")))))
1167
1168 (define ecl-slynk-fancy-inspector
1169 (sbcl-package->ecl-package sbcl-slynk-fancy-inspector))
1170
1171 (define sbcl-slynk-package-fu
1172 (package
1173 (inherit sbcl-slynk-arglists)
1174 (name "sbcl-slynk-package-fu")
1175 (arguments
1176 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1177 ((#:asd-system-name _ #f) "slynk/package-fu")))))
1178
1179 (define ecl-slynk-package-fu
1180 (sbcl-package->ecl-package sbcl-slynk-package-fu))
1181
1182 (define sbcl-slynk-mrepl
1183 (package
1184 (inherit sbcl-slynk-fancy-inspector)
1185 (name "sbcl-slynk-mrepl")
1186 (arguments
1187 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1188 ((#:asd-system-name _ #f) "slynk/mrepl")))))
1189
1190 (define ecl-slynk-mrepl
1191 (sbcl-package->ecl-package sbcl-slynk-mrepl))
1192
1193 (define sbcl-slynk-trace-dialog
1194 (package
1195 (inherit sbcl-slynk-arglists)
1196 (name "sbcl-slynk-trace-dialog")
1197 (arguments
1198 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1199 ((#:asd-system-name _ #f) "slynk/trace-dialog")))))
1200
1201 (define ecl-slynk-trace-dialog
1202 (sbcl-package->ecl-package sbcl-slynk-trace-dialog))
1203
1204 (define sbcl-slynk-profiler
1205 (package
1206 (inherit sbcl-slynk-arglists)
1207 (name "sbcl-slynk-profiler")
1208 (arguments
1209 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1210 ((#:asd-system-name _ #f) "slynk/profiler")))))
1211
1212 (define ecl-slynk-profiler
1213 (sbcl-package->ecl-package sbcl-slynk-profiler))
1214
1215 (define sbcl-slynk-stickers
1216 (package
1217 (inherit sbcl-slynk-arglists)
1218 (name "sbcl-slynk-stickers")
1219 (arguments
1220 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1221 ((#:asd-system-name _ #f) "slynk/stickers")))))
1222
1223 (define ecl-slynk-stickers
1224 (sbcl-package->ecl-package sbcl-slynk-stickers))
1225
1226 (define sbcl-slynk-indentation
1227 (package
1228 (inherit sbcl-slynk-arglists)
1229 (name "sbcl-slynk-indentation")
1230 (arguments
1231 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1232 ((#:asd-system-name _ #f) "slynk/indentation")))))
1233
1234 (define ecl-slynk-indentation
1235 (sbcl-package->ecl-package sbcl-slynk-indentation))
1236
1237 (define sbcl-slynk-retro
1238 (package
1239 (inherit sbcl-slynk-arglists)
1240 (name "sbcl-slynk-retro")
1241 (arguments
1242 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1243 ((#:asd-system-name _ #f) "slynk/retro")))))
1244
1245 (define ecl-slynk-retro
1246 (sbcl-package->ecl-package sbcl-slynk-retro))
1247
1248 (define slynk-systems
1249 '("slynk"
1250 "slynk-util"
1251 "slynk-arglists"
1252 "slynk-fancy-inspector"
1253 "slynk-package-fu"
1254 "slynk-mrepl"
1255 "slynk-profiler"
1256 "slynk-trace-dialog"
1257 "slynk-stickers"
1258 "slynk-indentation"
1259 "slynk-retro"))
1260
1261 (define-public sbcl-slynk
1262 (package
1263 (inherit sbcl-slynk-boot0)
1264 (name "sbcl-slynk")
1265 (inputs
1266 `(("slynk" ,sbcl-slynk-boot0)
1267 ("slynk-util" ,sbcl-slynk-util)
1268 ("slynk-arglists" ,sbcl-slynk-arglists)
1269 ("slynk-fancy-inspector" ,sbcl-slynk-fancy-inspector)
1270 ("slynk-package-fu" ,sbcl-slynk-package-fu)
1271 ("slynk-mrepl" ,sbcl-slynk-mrepl)
1272 ("slynk-profiler" ,sbcl-slynk-profiler)
1273 ("slynk-trace-dialog" ,sbcl-slynk-trace-dialog)
1274 ("slynk-stickers" ,sbcl-slynk-stickers)
1275 ("slynk-indentation" ,sbcl-slynk-indentation)
1276 ("slynk-retro" ,sbcl-slynk-retro)))
1277 (native-inputs `(("sbcl" ,sbcl)))
1278 (build-system trivial-build-system)
1279 (source #f)
1280 (outputs '("out" "image"))
1281 (arguments
1282 `(#:modules ((guix build union)
1283 (guix build utils)
1284 (guix build lisp-utils))
1285 #:builder
1286 (begin
1287 (use-modules (ice-9 match)
1288 (srfi srfi-1)
1289 (guix build union)
1290 (guix build lisp-utils))
1291
1292 (union-build
1293 (assoc-ref %outputs "out")
1294 (filter-map
1295 (match-lambda
1296 ((name . path)
1297 (if (string-prefix? "slynk" name) path #f)))
1298 %build-inputs))
1299
1300 (prepend-to-source-registry
1301 (string-append (assoc-ref %outputs "out") "//"))
1302
1303 (parameterize ((%lisp-type "sbcl")
1304 (%lisp (string-append (assoc-ref %build-inputs "sbcl")
1305 "/bin/sbcl")))
1306 (build-image (string-append
1307 (assoc-ref %outputs "image")
1308 "/bin/slynk")
1309 %outputs
1310 #:dependencies ',slynk-systems))
1311 #t)))))
1312
1313 (define-public ecl-slynk
1314 (package
1315 (inherit sbcl-slynk)
1316 (name "ecl-slynk")
1317 (inputs
1318 (map (match-lambda
1319 ((name pkg . _)
1320 (list name (sbcl-package->ecl-package pkg))))
1321 (package-inputs sbcl-slynk)))
1322 (native-inputs '())
1323 (outputs '("out"))
1324 (arguments
1325 '(#:modules ((guix build union))
1326 #:builder
1327 (begin
1328 (use-modules (ice-9 match)
1329 (guix build union))
1330 (match %build-inputs
1331 (((names . paths) ...)
1332 (union-build (assoc-ref %outputs "out")
1333 paths)
1334 #t)))))))
1335
1336 (define-public stumpwm+slynk
1337 (package
1338 (inherit stumpwm)
1339 (name "stumpwm-with-slynk")
1340 (outputs '("out"))
1341 (inputs
1342 `(("stumpwm" ,stumpwm "lib")
1343 ("slynk" ,sbcl-slynk)))
1344 (arguments
1345 (substitute-keyword-arguments (package-arguments stumpwm)
1346 ((#:phases phases)
1347 `(modify-phases ,phases
1348 (replace 'build-program
1349 (lambda* (#:key inputs outputs #:allow-other-keys)
1350 (let* ((out (assoc-ref outputs "out"))
1351 (program (string-append out "/bin/stumpwm")))
1352 (build-program program outputs
1353 #:entry-program '((stumpwm:stumpwm) 0)
1354 #:dependencies '("stumpwm"
1355 ,@slynk-systems)
1356 #:dependency-prefixes
1357 (map (lambda (input) (assoc-ref inputs input))
1358 '("stumpwm" "slynk")))
1359 ;; Remove unneeded file.
1360 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
1361 #t)))
1362 (delete 'copy-source)
1363 (delete 'build)
1364 (delete 'check)
1365 (delete 'create-asd-file)
1366 (delete 'cleanup)
1367 (delete 'create-symlinks)))))))
1368
1369 (define-public sbcl-stumpwm+slynk
1370 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
1371
1372 (define-public sbcl-parse-js
1373 (let ((commit "fbadc6029bec7039602abfc06c73bb52970998f6")
1374 (revision "1"))
1375 (package
1376 (name "sbcl-parse-js")
1377 (version (string-append "0.0.0-" revision "." (string-take commit 9)))
1378 (source
1379 (origin
1380 (method git-fetch)
1381 (uri (git-reference
1382 (url "http://marijn.haverbeke.nl/git/parse-js")
1383 (commit commit)))
1384 (file-name (string-append name "-" commit "-checkout"))
1385 (sha256
1386 (base32
1387 "1wddrnr5kiya5s3gp4cdq6crbfy9fqcz7fr44p81502sj3bvdv39"))))
1388 (build-system asdf-build-system/sbcl)
1389 (home-page "http://marijnhaverbeke.nl/parse-js/")
1390 (synopsis "Parse JavaScript")
1391 (description "Parse-js is a Common Lisp package for parsing
1392 JavaScript (ECMAScript 3). It has basic support for ECMAScript 5.")
1393 (license license:zlib))))
1394
1395 (define-public sbcl-parse-number
1396 (package
1397 (name "sbcl-parse-number")
1398 (version "1.5")
1399 (source
1400 (origin
1401 (method url-fetch)
1402 (uri (string-append "https://github.com/sharplispers/parse-number/"
1403 "archive/v" version ".tar.gz"))
1404 (file-name (string-append name "-" version ".tar.gz"))
1405 (sha256
1406 (base32
1407 "1k6s4v65ksc1j5i0dprvzfvj213v6nah7i0rgd0726ngfjisj9ir"))))
1408 (build-system asdf-build-system/sbcl)
1409 (home-page "http://www.cliki.net/PARSE-NUMBER")
1410 (synopsis "Parse numbers")
1411 (description "@code{parse-number} is a library of functions for parsing
1412 strings into one of the standard Common Lisp number types without using the
1413 reader. @code{parse-number} accepts an arbitrary string and attempts to parse
1414 the string into one of the standard Common Lisp number types, if possible, or
1415 else @code{parse-number} signals an error of type @code{invalid-number}.")
1416 (license license:bsd-3)))
1417
1418 (define-public sbcl-iterate
1419 (package
1420 (name "sbcl-iterate")
1421 ;; The latest official release (1.4.3) fails to build so we have to take
1422 ;; the current darcs tarball from quicklisp.
1423 (version "20160825")
1424 (source
1425 (origin
1426 (method url-fetch)
1427 (uri (string-append "http://beta.quicklisp.org/archive/iterate/"
1428 "2016-08-25/iterate-"
1429 version "-darcs.tgz"))
1430 (sha256
1431 (base32
1432 "0kvz16gnxnkdz0fy1x8y5yr28nfm7i2qpvix7mgwccdpjmsb4pgm"))))
1433 (build-system asdf-build-system/sbcl)
1434 (home-page "https://common-lisp.net/project/iterate/")
1435 (synopsis "Iteration construct for Common Lisp")
1436 (description "@code{iterate} is an iteration construct for Common Lisp.
1437 It is similar to the @code{CL:LOOP} macro, with these distinguishing marks:
1438
1439 @itemize
1440 @item it is extensible,
1441 @item it helps editors like Emacs indent iterate forms by having a more
1442 lisp-like syntax, and
1443 @item it isn't part of the ANSI standard for Common Lisp.
1444 @end itemize\n")
1445 (license license:expat)))
1446
1447 (define-public sbcl-cl-uglify-js
1448 ;; There have been many bug fixes since the 2010 release.
1449 (let ((commit "429c5e1d844e2f96b44db8fccc92d6e8e28afdd5")
1450 (revision "1"))
1451 (package
1452 (name "sbcl-cl-uglify-js")
1453 (version (string-append "0.1-" revision "." (string-take commit 9)))
1454 (source
1455 (origin
1456 (method git-fetch)
1457 (uri (git-reference
1458 (url "https://github.com/mishoo/cl-uglify-js.git")
1459 (commit commit)))
1460 (file-name (git-file-name name version))
1461 (sha256
1462 (base32
1463 "0k39y3c93jgxpr7gwz7w0d8yknn1fdnxrjhd03057lvk5w8js27a"))))
1464 (build-system asdf-build-system/sbcl)
1465 (inputs
1466 `(("sbcl-parse-js" ,sbcl-parse-js)
1467 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
1468 ("sbcl-cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
1469 ("sbcl-parse-number" ,sbcl-parse-number)
1470 ("sbcl-iterate" ,sbcl-iterate)))
1471 (home-page "https://github.com/mishoo/cl-uglify-js")
1472 (synopsis "JavaScript compressor library for Common Lisp")
1473 (description "This is a Common Lisp version of UglifyJS, a JavaScript
1474 compressor. It works on data produced by @code{parse-js} to generate a
1475 @dfn{minified} version of the code. Currently it can:
1476
1477 @itemize
1478 @item reduce variable names (usually to single letters)
1479 @item join consecutive @code{var} statements
1480 @item resolve simple binary expressions
1481 @item group most consecutive statements using the @code{sequence} operator (comma)
1482 @item remove unnecessary blocks
1483 @item convert @code{IF} expressions in various ways that result in smaller code
1484 @item remove some unreachable code
1485 @end itemize\n")
1486 (license license:zlib))))
1487
1488 (define-public uglify-js
1489 (package
1490 (inherit sbcl-cl-uglify-js)
1491 (name "uglify-js")
1492 (build-system trivial-build-system)
1493 (arguments
1494 `(#:modules ((guix build utils))
1495 #:builder
1496 (let* ((bin (string-append (assoc-ref %outputs "out") "/bin/"))
1497 (script (string-append bin "uglify-js")))
1498 (use-modules (guix build utils))
1499 (mkdir-p bin)
1500 (with-output-to-file script
1501 (lambda _
1502 (format #t "#!~a/bin/sbcl --script
1503 (require :asdf)
1504 (push (truename \"~a/lib/sbcl\") asdf:*central-registry*)"
1505 (assoc-ref %build-inputs "sbcl")
1506 (assoc-ref %build-inputs "sbcl-cl-uglify-js"))
1507 ;; FIXME: cannot use progn here because otherwise it fails to
1508 ;; find cl-uglify-js.
1509 (for-each
1510 write
1511 '(;; Quiet, please!
1512 (let ((*standard-output* (make-broadcast-stream))
1513 (*error-output* (make-broadcast-stream)))
1514 (asdf:load-system :cl-uglify-js))
1515 (let ((file (cadr *posix-argv*)))
1516 (if file
1517 (format t "~a"
1518 (cl-uglify-js:ast-gen-code
1519 (cl-uglify-js:ast-mangle
1520 (cl-uglify-js:ast-squeeze
1521 (with-open-file (in file)
1522 (parse-js:parse-js in))))
1523 :beautify nil))
1524 (progn
1525 (format *error-output*
1526 "Please provide a JavaScript file.~%")
1527 (sb-ext:exit :code 1))))))))
1528 (chmod script #o755)
1529 #t)))
1530 (inputs
1531 `(("sbcl" ,sbcl)
1532 ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js)))
1533 (synopsis "JavaScript compressor")))
1534
1535 (define-public confusion-mdl
1536 (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
1537 (package
1538 (name "confusion-mdl")
1539 (version "0.2")
1540 (source (origin
1541 (method git-fetch)
1542 (uri (git-reference
1543 (url (string-append "https://gitlab.com/emacsomancer/" name))
1544 (commit commit)))
1545 (sha256
1546 (base32
1547 "1zi8kflzvwqg97ha1sa5xjisbjs5z1mvbpa772vfxiv5ksnpxp0d"))
1548 (file-name (git-file-name name version))))
1549 (build-system gnu-build-system)
1550 (arguments
1551 `(#:tests? #f ; there are no tests
1552 #:phases
1553 (modify-phases %standard-phases
1554 (delete 'configure)
1555 (replace 'build
1556 (lambda* (#:key (make-flags '()) #:allow-other-keys)
1557 (apply invoke "make" "CC=gcc" make-flags)))
1558 (replace 'install
1559 (lambda* (#:key outputs #:allow-other-keys)
1560 (let* ((out (assoc-ref outputs "out"))
1561 (bin (string-append out "/bin")))
1562 (install-file "mdli" bin)
1563 #t))))))
1564 (native-inputs
1565 `(("perl" ,perl)))
1566 (inputs
1567 `(("libgc" ,libgc)))
1568 (synopsis "Interpreter for the MIT Design Language (MDL)")
1569 (description "MDL (the MIT Design Language) is a descendant of Lisp. It
1570 was originally developed in 1971 on the PDP-10 computer under the Incompatible
1571 Timesharing System (ITS) to provide high level language support for the
1572 Dynamic Modeling Group at MIT's Project MAC. Infocom built the original
1573 PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
1574 based on a subset of MDL. Confusion is a MDL interpreter that works just well
1575 enough to play the original mainframe Zork all the way through.")
1576 (home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
1577 (license license:gpl3+))))
1578
1579 (define-public sbcl-cl-strings
1580 (let ((revision "1")
1581 (commit "c5c5cbafbf3e6181d03c354d66e41a4f063f00ae"))
1582 (package
1583 (name "sbcl-cl-strings")
1584 (version (git-version "0.0.0" revision commit))
1585 (source
1586 (origin
1587 (method git-fetch)
1588 (uri (git-reference
1589 (url "https://github.com/diogoalexandrefranco/cl-strings")
1590 (commit commit)))
1591 (sha256
1592 (base32
1593 "00754mfaqallj480lwd346nkfb6ra8pa8xcxcylf4baqn604zlmv"))
1594 (file-name (string-append "cl-strings-" version "-checkout"))))
1595 (build-system asdf-build-system/sbcl)
1596 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
1597 (description
1598 "@command{cl-strings} is a small, portable, dependency-free set of
1599 utilities that make it even easier to manipulate text in Common Lisp. It has
1600 100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")
1601 (home-page "https://github.com/diogoalexandrefranco/cl-strings")
1602 (license license:expat))))
1603
1604 (define-public cl-strings
1605 (sbcl-package->cl-source-package sbcl-cl-strings))
1606
1607 (define-public ecl-cl-strings
1608 (sbcl-package->ecl-package sbcl-cl-strings))
1609
1610 (define-public sbcl-trivial-features
1611 (package
1612 (name "sbcl-trivial-features")
1613 (version "0.8")
1614 (source
1615 (origin
1616 (method git-fetch)
1617 (uri (git-reference
1618 (url "https://github.com/trivial-features/trivial-features.git")
1619 (commit (string-append "v" version))))
1620 (file-name (git-file-name "trivial-features" version))
1621 (sha256
1622 (base32 "0ccv7dqyrk55xga78i5vzlic7mdwp28in3g1a8fqhlk6626scsq9"))))
1623 (build-system asdf-build-system/sbcl)
1624 (arguments '(#:tests? #f))
1625 (home-page "http://cliki.net/trivial-features")
1626 (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp")
1627 (description "Trivial-features ensures that @code{*FEATURES*} is
1628 consistent across multiple Common Lisp implementations.")
1629 (license license:expat)))
1630
1631 (define-public cl-trivial-features
1632 (sbcl-package->cl-source-package sbcl-trivial-features))
1633
1634 (define-public ecl-trivial-features
1635 (sbcl-package->ecl-package sbcl-trivial-features))
1636
1637 (define-public sbcl-hu.dwim.asdf
1638 (let ((commit "170b0e4fdde3df0bc537327e7600575daac9e141"))
1639 (package
1640 (name "sbcl-hu.dwim.asdf")
1641 (version (git-version "0.0.0" "1" commit))
1642 (source
1643 (origin
1644 (method git-fetch)
1645 (uri
1646 (git-reference
1647 (url "https://github.com/nixeagle/hu.dwim.asdf")
1648 (commit commit)))
1649 (sha256
1650 (base32 "10ax7p8y6vjqxzcq125p62kf68zi455a65ysgk0kl1f2v839c33v"))
1651 (file-name (git-file-name "hu.dwim.asdf" version))))
1652 (build-system asdf-build-system/sbcl)
1653 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.asdf")
1654 (synopsis "Extensions to ASDF")
1655 (description "Various ASDF extensions such as attached test and
1656 documentation system, explicit development support, etc.")
1657 (license license:public-domain))))
1658
1659 (define-public cl-hu.dwim.asdf
1660 (sbcl-package->cl-source-package sbcl-hu.dwim.asdf))
1661
1662 (define-public ecl-hu.dwim.asdf
1663 (sbcl-package->ecl-package sbcl-hu.dwim.asdf))
1664
1665 (define-public sbcl-hu.dwim.stefil
1666 (let ((commit "ab6d1aa8995878a1b66d745dfd0ba021090bbcf9"))
1667 (package
1668 (name "sbcl-hu.dwim.stefil")
1669 (version (git-version "0.0.0" "1" commit))
1670 (source
1671 (origin
1672 (method git-fetch)
1673 (uri
1674 (git-reference
1675 (url "https://gitlab.common-lisp.net/xcvb/hu.dwim.stefil.git")
1676 (commit commit)))
1677 (sha256
1678 (base32 "1d8yccw65zj3zh46cbi3x6nmn1dwdb76s9d0av035077mvyirqqp"))
1679 (file-name (git-file-name "hu.dwim.stefil" version))))
1680 (build-system asdf-build-system/sbcl)
1681 (native-inputs
1682 `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
1683 (inputs
1684 `(("sbcl-alexandria" ,sbcl-alexandria)))
1685 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.stefil")
1686 (synopsis "Simple test framework")
1687 (description "Stefil is a simple test framework for Common Lisp,
1688 with a focus on interactive development.")
1689 (license license:public-domain))))
1690
1691 (define-public cl-hu.dwim.stefil
1692 (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
1693
1694 (define-public ecl-hu.dwim.stefil
1695 (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
1696
1697 (define-public sbcl-babel
1698 (package
1699 (name "sbcl-babel")
1700 (version "0.5.0")
1701 (source
1702 (origin
1703 (method git-fetch)
1704 (uri (git-reference
1705 (url "https://github.com/cl-babel/babel.git")
1706 (commit (string-append "v" version))))
1707 (file-name (git-file-name "babel" version))
1708 (sha256
1709 (base32 "139a8rn2gnhj082n8jg01gc8fyr63hkj57hgrnmb3d1r327yc77f"))))
1710 (build-system asdf-build-system/sbcl)
1711 (native-inputs
1712 `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
1713 (inputs
1714 `(("sbcl-alexandria" ,sbcl-alexandria)
1715 ("sbcl-trivial-features" ,sbcl-trivial-features)))
1716 (home-page "https://common-lisp.net/project/babel/")
1717 (synopsis "Charset encoding and decoding library")
1718 (description "Babel is a charset encoding and decoding library, not unlike
1719 GNU libiconv, but completely written in Common Lisp.")
1720 (license license:expat)))
1721
1722 (define-public cl-babel
1723 (sbcl-package->cl-source-package sbcl-babel))
1724
1725 (define-public ecl-babel
1726 (sbcl-package->ecl-package sbcl-babel))
1727
1728 (define-public sbcl-cl-yacc
1729 (package
1730 (name "sbcl-cl-yacc")
1731 (version "0.3")
1732 (source
1733 (origin
1734 (method git-fetch)
1735 (uri (git-reference
1736 (url "https://github.com/jech/cl-yacc")
1737 (commit (string-append "cl-yacc-" version))))
1738 (sha256
1739 (base32
1740 "16946pzf8vvadnyfayvj8rbh4zjzw90h0azz2qk1mxrvhh5wklib"))
1741 (file-name (string-append "cl-yacc-" version "-checkout"))))
1742 (build-system asdf-build-system/sbcl)
1743 (arguments
1744 `(#:asd-file "yacc.asd"
1745 #:asd-system-name "yacc"))
1746 (synopsis "LALR(1) parser generator for Common Lisp, similar in spirit to Yacc")
1747 (description
1748 "CL-Yacc is a LALR(1) parser generator for Common Lisp, similar in spirit
1749 to AT&T Yacc, Berkeley Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm.
1750
1751 CL-Yacc uses the algorithm due to Aho and Ullman, which is the one also used
1752 by AT&T Yacc, Berkeley Yacc and Zebu. It does not use the faster algorithm due
1753 to DeRemer and Pennello, which is used by Bison and lalr.scm (not lalr.cl).")
1754 (home-page "https://www.irif.fr/~jch//software/cl-yacc/")
1755 (license license:expat)))
1756
1757 (define-public cl-yacc
1758 (sbcl-package->cl-source-package sbcl-cl-yacc))
1759
1760 (define-public ecl-cl-yacc
1761 (sbcl-package->ecl-package sbcl-cl-yacc))
1762
1763 (define-public sbcl-jpl-util
1764 (let ((commit "0311ed374e19a49d43318064d729fe3abd9a3b62"))
1765 (package
1766 (name "sbcl-jpl-util")
1767 (version "20151005")
1768 (source
1769 (origin
1770 (method git-fetch)
1771 (uri (git-reference
1772 ;; Quicklisp uses this fork.
1773 (url "https://github.com/hawkir/cl-jpl-util")
1774 (commit commit)))
1775 (file-name
1776 (git-file-name "jpl-util" version))
1777 (sha256
1778 (base32
1779 "0nc0rk9n8grkg3045xsw34whmcmddn2sfrxki4268g7kpgz0d2yz"))))
1780 (build-system asdf-build-system/sbcl)
1781 (synopsis "Collection of Common Lisp utility functions and macros")
1782 (description
1783 "@command{cl-jpl-util} is a collection of Common Lisp utility functions
1784 and macros, primarily for software projects written in CL by the author.")
1785 (home-page "https://www.thoughtcrime.us/software/cl-jpl-util/")
1786 (license license:isc))))
1787
1788 (define-public cl-jpl-util
1789 (sbcl-package->cl-source-package sbcl-jpl-util))
1790
1791 (define-public ecl-jpl-util
1792 (sbcl-package->ecl-package sbcl-jpl-util))
1793
1794 (define-public sbcl-jpl-queues
1795 (package
1796 (name "sbcl-jpl-queues")
1797 (version "0.1")
1798 (source
1799 (origin
1800 (method url-fetch)
1801 (uri (string-append
1802 "http://www.thoughtcrime.us/software/jpl-queues/jpl-queues-"
1803 version
1804 ".tar.gz"))
1805 (sha256
1806 (base32
1807 "1wvvv7j117h9a42qaj1g4fh4mji28xqs7s60rn6d11gk9jl76h96"))))
1808 (build-system asdf-build-system/sbcl)
1809 (inputs
1810 `(("jpl-util" ,sbcl-jpl-util)
1811 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
1812 (arguments
1813 ;; Tests seem to be broken.
1814 `(#:tests? #f))
1815 (synopsis "Common Lisp library implementing a few different kinds of queues")
1816 (description
1817 "A Common Lisp library implementing a few different kinds of queues:
1818
1819 @itemize
1820 @item Bounded and unbounded FIFO queues.
1821 @item Lossy bounded FIFO queues that drop elements when full.
1822 @item Unbounded random-order queues that use less memory than unbounded FIFO queues.
1823 @end itemize
1824
1825 Additionally, a synchronization wrapper is provided to make any queue
1826 conforming to the @command{jpl-queues} API thread-safe for lightweight
1827 multithreading applications. (See Calispel for a more sophisticated CL
1828 multithreaded message-passing library with timeouts and alternation among
1829 several blockable channels.)")
1830 (home-page "https://www.thoughtcrime.us/software/jpl-queues/")
1831 (license license:isc)))
1832
1833 (define-public cl-jpl-queues
1834 (sbcl-package->cl-source-package sbcl-jpl-queues))
1835
1836 (define-public ecl-jpl-queues
1837 (sbcl-package->ecl-package sbcl-jpl-queues))
1838
1839 (define-public sbcl-eos
1840 (let ((commit "b0faca83781ead9a588661e37bd47f90362ccd94"))
1841 (package
1842 (name "sbcl-eos")
1843 (version (git-version "0.0.0" "1" commit))
1844 (source
1845 (origin
1846 (method git-fetch)
1847 (uri (git-reference
1848 (url "https://github.com/adlai/Eos")
1849 (commit commit)))
1850 (sha256
1851 (base32
1852 "1bq8cfg087iyxmxi1mwgx5cfgy3b8ydrf81xljcis8qbgb2vszph"))
1853 (file-name (git-file-name "eos" version))))
1854 (build-system asdf-build-system/sbcl)
1855 (synopsis "Unit Testing for Common Lisp")
1856 (description
1857 "Eos was a unit testing library for Common Lisp.
1858 It began as a fork of FiveAM; however, FiveAM development has continued, while
1859 that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
1860 (home-page "https://github.com/adlai/Eos")
1861 (license license:expat))))
1862
1863 (define-public cl-eos
1864 (sbcl-package->cl-source-package sbcl-eos))
1865
1866 (define-public ecl-eos
1867 (sbcl-package->ecl-package sbcl-eos))
1868
1869 (define-public sbcl-esrap
1870 (let ((commit "133be8b05c2aae48696fe5b739eea2fa573fa48d"))
1871 (package
1872 (name "sbcl-esrap")
1873 (version (git-version "0.0.0" "1" commit))
1874 (source
1875 (origin
1876 (method git-fetch)
1877 (uri (git-reference
1878 (url "https://github.com/nikodemus/esrap")
1879 (commit commit)))
1880 (sha256
1881 (base32
1882 "02d5clihsdryhf7pix8c5di2571fdsffh75d40fkzhws90r5mksl"))
1883 (file-name (git-file-name "esrap" version))))
1884 (build-system asdf-build-system/sbcl)
1885 (native-inputs
1886 `(("eos" ,sbcl-eos))) ;For testing only.
1887 (inputs
1888 `(("alexandria" ,sbcl-alexandria)))
1889 (synopsis "Common Lisp packrat parser")
1890 (description
1891 "A packrat parser for Common Lisp.
1892 In addition to regular Packrat / Parsing Grammar / TDPL features ESRAP supports:
1893
1894 @itemize
1895 @item dynamic redefinition of nonterminals
1896 @item inline grammars
1897 @item semantic predicates
1898 @item introspective facilities (describing grammars, tracing, setting breaks)
1899 @end itemize\n")
1900 (home-page "https://nikodemus.github.io/esrap/")
1901 (license license:expat))))
1902
1903 (define-public cl-esrap
1904 (sbcl-package->cl-source-package sbcl-esrap))
1905
1906 (define-public ecl-esrap
1907 (sbcl-package->ecl-package sbcl-esrap))
1908
1909 (define-public sbcl-split-sequence
1910 (package
1911 (name "sbcl-split-sequence")
1912 (version "1.4.1")
1913 (source
1914 (origin
1915 (method git-fetch)
1916 (uri (git-reference
1917 (url "https://github.com/sharplispers/split-sequence")
1918 (commit (string-append "v" version))))
1919 (sha256
1920 (base32
1921 "0c3zp6b7fmmp93sfhq112ind4zkld49ycw68z409xpnz3gc0wpf0"))
1922 (file-name (git-file-name "split-sequence" version))))
1923 (build-system asdf-build-system/sbcl)
1924 (arguments
1925 ;; TODO: Tests seem to be broken.
1926 ;; https://github.com/sharplispers/split-sequence/issues/8
1927 `(#:tests? #f))
1928 (synopsis "Member of the Common Lisp Utilities family of programs")
1929 (description
1930 "Splits sequence into a list of subsequences delimited by objects
1931 satisfying the test.")
1932 (home-page "https://cliki.net/split-sequence")
1933 (license license:expat)))
1934
1935 (define-public cl-split-sequence
1936 (sbcl-package->cl-source-package sbcl-split-sequence))
1937
1938 (define-public ecl-split-sequence
1939 (sbcl-package->ecl-package sbcl-split-sequence))
1940
1941 (define-public sbcl-html-encode
1942 (package
1943 (name "sbcl-html-encode")
1944 (version "1.2")
1945 (source
1946 (origin
1947 (method url-fetch)
1948 (uri (string-append
1949 "http://beta.quicklisp.org/archive/html-encode/2010-10-06/html-encode-"
1950 version ".tgz"))
1951 (sha256
1952 (base32
1953 "06mf8wn95yf5swhmzk4vp0xr4ylfl33dgfknkabbkd8n6jns8gcf"))
1954 (file-name (string-append "colorize" version "-checkout"))))
1955 (build-system asdf-build-system/sbcl)
1956 (synopsis "Common Lisp library for encoding text in various web-savvy encodings")
1957 (description
1958 "A library for encoding text in various web-savvy encodings.")
1959 (home-page "http://quickdocs.org/html-encode/")
1960 (license license:expat)))
1961
1962 (define-public cl-html-encode
1963 (sbcl-package->cl-source-package sbcl-html-encode))
1964
1965 (define-public ecl-html-encode
1966 (sbcl-package->ecl-package sbcl-html-encode))
1967
1968 (define-public sbcl-colorize
1969 (let ((commit "ea676b584e0899cec82f21a9e6871172fe3c0eb5"))
1970 (package
1971 (name "sbcl-colorize")
1972 (version (git-version "0.0.0" "1" commit))
1973 (source
1974 (origin
1975 (method git-fetch)
1976 (uri (git-reference
1977 (url "https://github.com/kingcons/colorize")
1978 (commit commit)))
1979 (sha256
1980 (base32
1981 "1pdg4kiaczmr3ivffhirp7m3lbr1q27rn7dhaay0vwghmi31zcw9"))
1982 (file-name (git-file-name "colorize" version))))
1983 (build-system asdf-build-system/sbcl)
1984 (inputs
1985 `(("alexandria" ,sbcl-alexandria)
1986 ("split-sequence" ,sbcl-split-sequence)
1987 ("html-encode" ,sbcl-html-encode)))
1988 (synopsis "Common Lisp for syntax highlighting")
1989 (description
1990 "@command{colorize} is a Lisp library for syntax highlighting
1991 supporting the following languages: Common Lisp, Emacs Lisp, Scheme, Clojure,
1992 C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
1993 (home-page "https://github.com/kingcons/colorize")
1994 ;; TODO: Missing license?
1995 (license license:expat))))
1996
1997 (define-public cl-colorize
1998 (sbcl-package->cl-source-package sbcl-colorize))
1999
2000 (define-public ecl-colorize
2001 (sbcl-package->ecl-package sbcl-colorize))
2002
2003 (define-public sbcl-3bmd
2004 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
2005 (package
2006 (name "sbcl-3bmd")
2007 (version (git-version "0.0.0" "1" commit))
2008 (source
2009 (origin
2010 (method git-fetch)
2011 (uri (git-reference
2012 (url "https://github.com/3b/3bmd")
2013 (commit commit)))
2014 (sha256
2015 (base32
2016 "1rgv3gi7wf963ikmmpk132wgn0icddf226gq3bmcnk1fr3v9gf2f"))
2017 (file-name (git-file-name "3bmd" version))))
2018 (build-system asdf-build-system/sbcl)
2019 (arguments
2020 ;; FIXME: We need to specify the name because the build-system thinks
2021 ;; "3" is a version marker.
2022 `(#:asd-system-name "3bmd"))
2023 (inputs
2024 `(("esrap" ,sbcl-esrap)
2025 ("split-sequence" ,sbcl-split-sequence)))
2026 (synopsis "Markdown processor in Command Lisp using esrap parser")
2027 (description
2028 "Common Lisp Markdown -> HTML converter, using @command{esrap} for
2029 parsing, and grammar based on @command{peg-markdown}.")
2030 (home-page "https://github.com/3b/3bmd")
2031 (license license:expat))))
2032
2033 (define-public cl-3bmd
2034 (sbcl-package->cl-source-package sbcl-3bmd))
2035
2036 (define-public ecl-3bmd
2037 (sbcl-package->ecl-package sbcl-3bmd))
2038
2039 (define-public sbcl-3bmd-ext-code-blocks
2040 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
2041 (package
2042 (inherit sbcl-3bmd)
2043 (name "sbcl-3bmd-ext-code-blocks")
2044 (arguments
2045 `(#:asd-system-name "3bmd-ext-code-blocks"
2046 #:asd-file "3bmd-ext-code-blocks.asd"))
2047 (inputs
2048 `(("3bmd" ,sbcl-3bmd)
2049 ("colorize" ,sbcl-colorize)))
2050 (synopsis "3bmd extension which adds support for GitHub-style fenced
2051 code blocks")
2052 (description
2053 "3bmd extension which adds support for GitHub-style fenced code blocks,
2054 with @command{colorize} support."))))
2055
2056 (define-public cl-3bmd-ext-code-blocks
2057 (sbcl-package->cl-source-package sbcl-3bmd-ext-code-blocks))
2058
2059 (define-public ecl-3bmd-ext-code-blocks
2060 (sbcl-package->ecl-package sbcl-3bmd-ext-code-blocks))
2061
2062 (define-public sbcl-cl-fad
2063 (package
2064 (name "sbcl-cl-fad")
2065 (version "0.7.5")
2066 (source
2067 (origin
2068 (method git-fetch)
2069 (uri (git-reference
2070 (url "https://github.com/edicl/cl-fad/")
2071 (commit (string-append "v" version))))
2072 (sha256
2073 (base32
2074 "1l1qmk9z57q84bz5r04sxsksggsnd7dgkxlybzh9imz6ma7sm52m"))
2075 (file-name (string-append "cl-fad" version "-checkout"))))
2076 (build-system asdf-build-system/sbcl)
2077 (inputs
2078 `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
2079 (synopsis "Portable pathname library for Common Lisp")
2080 (description
2081 "CL-FAD (for \"Files and Directories\") is a thin layer atop Common
2082 Lisp's standard pathname functions. It is intended to provide some
2083 unification between current CL implementations on Windows, OS X, Linux, and
2084 Unix. Most of the code was written by Peter Seibel for his book Practical
2085 Common Lisp.")
2086 (home-page "https://edicl.github.io/cl-fad/")
2087 (license license:bsd-2)))
2088
2089 (define-public cl-fad
2090 (sbcl-package->cl-source-package sbcl-cl-fad))
2091
2092 (define-public ecl-cl-fad
2093 (sbcl-package->ecl-package sbcl-cl-fad))
2094
2095 (define-public sbcl-rt
2096 (package
2097 (name "sbcl-rt")
2098 (version "1990.12.19")
2099 (source
2100 (origin
2101 (method url-fetch)
2102 (uri (string-append "http://beta.quicklisp.org/archive/rt/2010-10-06/rt-"
2103 "20101006-git" ".tgz"))
2104 (sha256
2105 (base32
2106 "1jncar0xwkqk8yrc2dln389ivvgzs7ijdhhs3zpfyi5d21f0qa1v"))))
2107 (build-system asdf-build-system/sbcl)
2108 (synopsis "MIT Regression Tester")
2109 (description
2110 "RT provides a framework for writing regression test suites.")
2111 (home-page "https://github.com/sharplispers/nibbles")
2112 (license license:unlicense)))
2113
2114 (define-public cl-rt
2115 (sbcl-package->cl-source-package sbcl-rt))
2116
2117 (define-public ecl-rt
2118 (sbcl-package->ecl-package sbcl-rt))
2119
2120 (define-public sbcl-nibbles
2121 (package
2122 (name "sbcl-nibbles")
2123 (version "0.14")
2124 (source
2125 (origin
2126 (method git-fetch)
2127 (uri (git-reference
2128 (url "https://github.com/sharplispers/nibbles/")
2129 (commit (string-append "v" version))))
2130 (sha256
2131 (base32
2132 "1v7qfgpvdr6nz7v63dj69d26dis0kff3rd8xamr1llfdvza2pm8f"))
2133 (file-name (git-file-name "nibbles" version))))
2134 (build-system asdf-build-system/sbcl)
2135 (native-inputs
2136 ;; Tests only.
2137 `(("rt" ,sbcl-rt)))
2138 (synopsis "Common Lisp library for accessing octet-addressed blocks of data")
2139 (description
2140 "When dealing with network protocols and file formats, it's common to
2141 have to read or write 16-, 32-, or 64-bit datatypes in signed or unsigned
2142 flavors. Common Lisp sort of supports this by specifying :element-type for
2143 streams, but that facility is underspecified and there's nothing similar for
2144 read/write from octet vectors. What most people wind up doing is rolling their
2145 own small facility for their particular needs and calling it a day.
2146
2147 This library attempts to be comprehensive and centralize such
2148 facilities. Functions to read 16-, 32-, and 64-bit quantities from octet
2149 vectors in signed or unsigned flavors are provided; these functions are also
2150 SETFable. Since it's sometimes desirable to read/write directly from streams,
2151 functions for doing so are also provided. On some implementations,
2152 reading/writing IEEE singles/doubles (i.e. single-float and double-float) will
2153 also be supported.")
2154 (home-page "https://github.com/sharplispers/nibbles")
2155 (license license:bsd-3)))
2156
2157 (define-public cl-nibbles
2158 (sbcl-package->cl-source-package sbcl-nibbles))
2159
2160 (define-public ecl-nibbles
2161 (sbcl-package->ecl-package sbcl-nibbles))
2162
2163 (define-public sbcl-ironclad
2164 (package
2165 (name "sbcl-ironclad")
2166 (version "0.42")
2167 (source
2168 (origin
2169 (method git-fetch)
2170 (uri (git-reference
2171 (url "https://github.com/sharplispers/ironclad/")
2172 (commit (string-append "v" version))))
2173 (sha256
2174 (base32
2175 "1wjcb9vpybxjrmch7f7s78a5abxmnknbd4fl49dl5lz8a3fc8vf0"))
2176 (file-name (string-append "ironblad" version "-checkout"))))
2177 (build-system asdf-build-system/sbcl)
2178 (native-inputs
2179 ;; Tests only.
2180 `(("rt" ,sbcl-rt)))
2181 (inputs
2182 `(("flexi-streams" ,sbcl-flexi-streams)
2183 ("nibbles" ,sbcl-nibbles)))
2184 (synopsis "Cryptographic toolkit written in Common Lisp")
2185 (description
2186 "Ironclad is a cryptography library written entirely in Common Lisp.
2187 It includes support for several popular ciphers, digests, MACs and public key
2188 cryptography algorithms. For several implementations that support Gray
2189 streams, support is included for convenient stream wrappers.")
2190 (home-page "https://github.com/sharplispers/ironclad")
2191 (license license:bsd-3)))
2192
2193 (define-public cl-ironclad
2194 (sbcl-package->cl-source-package sbcl-ironclad))
2195
2196 (define-public ecl-ironclad
2197 (sbcl-package->ecl-package sbcl-ironclad))
2198
2199 (define-public sbcl-named-readtables
2200 (let ((commit "4dfb89fa1af6b305b6492b8af042f5190c11e9fc")
2201 (revision "1"))
2202 (package
2203 (name "sbcl-named-readtables")
2204 (version (string-append "0.9-" revision "." (string-take commit 7)))
2205 (source
2206 (origin
2207 (method git-fetch)
2208 (uri (git-reference
2209 (url "https://github.com/melisgl/named-readtables.git")
2210 (commit commit)))
2211 (sha256
2212 (base32 "083kgh5462iqbb4px6kq8s7sggvpvkm36hx4qi9rnaw53b6ilqkk"))
2213 (file-name (git-file-name "named-readtables" version))))
2214 (build-system asdf-build-system/sbcl)
2215 (arguments
2216 ;; Tests seem to be broken.
2217 `(#:tests? #f))
2218 (home-page "https://github.com/melisgl/named-readtables/")
2219 (synopsis "Library that creates a namespace for named readtables")
2220 (description "Named readtables is a library that creates a namespace for
2221 named readtables, which is akin to package namespacing in Common Lisp.")
2222 (license license:bsd-3))))
2223
2224 (define-public cl-named-readtables
2225 (sbcl-package->cl-source-package sbcl-named-readtables))
2226
2227 (define-public ecl-named-readtables
2228 (sbcl-package->ecl-package sbcl-named-readtables))
2229
2230 (define-public sbcl-pythonic-string-reader
2231 (let ((commit "47a70ba1e32362e03dad6ef8e6f36180b560f86a"))
2232 (package
2233 (name "sbcl-pythonic-string-reader")
2234 (version (git-version "0.0.0" "1" commit))
2235 (source
2236 (origin
2237 (method git-fetch)
2238 (uri (git-reference
2239 (url "https://github.com/smithzvk/pythonic-string-reader/")
2240 (commit commit)))
2241 (sha256
2242 (base32 "1b5iryqw8xsh36swckmz8rrngmc39k92si33fgy5pml3n9l5rq3j"))
2243 (file-name (git-file-name "pythonic-string-reader" version))))
2244 (build-system asdf-build-system/sbcl)
2245 (inputs
2246 `(("named-readtables" ,sbcl-named-readtables)))
2247 (home-page "https://github.com/smithzvk/pythonic-string-reader")
2248 (synopsis "Read table modification inspired by Python's three quote strings")
2249 (description "This piece of code sets up some reader macros that make it
2250 simpler to input string literals which contain backslashes and double quotes
2251 This is very useful for writing complicated docstrings and, as it turns out,
2252 writing code that contains string literals that contain code themselves.")
2253 (license license:bsd-3))))
2254
2255 (define-public cl-pythonic-string-reader
2256 (sbcl-package->cl-source-package sbcl-pythonic-string-reader))
2257
2258 (define-public ecl-pythonic-string-reader
2259 (sbcl-package->ecl-package sbcl-pythonic-string-reader))
2260
2261 (define-public sbcl-slime-swank
2262 (package
2263 (name "sbcl-slime-swank")
2264 (version "2.22")
2265 (source
2266 (origin
2267 (file-name (string-append name "-" version ".tar.gz"))
2268 (method git-fetch)
2269 (uri (git-reference
2270 ;; (url "https://github.com/slime/slime/")
2271 ;; (commit "841f61467c03dea9f38ff9d5af0e21a8aa29e8f7")
2272 ;; REVIEW: Do we need sionescu's patch to package SWANK?
2273 (url "https://github.com/sionescu/slime/")
2274 ;; (commit "swank-asdf")
2275 (commit "2f7c3fcb3ac7d50d844d5c6ca0e89b52a45e1d3a")))
2276 (sha256
2277 (base32
2278 ;; "065bc4y6iskazdfwlhgcjlzg9bi2hyjbhmyjw3461506pgkj08vi"
2279 "0pkmg94wn4ii1zhlrncn44mdc5i6c5v0i9gbldx4dwl2yy7ibz5c"))
2280 (modules '((guix build utils)))
2281 (snippet
2282 '(begin
2283 (substitute* "contrib/swank-listener-hooks.lisp"
2284 ((":compile-toplevel :load-toplevel ") ""))
2285 (substitute* "contrib/swank-presentations.lisp"
2286 ((":compile-toplevel :load-toplevel ") ""))
2287 (substitute* "swank.asd"
2288 ((":file \"packages\".*" all)
2289 (string-append all "(:file \"swank-loader-asdf\")\n")))
2290 (substitute* "swank-loader-asdf.lisp"
2291 ((":common-lisp" all) (string-append all " #:asdf")))
2292 #t))))
2293 (build-system asdf-build-system/sbcl)
2294 (arguments
2295 `(#:asd-file "swank.asd"
2296 #:asd-system-name "swank"))
2297 (home-page "https://github.com/slime/slime")
2298 (synopsis "Common Lisp Swank server")
2299 (description
2300 "This is only useful if you want to start a Swank server in a Lisp
2301 processes that doesn't run under Emacs. Lisp processes created by
2302 @command{M-x slime} automatically start the server.")
2303 (license (list license:gpl2+ license:public-domain))))
2304
2305 (define-public sbcl-mgl-pax
2306 (let ((commit "818448418d6b9de74620f606f5b23033c6082769"))
2307 (package
2308 (name "sbcl-mgl-pax")
2309 (version (git-version "0.0.0" "1" commit))
2310 (source
2311 (origin
2312 (method git-fetch)
2313 (uri (git-reference
2314 (url "https://github.com/melisgl/mgl-pax")
2315 (commit commit)))
2316 (sha256
2317 (base32
2318 "1p97zfkh130bdxqqxwaw2j9psv58751wakx7czbfpq410lg7dd7i"))
2319 (file-name (git-file-name "mgl-pax" version))))
2320 (build-system asdf-build-system/sbcl)
2321 (inputs
2322 `(("3bmd" ,sbcl-3bmd)
2323 ("3bmd-ext-code-blocks" ,sbcl-3bmd-ext-code-blocks)
2324 ("babel" ,sbcl-babel)
2325 ("cl-fad" ,sbcl-cl-fad)
2326 ("ironclad" ,sbcl-ironclad)
2327 ("named-readtables" ,sbcl-named-readtables)
2328 ("pythonic-string-reader" ,sbcl-pythonic-string-reader)
2329 ("swank" ,sbcl-slime-swank)))
2330 (synopsis "Exploratory programming environment and documentation generator")
2331 (description
2332 "PAX provides an extremely poor man's Explorable Programming
2333 environment. Narrative primarily lives in so called sections that mix markdown
2334 docstrings with references to functions, variables, etc, all of which should
2335 probably have their own docstrings.
2336
2337 The primary focus is on making code easily explorable by using SLIME's
2338 @command{M-.} (@command{slime-edit-definition}). See how to enable some
2339 fanciness in Emacs Integration. Generating documentation from sections and all
2340 the referenced items in Markdown or HTML format is also implemented.
2341
2342 With the simplistic tools provided, one may accomplish similar effects as with
2343 Literate Programming, but documentation is generated from code, not vice versa
2344 and there is no support for chunking yet. Code is first, code must look
2345 pretty, documentation is code.")
2346 (home-page "http://quotenil.com/")
2347 (license license:expat))))
2348
2349 (define-public cl-mgl-pax
2350 (sbcl-package->cl-source-package sbcl-mgl-pax))
2351
2352 (define-public ecl-mgl-pax
2353 (sbcl-package->ecl-package sbcl-mgl-pax))
2354
2355 (define-public sbcl-lisp-unit
2356 (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
2357 (package
2358 (name "sbcl-lisp-unit")
2359 (version (git-version "0.0.0" "1" commit))
2360 (source
2361 (origin
2362 (method git-fetch)
2363 (uri (git-reference
2364 (url "https://github.com/OdonataResearchLLC/lisp-unit")
2365 (commit commit)))
2366 (sha256
2367 (base32
2368 "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
2369 (file-name (git-file-name "lisp-unit" version))))
2370 (build-system asdf-build-system/sbcl)
2371 (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
2372 (description
2373 "@command{lisp-unit} is a Common Lisp library that supports unit
2374 testing. It is an extension of the library written by Chris Riesbeck.")
2375 (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
2376 (license license:expat))))
2377
2378 (define-public cl-lisp-unit
2379 (sbcl-package->cl-source-package sbcl-lisp-unit))
2380
2381 (define-public ecl-lisp-unit
2382 (sbcl-package->ecl-package sbcl-lisp-unit))
2383
2384 (define-public sbcl-anaphora
2385 (package
2386 (name "sbcl-anaphora")
2387 (version "0.9.6")
2388 (source
2389 (origin
2390 (method git-fetch)
2391 (uri (git-reference
2392 (url "https://github.com/tokenrove/anaphora")
2393 (commit version)))
2394 (sha256
2395 (base32
2396 "19wfrk3asimznkli0x2rfy637hwpdgqyvwj3vhq9x7vjvyf5vv6x"))
2397 (file-name (git-file-name "anaphora" version))))
2398 (build-system asdf-build-system/sbcl)
2399 (native-inputs
2400 `(("rt" ,sbcl-rt)))
2401 (synopsis "The anaphoric macro collection from Hell")
2402 (description
2403 "Anaphora is the anaphoric macro collection from Hell: it includes many
2404 new fiends in addition to old friends like @command{aif} and
2405 @command{awhen}.")
2406 (home-page "https://github.com/tokenrove/anaphora")
2407 (license license:public-domain)))
2408
2409 (define-public cl-anaphora
2410 (sbcl-package->cl-source-package sbcl-anaphora))
2411
2412 (define-public ecl-anaphora
2413 (sbcl-package->ecl-package sbcl-anaphora))
2414
2415 (define-public sbcl-lift
2416 (let ((commit "7d49a66c62759535624037826891152223d4206c"))
2417 (package
2418 (name "sbcl-lift")
2419 (version (git-version "0.0.0" "1" commit))
2420 (source
2421 (origin
2422 (method git-fetch)
2423 (uri (git-reference
2424 (url "https://github.com/gwkkwg/lift")
2425 (commit commit)))
2426 (sha256
2427 (base32
2428 "127v5avpz1i4m0lkaxqrq8hrl69rdazqaxf6s8awf0nd7wj2g4dp"))
2429 (file-name (git-file-name "lift" version))
2430 (modules '((guix build utils)))
2431 (snippet
2432 ;; Don't keep the bundled website
2433 `(begin
2434 (delete-file-recursively "website")
2435 #t))))
2436 (build-system asdf-build-system/sbcl)
2437 (arguments
2438 ;; The tests require a debugger, but we run with the debugger disabled.
2439 '(#:tests? #f))
2440 (synopsis "LIsp Framework for Testing")
2441 (description
2442 "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
2443 Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
2444 testcases are organized into hierarchical testsuites each of which can have
2445 its own fixture. When run, a testcase can succeed, fail, or error. LIFT
2446 supports randomized testing, benchmarking, profiling, and reporting.")
2447 (home-page "https://github.com/gwkkwg/lift")
2448 (license license:expat))))
2449
2450 (define-public cl-lift
2451 (sbcl-package->cl-source-package sbcl-lift))
2452
2453 (define-public ecl-lift
2454 (sbcl-package->ecl-package sbcl-lift))
2455
2456 (define-public sbcl-let-plus
2457 (let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb"))
2458 (package
2459 (name "sbcl-let-plus")
2460 (version (git-version "0.0.0" "1" commit))
2461 (source
2462 (origin
2463 (method git-fetch)
2464 (uri (git-reference
2465 (url "https://github.com/sharplispers/let-plus")
2466 (commit commit)))
2467 (sha256
2468 (base32
2469 "0i050ca2iys9f5mb7dgqgqdxfnc3b0rnjdwv95sqd490vkiwrsaj"))
2470 (file-name (git-file-name "let-plus" version))))
2471 (build-system asdf-build-system/sbcl)
2472 (inputs
2473 `(("alexandria" ,sbcl-alexandria)
2474 ("anaphora" ,sbcl-anaphora)))
2475 (native-inputs
2476 `(("lift" ,sbcl-lift)))
2477 (synopsis "Destructuring extension of let*")
2478 (description
2479 "This library implements the let+ macro, which is a dectructuring
2480 extension of let*. It features:
2481
2482 @itemize
2483 @item Clean, consistent syntax and small implementation (less than 300 LOC,
2484 not counting tests)
2485 @item Placeholder macros allow editor hints and syntax highlighting
2486 @item @command{&ign} for ignored values (in forms where that makes sense)
2487 @item Very easy to extend
2488 @end itemize\n")
2489 (home-page "https://github.com/sharplispers/let-plus")
2490 (license license:boost1.0))))
2491
2492 (define-public cl-let-plus
2493 (sbcl-package->cl-source-package sbcl-let-plus))
2494
2495 (define-public ecl-let-plus
2496 (sbcl-package->ecl-package sbcl-let-plus))
2497
2498 (define-public sbcl-cl-colors
2499 (let ((commit "827410584553f5c717eec6182343b7605f707f75"))
2500 (package
2501 (name "sbcl-cl-colors")
2502 (version (git-version "0.0.0" "1" commit))
2503 (source
2504 (origin
2505 (method git-fetch)
2506 (uri (git-reference
2507 (url "https://github.com/tpapp/cl-colors")
2508 (commit commit)))
2509 (sha256
2510 (base32
2511 "0l446lday4hybsm9bq3jli97fvv8jb1d33abg79vbylpwjmf3y9a"))
2512 (file-name (git-file-name "cl-colors" version))))
2513 (build-system asdf-build-system/sbcl)
2514 (inputs
2515 `(("alexandria" ,sbcl-alexandria)
2516 ("let-plus" ,sbcl-let-plus)))
2517 (synopsis "Simple color library for Common Lisp")
2518 (description
2519 "This is a very simple color library for Common Lisp, providing
2520
2521 @itemize
2522 @item Types for representing colors in HSV and RGB spaces.
2523 @item Simple conversion functions between the above types (and also
2524 hexadecimal representation for RGB).
2525 @item Some predefined colors (currently X11 color names – of course the
2526 library does not depend on X11).Because color in your terminal is nice.
2527 @end itemize
2528
2529 This library is no longer supported by its author.")
2530 (home-page "https://github.com/tpapp/cl-colors")
2531 (license license:boost1.0))))
2532
2533 (define-public cl-colors
2534 (sbcl-package->cl-source-package sbcl-cl-colors))
2535
2536 (define-public ecl-cl-colors
2537 (sbcl-package->ecl-package sbcl-cl-colors))
2538
2539 (define-public sbcl-cl-ansi-text
2540 (let ((commit "53badf7878f27f22f2d4a2a43e6df458e43acbe9"))
2541 (package
2542 (name "sbcl-cl-ansi-text")
2543 (version (git-version "1.0.0" "1" commit))
2544 (source
2545 (origin
2546 (method git-fetch)
2547 (uri (git-reference
2548 (url "https://github.com/pnathan/cl-ansi-text")
2549 (commit commit)))
2550 (sha256
2551 (base32
2552 "11i27n0dbz5lmygiw65zzr8lx0rac6b6yysqranphn31wls6ja3v"))
2553 (file-name (git-file-name "cl-ansi-text" version))))
2554 (build-system asdf-build-system/sbcl)
2555 (inputs
2556 `(("alexandria" ,sbcl-alexandria)
2557 ("cl-colors" ,sbcl-cl-colors)))
2558 (native-inputs
2559 `(("fiveam" ,sbcl-fiveam)))
2560 (synopsis "ANSI terminal color implementation for Common Lisp")
2561 (description
2562 "@command{cl-ansi-text} provides utilities which enable printing to an
2563 ANSI terminal with colored text. It provides the macro @command{with-color}
2564 which causes everything printed in the body to be displayed with the provided
2565 color. It further provides functions which will print the argument with the
2566 named color.")
2567 (home-page "https://github.com/pnathan/cl-ansi-text")
2568 (license license:llgpl))))
2569
2570 (define-public cl-ansi-text
2571 (sbcl-package->cl-source-package sbcl-cl-ansi-text))
2572
2573 (define-public ecl-cl-ansi-text
2574 (sbcl-package->ecl-package sbcl-cl-ansi-text))
2575
2576 (define-public sbcl-prove-asdf
2577 (let ((commit "4f9122bd393e63c5c70c1fba23070622317cfaa0"))
2578 (package
2579 (name "sbcl-prove-asdf")
2580 (version (git-version "1.0.0" "1" commit))
2581 (source
2582 (origin
2583 (method git-fetch)
2584 (uri (git-reference
2585 (url "https://github.com/fukamachi/prove")
2586 (commit commit)))
2587 (sha256
2588 (base32
2589 "07sbfw459z8bbjvx1qlmfa8qk2mvbjnnzi2mi0x72blaj8bkl4vc"))
2590 (file-name (git-file-name "prove" version))))
2591 (build-system asdf-build-system/sbcl)
2592 (arguments
2593 `(#:asd-file "prove-asdf.asd"))
2594 (synopsis "Test requirement for the Common Lisp 'prove' library")
2595 (description
2596 "Test requirement for the Common Lisp @command{prove} library.")
2597 (home-page "https://github.com/fukamachi/prove")
2598 (license license:expat))))
2599
2600 (define-public cl-prove-asdf
2601 (sbcl-package->cl-source-package sbcl-prove-asdf))
2602
2603 (define-public ecl-prove-asdf
2604 (sbcl-package->ecl-package sbcl-prove-asdf))
2605
2606 (define-public sbcl-prove
2607 (package
2608 (inherit sbcl-prove-asdf)
2609 (name "sbcl-prove")
2610 (inputs
2611 `(("alexandria" ,sbcl-alexandria)
2612 ("cl-ppcre" ,sbcl-cl-ppcre)
2613 ("cl-ansi-text" ,sbcl-cl-ansi-text)))
2614 (native-inputs
2615 `(("prove-asdf" ,sbcl-prove-asdf)))
2616 (arguments
2617 `(#:asd-file "prove.asd"))
2618 (synopsis "Yet another unit testing framework for Common Lisp")
2619 (description
2620 "This project was originally called @command{cl-test-more}.
2621 @command{prove} is yet another unit testing framework for Common Lisp. The
2622 advantages of @command{prove} are:
2623
2624 @itemize
2625 @item Various simple functions for testing and informative error messages
2626 @item ASDF integration
2627 @item Extensible test reporters
2628 @item Colorizes the report if it's available (note for SLIME)
2629 @item Reports test durations
2630 @end itemize\n")))
2631
2632 (define-public cl-prove
2633 (sbcl-package->cl-source-package sbcl-prove))
2634
2635 (define-public ecl-prove
2636 (sbcl-package->ecl-package sbcl-prove))
2637
2638 (define-public sbcl-proc-parse
2639 (let ((commit "ac3636834d561bdc2686c956dbd82494537285fd"))
2640 (package
2641 (name "sbcl-proc-parse")
2642 (version (git-version "0.0.0" "1" commit))
2643 (source
2644 (origin
2645 (method git-fetch)
2646 (uri (git-reference
2647 (url "https://github.com/fukamachi/proc-parse")
2648 (commit commit)))
2649 (sha256
2650 (base32
2651 "06rnl0h4cx6xv2wj3jczmmcxqn2703inmmvg1s4npbghmijsybfh"))
2652 (file-name (git-file-name "proc-parse" version))))
2653 (build-system asdf-build-system/sbcl)
2654 (inputs
2655 `(("alexandria" ,sbcl-alexandria)
2656 ("babel" ,sbcl-babel)))
2657 (native-inputs
2658 `(("prove" ,sbcl-prove)
2659 ("prove-asdf" ,sbcl-prove-asdf)))
2660 (arguments
2661 ;; TODO: Tests don't find "proc-parse-test", why?
2662 `(#:tests? #f))
2663 (synopsis "Procedural vector parser")
2664 (description
2665 "This is a string/octets parser library for Common Lisp with speed and
2666 readability in mind. Unlike other libraries, the code is not a
2667 pattern-matching-like, but a char-by-char procedural parser.")
2668 (home-page "https://github.com/fukamachi/proc-parse")
2669 (license license:bsd-2))))
2670
2671 (define-public cl-proc-parse
2672 (sbcl-package->cl-source-package sbcl-proc-parse))
2673
2674 (define-public ecl-proc-parse
2675 (sbcl-package->ecl-package sbcl-proc-parse))
2676
2677 (define-public sbcl-parse-float
2678 (let ((commit "2aae569f2a4b2eb3bfb5401a959425dcf151b09c"))
2679 (package
2680 (name "sbcl-parse-float")
2681 (version (git-version "0.0.0" "1" commit))
2682 (source
2683 (origin
2684 (method git-fetch)
2685 (uri (git-reference
2686 (url "https://github.com/soemraws/parse-float")
2687 (commit commit)))
2688 (sha256
2689 (base32
2690 "08xw8cchhmqcc0byng69m3f5a2izc9y2290jzz2k0qrbibp1fdk7"))
2691 (file-name (git-file-name "proc-parse" version))))
2692 (build-system asdf-build-system/sbcl)
2693 (inputs
2694 `(("alexandria" ,sbcl-alexandria)
2695 ("babel" ,sbcl-babel)))
2696 (native-inputs
2697 `(("prove" ,sbcl-prove)
2698 ("prove-asdf" ,sbcl-prove-asdf)))
2699 (arguments
2700 ;; TODO: Tests don't find "proc-parse-test", why?
2701 `(#:tests? #f))
2702 (synopsis "Parse a floating point value from a string in Common Lisp")
2703 (description
2704 "This package exports the following function to parse floating-point
2705 values from a string in Common Lisp.")
2706 (home-page "https://github.com/soemraws/parse-float")
2707 (license license:public-domain))))
2708
2709 (define-public cl-parse-float
2710 (sbcl-package->cl-source-package sbcl-parse-float))
2711
2712 (define-public ecl-parse-float
2713 (sbcl-package->ecl-package sbcl-parse-float))
2714
2715 (define-public sbcl-ascii-strings
2716 (let ((revision "1")
2717 (changeset "5048480a61243e6f1b02884012c8f25cdbee6d97"))
2718 (package
2719 (name "sbcl-ascii-strings")
2720 (version (string-append "0-" revision "." (string-take changeset 7)))
2721 (source
2722 (origin
2723 (method hg-fetch)
2724 (uri (hg-reference
2725 (url "https://bitbucket.org/vityok/cl-string-match/")
2726 (changeset changeset)))
2727 (sha256
2728 (base32
2729 "01wn5qx562w43ssy92xlfgv79w7p0nv0wbl76mpmba131n9ziq2y"))
2730 (file-name (git-file-name "cl-string-match" version))))
2731 (build-system asdf-build-system/sbcl)
2732 (inputs
2733 `(("alexandria" ,sbcl-alexandria)
2734 ("babel" ,sbcl-babel)))
2735 (arguments
2736 `(#:asd-file "ascii-strings.asd"))
2737 (synopsis "Operations on ASCII strings")
2738 (description
2739 "Operations on ASCII strings. Essentially this can be any kind of
2740 single-byte encoded strings.")
2741 (home-page "https://bitbucket.org/vityok/cl-string-match/")
2742 (license license:bsd-3))))
2743
2744 (define-public cl-ascii-strings
2745 (sbcl-package->cl-source-package sbcl-ascii-strings))
2746
2747 (define-public ecl-ascii-strings
2748 (sbcl-package->ecl-package sbcl-ascii-strings))
2749
2750 (define-public sbcl-simple-scanf
2751 (package
2752 (inherit sbcl-ascii-strings)
2753 (name "sbcl-simple-scanf")
2754 (inputs
2755 `(("alexandria" ,sbcl-alexandria)
2756 ("iterate" ,sbcl-iterate)
2757 ("proc-parse" ,sbcl-proc-parse)
2758 ("parse-float" ,sbcl-parse-float)))
2759 (arguments
2760 `(#:asd-file "simple-scanf.asd"))
2761 (synopsis "Simple scanf-like functionality implementation")
2762 (description
2763 "A simple scanf-like functionality implementation.")))
2764
2765 (define-public cl-simple-scanf
2766 (sbcl-package->cl-source-package sbcl-simple-scanf))
2767
2768 (define-public ecl-simple-scanf
2769 (sbcl-package->ecl-package sbcl-simple-scanf))
2770
2771 (define-public sbcl-cl-string-match
2772 (package
2773 (inherit sbcl-ascii-strings)
2774 (name "sbcl-cl-string-match")
2775 (inputs
2776 `(("alexandria" ,sbcl-alexandria)
2777 ("ascii-strings" ,sbcl-ascii-strings)
2778 ("yacc" ,sbcl-cl-yacc)
2779 ("jpl-util" ,sbcl-jpl-util)
2780 ("jpl-queues" ,sbcl-jpl-queues)
2781 ("mgl-pax" ,sbcl-mgl-pax)
2782 ("iterate" ,sbcl-iterate)))
2783 ;; TODO: Tests are not evaluated properly.
2784 (native-inputs
2785 ;; For testing:
2786 `(("lisp-unit" ,sbcl-lisp-unit)
2787 ("simple-scanf" ,sbcl-simple-scanf)))
2788 (arguments
2789 `(#:tests? #f
2790 #:asd-file "cl-string-match.asd"))
2791 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
2792 (description
2793 "@command{cl-strings} is a small, portable, dependency-free set of
2794 utilities that make it even easier to manipulate text in Common Lisp. It has
2795 100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")))
2796
2797 (define-public cl-string-match
2798 (sbcl-package->cl-source-package sbcl-cl-string-match))
2799
2800 (define-public ecl-cl-string-match
2801 (sbcl-package->ecl-package sbcl-cl-string-match))
2802
2803 (define-public sbcl-ptester
2804 (package
2805 (name "sbcl-ptester")
2806 (version "20160929")
2807 (source
2808 (origin
2809 (method url-fetch)
2810 (uri (string-append "http://beta.quicklisp.org/archive/ptester/"
2811 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2812 "/ptester-"
2813 version
2814 "-git.tgz"))
2815 (sha256
2816 (base32
2817 "04rlq1zljhxc65pm31bah3sq3as24l0sdivz440s79qlnnyh13hz"))))
2818 (build-system asdf-build-system/sbcl)
2819 (home-page "http://quickdocs.org/ptester/")
2820 (synopsis "Portable test harness package")
2821 (description
2822 "@command{ptester} is a portable testing framework based on Franz's
2823 tester module.")
2824 (license license:lgpl3+)))
2825
2826 (define-public cl-ptester
2827 (sbcl-package->cl-source-package sbcl-ptester))
2828
2829 (define-public ecl-ptester
2830 (sbcl-package->ecl-package sbcl-ptester))
2831
2832 (define-public sbcl-puri
2833 (package
2834 (name "sbcl-puri")
2835 (version "20180228")
2836 (source
2837 (origin
2838 (method url-fetch)
2839 (uri (string-append "http://beta.quicklisp.org/archive/puri/"
2840 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2841 "/puri-"
2842 version
2843 "-git.tgz"))
2844 (sha256
2845 (base32
2846 "1s4r5adrjy5asry45xbcbklxhdjydvf6n55z897nvyw33bigrnbz"))))
2847 (build-system asdf-build-system/sbcl)
2848 ;; REVIEW: Webiste down?
2849 (native-inputs
2850 `(("ptester" ,sbcl-ptester)))
2851 (home-page "http://files.kpe.io/puri/")
2852 (synopsis "Portable URI Library")
2853 (description
2854 "This is portable Universal Resource Identifier library for Common Lisp
2855 programs. It parses URI according to the RFC 2396 specification")
2856 (license license:lgpl3+)))
2857
2858 (define-public cl-puri
2859 (sbcl-package->cl-source-package sbcl-puri))
2860
2861 (define-public ecl-puri
2862 (sbcl-package->ecl-package sbcl-puri))
2863
2864 (define-public sbcl-queues
2865 (let ((commit "47d4da65e9ea20953b74aeeab7e89a831b66bc94"))
2866 (package
2867 (name "sbcl-queues")
2868 (version (git-version "0.0.0" "1" commit))
2869 (source
2870 (origin
2871 (method git-fetch)
2872 (uri (git-reference
2873 (url "https://github.com/oconnore/queues")
2874 (commit commit)))
2875 (file-name (git-file-name "queues" version))
2876 (sha256
2877 (base32
2878 "0wdhfnzi4v6d97pggzj2aw55si94w4327br94jrmyvwf351wqjvv"))))
2879 (build-system asdf-build-system/sbcl)
2880 (home-page "https://github.com/oconnore/queues")
2881 (synopsis "Common Lisp queue library")
2882 (description
2883 "This is a simple queue library for Common Lisp with features such as
2884 non-consing thread safe queues and fibonacci priority queues.")
2885 (license license:expat))))
2886
2887 (define-public cl-queues
2888 (sbcl-package->cl-source-package sbcl-queues))
2889
2890 (define-public ecl-queues
2891 (sbcl-package->ecl-package sbcl-queues))
2892
2893 (define-public sbcl-queues.simple-queue
2894 (package
2895 (inherit sbcl-queues)
2896 (name "sbcl-queues.simple-queue")
2897 (inputs
2898 `(("sbcl-queues" ,sbcl-queues)))
2899 (arguments
2900 `(#:asd-file "queues.simple-queue.asd"))
2901 (synopsis "Simple queue implementation")
2902 (description
2903 "This is a simple queue library for Common Lisp with features such as
2904 non-consing thread safe queues and fibonacci priority queues.")
2905 (license license:expat)))
2906
2907 (define-public cl-queues.simple-queue
2908 (sbcl-package->cl-source-package sbcl-queues.simple-queue))
2909
2910 (define-public ecl-queues.simple-queue
2911 (sbcl-package->ecl-package sbcl-queues.simple-queue))
2912
2913 (define-public sbcl-queues.simple-cqueue
2914 (package
2915 (inherit sbcl-queues)
2916 (name "sbcl-queues.simple-cqueue")
2917 (inputs
2918 `(("sbcl-queues" ,sbcl-queues)
2919 ("sbcl-queues.simple-queue" ,sbcl-queues.simple-queue)
2920 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2921 (arguments
2922 `(#:asd-file "queues.simple-cqueue.asd"))
2923 (synopsis "Thread safe queue implementation")
2924 (description
2925 "This is a simple queue library for Common Lisp with features such as
2926 non-consing thread safe queues and fibonacci priority queues.")
2927 (license license:expat)))
2928
2929 (define-public cl-queues.simple-cqueue
2930 (sbcl-package->cl-source-package sbcl-queues.simple-cqueue))
2931
2932 (define-public ecl-queues.simple-cqueue
2933 (sbcl-package->ecl-package sbcl-queues.simple-cqueue))
2934
2935 (define-public sbcl-queues.priority-queue
2936 (package
2937 (inherit sbcl-queues)
2938 (name "sbcl-queues.priority-queue")
2939 (inputs
2940 `(("sbcl-queues" ,sbcl-queues)))
2941 (arguments
2942 `(#:asd-file "queues.priority-queue.asd"))
2943 (synopsis "Priority queue (Fibonacci) implementation")
2944 (description
2945 "This is a simple queue library for Common Lisp with features such as
2946 non-consing thread safe queues and fibonacci priority queues.")
2947 (license license:expat)))
2948
2949 (define-public cl-queues.priority-queue
2950 (sbcl-package->cl-source-package sbcl-queues.priority-queue))
2951
2952 (define-public ecl-queues.priority-queue
2953 (sbcl-package->ecl-package sbcl-queues.priority-queue))
2954
2955 (define-public sbcl-queues.priority-cqueue
2956 (package
2957 (inherit sbcl-queues)
2958 (name "sbcl-queues.priority-cqueue")
2959 (inputs
2960 `(("sbcl-queues" ,sbcl-queues)
2961 ("sbcl-queues.priority-queue" ,sbcl-queues.priority-queue)
2962 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2963 (arguments
2964 `(#:asd-file "queues.priority-cqueue.asd"))
2965 (synopsis "Thread safe fibonacci priority queue implementation")
2966 (description
2967 "This is a simple queue library for Common Lisp with features such as
2968 non-consing thread safe queues and fibonacci priority queues.")
2969 (license license:expat)))
2970
2971 (define-public cl-queues.priority-cqueue
2972 (sbcl-package->cl-source-package sbcl-queues.priority-cqueue))
2973
2974 (define-public ecl-queues.priority-cqueue
2975 (sbcl-package->ecl-package sbcl-queues.priority-cqueue))
2976
2977 (define sbcl-cffi-bootstrap
2978 (package
2979 (name "sbcl-cffi-bootstrap")
2980 (version "0.19.0")
2981 (source
2982 (origin
2983 (method git-fetch)
2984 (uri (git-reference
2985 (url "https://github.com/cffi/cffi.git")
2986 (commit (string-append "v" version))))
2987 (file-name (git-file-name "cffi-bootstrap" version))
2988 (sha256
2989 (base32 "09sfgc6r7ihmbkwfpvkq5fxc7h45cabpvgbvs47i5cvnmv3k72xy"))))
2990 (build-system asdf-build-system/sbcl)
2991 (inputs
2992 `(("libffi" ,libffi)
2993 ("alexandria" ,sbcl-alexandria)
2994 ("babel" ,sbcl-babel)
2995 ("trivial-features" ,sbcl-trivial-features)))
2996 (native-inputs
2997 `(("pkg-config" ,pkg-config)))
2998 (arguments
2999 '(#:phases
3000 (modify-phases %standard-phases
3001 (add-after 'unpack 'fix-paths
3002 (lambda* (#:key inputs #:allow-other-keys)
3003 (substitute* "libffi/libffi.lisp"
3004 (("libffi.so.6" all) (string-append
3005 (assoc-ref inputs "libffi")
3006 "/lib/" all)))
3007 (substitute* "toolchain/c-toolchain.lisp"
3008 (("\"cc\"") (format #f "~S" (which "gcc")))))))
3009 #:asd-system-name "cffi"
3010 #:tests? #f))
3011 (home-page "https://common-lisp.net/project/cffi/")
3012 (synopsis "Common Foreign Function Interface for Common Lisp")
3013 (description "The Common Foreign Function Interface (CFFI)
3014 purports to be a portable foreign function interface for Common Lisp.
3015 The CFFI library is composed of a Lisp-implementation-specific backend
3016 in the CFFI-SYS package, and a portable frontend in the CFFI
3017 package.")
3018 (license license:expat)))
3019
3020 (define-public sbcl-cffi-toolchain
3021 (package
3022 (inherit sbcl-cffi-bootstrap)
3023 (name "sbcl-cffi-toolchain")
3024 (inputs
3025 `(("libffi" ,libffi)
3026 ("sbcl-cffi" ,sbcl-cffi-bootstrap)))
3027 (arguments
3028 (substitute-keyword-arguments (package-arguments sbcl-cffi-bootstrap)
3029 ((#:asd-system-name _) #f)
3030 ((#:tests? _) #t)))))
3031
3032 (define-public sbcl-cffi-libffi
3033 (package
3034 (inherit sbcl-cffi-toolchain)
3035 (name "sbcl-cffi-libffi")
3036 (inputs
3037 `(("cffi" ,sbcl-cffi-bootstrap)
3038 ("cffi-grovel" ,sbcl-cffi-grovel)
3039 ("trivial-features" ,sbcl-trivial-features)
3040 ("libffi" ,libffi)))))
3041
3042 (define-public sbcl-cffi-grovel
3043 (package
3044 (inherit sbcl-cffi-toolchain)
3045 (name "sbcl-cffi-grovel")
3046 (inputs
3047 `(("libffi" ,libffi)
3048 ("cffi" ,sbcl-cffi-bootstrap)
3049 ("cffi-toolchain" ,sbcl-cffi-toolchain)
3050 ("alexandria" ,sbcl-alexandria)))
3051 (arguments
3052 (substitute-keyword-arguments (package-arguments sbcl-cffi-toolchain)
3053 ((#:phases phases)
3054 `(modify-phases ,phases
3055 (add-after 'build 'install-headers
3056 (lambda* (#:key outputs #:allow-other-keys)
3057 (install-file "grovel/common.h"
3058 (string-append
3059 (assoc-ref outputs "out")
3060 "/include/grovel"))))))))))
3061
3062 (define-public sbcl-cffi
3063 (package
3064 (inherit sbcl-cffi-toolchain)
3065 (name "sbcl-cffi")
3066 (inputs (package-inputs sbcl-cffi-bootstrap))
3067 (native-inputs
3068 `(("cffi-grovel" ,sbcl-cffi-grovel)
3069 ("cffi-libffi" ,sbcl-cffi-libffi)
3070 ("rt" ,sbcl-rt)
3071 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3072 ,@(package-native-inputs sbcl-cffi-bootstrap)))))
3073
3074 (define-public sbcl-cl-sqlite
3075 (let ((commit "c738e66d4266ef63a1debc4ef4a1b871a068c112"))
3076 (package
3077 (name "sbcl-cl-sqlite")
3078 (version (git-version "0.2" "1" commit))
3079 (source
3080 (origin
3081 (method git-fetch)
3082 (uri (git-reference
3083 (url "https://github.com/dmitryvk/cl-sqlite")
3084 (commit commit)))
3085 (file-name (git-file-name "cl-sqlite" version))
3086 (sha256
3087 (base32
3088 "1ng45k1hdb84sqjryrfx93g66bsbybmpy301wd0fdybnc5jzr36q"))))
3089 (build-system asdf-build-system/sbcl)
3090 (inputs
3091 `(("iterate" ,sbcl-iterate)
3092 ("cffi" ,sbcl-cffi)
3093 ("sqlite" ,sqlite)))
3094 (native-inputs
3095 `(("fiveam" ,sbcl-fiveam)
3096 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
3097 (arguments
3098 `(#:tests? #f ; Upstream seems to have issues with tests: https://github.com/dmitryvk/cl-sqlite/issues/7
3099 #:asd-file "sqlite.asd"
3100 #:asd-system-name "sqlite"
3101 #:phases
3102 (modify-phases %standard-phases
3103 (add-after 'unpack 'fix-paths
3104 (lambda* (#:key inputs #:allow-other-keys)
3105 (substitute* "sqlite-ffi.lisp"
3106 (("libsqlite3" all) (string-append
3107 (assoc-ref inputs "sqlite")"/lib/" all))))))))
3108 (home-page "https://common-lisp.net/project/cl-sqlite/")
3109 (synopsis "Common Lisp binding for SQLite")
3110 (description
3111 "The @command{cl-sqlite} package is an interface to the SQLite embedded
3112 relational database engine.")
3113 (license license:public-domain))))
3114
3115 (define-public sbcl-parenscript
3116 (let ((commit "061d8e286c81c3f45c84fb2b11ee7d83f590a8f8"))
3117 (package
3118 (name "sbcl-parenscript")
3119 (version (git-version "2.6" "1" commit))
3120 (source
3121 (origin
3122 (method git-fetch)
3123 (uri (git-reference
3124 (url "https://gitlab.common-lisp.net/parenscript/parenscript")
3125 (commit commit)))
3126 (file-name (git-file-name "parenscript" version))
3127 (sha256
3128 (base32
3129 "1kbhgsjbikc73m5cwdp4d4fdafyqcr1b7b630qjrziql0nh6mi3k"))))
3130 (build-system asdf-build-system/sbcl)
3131 (inputs
3132 `(("cl-ppcre" ,sbcl-cl-ppcre)
3133 ("anaphora" ,sbcl-anaphora)
3134 ("named-readtables" ,sbcl-named-readtables)))
3135 (home-page "https://common-lisp.net/project/parenscript/")
3136 (synopsis "Translator from a subset of Common Lisp to JavaScript")
3137 (description
3138 "Parenscript is a translator from an extended subset of Common Lisp to
3139 JavaScript. Parenscript code can run almost identically on both the
3140 browser (as JavaScript) and server (as Common Lisp).
3141
3142 Parenscript code is treated the same way as Common Lisp code, making the full
3143 power of Lisp macros available for JavaScript. This provides a web
3144 development environment that is unmatched in its ability to reduce code
3145 duplication and provide advanced meta-programming facilities to web
3146 developers.
3147
3148 At the same time, Parenscript is different from almost all other \"language
3149 X\" to JavaScript translators in that it imposes almost no overhead:
3150
3151 @itemize
3152 @item No run-time dependencies: Any piece of Parenscript code is runnable
3153 as-is. There are no JavaScript files to include.
3154 @item Native types: Parenscript works entirely with native JavaScript data
3155 types. There are no new types introduced, and object prototypes are not
3156 touched.
3157 @item Native calling convention: Any JavaScript code can be called without the
3158 need for bindings. Likewise, Parenscript can be used to make efficient,
3159 self-contained JavaScript libraries.
3160 @item Readable code: Parenscript generates concise, formatted, idiomatic
3161 JavaScript code. Identifier names are preserved. This enables seamless
3162 debugging in tools like Firebug.
3163 @item Efficiency: Parenscript introduces minimal overhead for advanced Common
3164 Lisp features. The generated code is almost as fast as hand-written
3165 JavaScript.
3166 @end itemize\n")
3167 (license license:bsd-3))))
3168
3169 (define-public cl-parenscript
3170 (sbcl-package->cl-source-package sbcl-parenscript))
3171
3172 (define-public ecl-parenscript
3173 (sbcl-package->ecl-package sbcl-parenscript))
3174
3175 (define-public sbcl-cl-json
3176 (let ((commit "6dfebb9540bfc3cc33582d0c03c9ec27cb913e79"))
3177 (package
3178 (name "sbcl-cl-json")
3179 (version (git-version "0.5" "1" commit))
3180 (source
3181 (origin
3182 (method git-fetch)
3183 (uri (git-reference
3184 (url "https://github.com/hankhero/cl-json")
3185 (commit commit)))
3186 (file-name (git-file-name "cl-json" version))
3187 (sha256
3188 (base32
3189 "0fx3m3x3s5ji950yzpazz4s0img3l6b3d6l3jrfjv0lr702496lh"))))
3190 (build-system asdf-build-system/sbcl)
3191 (native-inputs
3192 `(("fiveam" ,sbcl-fiveam)))
3193 (home-page "https://github.com/hankhero/cl-json")
3194 (synopsis "JSON encoder and decoder for Common-Lisp")
3195 (description
3196 "@command{cl-json} provides an encoder of Lisp objects to JSON format
3197 and a corresponding decoder of JSON data to Lisp objects. Both the encoder
3198 and the decoder are highly customizable; at the same time, the default
3199 settings ensure a very simple mode of operation, similar to that provided by
3200 @command{yason} or @command{st-json}.")
3201 (license license:expat))))
3202
3203 (define-public cl-json
3204 (sbcl-package->cl-source-package sbcl-cl-json))
3205
3206 (define-public ecl-cl-json
3207 (sbcl-package->ecl-package sbcl-cl-json))
3208
3209 (define-public sbcl-unix-opts
3210 (package
3211 (name "sbcl-unix-opts")
3212 (version "0.1.7")
3213 (source
3214 (origin
3215 (method git-fetch)
3216 (uri (git-reference
3217 (url "https://github.com/libre-man/unix-opts")
3218 (commit version)))
3219 (file-name (git-file-name "unix-opts" version))
3220 (sha256
3221 (base32
3222 "08djdi1ard09fijb7w9bdmhmwd98b1hzmcnjw9fqjiqa0g3b44rr"))))
3223 (build-system asdf-build-system/sbcl)
3224 (home-page "https://github.com/hankhero/cl-json")
3225 (synopsis "Unix-style command line options parser")
3226 (description
3227 "This is a minimalistic parser of command line options. The main
3228 advantage of the library is the ability to concisely define command line
3229 options once and then use this definition for parsing and extraction of
3230 command line arguments, as well as printing description of command line
3231 options (you get --help for free). This way you don't need to repeat
3232 yourself. Also, @command{unix-opts} doesn't depend on anything and allows to
3233 precisely control behavior of the parser via Common Lisp restarts.")
3234 (license license:expat)))
3235
3236 (define-public cl-unix-opts
3237 (sbcl-package->cl-source-package sbcl-unix-opts))
3238
3239 (define-public ecl-unix-opts
3240 (sbcl-package->ecl-package sbcl-unix-opts))
3241
3242 (define-public sbcl-trivial-garbage
3243 (package
3244 (name "sbcl-trivial-garbage")
3245 (version "0.21")
3246 (source
3247 (origin
3248 (method git-fetch)
3249 (uri (git-reference
3250 (url "https://github.com/trivial-garbage/trivial-garbage.git")
3251 (commit (string-append "v" version))))
3252 (file-name (git-file-name "trivial-garbage" version))
3253 (sha256
3254 (base32 "0122jicfg7pca1wxw8zak1n92h5friqy60988ns0ysksj3fphw9n"))))
3255 (build-system asdf-build-system/sbcl)
3256 (native-inputs
3257 `(("rt" ,sbcl-rt)))
3258 (home-page "https://common-lisp.net/project/trivial-garbage/")
3259 (synopsis "Portable GC-related APIs for Common Lisp")
3260 (description "@command{trivial-garbage} provides a portable API to
3261 finalizers, weak hash-tables and weak pointers on all major implementations of
3262 the Common Lisp programming language.")
3263 (license license:public-domain)))
3264
3265 (define-public cl-trivial-garbage
3266 (sbcl-package->cl-source-package sbcl-trivial-garbage))
3267
3268 (define-public ecl-trivial-garbage
3269 (sbcl-package->ecl-package sbcl-trivial-garbage))
3270
3271 (define-public sbcl-closer-mop
3272 (let ((commit "fac29ce90e3a46e1fc6cf182190e193526fa9dbc"))
3273 (package
3274 (name "sbcl-closer-mop")
3275 (version (git-version "1.0.0" "1" commit))
3276 (source
3277 (origin
3278 (method git-fetch)
3279 (uri (git-reference
3280 (url "https://github.com/pcostanza/closer-mop")
3281 (commit commit)))
3282 (sha256
3283 (base32 "0hvh77y869h8fg9di5snyg85fxq6fdh9gj1igmx1g6j6j5x915dl"))
3284 (file-name (git-file-name "closer-mop" version ))))
3285 (build-system asdf-build-system/sbcl)
3286 (home-page "https://github.com/pcostanza/closer-mop")
3287 (synopsis "Rectifies absent or incorrect CLOS MOP features")
3288 (description "Closer to MOP is a compatibility layer that rectifies many
3289 of the absent or incorrect CLOS MOP features across a broad range of Common
3290 Lisp implementations.")
3291 (license license:expat))))
3292
3293 (define-public cl-closer-mop
3294 (sbcl-package->cl-source-package sbcl-closer-mop))
3295
3296 (define-public ecl-closer-mop
3297 (sbcl-package->ecl-package sbcl-closer-mop))
3298
3299 (define sbcl-cl-cffi-gtk-boot0
3300 (let ((commit "29443c5aaca975709df8025c4649366d882033cb"))
3301 (package
3302 (name "sbcl-cl-cffi-gtk-boot0")
3303 (version (git-version "0.11.2" "1" commit))
3304 (source
3305 (origin
3306 (method git-fetch)
3307 (uri (git-reference
3308 (url "https://github.com/Ferada/cl-cffi-gtk/")
3309 (commit commit)))
3310 (file-name (git-file-name "cl-cffi-gtk" version))
3311 (sha256
3312 (base32
3313 "0f6s92sf8xyzh1yksqx8bsy1sv0zmy0c13j3b8bavaba5hlxpxah"))))
3314 (build-system asdf-build-system/sbcl)
3315 (inputs
3316 `(("iterate" ,sbcl-iterate)
3317 ("cffi" ,sbcl-cffi)
3318 ("trivial-features" ,sbcl-trivial-features)))
3319 (home-page "https://github.com/Ferada/cl-cffi-gtk/")
3320 (synopsis "Common Lisp binding for GTK+3")
3321 (description
3322 "@command{cl-cffi-gtk} is a Lisp binding to GTK+ 3 (GIMP Toolkit) which
3323 is a library for creating graphical user interfaces.")
3324 (license license:lgpl3))))
3325
3326 (define-public sbcl-cl-cffi-gtk-glib
3327 (package
3328 (inherit sbcl-cl-cffi-gtk-boot0)
3329 (name "sbcl-cl-cffi-gtk-glib")
3330 (inputs
3331 `(("glib" ,glib)
3332 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3333 (arguments
3334 `(#:asd-file "glib/cl-cffi-gtk-glib.asd"
3335 #:phases
3336 (modify-phases %standard-phases
3337 (add-after 'unpack 'fix-paths
3338 (lambda* (#:key inputs #:allow-other-keys)
3339 (substitute* "glib/glib.init.lisp"
3340 (("libglib|libgthread" all) (string-append
3341 (assoc-ref inputs "glib") "/lib/" all))))))))))
3342
3343 (define-public sbcl-cl-cffi-gtk-gobject
3344 (package
3345 (inherit sbcl-cl-cffi-gtk-boot0)
3346 (name "sbcl-cl-cffi-gtk-gobject")
3347 (inputs
3348 `(("glib" ,glib)
3349 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3350 ("trivial-garbage" ,sbcl-trivial-garbage)
3351 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3352 ("closer-mop" ,sbcl-closer-mop)
3353 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3354 (arguments
3355 `(#:asd-file "gobject/cl-cffi-gtk-gobject.asd"
3356 #:phases
3357 (modify-phases %standard-phases
3358 (add-after 'unpack 'fix-paths
3359 (lambda* (#:key inputs #:allow-other-keys)
3360 (substitute* "gobject/gobject.init.lisp"
3361 (("libgobject" all) (string-append
3362 (assoc-ref inputs "glib") "/lib/" all))))))))))
3363
3364 (define-public sbcl-cl-cffi-gtk-gio
3365 (package
3366 (inherit sbcl-cl-cffi-gtk-boot0)
3367 (name "sbcl-cl-cffi-gtk-gio")
3368 (inputs
3369 `(("glib" ,glib)
3370 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3371 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3372 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3373 (arguments
3374 `(#:asd-file "gio/cl-cffi-gtk-gio.asd"
3375 #:phases
3376 (modify-phases %standard-phases
3377 (add-after 'unpack 'fix-paths
3378 (lambda* (#:key inputs #:allow-other-keys)
3379 (substitute* "gio/gio.init.lisp"
3380 (("libgio" all)
3381 (string-append
3382 (assoc-ref inputs "glib") "/lib/" all))))))))))
3383
3384 (define-public sbcl-cl-cffi-gtk-cairo
3385 (package
3386 (inherit sbcl-cl-cffi-gtk-boot0)
3387 (name "sbcl-cl-cffi-gtk-cairo")
3388 (inputs
3389 `(("cairo" ,cairo)
3390 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3391 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3392 (arguments
3393 `(#:asd-file "cairo/cl-cffi-gtk-cairo.asd"
3394 #:phases
3395 (modify-phases %standard-phases
3396 (add-after 'unpack 'fix-paths
3397 (lambda* (#:key inputs #:allow-other-keys)
3398 (substitute* "cairo/cairo.init.lisp"
3399 (("libcairo" all)
3400 (string-append
3401 (assoc-ref inputs "cairo") "/lib/" all))))))))))
3402
3403 (define-public sbcl-cl-cffi-gtk-pango
3404 (package
3405 (inherit sbcl-cl-cffi-gtk-boot0)
3406 (name "sbcl-cl-cffi-gtk-pango")
3407 (inputs
3408 `(("pango" ,pango)
3409 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3410 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3411 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3412 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3413 (arguments
3414 `(#:asd-file "pango/cl-cffi-gtk-pango.asd"
3415 #:phases
3416 (modify-phases %standard-phases
3417 (add-after 'unpack 'fix-paths
3418 (lambda* (#:key inputs #:allow-other-keys)
3419 (substitute* "pango/pango.init.lisp"
3420 (("libpango" all)
3421 (string-append
3422 (assoc-ref inputs "pango") "/lib/" all))))))))))
3423
3424 (define-public sbcl-cl-cffi-gtk-gdk-pixbuf
3425 (package
3426 (inherit sbcl-cl-cffi-gtk-boot0)
3427 (name "sbcl-cl-cffi-gtk-gdk-pixbuf")
3428 (inputs
3429 `(("gdk-pixbuf" ,gdk-pixbuf)
3430 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3431 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3432 (arguments
3433 `(#:asd-file "gdk-pixbuf/cl-cffi-gtk-gdk-pixbuf.asd"
3434 #:phases
3435 (modify-phases %standard-phases
3436 (add-after 'unpack 'fix-paths
3437 (lambda* (#:key inputs #:allow-other-keys)
3438 (substitute* "gdk-pixbuf/gdk-pixbuf.init.lisp"
3439 (("libgdk_pixbuf" all)
3440 (string-append
3441 (assoc-ref inputs "gdk-pixbuf") "/lib/" all))))))))))
3442
3443 (define-public sbcl-cl-cffi-gtk-gdk
3444 (package
3445 (inherit sbcl-cl-cffi-gtk-boot0)
3446 (name "sbcl-cl-cffi-gtk-gdk")
3447 (inputs
3448 `(("gtk" ,gtk+)
3449 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3450 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3451 ("cl-cffi-gtk-gdk-pixbuf" ,sbcl-cl-cffi-gtk-gdk-pixbuf)
3452 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3453 ("cl-cffi-gtk-pango" ,sbcl-cl-cffi-gtk-pango)
3454 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3455 (arguments
3456 `(#:asd-file "gdk/cl-cffi-gtk-gdk.asd"
3457 #:phases
3458 (modify-phases %standard-phases
3459 (add-after 'unpack 'fix-paths
3460 (lambda* (#:key inputs #:allow-other-keys)
3461 (substitute* "gdk/gdk.init.lisp"
3462 (("libgdk" all)
3463 (string-append
3464 (assoc-ref inputs "gtk") "/lib/" all)))
3465 (substitute* "gdk/gdk.package.lisp"
3466 (("libgtk" all)
3467 (string-append
3468 (assoc-ref inputs "gtk") "/lib/" all))))))))))
3469
3470 (define-public sbcl-cl-cffi-gtk
3471 (package
3472 (inherit sbcl-cl-cffi-gtk-boot0)
3473 (name "sbcl-cl-cffi-gtk")
3474 (inputs
3475 `(("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3476 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3477 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3478 ("cl-cffi-gtk-gdk" ,sbcl-cl-cffi-gtk-gdk)
3479 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3480 (native-inputs
3481 `(("fiveam" ,sbcl-fiveam)))
3482 (arguments
3483 `(#:asd-file "gtk/cl-cffi-gtk.asd"
3484 #:test-asd-file "test/cl-cffi-gtk-test.asd"
3485 ;; TODO: Tests fail with memory fault.
3486 ;; See https://github.com/Ferada/cl-cffi-gtk/issues/24.
3487 #:tests? #f))))
3488
3489 (define-public sbcl-cl-webkit
3490 (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31"))
3491 (package
3492 (name "sbcl-cl-webkit")
3493 (version (git-version "2.4" "1" commit))
3494 (source
3495 (origin
3496 (method git-fetch)
3497 (uri (git-reference
3498 (url "https://github.com/jmercouris/cl-webkit")
3499 (commit commit)))
3500 (file-name (git-file-name "cl-webkit" version))
3501 (sha256
3502 (base32
3503 "0f5lyn9i7xrn3g1bddga377mcbawkbxydijpg389q4n04gqj0vwf"))))
3504 (build-system asdf-build-system/sbcl)
3505 (inputs
3506 `(("cffi" ,sbcl-cffi)
3507 ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
3508 ("webkitgtk" ,webkitgtk)))
3509 (arguments
3510 `(#:asd-file "webkit2/cl-webkit2.asd"
3511 #:asd-system-name "cl-webkit2"
3512 #:phases
3513 (modify-phases %standard-phases
3514 (add-after 'unpack 'fix-paths
3515 (lambda* (#:key inputs #:allow-other-keys)
3516 (substitute* "webkit2/webkit2.init.lisp"
3517 (("libwebkit2gtk" all)
3518 (string-append
3519 (assoc-ref inputs "webkitgtk") "/lib/" all))))))))
3520 (home-page "https://github.com/jmercouris/cl-webkit")
3521 (synopsis "Binding to WebKitGTK+ for Common Lisp")
3522 (description
3523 "@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp,
3524 currently targeting WebKit version 2. The WebKitGTK+ library adds web
3525 browsing capabilities to an application, leveraging the full power of the
3526 WebKit browsing engine.")
3527 (license license:expat))))
3528
3529 (define-public sbcl-lparallel
3530 (package
3531 (name "sbcl-lparallel")
3532 (version "2.8.4")
3533 (source
3534 (origin
3535 (method git-fetch)
3536 (uri (git-reference
3537 (url "https://github.com/lmj/lparallel/")
3538 (commit (string-append "lparallel-" version))))
3539 (file-name (git-file-name "lparallel" version))
3540 (sha256
3541 (base32
3542 "0g0aylrbbrqsz0ahmwhvnk4cmc2931fllbpcfgzsprwnqqd7vwq9"))))
3543 (build-system asdf-build-system/sbcl)
3544 (inputs
3545 `(("alexandria" ,sbcl-alexandria)
3546 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3547 ("trivial-garbage" ,sbcl-trivial-garbage)))
3548 (home-page "https://lparallel.org/")
3549 (synopsis "Parallelism for Common Lisp")
3550 (description
3551 "@command{lparallel} is a library for parallel programming in Common
3552 Lisp, featuring:
3553
3554 @itemize
3555 @item a simple model of task submission with receiving queue,
3556 @item constructs for expressing fine-grained parallelism,
3557 @item asynchronous condition handling across thread boundaries,
3558 @item parallel versions of map, reduce, sort, remove, and many others,
3559 @item promises, futures, and delayed evaluation constructs,
3560 @item computation trees for parallelizing interconnected tasks,
3561 @item bounded and unbounded FIFO queues,
3562 @item high and low priority tasks,
3563 @item task killing by category,
3564 @item integrated timeouts.
3565 @end itemize\n")
3566 (license license:expat)))
3567
3568 (define-public cl-lparallel
3569 (sbcl-package->cl-source-package sbcl-lparallel))
3570
3571 (define-public ecl-lparallel
3572 (sbcl-package->ecl-package sbcl-lparallel))
3573
3574 (define-public sbcl-cl-markup
3575 (let ((commit "e0eb7debf4bdff98d1f49d0f811321a6a637b390"))
3576 (package
3577 (name "sbcl-cl-markup")
3578 (version (git-version "0.1" "1" commit))
3579 (source
3580 (origin
3581 (method git-fetch)
3582 (uri (git-reference
3583 (url "https://github.com/arielnetworks/cl-markup/")
3584 (commit commit)))
3585 (file-name (git-file-name "cl-markup" version))
3586 (sha256
3587 (base32
3588 "10l6k45971dl13fkdmva7zc6i453lmq9j4xax2ci6pjzlc6xjhp7"))))
3589 (build-system asdf-build-system/sbcl)
3590 (home-page "https://github.com/arielnetworks/cl-markup/")
3591 (synopsis "Markup generation library for Common Lisp")
3592 (description
3593 "A modern markup generation library for Common Lisp that features:
3594
3595 @itemize
3596 @item Fast (even faster through compiling the code)
3597 @item Safety
3598 @item Support for multiple document types (markup, xml, html, html5, xhtml)
3599 @item Output with doctype
3600 @item Direct output to stream
3601 @end itemize\n")
3602 (license license:lgpl3+))))
3603
3604 (define-public cl-markup
3605 (sbcl-package->cl-source-package sbcl-cl-markup))
3606
3607 (define-public ecl-cl-markup
3608 (sbcl-package->ecl-package sbcl-cl-markup))
3609
3610 (define-public sbcl-cl-css
3611 (let ((commit "8fe654c8f0cf95b300718101cce4feb517f78e2f"))
3612 (package
3613 (name "sbcl-cl-css")
3614 (version (git-version "0.1" "1" commit))
3615 (source
3616 (origin
3617 (method git-fetch)
3618 (uri (git-reference
3619 (url "https://github.com/inaimathi/cl-css/")
3620 (commit commit)))
3621 (file-name (git-file-name "cl-css" version))
3622 (sha256
3623 (base32
3624 "1lc42zi2sw11fl2589sc19nr5sd2p0wy7wgvgwaggxa5f3ajhsmd"))))
3625 (build-system asdf-build-system/sbcl)
3626 (home-page "https://github.com/inaimathi/cl-css/")
3627 (synopsis "Non-validating, inline CSS generator for Common Lisp")
3628 (description
3629 "This is a dead-simple, non validating, inline CSS generator for Common
3630 Lisp. Its goals are axiomatic syntax, simple implementation to support
3631 portability, and boilerplate reduction in CSS.")
3632 (license license:expat))))
3633
3634 (define-public cl-css
3635 (sbcl-package->cl-source-package sbcl-cl-css))
3636
3637 (define-public ecl-cl-css
3638 (sbcl-package->ecl-package sbcl-cl-css))
3639
3640 (define-public sbcl-portable-threads
3641 (let ((commit "c0e61a1faeb0583c80fd3f20b16cc4c555226920"))
3642 (package
3643 (name "sbcl-portable-threads")
3644 (version (git-version "2.3" "1" commit))
3645 (source
3646 (origin
3647 (method git-fetch)
3648 (uri (git-reference
3649 (url "https://github.com/binghe/portable-threads/")
3650 (commit commit)))
3651 (file-name (git-file-name "portable-threads" version))
3652 (sha256
3653 (base32
3654 "03fmxyarc0xf4kavwkfa0a2spkyfrz6hbgbi9y4q7ny5aykdyfaq"))))
3655 (build-system asdf-build-system/sbcl)
3656 (arguments
3657 `(;; Tests seem broken.
3658 #:tests? #f))
3659 (home-page "https://github.com/binghe/portable-threads")
3660 (synopsis "Portable threads (and scheduled and periodic functions) API for Common Lisp")
3661 (description
3662 "Portable Threads (and Scheduled and Periodic Functions) API for Common
3663 Lisp (from GBBopen project).")
3664 (license license:asl2.0))))
3665
3666 (define-public cl-portable-threads
3667 (sbcl-package->cl-source-package sbcl-portable-threads))
3668
3669 (define-public ecl-portable-threada
3670 (sbcl-package->ecl-package sbcl-portable-threads))
3671
3672 (define-public sbcl-usocket-boot0
3673 ;; usocket's test rely on usocket-server which depends on usocket itself.
3674 ;; We break this cyclic dependency with -boot0 that packages usocket.
3675 (let ((commit "86e7efbfe50101931edf4b67cdcfa7e221ecfde9"))
3676 (package
3677 (name "sbcl-usocket-boot0")
3678 (version (git-version "0.7.1" "1" commit))
3679 (source
3680 (origin
3681 (method git-fetch)
3682 (uri (git-reference
3683 (url "https://github.com/usocket/usocket/")
3684 (commit commit)))
3685 (file-name (git-file-name "usocket" version))
3686 (sha256
3687 (base32
3688 "1lk6ipakrib7kdgzw44hrgmls9akp5pz4h35yynw0k5zwmmq6374"))))
3689 (build-system asdf-build-system/sbcl)
3690 (inputs
3691 `(("split-sequence" ,sbcl-split-sequence)))
3692 (arguments
3693 `(#:tests? #f
3694 #:asd-system-name "usocket"))
3695 (home-page "https://common-lisp.net/project/usocket/")
3696 (synopsis "Universal socket library for Common Lisp (server side)")
3697 (description
3698 "This library strives to provide a portable TCP/IP and UDP/IP socket
3699 interface for as many Common Lisp implementations as possible, while keeping
3700 the abstraction and portability layer as thin as possible.")
3701 (license license:expat))))
3702
3703 (define-public sbcl-usocket-server
3704 (package
3705 (inherit sbcl-usocket-boot0)
3706 (name "sbcl-usocket-server")
3707 (inputs
3708 `(("usocket" ,sbcl-usocket-boot0)
3709 ("portable-threads" ,sbcl-portable-threads)))
3710 (arguments
3711 '(#:asd-system-name "usocket-server"))
3712 (synopsis "Universal socket library for Common Lisp (server side)")))
3713
3714 (define-public cl-usocket-server
3715 (sbcl-package->cl-source-package sbcl-usocket-server))
3716
3717 (define-public ecl-socket-server
3718 (sbcl-package->ecl-package sbcl-usocket-server))
3719
3720 (define-public sbcl-usocket
3721 (package
3722 (inherit sbcl-usocket-boot0)
3723 (name "sbcl-usocket")
3724 (arguments
3725 ;; FIXME: Tests need network access?
3726 `(#:tests? #f))
3727 (native-inputs
3728 ;; Testing only.
3729 `(("usocket-server" ,sbcl-usocket-server)
3730 ("rt" ,sbcl-rt)))))
3731
3732 (define-public cl-usocket
3733 (sbcl-package->cl-source-package sbcl-usocket))
3734
3735 (define-public ecl-socket
3736 (sbcl-package->ecl-package sbcl-usocket))
3737
3738 (define-public sbcl-s-xml
3739 (package
3740 (name "sbcl-s-xml")
3741 (version "3")
3742 (source
3743 (origin
3744 (method url-fetch)
3745 (uri "https://common-lisp.net/project/s-xml/s-xml.tgz")
3746 (sha256
3747 (base32
3748 "061qcr0dzshsa38s5ma4ay924cwak2nq9gy59dw6v9p0qb58nzjf"))))
3749 (build-system asdf-build-system/sbcl)
3750 (home-page "https://common-lisp.net/project/s-xml/")
3751 (synopsis "Simple XML parser implemented in Common Lisp")
3752 (description
3753 "S-XML is a simple XML parser implemented in Common Lisp. This XML
3754 parser implementation has the following features:
3755
3756 @itemize
3757 @item It works (handling many common XML usages).
3758 @item It is very small (the core is about 700 lines of code, including
3759 comments and whitespace).
3760 @item It has a core API that is simple, efficient and pure functional, much
3761 like that from SSAX (see also http://ssax.sourceforge.net).
3762 @item It supports different DOM models: an XSML-based one, an LXML-based one
3763 and a classic xml-element struct based one.
3764 @item It is reasonably time and space efficient (internally avoiding garbage
3765 generatation as much as possible).
3766 @item It does support CDATA.
3767 @item It should support the same character sets as your Common Lisp
3768 implementation.
3769 @item It does support XML name spaces.
3770 @end itemize
3771
3772 This XML parser implementation has the following limitations:
3773
3774 @itemize
3775 @item It does not support any special tags (like processing instructions).
3776 @item It is not validating, even skips DTD's all together.
3777 @end itemize\n")
3778 (license license:lgpl3+)))
3779
3780 (define-public cl-s-xml
3781 (sbcl-package->cl-source-package sbcl-s-xml))
3782
3783 (define-public ecl-s-xml
3784 (sbcl-package->ecl-package sbcl-s-xml))
3785
3786 (define-public sbcl-s-xml-rpc
3787 (package
3788 (name "sbcl-s-xml-rpc")
3789 (version "7")
3790 (source
3791 (origin
3792 (method url-fetch)
3793 (uri "https://common-lisp.net/project/s-xml-rpc/s-xml-rpc.tgz")
3794 (sha256
3795 (base32
3796 "02z7k163d51v0pzk8mn1xb6h5s6x64gjqkslhwm3a5x26k2gfs11"))))
3797 (build-system asdf-build-system/sbcl)
3798 (inputs
3799 `(("s-xml" ,sbcl-s-xml)))
3800 (home-page "https://common-lisp.net/project/s-xml-rpc/")
3801 (synopsis "Implementation of XML-RPC in Common Lisp for both client and server")
3802 (description
3803 "S-XML-RPC is an implementation of XML-RPC in Common Lisp for both
3804 client and server.")
3805 (license license:lgpl3+)))
3806
3807 (define-public cl-s-xml-rpc
3808 (sbcl-package->cl-source-package sbcl-s-xml-rpc))
3809
3810 (define-public ecl-s-xml-rpc
3811 (sbcl-package->ecl-package sbcl-s-xml-rpc))
3812
3813 (define-public sbcl-trivial-clipboard
3814 (let ((commit "5af3415d1484e6d69a1b5c178f24680d9fd01796"))
3815 (package
3816 (name "sbcl-trivial-clipboard")
3817 (version (git-version "0.0.0.0" "2" commit))
3818 (source
3819 (origin
3820 (method git-fetch)
3821 (uri (git-reference
3822 (url "https://github.com/snmsts/trivial-clipboard")
3823 (commit commit)))
3824 (file-name (git-file-name "trivial-clipboard" version))
3825 (sha256
3826 (base32
3827 "1gb515z5yq6h5548pb1fwhmb0hhq1ssyb78pvxh4alq799xipxs9"))))
3828 (build-system asdf-build-system/sbcl)
3829 (inputs
3830 `(("xclip" ,xclip)))
3831 (native-inputs
3832 `(("fiveam" ,sbcl-fiveam)))
3833 (arguments
3834 `(#:phases
3835 (modify-phases %standard-phases
3836 (add-after 'unpack 'fix-paths
3837 (lambda* (#:key inputs #:allow-other-keys)
3838 (substitute* "src/text.lisp"
3839 (("\\(executable-find \"xclip\"\\)")
3840 (string-append "(executable-find \""
3841 (assoc-ref inputs "xclip")
3842 "/bin/xclip\")"))))))))
3843 (home-page "https://github.com/snmsts/trivial-clipboard")
3844 (synopsis "Access system clipboard in Common Lisp")
3845 (description
3846 "@command{trivial-clipboard} gives access to the system clipboard.")
3847 (license license:expat))))
3848
3849 (define-public cl-trivial-clipboard
3850 (sbcl-package->cl-source-package sbcl-trivial-clipboard))
3851
3852 (define-public ecl-trivial-clipboard
3853 (sbcl-package->ecl-package sbcl-trivial-clipboard))
3854
3855 (define-public sbcl-trivial-backtrace
3856 (let ((commit "ca81c011b86424a381a7563cea3b924f24e6fbeb")
3857 (revision "1"))
3858 (package
3859 (name "sbcl-trivial-backtrace")
3860 (version (git-version "0.0.0" revision commit))
3861 (source
3862 (origin
3863 (method git-fetch)
3864 (uri (git-reference
3865 (url "https://github.com/gwkkwg/trivial-backtrace.git")
3866 (commit commit)))
3867 (file-name (git-file-name "trivial-backtrace" version))
3868 (sha256
3869 (base32 "10p41p43skj6cimdg8skjy7372s8v2xpkg8djjy0l8rm45i654k1"))))
3870 (build-system asdf-build-system/sbcl)
3871 (inputs
3872 `(("sbcl-lift" ,sbcl-lift)))
3873 (home-page "https://common-lisp.net/project/trivial-backtrace/")
3874 (synopsis "Portable simple API to work with backtraces in Common Lisp")
3875 (description
3876 "On of the many things that didn't quite get into the Common Lisp
3877 standard was how to get a Lisp to output its call stack when something has
3878 gone wrong. As such, each Lisp has developed its own notion of what to
3879 display, how to display it, and what sort of arguments can be used to
3880 customize it. @code{trivial-backtrace} is a simple solution to generating a
3881 backtrace portably.")
3882 (license license:expat))))
3883
3884 (define-public cl-trivial-backtrace
3885 (sbcl-package->cl-source-package sbcl-trivial-backtrace))
3886
3887 (define-public sbcl-rfc2388
3888 (let ((commit "591bcf7e77f2c222c43953a80f8c297751dc0c4e")
3889 (revision "1"))
3890 (package
3891 (name "sbcl-rfc2388")
3892 (version (git-version "0.0.0" revision commit))
3893 (source
3894 (origin
3895 (method git-fetch)
3896 (uri (git-reference
3897 (url "https://github.com/jdz/rfc2388.git")
3898 (commit commit)))
3899 (sha256
3900 (base32 "0phh5n3clhl9ji8jaxrajidn22d3f0aq87mlbfkkxlnx2pnw694k"))))
3901 (build-system asdf-build-system/sbcl)
3902 (home-page "https://github.com/jdz/rfc2388/")
3903 (synopsis "An implementation of RFC 2388 in Common Lisp")
3904 (description
3905 "This package contains an implementation of RFC 2388, which is used to
3906 process form data posted with HTTP POST method using enctype
3907 \"multipart/form-data\".")
3908 (license license:bsd-2))))
3909
3910 (define-public cl-rfc2388
3911 (sbcl-package->cl-source-package sbcl-rfc2388))
3912
3913 (define-public sbcl-md5
3914 (package
3915 (name "sbcl-md5")
3916 (version "2.0.4")
3917 (source
3918 (origin
3919 (method url-fetch)
3920 (uri (string-append
3921 "https://github.com/pmai/md5/archive/release-" version ".tar.gz"))
3922 (sha256
3923 (base32 "19yl9n0pjdz5gw4qi711lka97xcd9f81ylg434hk7jwn9f2s6w11"))))
3924 (build-system asdf-build-system/sbcl)
3925 (home-page "https://github.com/pmai/md5")
3926 (synopsis
3927 "Common Lisp implementation of the MD5 Message-Digest Algorithm (RFC 1321)")
3928 (description
3929 "This package implements The MD5 Message-Digest Algorithm, as defined in
3930 RFC 1321 by R. Rivest, published April 1992.")
3931 (license license:public-domain)))
3932
3933 (define-public cl-md5
3934 (sbcl-package->cl-source-package sbcl-md5))
3935
3936 (define-public sbcl-cl+ssl
3937 (let ((commit "b81c1135cf5700e870ce2573d5035d249e491788")
3938 (revision "1"))
3939 (package
3940 (name "sbcl-cl+ssl")
3941 (version (git-version "0.0.0" revision commit))
3942 (source
3943 (origin
3944 (method git-fetch)
3945 (uri (git-reference
3946 (url "https://github.com/cl-plus-ssl/cl-plus-ssl.git")
3947 (commit commit)))
3948 (file-name (git-file-name "cl+ssl" version))
3949 (sha256
3950 (base32 "1845i1pafmqb6cdlr53yaqy67kjrhkvbx6c37ca15cw70vhdr3z9"))))
3951 (build-system asdf-build-system/sbcl)
3952 (arguments
3953 '(#:phases
3954 (modify-phases %standard-phases
3955 (add-after 'unpack 'fix-paths
3956 (lambda* (#:key inputs #:allow-other-keys)
3957 (substitute* "src/reload.lisp"
3958 (("libssl.so" all)
3959 (string-append
3960 (assoc-ref inputs "openssl") "/lib/" all))))))))
3961 (inputs
3962 `(("openssl" ,openssl)
3963 ("sbcl-cffi" ,sbcl-cffi)
3964 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
3965 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
3966 ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)
3967 ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
3968 (home-page "http://common-lisp.net/project/cl-plus-ssl/")
3969 (synopsis "Common Lisp bindings to OpenSSL")
3970 (description
3971 "This library is a fork of SSL-CMUCL. The original SSL-CMUCL source
3972 code was written by Eric Marsden and includes contributions by Jochen Schmidt.
3973 Development into CL+SSL was done by David Lichteblau.")
3974 (license license:expat))))
3975
3976 (define-public cl-cl+ssl
3977 (sbcl-package->cl-source-package sbcl-cl+ssl))
3978
3979 (define-public sbcl-kmrcl
3980 (let ((version "1.109.0")
3981 (commit "5260068b2eb735af6796740c2db4955afac21636")
3982 (revision "1"))
3983 (package
3984 (name "sbcl-kmrcl")
3985 (version (git-version version revision commit))
3986 (source
3987 (origin
3988 (method git-fetch)
3989 (uri (git-reference
3990 (url "http://git.kpe.io/kmrcl.git/")
3991 (commit commit)))
3992 (file-name (git-file-name name version))
3993 (sha256
3994 (base32 "1va7xjgzfv674bpsli674i7zj3f7wg5kxic41kz18r6hh4n52dfv"))))
3995 (build-system asdf-build-system/sbcl)
3996 (arguments
3997 ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed in a
3998 ;; nested call to ASDF/OPERATE:OPERATE unless identically to toplevel
3999 '(#:tests? #f))
4000 (inputs
4001 `(("sbcl-rt" ,sbcl-rt)))
4002 (home-page "http://files.kpe.io/kmrcl/")
4003 (synopsis "General utilities for Common Lisp programs")
4004 (description
4005 "KMRCL is a collection of utilities used by a number of Kevin
4006 Rosenberg's CL packages.")
4007 (license license:llgpl))))
4008
4009 (define-public cl-kmrcl
4010 (sbcl-package->cl-source-package sbcl-kmrcl))
4011
4012 (define-public sbcl-cl-base64
4013 (let ((version "3.3.3"))
4014 (package
4015 (name "sbcl-cl-base64")
4016 (version version)
4017 (source
4018 (origin
4019 (method git-fetch)
4020 (uri (git-reference
4021 (url "http://git.kpe.io/cl-base64.git")
4022 (commit (string-append "v" version))))
4023 (file-name (git-file-name "cl-base64" version))
4024 (sha256
4025 (base32 "1dw6j7n6gsd2qa0p0rbsjxj00acxx3i9ca1qkgl0liy8lpnwkypl"))))
4026 (build-system asdf-build-system/sbcl)
4027 (arguments
4028 ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed
4029 ;; in a nested call to ASDF/OPERATE:OPERATE unless identically
4030 ;; to toplevel
4031 '(#:tests? #f))
4032 (inputs
4033 `(("sbcl-ptester" ,sbcl-ptester)
4034 ("sbcl-kmrcl" ,sbcl-kmrcl)))
4035 (home-page "http://files.kpe.io/cl-base64/")
4036 (synopsis
4037 "Common Lisp package to encode and decode base64 with URI support")
4038 (description
4039 "This package provides highly optimized base64 encoding and decoding.
4040 Besides conversion to and from strings, integer conversions are supported.
4041 Encoding with Uniform Resource Identifiers is supported by using a modified
4042 encoding table that uses only URI-compatible characters.")
4043 (license license:bsd-3))))
4044
4045 (define-public cl-base64
4046 (sbcl-package->cl-source-package sbcl-cl-base64))
4047
4048 (define-public sbcl-chunga
4049 (package
4050 (name "sbcl-chunga")
4051 (version "1.1.7")
4052 (source
4053 (origin
4054 (method url-fetch)
4055 (uri (string-append
4056 "https://github.com/edicl/chunga/archive/v" version ".tar.gz"))
4057 (sha256
4058 (base32 "0ra17kyc9l7qbaw003ly111r1cbn4zixbfq1ydr9cxw10v30q1n7"))))
4059 (build-system asdf-build-system/sbcl)
4060 (inputs
4061 `(("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
4062 (home-page "https://edicl.github.io/chunga/")
4063 (synopsis "Portable chunked streams for Common Lisp")
4064 (description
4065 "Chunga implements streams capable of chunked encoding on demand as
4066 defined in RFC 2616.")
4067 (license license:bsd-2)))
4068
4069 (define-public cl-chunga
4070 (sbcl-package->cl-source-package sbcl-chunga))
4071
4072 (define-public sbcl-cl-who
4073 (let ((version "1.1.4")
4074 (commit "2c08caa4bafba720409af9171feeba3f32e86d32")
4075 (revision "1"))
4076 (package
4077 (name "sbcl-cl-who")
4078 (version (git-version version revision commit))
4079 (source
4080 (origin
4081 (method git-fetch)
4082 (uri (git-reference
4083 (url "https://github.com/edicl/cl-who.git")
4084 (commit commit)))
4085 (file-name (git-file-name name version))
4086 (sha256
4087 (base32
4088 "0yjb6sr3yazm288m318kqvj9xk8rm9n1lpimgf65ymqv0i5agxsb"))))
4089 (build-system asdf-build-system/sbcl)
4090 (native-inputs
4091 `(("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4092 (home-page "https://edicl.github.io/cl-who/")
4093 (synopsis "Yet another Lisp markup language")
4094 (description
4095 "There are plenty of Lisp Markup Languages out there - every Lisp
4096 programmer seems to write at least one during his career - and CL-WHO (where
4097 WHO means \"with-html-output\" for want of a better acronym) is probably just
4098 as good or bad as the next one.")
4099 (license license:bsd-2))))
4100
4101 (define-public cl-cl-who
4102 (sbcl-package->cl-source-package sbcl-cl-who))
4103
4104 (define-public sbcl-chipz
4105 (let ((version "0.8")
4106 (commit "75dfbc660a5a28161c57f115adf74c8a926bfc4d")
4107 (revision "1"))
4108 (package
4109 (name "sbcl-chipz")
4110 (version (git-version version revision commit))
4111 (source
4112 (origin
4113 (method git-fetch)
4114 (uri (git-reference
4115 (url "https://github.com/froydnj/chipz.git")
4116 (commit commit)))
4117 (file-name (git-file-name name version))
4118 (sha256
4119 (base32
4120 "0plx4rs39zbs4gjk77h4a2q11zpy75fh9v8hnxrvsf8fnakajhwg"))))
4121 (build-system asdf-build-system/sbcl)
4122 (native-inputs
4123 `(("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4124 (home-page "http://method-combination.net/lisp/chipz/")
4125 (synopsis
4126 "Common Lisp library for decompressing deflate, zlib, gzip, and bzip2
4127 data")
4128 (description
4129 "DEFLATE data, defined in RFC1951, forms the core of popular
4130 compression formats such as zlib (RFC 1950) and gzip (RFC 1952). As such,
4131 Chipz also provides for decompressing data in those formats as well. BZIP2 is
4132 the format used by the popular compression tool bzip2.")
4133 ;; The author describes it as "MIT-like"
4134 (license license:expat))))
4135
4136 (define-public cl-chipz
4137 (sbcl-package->cl-source-package sbcl-chipz))
4138
4139 (define-public sbcl-drakma
4140 (let ((version "2.0.4")
4141 (commit "7647c0ae842ff2058624e53979c7f297760c97a7")
4142 (revision "1"))
4143 (package
4144 (name "sbcl-drakma")
4145 (version (git-version version revision commit))
4146 (source
4147 (origin
4148 (method git-fetch)
4149 (uri (git-reference
4150 (url "https://github.com/edicl/drakma.git")
4151 (commit commit)))
4152 (file-name (git-file-name name version))
4153 (sha256
4154 (base32
4155 "1c4i9wakhj5pxfyyykxshdmv3180sbkrx6fcyynikmc0jd0rh84r"))))
4156 (build-system asdf-build-system/sbcl)
4157 (inputs
4158 `(("sbcl-puri" ,sbcl-puri)
4159 ("sbcl-cl-base64" ,sbcl-cl-base64)
4160 ("sbcl-chunga" ,sbcl-chunga)
4161 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
4162 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4163 ("sbcl-chipz" ,sbcl-chipz)
4164 ("sbcl-usocket" ,sbcl-usocket)
4165 ("sbcl-cl+ssl" ,sbcl-cl+ssl)))
4166 (native-inputs
4167 `(("sbcl-fiveam" ,sbcl-fiveam)))
4168 (home-page "https://edicl.github.io/drakma/")
4169 (synopsis "HTTP client written in Common Lisp")
4170 (description
4171 "Drakma is a full-featured HTTP client implemented in Common Lisp. It
4172 knows how to handle HTTP/1.1 chunking, persistent connections, re-usable
4173 sockets, SSL, continuable uploads, file uploads, cookies, and more.")
4174 (license license:bsd-2))))
4175
4176 (define-public cl-drakma
4177 (sbcl-package->cl-source-package sbcl-drakma))
4178
4179 (define-public sbcl-hunchentoot
4180 (package
4181 (name "sbcl-hunchentoot")
4182 (version "1.2.38")
4183 (source
4184 (origin
4185 (method git-fetch)
4186 (uri (git-reference
4187 (url "https://github.com/edicl/hunchentoot.git")
4188 (commit (string-append "v" version))))
4189 (file-name (git-file-name "hunchentoot" version))
4190 (sha256
4191 (base32 "1anpcad7w045m4rsjs1f3xdhjwx5cppq1h0vlb3q7dz81fi3i6yq"))))
4192 (build-system asdf-build-system/sbcl)
4193 (native-inputs
4194 `(("sbcl-cl-who" ,sbcl-cl-who)
4195 ("sbcl-drakma" ,sbcl-drakma)))
4196 (inputs
4197 `(("sbcl-chunga" ,sbcl-chunga)
4198 ("sbcl-cl-base64" ,sbcl-cl-base64)
4199 ("sbcl-cl-fad" ,sbcl-cl-fad)
4200 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4201 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
4202 ("sbcl-cl+ssl" ,sbcl-cl+ssl)
4203 ("sbcl-md5" ,sbcl-md5)
4204 ("sbcl-rfc2388" ,sbcl-rfc2388)
4205 ("sbcl-trivial-backtrace" ,sbcl-trivial-backtrace)
4206 ("sbcl-usocket" ,sbcl-usocket)))
4207 (home-page "https://edicl.github.io/hunchentoot/")
4208 (synopsis "Web server written in Common Lisp")
4209 (description
4210 "Hunchentoot is a web server written in Common Lisp and at the same
4211 time a toolkit for building dynamic websites. As a stand-alone web server,
4212 Hunchentoot is capable of HTTP/1.1 chunking (both directions), persistent
4213 connections (keep-alive), and SSL.")
4214 (license license:bsd-2)))
4215
4216 (define-public cl-hunchentoot
4217 (sbcl-package->cl-source-package sbcl-hunchentoot))
4218
4219 (define-public sbcl-trivial-types
4220 (package
4221 (name "sbcl-trivial-types")
4222 (version "0.0.1")
4223 (source
4224 (origin
4225 (method git-fetch)
4226 (uri (git-reference
4227 (url "https://github.com/m2ym/trivial-types.git")
4228 (commit "ee869f2b7504d8aa9a74403641a5b42b16f47d88")))
4229 (file-name (git-file-name name version))
4230 (sha256
4231 (base32 "1s4cp9bdlbn8447q7w7f1wkgwrbvfzp20mgs307l5pxvdslin341"))))
4232 (build-system asdf-build-system/sbcl)
4233 (home-page "https://github.com/m2ym/trivial-types")
4234 (synopsis "Trivial type definitions for Common Lisp")
4235 (description
4236 "TRIVIAL-TYPES provides missing but important type definitions such as
4237 PROPER-LIST, ASSOCIATION-LIST, PROPERTY-LIST and TUPLE.")
4238 (license license:llgpl)))
4239
4240 (define-public cl-trivial-types
4241 (sbcl-package->cl-source-package sbcl-trivial-types))
4242
4243 (define-public sbcl-cl-syntax
4244 (package
4245 (name "sbcl-cl-syntax")
4246 (version "0.0.3")
4247 (source
4248 (origin
4249 (method git-fetch)
4250 (uri (git-reference
4251 (url "https://github.com/m2ym/cl-syntax.git")
4252 (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
4253 (sha256
4254 (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y"))))
4255 (build-system asdf-build-system/sbcl)
4256 (arguments
4257 '(#:asd-file "cl-syntax.asd"
4258 #:asd-system-name "cl-syntax"))
4259 (inputs `(("sbcl-trivial-types" ,sbcl-trivial-types)
4260 ("sbcl-named-readtables" ,sbcl-named-readtables)))
4261 (home-page "https://github.com/m2ym/cl-syntax")
4262 (synopsis "Reader Syntax Coventions for Common Lisp and SLIME")
4263 (description
4264 "CL-SYNTAX provides Reader Syntax Coventions for Common Lisp and SLIME.")
4265 (license license:llgpl)))
4266
4267 (define-public cl-syntax
4268 (sbcl-package->cl-source-package sbcl-cl-syntax))
4269
4270 (define-public sbcl-cl-annot
4271 (let ((commit "c99e69c15d935eabc671b483349a406e0da9518d")
4272 (revision "1"))
4273 (package
4274 (name "sbcl-cl-annot")
4275 (version (git-version "0.0.0" revision commit))
4276 (source
4277 (origin
4278 (method git-fetch)
4279 (uri (git-reference
4280 (url "https://github.com/m2ym/cl-annot.git")
4281 (commit commit)))
4282 (file-name (git-file-name name version))
4283 (sha256
4284 (base32 "1wq1gs9jjd5m6iwrv06c2d7i5dvqsfjcljgbspfbc93cg5xahk4n"))))
4285 (build-system asdf-build-system/sbcl)
4286 (arguments
4287 '(#:asd-file "cl-annot.asd"
4288 #:asd-system-name "cl-annot"))
4289 (inputs
4290 `(("sbcl-alexandria" ,sbcl-alexandria)))
4291 (home-page "https://github.com/m2ym/cl-annot")
4292 (synopsis "Python-like Annotation Syntax for Common Lisp.")
4293 (description
4294 "@code{cl-annot} is an general annotation library for Common Lisp.")
4295 (license license:llgpl))))
4296
4297 (define-public cl-annot
4298 (sbcl-package->cl-source-package sbcl-cl-annot))
4299
4300 (define-public sbcl-cl-syntax-annot
4301 (package
4302 (name "sbcl-cl-syntax-annot")
4303 (version "0.0.3")
4304 (source
4305 (origin
4306 (method git-fetch)
4307 (uri (git-reference
4308 (url "https://github.com/m2ym/cl-syntax.git")
4309 (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
4310 (file-name (git-file-name name version))
4311 (sha256
4312 (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y"))))
4313 (build-system asdf-build-system/sbcl)
4314 (arguments
4315 '(#:asd-file "cl-syntax-annot.asd"
4316 #:asd-system-name "cl-syntax-annot"))
4317 (inputs
4318 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
4319 ("sbcl-cl-annot" ,sbcl-cl-annot)))
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
4324 SLIME.")
4325 (license license:llgpl)))
4326
4327 (define-public cl-syntax-annot
4328 (sbcl-package->cl-source-package sbcl-cl-syntax-annot))
4329
4330 (define-public sbcl-cl-utilities
4331 (let ((commit "dce2d2f6387091ea90357a130fa6d13a6776884b")
4332 (revision "1"))
4333 (package
4334 (name "sbcl-cl-utilities")
4335 (version (git-version "0.0.0" revision commit))
4336 (source
4337 (origin
4338 (method url-fetch)
4339 (uri
4340 (string-append
4341 "https://gitlab.common-lisp.net/cl-utilities/cl-utilities/-/"
4342 "archive/" commit "/cl-utilities-" commit ".tar.gz"))
4343 (sha256
4344 (base32 "1r46v730yf96nk2vb24qmagv9x96xvd08abqwhf02ghgydv1a7z2"))))
4345 (build-system asdf-build-system/sbcl)
4346 (arguments
4347 '(#:asd-file "cl-utilities.asd"
4348 #:asd-system-name "cl-utilities"
4349 #:phases
4350 (modify-phases %standard-phases
4351 (add-after 'unpack 'fix-paths
4352 (lambda* (#:key inputs #:allow-other-keys)
4353 (substitute* "rotate-byte.lisp"
4354 (("in-package :cl-utilities)" all)
4355 "in-package :cl-utilities)\n\n#+sbcl\n(require :sb-rotate-byte)")))))))
4356 (home-page "http://common-lisp.net/project/cl-utilities")
4357 (synopsis "A collection of semi-standard utilities")
4358 (description
4359 "On Cliki.net <http://www.cliki.net/Common%20Lisp%20Utilities>, there
4360 is a collection of Common Lisp Utilities, things that everybody writes since
4361 they're not part of the official standard. There are some very useful things
4362 there; the only problems are that they aren't implemented as well as you'd
4363 like (some aren't implemented at all) and they aren't conveniently packaged
4364 and maintained. It takes quite a bit of work to carefully implement utilities
4365 for common use, commented and documented, with error checking placed
4366 everywhere some dumb user might make a mistake.")
4367 (license license:public-domain))))
4368
4369 (define-public cl-utilities
4370 (sbcl-package->cl-source-package sbcl-cl-utilities))
4371
4372 (define-public sbcl-map-set
4373 (let ((commit "7b4b545b68b8")
4374 (revision "1"))
4375 (package
4376 (name "sbcl-map-set")
4377 (version (git-version "0.0.0" revision commit))
4378 (source
4379 (origin
4380 (method url-fetch)
4381 (uri (string-append
4382 "https://bitbucket.org/tarballs_are_good/map-set/get/"
4383 commit ".tar.gz"))
4384 (sha256
4385 (base32 "1sx5j5qdsy5fklspfammwb16kjrhkggdavm922a9q86jm5l0b239"))))
4386 (build-system asdf-build-system/sbcl)
4387 (home-page "https://bitbucket.org/tarballs_are_good/map-set")
4388 (synopsis "Set-like data structure")
4389 (description
4390 "Implementation of a set-like data structure with constant time
4391 addition, removal, and random selection.")
4392 (license license:bsd-3))))
4393
4394 (define-public cl-map-set
4395 (sbcl-package->cl-source-package sbcl-map-set))
4396
4397 (define-public sbcl-quri
4398 (let ((commit "76b75103f21ead092c9f715512fa82441ef61185")
4399 (revision "1"))
4400 (package
4401 (name "sbcl-quri")
4402 (version (git-version "0.1.0" revision commit))
4403 (source
4404 (origin
4405 (method git-fetch)
4406 (uri (git-reference
4407 (url "https://github.com/fukamachi/quri.git")
4408 (commit commit)))
4409 (file-name (git-file-name name version))
4410 (sha256
4411 (base32 "1ccbxsgzdibmzq33mmbmmz9vwl6l03xh6nbpsh1hkdvdcl7q0a60"))))
4412 (build-system asdf-build-system/sbcl)
4413 (arguments
4414 ;; Tests fail with: Component QURI-ASD::QURI-TEST not found,
4415 ;; required by #<SYSTEM "quri">. Why?
4416 '(#:tests? #f))
4417 (native-inputs `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4418 ("sbcl-prove" ,sbcl-prove)))
4419 (inputs `(("sbcl-babel" ,sbcl-babel)
4420 ("sbcl-split-sequence" ,sbcl-split-sequence)
4421 ("sbcl-cl-utilities" ,sbcl-cl-utilities)
4422 ("sbcl-alexandria" ,sbcl-alexandria)))
4423 (home-page "https://github.com/fukamachi/quri")
4424 (synopsis "Yet another URI library for Common Lisp")
4425 (description
4426 "QURI (pronounced \"Q-ree\") is yet another URI library for Common
4427 Lisp. It is intended to be a replacement of PURI.")
4428 (license license:bsd-3))))
4429
4430 (define-public cl-quri
4431 (sbcl-package->cl-source-package sbcl-quri))
4432
4433 (define-public sbcl-myway
4434 (let ((commit "286230082a11f879c18b93f17ca571c5f676bfb7")
4435 (revision "1"))
4436 (package
4437 (name "sbcl-myway")
4438 (version (git-version "0.1.0" revision commit))
4439 (source
4440 (origin
4441 (method git-fetch)
4442 (uri (git-reference
4443 (url "https://github.com/fukamachi/myway.git")
4444 (commit commit)))
4445 (file-name (git-file-name "myway" version))
4446 (sha256
4447 (base32 "0briia9bk3lbr0frnx39d1qg6i38dm4j6z9w3yga3d40k6df4a90"))))
4448 (build-system asdf-build-system/sbcl)
4449 (arguments
4450 ;; Tests fail with: Component MYWAY-ASD::MYWAY-TEST not found, required
4451 ;; by #<SYSTEM "myway">. Why?
4452 '(#:tests? #f))
4453 (native-inputs
4454 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4455 ("sbcl-prove" ,sbcl-prove)))
4456 (inputs
4457 `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4458 ("sbcl-quri" ,sbcl-quri)
4459 ("sbcl-map-set" ,sbcl-map-set)))
4460 (home-page "https://github.com/fukamachi/myway")
4461 (synopsis "Sinatra-compatible URL routing library for Common Lisp")
4462 (description "My Way is a Sinatra-compatible URL routing library.")
4463 (license license:llgpl))))
4464
4465 (define-public cl-myway
4466 (sbcl-package->cl-source-package sbcl-myway))
4467
4468 (define-public sbcl-xsubseq
4469 (let ((commit "5ce430b3da5cda3a73b9cf5cee4df2843034422b")
4470 (revision "1"))
4471 (package
4472 (name "sbcl-xsubseq")
4473 (version (git-version "0.0.1" revision commit))
4474 (source
4475 (origin
4476 (method git-fetch)
4477 (uri (git-reference
4478 (url "https://github.com/fukamachi/xsubseq")
4479 (commit commit)))
4480 (file-name (git-file-name name version))
4481 (sha256
4482 (base32 "1xz79q0p2mclf3sqjiwf6izdpb6xrsr350bv4mlmdlm6rg5r99px"))))
4483 (build-system asdf-build-system/sbcl)
4484 (arguments
4485 ;; Tests fail with: Component XSUBSEQ-ASD::XSUBSEQ-TEST not found,
4486 ;; required by #<SYSTEM "xsubseq">. Why?
4487 '(#:tests? #f))
4488 (native-inputs
4489 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4490 ("sbcl-prove" ,sbcl-prove)))
4491 (home-page "https://github.com/fukamachi/xsubseq")
4492 (synopsis "Efficient way to use \"subseq\"s in Common Lisp")
4493 (description
4494 "XSubseq provides functions to be able to handle \"subseq\"s more
4495 effieiently.")
4496 (license license:bsd-2))))
4497
4498 (define-public cl-xsubseq
4499 (sbcl-package->cl-source-package sbcl-xsubseq))
4500
4501 (define-public sbcl-smart-buffer
4502 (let ((commit "09b9a9a0b3abaa37abe9a730f5aac2643dca4e62")
4503 (revision "1"))
4504 (package
4505 (name "sbcl-smart-buffer")
4506 (version (git-version "0.0.1" revision commit))
4507 (source
4508 (origin
4509 (method git-fetch)
4510 (uri (git-reference
4511 (url "https://github.com/fukamachi/smart-buffer")
4512 (commit commit)))
4513 (file-name (git-file-name name version))
4514 (sha256
4515 (base32 "0qz1zzxx0wm5ff7gpgsq550a59p0qj594zfmm2rglj97dahj54l7"))))
4516 (build-system asdf-build-system/sbcl)
4517 (arguments
4518 ;; Tests fail with: Component SMART-BUFFER-ASD::SMART-BUFFER-TEST not
4519 ;; found, required by #<SYSTEM "smart-buffer">. Why?
4520 `(#:tests? #f))
4521 (native-inputs
4522 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4523 ("sbcl-prove" ,sbcl-prove)))
4524 (inputs
4525 `(("sbcl-xsubseq" ,sbcl-xsubseq)
4526 ("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4527 (home-page "https://github.com/fukamachi/smart-buffer")
4528 (synopsis "Smart octets buffer")
4529 (description
4530 "Smart-buffer provides an output buffer which changes the destination
4531 depending on content size.")
4532 (license license:bsd-3))))
4533
4534 (define-public cl-smart-buffer
4535 (sbcl-package->cl-source-package sbcl-smart-buffer))
4536
4537 (define-public sbcl-fast-http
4538 (let ((commit "f9e7597191bae380503e20724fd493a24d024935")
4539 (revision "1"))
4540 (package
4541 (name "sbcl-fast-http")
4542 (version (git-version "0.2.0" revision commit))
4543 (source
4544 (origin
4545 (method git-fetch)
4546 (uri (git-reference
4547 (url "https://github.com/fukamachi/fast-http")
4548 (commit commit)))
4549 (file-name (git-file-name name version))
4550 (sha256
4551 (base32 "0qdmwv2zm0sizxdb8nnclgwl0nfjcbjaimbakavikijw7lr9b4jp"))))
4552 (build-system asdf-build-system/sbcl)
4553 (arguments
4554 ;; Tests fail with: Component FAST-HTTP-ASD::FAST-HTTP-TEST not found,
4555 ;; required by #<SYSTEM "fast-http">. Why?
4556 `(#:tests? #f))
4557 (native-inputs
4558 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4559 ("sbcl-prove" ,sbcl-prove)))
4560 (inputs
4561 `(("sbcl-alexandria" ,sbcl-alexandria)
4562 ("sbcl-proc-parse" ,sbcl-proc-parse)
4563 ("sbcl-xsubseq" ,sbcl-xsubseq)
4564 ("sbcl-smart-buffer" ,sbcl-smart-buffer)
4565 ("sbcl-cl-utilities" ,sbcl-cl-utilities)))
4566 (home-page "https://github.com/fukamachi/fast-http")
4567 (synopsis "HTTP request/response parser for Common Lisp")
4568 (description
4569 "@code{fast-http} is a HTTP request/response protocol parser for Common
4570 Lisp.")
4571 ;; Author specified the MIT license
4572 (license license:expat))))
4573
4574 (define-public cl-fast-http
4575 (sbcl-package->cl-source-package sbcl-fast-http))
4576
4577 (define-public sbcl-static-vectors
4578 (let ((commit "0681eac1f49370cde03e64b077251e8abf47d702")
4579 (revision "1"))
4580 (package
4581 (name "sbcl-static-vectors")
4582 (version (git-version "1.8.3" revision commit))
4583 (source
4584 (origin
4585 (method git-fetch)
4586 (uri (git-reference
4587 (url "https://github.com/sionescu/static-vectors.git")
4588 (commit commit)))
4589 (file-name (git-file-name name version))
4590 (sha256
4591 (base32 "138nlsq14hv8785ycjm6jw3i6ablhq8vcwys7q09y80arcgrg6r3"))))
4592 (native-inputs
4593 `(("sbcl-fiveam" ,sbcl-fiveam)))
4594 (inputs
4595 `(("sbcl-cffi-grovel" ,sbcl-cffi-grovel)
4596 ("sbcl-cffi" ,sbcl-cffi)))
4597 (build-system asdf-build-system/sbcl)
4598 (home-page "http://common-lisp.net/projects/iolib/")
4599 (synopsis "Allocate SIMPLE-ARRAYs in static memory")
4600 (description
4601 "With @code{static-vectors}, you can create vectors allocated in static
4602 memory.")
4603 (license license:expat))))
4604
4605 (define-public cl-static-vectors
4606 (sbcl-package->cl-source-package sbcl-static-vectors))
4607
4608 (define-public sbcl-marshal
4609 (let ((commit "eff1b15f2b0af2f26f71ad6a4dd5c4beab9299ec")
4610 (revision "1"))
4611 (package
4612 (name "sbcl-marshal")
4613 (version (git-version "1.3.0" revision commit))
4614 (source
4615 (origin
4616 (method git-fetch)
4617 (uri (git-reference
4618 (url "https://github.com/wlbr/cl-marshal.git")
4619 (commit commit)))
4620 (file-name (git-file-name name version))
4621 (sha256
4622 (base32 "08qs6fhk38xpkkjkpcj92mxx0lgy4ygrbbzrmnivdx281syr0gwh"))))
4623 (build-system asdf-build-system/sbcl)
4624 (home-page "https://github.com/wlbr/cl-marshal")
4625 (synopsis "Simple (de)serialization of Lisp datastructures")
4626 (description
4627 "Simple and fast marshalling of Lisp datastructures. Convert any object
4628 into a string representation, put it on a stream an revive it from there.
4629 Only minimal changes required to make your CLOS objects serializable.")
4630 (license license:expat))))
4631
4632 (define-public cl-marshal
4633 (sbcl-package->cl-source-package sbcl-marshal))
4634
4635 (define-public sbcl-checkl
4636 (let ((commit "80328800d047fef9b6e32dfe6bdc98396aee3cc9")
4637 (revision "1"))
4638 (package
4639 (name "sbcl-checkl")
4640 (version (git-version "0.0.0" revision commit))
4641 (source
4642 (origin
4643 (method git-fetch)
4644 (uri (git-reference
4645 (url "https://github.com/rpav/CheckL.git")
4646 (commit commit)))
4647 (file-name (git-file-name name version))
4648 (sha256
4649 (base32 "0bpisihx1gay44xmyr1dmhlwh00j0zzi04rp9fy35i95l2r4xdlx"))))
4650 (build-system asdf-build-system/sbcl)
4651 (arguments
4652 ;; Error while trying to load definition for system checkl-test from
4653 ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
4654 ;; is undefined.
4655 '(#:tests? #f))
4656 (native-inputs
4657 `(("sbcl-fiveam" ,sbcl-fiveam)))
4658 (inputs
4659 `(("sbcl-marshal" ,sbcl-marshal)))
4660 (home-page "https://github.com/rpav/CheckL/")
4661 (synopsis "Dynamic testing for Common Lisp")
4662 (description
4663 "CheckL lets you write tests dynamically, it checks resulting values
4664 against the last run.")
4665 ;; The author specifies both LLGPL and "BSD", but the "BSD" license
4666 ;; isn't specified anywhere, so I don't know which kind. LLGPL is the
4667 ;; stronger of the two and so I think only listing this should suffice.
4668 (license license:llgpl))))
4669
4670 (define-public cl-checkl
4671 (sbcl-package->cl-source-package sbcl-checkl))
4672
4673 (define-public sbcl-fast-io
4674 (let ((commit "dc3a71db7e9b756a88781ae9c342fe9d4bbab51c")
4675 (revision "1"))
4676 (package
4677 (name "sbcl-fast-io")
4678 (version (git-version "1.0.0" revision commit))
4679 (source
4680 (origin
4681 (method git-fetch)
4682 (uri (git-reference
4683 (url "https://github.com/rpav/fast-io.git")
4684 (commit commit)))
4685 (file-name (git-file-name name version))
4686 (sha256
4687 (base32 "1jsp6xvi26ln6fdy5j5zi05xvan8jsqdhisv552dy6xg6ws8i1yq"))))
4688 (build-system asdf-build-system/sbcl)
4689 (arguments
4690 ;; Error while trying to load definition for system fast-io-test from
4691 ;; pathname [...]/fast-io-test.asd: The function CHECKL:DEFINE-TEST-OP
4692 ;; is undefined.
4693 '(#:tests? #f))
4694 (native-inputs
4695 `(("sbcl-fiveam" ,sbcl-fiveam)
4696 ("sbcl-checkl" ,sbcl-checkl)))
4697 (inputs
4698 `(("sbcl-alexandria" ,sbcl-alexandria)
4699 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
4700 ("sbcl-static-vectors" ,sbcl-static-vectors)))
4701 (home-page "https://github.com/rpav/fast-io")
4702 (synopsis "Fast octet-vector/stream I/O for Common Lisp")
4703 (description
4704 "Fast-io is about improving performance to octet-vectors and octet
4705 streams (though primarily the former, while wrapping the latter).")
4706 ;; Author specifies this as NewBSD which is an alias
4707 (license license:bsd-3))))
4708
4709 (define-public cl-fast-io
4710 (sbcl-package->cl-source-package sbcl-fast-io))
4711
4712 (define-public sbcl-jonathan
4713 (let ((commit "1f448b4f7ac8265e56e1c02b32ce383e65316300")
4714 (revision "1"))
4715 (package
4716 (name "sbcl-jonathan")
4717 (version (git-version "0.1.0" revision commit))
4718 (source
4719 (origin
4720 (method git-fetch)
4721 (uri (git-reference
4722 (url "https://github.com/Rudolph-Miller/jonathan.git")
4723 (commit commit)))
4724 (file-name (git-file-name name version))
4725 (sha256
4726 (base32 "14x4iwz3mbag5jzzzr4sb6ai0m9r4q4kyypbq32jmsk2dx1hi807"))))
4727 (build-system asdf-build-system/sbcl)
4728 (arguments
4729 ;; Tests fail with: Component JONATHAN-ASD::JONATHAN-TEST not found,
4730 ;; required by #<SYSTEM "jonathan">. Why?
4731 `(#:tests? #f))
4732 (native-inputs
4733 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4734 ("sbcl-prove" ,sbcl-prove)))
4735 (inputs
4736 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
4737 ("sbcl-cl-syntax-annot" ,sbcl-cl-syntax-annot)
4738 ("sbcl-fast-io" ,sbcl-fast-io)
4739 ("sbcl-proc-parse" ,sbcl-proc-parse)
4740 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)))
4741 (home-page "http://rudolph-miller.github.io/jonathan/overview.html")
4742 (synopsis "JSON encoder and decoder")
4743 (description
4744 "High performance JSON encoder and decoder. Currently support: SBCL,
4745 CCL.")
4746 ;; Author specifies the MIT license
4747 (license license:expat))))
4748
4749 (define-public cl-jonathan
4750 (sbcl-package->cl-source-package sbcl-jonathan))
4751
4752 (define-public sbcl-http-body
4753 (let ((commit "dd01dc4f5842e3d29728552e5163acce8386eb73")
4754 (revision "1"))
4755 (package
4756 (name "sbcl-http-body")
4757 (version (git-version "0.1.0" revision commit))
4758 (source
4759 (origin
4760 (method git-fetch)
4761 (uri (git-reference
4762 (url "https://github.com/fukamachi/http-body")
4763 (commit commit)))
4764 (file-name (git-file-name name version))
4765 (sha256
4766 (base32 "1jd06snjvxcprhapgfq8sx0y5lrldkvhf206ix6d5a23dd6zcmr0"))))
4767 (build-system asdf-build-system/sbcl)
4768 (arguments
4769 ;; Tests fail with: Component HTTP-BODY-ASD::HTTP-BODY-TEST not
4770 ;; found, required by #<SYSTEM "http-body">. Why?
4771 `(#:tests? #f))
4772 (native-inputs
4773 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4774 ("sbcl-prove" ,sbcl-prove)))
4775 (inputs
4776 `(("sbcl-fast-http" ,sbcl-fast-http)
4777 ("sbcl-jonathan" ,sbcl-jonathan)
4778 ("sbcl-quri" ,sbcl-quri)))
4779 (home-page "https://github.com/fukamachi/http-body")
4780 (synopsis "HTTP POST data parser")
4781 (description
4782 "HTTP-Body parses HTTP POST data and returns POST parameters. It
4783 supports application/x-www-form-urlencoded, application/json, and
4784 multipart/form-data.")
4785 (license license:bsd-2))))
4786
4787 (define-public cl-http-body
4788 (sbcl-package->cl-source-package sbcl-http-body))
4789
4790 (define-public sbcl-circular-streams
4791 (let ((commit "e770bade1919c5e8533dd2078c93c3d3bbeb38df")
4792 (revision "1"))
4793 (package
4794 (name "sbcl-circular-streams")
4795 (version (git-version "0.1.0" revision commit))
4796 (source
4797 (origin
4798 (method git-fetch)
4799 (uri (git-reference
4800 (url "https://github.com/fukamachi/circular-streams")
4801 (commit commit)))
4802 (file-name (git-file-name name version))
4803 (sha256
4804 (base32 "1wpw6d5cciyqcf92f7mvihak52pd5s47kk4qq6f0r2z2as68p5rs"))))
4805 (build-system asdf-build-system/sbcl)
4806 (arguments
4807 ;; The tests depend on cl-test-more which is now prove. Prove
4808 ;; tests aren't working for some reason.
4809 `(#:tests? #f))
4810 (inputs
4811 `(("sbcl-fast-io" ,sbcl-fast-io)
4812 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
4813 (home-page "https://github.com/fukamachi/circular-streams")
4814 (synopsis "Circularly readable streams for Common Lisp")
4815 (description
4816 "Circular-Streams allows you to read streams circularly by wrapping real
4817 streams. Once you reach end-of-file of a stream, it's file position will be
4818 reset to 0 and you're able to read it again.")
4819 (license license:llgpl))))
4820
4821 (define-public cl-circular-streams
4822 (sbcl-package->cl-source-package sbcl-circular-streams))
4823
4824 (define-public sbcl-lack-request
4825 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4826 (revision "1"))
4827 (package
4828 (name "sbcl-lack-request")
4829 (version (git-version "0.1.0" revision commit))
4830 (source
4831 (origin
4832 (method git-fetch)
4833 (uri (git-reference
4834 (url "https://github.com/fukamachi/lack.git")
4835 (commit commit)))
4836 (sha256
4837 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4838 (build-system asdf-build-system/sbcl)
4839 (arguments
4840 '(#:asd-file "lack-request.asd"
4841 #:asd-system-name "lack-request"
4842 #:test-asd-file "t-lack-request.asd"
4843 ;; XXX: Component :CLACK-TEST not found
4844 #:tests? #f))
4845 (native-inputs
4846 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4847 ("sbcl-prove" ,sbcl-prove)))
4848 (inputs
4849 `(("sbcl-quri" ,sbcl-quri)
4850 ("sbcl-http-body" ,sbcl-http-body)
4851 ("sbcl-circular-streams" ,sbcl-circular-streams)))
4852 (home-page "https://github.com/fukamachi/lack")
4853 (synopsis "Lack, the core of Clack")
4854 (description
4855 "Lack is a Common Lisp library which allows web applications to be
4856 constructed of modular components. It was originally a part of Clack, however
4857 it's going to be rewritten as an individual project since Clack v2 with
4858 performance and simplicity in mind.")
4859 (license license:llgpl))))
4860
4861 (define-public cl-lack-request
4862 (sbcl-package->cl-source-package sbcl-lack-request))
4863
4864 (define-public sbcl-local-time
4865 (let ((commit "beac054eef428552b63d4ae7820c32ffef9a3015")
4866 (revision "1"))
4867 (package
4868 (name "sbcl-local-time")
4869 (version (git-version "1.0.6" revision commit))
4870 (source
4871 (origin
4872 (method git-fetch)
4873 (uri (git-reference
4874 (url "https://github.com/dlowe-net/local-time.git")
4875 (commit commit)))
4876 (file-name (git-file-name name version))
4877 (sha256
4878 (base32 "0xhkmgxh41dg2wwlsp0h2l41jp144xn4gpxhh0lna6kh0560w2cc"))))
4879 (build-system asdf-build-system/sbcl)
4880 (arguments
4881 ;; TODO: Component :STEFIL not found, required by #<SYSTEM
4882 ;; "local-time/test">
4883 '(#:tests? #f))
4884 (native-inputs
4885 `(("stefil" ,sbcl-hu.dwim.stefil)))
4886 (inputs
4887 `(("sbcl-cl-fad" ,sbcl-cl-fad)))
4888 (home-page "https://common-lisp.net/project/local-time/")
4889 (synopsis "Time manipulation library for Common Lisp")
4890 (description
4891 "The LOCAL-TIME library is a Common Lisp library for the manipulation of
4892 dates and times. It is based almost entirely upon Erik Naggum's paper \"The
4893 Long Painful History of Time\".")
4894 (license license:expat))))
4895
4896 (define-public cl-local-time
4897 (sbcl-package->cl-source-package sbcl-local-time))
4898
4899 (define-public sbcl-lack-response
4900 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4901 (revision "1"))
4902 (package
4903 (name "sbcl-lack-response")
4904 (version (git-version "0.1.0" revision commit))
4905 (source
4906 (origin
4907 (method git-fetch)
4908 (uri (git-reference
4909 (url "https://github.com/fukamachi/lack.git")
4910 (commit commit)))
4911 (file-name (git-file-name name version))
4912 (sha256
4913 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4914 (build-system asdf-build-system/sbcl)
4915 (arguments
4916 '(#:asd-file "lack-response.asd"
4917 #:asd-system-name "lack-response"
4918 ;; XXX: no tests for lack-response.
4919 #:tests? #f))
4920 (native-inputs
4921 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4922 ("sbcl-prove" ,sbcl-prove)))
4923 (inputs
4924 `(("sbcl-quri" ,sbcl-quri)
4925 ("sbcl-http-body" ,sbcl-http-body)
4926 ("sbcl-circular-streams" ,sbcl-circular-streams)
4927 ("sbcl-local-time" ,sbcl-local-time)))
4928 (home-page "https://github.com/fukamachi/lack")
4929 (synopsis "Lack, the core of Clack")
4930 (description
4931 "Lack is a Common Lisp library which allows web applications to be
4932 constructed of modular components. It was originally a part of Clack, however
4933 it's going to be rewritten as an individual project since Clack v2 with
4934 performance and simplicity in mind.")
4935 (license license:llgpl))))
4936
4937 (define-public cl-lack-response
4938 (sbcl-package->cl-source-package sbcl-lack-response))
4939
4940 (define-public sbcl-lack-component
4941 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4942 (revision "1"))
4943 (package
4944 (name "sbcl-lack-component")
4945 (version (git-version "0.0.0" revision commit))
4946 (source
4947 (origin
4948 (method git-fetch)
4949 (uri (git-reference
4950 (url "https://github.com/fukamachi/lack.git")
4951 (commit commit)))
4952 (sha256
4953 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4954 (build-system asdf-build-system/sbcl)
4955 (arguments
4956 '(#:asd-file "lack-component.asd"
4957 #:asd-system-name "lack-component"
4958 #:test-asd-file "t-lack-component.asd"
4959 ;; XXX: Component :LACK-TEST not found
4960 #:tests? #f))
4961 (native-inputs
4962 `(("prove-asdf" ,sbcl-prove-asdf)))
4963 (home-page "https://github.com/fukamachi/lack")
4964 (synopsis "Lack, the core of Clack")
4965 (description
4966 "Lack is a Common Lisp library which allows web applications to be
4967 constructed of modular components. It was originally a part of Clack, however
4968 it's going to be rewritten as an individual project since Clack v2 with
4969 performance and simplicity in mind.")
4970 (license license:llgpl))))
4971
4972 (define-public cl-lack-component
4973 (sbcl-package->cl-source-package sbcl-lack-component))
4974
4975 (define-public sbcl-lack-util
4976 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4977 (revision "1"))
4978 (package
4979 (name "sbcl-lack-util")
4980 (version (git-version "0.1.0" revision commit))
4981 (source
4982 (origin
4983 (method git-fetch)
4984 (uri (git-reference
4985 (url "https://github.com/fukamachi/lack.git")
4986 (commit commit)))
4987 (sha256
4988 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4989 (build-system asdf-build-system/sbcl)
4990 (arguments
4991 '(#:asd-file "lack-util.asd"
4992 #:asd-system-name "lack-util"
4993 #:test-asd-file "t-lack-util.asd"
4994 ;; XXX: Component :LACK-TEST not found
4995 #:tests? #f))
4996 (native-inputs
4997 `(("prove-asdf" ,sbcl-prove-asdf)))
4998 (inputs
4999 `(("sbcl-ironclad" ,sbcl-ironclad)))
5000 (home-page "https://github.com/fukamachi/lack")
5001 (synopsis "Lack, the core of Clack")
5002 (description
5003 "Lack is a Common Lisp library which allows web applications to be
5004 constructed of modular components. It was originally a part of Clack, however
5005 it's going to be rewritten as an individual project since Clack v2 with
5006 performance and simplicity in mind.")
5007 (license license:llgpl))))
5008
5009 (define-public cl-lack-util
5010 (sbcl-package->cl-source-package sbcl-lack-util))
5011
5012 (define-public sbcl-lack-middleware-backtrace
5013 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5014 (revision "1"))
5015 (package
5016 (name "sbcl-lack-middleware-backtrace")
5017 (version (git-version "0.1.0" revision commit))
5018 (source
5019 (origin
5020 (method git-fetch)
5021 (uri (git-reference
5022 (url "https://github.com/fukamachi/lack.git")
5023 (commit commit)))
5024 (sha256
5025 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5026 (build-system asdf-build-system/sbcl)
5027 (arguments
5028 '(#:asd-file "lack-middleware-backtrace.asd"
5029 #:asd-system-name "lack-middleware-backtrace"
5030 #:test-asd-file "t-lack-middleware-backtrace.asd"
5031 ;; XXX: Component :LACK not found
5032 #:tests? #f))
5033 (native-inputs
5034 `(("prove-asdf" ,sbcl-prove-asdf)))
5035 (home-page "https://github.com/fukamachi/lack")
5036 (synopsis "Lack, the core of Clack")
5037 (description
5038 "Lack is a Common Lisp library which allows web applications to be
5039 constructed of modular components. It was originally a part of Clack, however
5040 it's going to be rewritten as an individual project since Clack v2 with
5041 performance and simplicity in mind.")
5042 (license license:llgpl))))
5043
5044 (define-public cl-lack-middleware-backtrace
5045 (sbcl-package->cl-source-package sbcl-lack-middleware-backtrace))
5046
5047 (define-public sbcl-trivial-mimes
5048 (let ((commit "303f8ac0aa6ca0bc139aa3c34822e623c3723fab")
5049 (revision "1"))
5050 (package
5051 (name "sbcl-trivial-mimes")
5052 (version (git-version "1.1.0" revision commit))
5053 (source
5054 (origin
5055 (method git-fetch)
5056 (uri (git-reference
5057 (url "https://github.com/Shinmera/trivial-mimes.git")
5058 (commit commit)))
5059 (file-name (git-file-name name version))
5060 (sha256
5061 (base32 "17jxgl47r695bvsb7wi3n2ws5rp1zzgvw0zii8cy5ggw4b4ayv6m"))))
5062 (build-system asdf-build-system/sbcl)
5063 (arguments
5064 '(#:phases
5065 (modify-phases %standard-phases
5066 (add-after
5067 'unpack 'fix-paths
5068 (lambda* (#:key inputs #:allow-other-keys)
5069 (let ((anchor "#p\"/etc/mime.types\""))
5070 (substitute* "mime-types.lisp"
5071 ((anchor all)
5072 (string-append
5073 anchor "\n"
5074 "(asdf:system-relative-pathname :trivial-mimes \"../../share/common-lisp/sbcl-source/trivial-mimes/mime.types\")")))))))))
5075 (native-inputs
5076 `(("stefil" ,sbcl-hu.dwim.stefil)))
5077 (inputs
5078 `(("sbcl-cl-fad" ,sbcl-cl-fad)))
5079 (home-page "http://shinmera.github.io/trivial-mimes/")
5080 (synopsis "Tiny Common Lisp library to detect mime types in files")
5081 (description
5082 "This is a teensy library that provides some functions to determine the
5083 mime-type of a file.")
5084 (license license:artistic2.0))))
5085
5086 (define-public cl-trivial-mimes
5087 (sbcl-package->cl-source-package sbcl-trivial-mimes))
5088
5089 (define-public sbcl-lack-middleware-static
5090 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5091 (revision "1"))
5092 (package
5093 (name "sbcl-lack-middleware-static")
5094 (version (git-version "0.1.0" revision commit))
5095 (source
5096 (origin
5097 (method git-fetch)
5098 (uri (git-reference
5099 (url "https://github.com/fukamachi/lack.git")
5100 (commit commit)))
5101 (sha256
5102 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5103 (build-system asdf-build-system/sbcl)
5104 (arguments
5105 '(#:asd-file "lack-middleware-static.asd"
5106 #:asd-system-name "lack-middleware-static"
5107 #:test-asd-file "t-lack-middleware-static.asd"
5108 ;; XXX: Component :LACK not found
5109 #:tests? #f))
5110 (native-inputs
5111 `(("prove-asdf" ,sbcl-prove-asdf)))
5112 (inputs
5113 `(("sbcl-ironclad" ,sbcl-ironclad)
5114 ("sbcl-trivial-mimes" ,sbcl-trivial-mimes)
5115 ("sbcl-local-time" ,sbcl-local-time)))
5116 (home-page "https://github.com/fukamachi/lack")
5117 (synopsis "Lack, the core of Clack")
5118 (description
5119 "Lack is a Common Lisp library which allows web applications to be
5120 constructed of modular components. It was originally a part of Clack, however
5121 it's going to be rewritten as an individual project since Clack v2 with
5122 performance and simplicity in mind.")
5123 (license license:llgpl))))
5124
5125 (define-public cl-lack-middleware-static
5126 (sbcl-package->cl-source-package sbcl-lack-middleware-static))
5127
5128 (define-public sbcl-lack
5129 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5130 (revision "1"))
5131 (package
5132 (name "sbcl-lack")
5133 (version (git-version "0.1.0" revision commit))
5134 (source
5135 (origin
5136 (method git-fetch)
5137 (uri (git-reference
5138 (url "https://github.com/fukamachi/lack.git")
5139 (commit commit)))
5140 (sha256
5141 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5142 (build-system asdf-build-system/sbcl)
5143 (arguments
5144 '(#:test-asd-file "t-lack.asd"
5145 ;; XXX: Component :CLACK not found
5146 #:tests? #f))
5147 (native-inputs
5148 `(("prove-asdf" ,sbcl-prove-asdf)))
5149 (inputs
5150 `(("sbcl-lack-component" ,sbcl-lack-component)
5151 ("sbcl-lack-util" ,sbcl-lack-util)))
5152 (home-page "https://github.com/fukamachi/lack")
5153 (synopsis "Lack, the core of Clack")
5154 (description
5155 "Lack is a Common Lisp library which allows web applications to be
5156 constructed of modular components. It was originally a part of Clack, however
5157 it's going to be rewritten as an individual project since Clack v2 with
5158 performance and simplicity in mind.")
5159 (license license:llgpl))))
5160
5161 (define-public cl-lack
5162 (sbcl-package->cl-source-package sbcl-lack))
5163
5164 (define-public sbcl-ningle
5165 (let ((commit "50bd4f09b5a03a7249bd4d78265d6451563b25ad")
5166 (revision "1"))
5167 (package
5168 (name "sbcl-ningle")
5169 (version (git-version "0.3.0" revision commit))
5170 (source
5171 (origin
5172 (method git-fetch)
5173 (uri (git-reference
5174 (url "https://github.com/fukamachi/ningle.git")
5175 (commit commit)))
5176 (file-name (git-file-name name version))
5177 (sha256
5178 (base32 "1bsl8cnxhacb8p92z9n89vhk1ikmij5zavk0m2zvmj7iqm79jzgw"))))
5179 (build-system asdf-build-system/sbcl)
5180 (arguments
5181 ;; TODO: pull in clack-test
5182 '(#:tests? #f
5183 #:phases
5184 (modify-phases %standard-phases
5185 (delete 'cleanup-files)
5186 (delete 'cleanup)
5187 (add-before 'cleanup 'combine-fasls
5188 (lambda* (#:key outputs #:allow-other-keys)
5189 (let* ((out (assoc-ref outputs "out"))
5190 (lib (string-append out "/lib/sbcl"))
5191 (ningle-path (string-append lib "/ningle"))
5192 (fasl-files (find-files out "\\.fasl$")))
5193 (mkdir-p ningle-path)
5194 (let ((fasl-path (lambda (name)
5195 (string-append ningle-path
5196 "/"
5197 (basename name)
5198 "--system.fasl"))))
5199 (for-each (lambda (file)
5200 (rename-file file
5201 (fasl-path
5202 (basename file ".fasl"))))
5203 fasl-files))
5204 fasl-files)
5205 #t)))))
5206 (native-inputs
5207 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
5208 ("sbcl-prove" ,sbcl-prove)))
5209 (inputs
5210 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
5211 ("sbcl-cl-syntax-annot" ,sbcl-cl-syntax-annot)
5212 ("sbcl-myway" ,sbcl-myway)
5213 ("sbcl-lack-request" ,sbcl-lack-request)
5214 ("sbcl-lack-response" ,sbcl-lack-response)
5215 ("sbcl-lack-component" ,sbcl-lack-component)
5216 ("sbcl-alexandria" ,sbcl-alexandria)
5217 ("sbcl-babel" ,sbcl-babel)))
5218 (home-page "http://8arrow.org/ningle/")
5219 (synopsis "Super micro framework for Common Lisp")
5220 (description
5221 "Ningle is a lightweight web application framework for Common Lisp.")
5222 (license license:llgpl))))
5223
5224 (define-public cl-ningle
5225 (sbcl-package->cl-source-package sbcl-ningle))
5226
5227 (define-public sbcl-clack
5228 (let ((commit "e3e032843bb1220ab96263c411aa7f2feb4746e0")
5229 (revision "1"))
5230 (package
5231 (name "sbcl-clack")
5232 (version (git-version "2.0.0" revision commit))
5233 (source
5234 (origin
5235 (method git-fetch)
5236 (uri (git-reference
5237 (url "https://github.com/fukamachi/clack.git")
5238 (commit commit)))
5239 (file-name (git-file-name name version))
5240 (sha256
5241 (base32 "1ymzs6qyrwhlj6cgqsnpyn6g5cbp7a3s1vgxwna20y2q7y4iacy0"))))
5242 (build-system asdf-build-system/sbcl)
5243 (inputs
5244 `(("sbcl-lack" ,sbcl-lack)
5245 ("sbcl-lack-middleware-backtrace" ,sbcl-lack-middleware-backtrace)
5246 ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)))
5247 (home-page "https://github.com/fukamachi/clack")
5248 (synopsis "Web Application Environment for Common Lisp")
5249 (description
5250 "Clack is a web application environment for Common Lisp inspired by
5251 Python's WSGI and Ruby's Rack.")
5252 (license license:llgpl))))
5253
5254 (define-public cl-clack
5255 (sbcl-package->cl-source-package sbcl-clack))
5256
5257 (define-public sbcl-log4cl
5258 (let ((commit "611e094458504b938d49de904eab141285328c7c")
5259 (revision "1"))
5260 (package
5261 (name "sbcl-log4cl")
5262 (build-system asdf-build-system/sbcl)
5263 (version "1.1.2")
5264 (source
5265 (origin
5266 (method git-fetch)
5267 (uri (git-reference
5268 (url "https://github.com/sharplispers/log4cl")
5269 (commit commit)))
5270 (file-name (git-file-name name version))
5271 (sha256
5272 (base32
5273 "08jly0s0g26b56hhpfizxsb4j0yvbh946sd205gr42dkzv8l7dsc"))))
5274 ;; FIXME: tests require stefil, sbcl-hu.dwim.stefil wont work
5275 (arguments
5276 `(#:tests? #f))
5277 (inputs `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
5278 (synopsis "Common Lisp logging framework, modeled after Log4J")
5279 (home-page "https://github.com/7max/log4cl")
5280 (description "This is a Common Lisp logging framework that can log at
5281 various levels and mix text with expressions.")
5282 (license license:asl2.0))))
5283
5284 (define-public cl-log4cl
5285 (sbcl-package->cl-source-package sbcl-log4cl))
5286
5287 (define-public ecl-log4cl
5288 (sbcl-package->ecl-package sbcl-log4cl))