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