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