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