gnu: Add map-set.
[jackhill/guix/guix.git] / gnu / packages / lisp.scm
CommitLineData
f842bbed
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 John Darrington <jmd@gnu.org>
00ab9458 3;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
e396976b 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
05f5ce0c 5;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
47956fa0 6;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
14afc7b8 7;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
e24ef369 8;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
f3cd6633 9;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
46c1c553 10;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
56c240ba 11;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
28e32b14 12;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
27ebd5c4 13;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
4b193da3 14;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
5914489d 15;;; Copyright © 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
f842bbed
JD
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)
b5b73a82 34 #:use-module ((guix licenses) #:prefix license:)
f842bbed 35 #:use-module (guix packages)
f842bbed 36 #:use-module (guix download)
423eef36 37 #:use-module (guix git-download)
a927eb36 38 #:use-module (guix hg-download)
f842bbed 39 #:use-module (guix utils)
00ab9458 40 #:use-module (guix build-system gnu)
28e32b14 41 #:use-module (guix build-system ant)
a72debb7 42 #:use-module (guix build-system asdf)
e3e171ee 43 #:use-module (guix build-system trivial)
5ff15b86 44 #:use-module (gnu packages admin)
ce0614dd 45 #:use-module (gnu packages base)
5ff15b86 46 #:use-module (gnu packages bdw-gc)
05c63898 47 #:use-module (gnu packages compression)
5ff15b86 48 #:use-module (gnu packages ed)
05c63898 49 #:use-module (gnu packages fontutils)
5ff15b86
EF
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)
05c63898 55 #:use-module (gnu packages maths)
00ab9458 56 #:use-module (gnu packages multiprecision)
f473b8f1 57 #:use-module (gnu packages ncurses)
560f51d0 58 #:use-module (gnu packages libffcall)
5ff15b86 59 #:use-module (gnu packages libffi)
b702b52d 60 #:use-module (gnu packages libsigsegv)
05c63898 61 #:use-module (gnu packages linux)
5ff15b86 62 #:use-module (gnu packages perl)
05c63898 63 #:use-module (gnu packages pkg-config)
5ff15b86
EF
64 #:use-module (gnu packages readline)
65 #:use-module (gnu packages sdl)
cd0322a3 66 #:use-module (gnu packages sqlite)
5ff15b86
EF
67 #:use-module (gnu packages tex)
68 #:use-module (gnu packages texinfo)
d1ae5a12 69 #:use-module (gnu packages tls)
531a9aac 70 #:use-module (gnu packages version-control)
05c63898 71 #:use-module (gnu packages xorg)
8f065b47 72 #:use-module (gnu packages databases)
64dcf7d9 73 #:use-module (gnu packages gtk)
24fd7586 74 #:use-module (gnu packages webkit)
2c742a06 75 #:use-module (gnu packages xdisorg)
419fb3f1 76 #:use-module (ice-9 match)
1de50cb7 77 #:use-module (srfi srfi-19))
f842bbed 78
8d0489ae
AP
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
f842bbed 90(define-public gcl
5a8b00f2
KK
91 (let ((commit "d3335e2b3deb63f930eb0328e9b05377744c9512")
92 (revision "2")) ;Guix package revision
dd0134fc
KK
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
5a8b00f2 105 (base32 "05v86lhvsby05nzvcd3c4k0wljvgdgd0i6arzd2fx1yd67dl6fgj"))))
dd0134fc
KK
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
978154ae 175 `(("m4" ,m4)
27ebd5c4 176 ("texinfo" ,texinfo)))
dd0134fc
KK
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
f842bbed
JD
180features the ability to compile to native object code and to load native
181object code modules directly into its lisp core. It also features a
182stratified garbage collection strategy, a source-level debugger and a built-in
183interface to the Tk widget system.")
dd0134fc 184 (license license:lgpl2.0+))))
f842bbed 185
00ab9458
TUBK
186(define-public ecl
187 (package
188 (name "ecl")
108f69c4 189 (version "16.1.3")
00ab9458
TUBK
190 (source
191 (origin
192 (method url-fetch)
e0524511
AP
193 (uri (string-append
194 "https://common-lisp.net/project/ecl/static/files/release/"
195 name "-" version ".tgz"))
00ab9458 196 (sha256
108f69c4 197 (base32 "0m0j24w5d5a9dwwqyrg0d35c0nys16ijb4r0nyk87yp82v38b9bn"))
fb7dc6d6
AP
198 (modules '((guix build utils)))
199 (snippet
200 ;; Add ecl-bundle-systems to 'default-system-source-registry'.
6cbee49d
MW
201 `(begin
202 (substitute* "contrib/asdf/asdf.lisp"
203 ,@(asdf-substitutions name))
204 #t))))
00ab9458 205 (build-system gnu-build-system)
cb03a9b6 206 ;; src/configure uses 'which' to confirm the existence of 'gzip'.
00ab9458
TUBK
207 (native-inputs `(("which" ,which)))
208 (inputs `(("gmp" ,gmp)
209 ("libatomic-ops" ,libatomic-ops)
210 ("libgc" ,libgc)
211 ("libffi" ,libffi)))
212 (arguments
60474cd1 213 '(#:tests? #t
60474cd1
AP
214 #:parallel-tests? #f
215 #:phases
216 (modify-phases %standard-phases
217 (delete 'check)
54a43ff4
AP
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"))
932b2ea2 238 `("kernel-headers" ,@libraries)))
54a43ff4
AP
239 `("LIBRARY_PATH" suffix ,library-directories)
240 `("LD_LIBRARY_PATH" suffix ,library-directories)))))
108f69c4
AP
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)))))
fb7dc6d6
AP
247 (native-search-paths
248 (list (search-path-specification
249 (variable "XDG_DATA_DIRS")
250 (files '("share")))))
00ab9458
TUBK
251 (home-page "http://ecls.sourceforge.net/")
252 (synopsis "Embeddable Common Lisp")
253 (description "ECL is an implementation of the Common Lisp language as
254defined by the ANSI X3J13 specification. Its most relevant features are: a
255bytecode compiler and interpreter, being able to compile Common Lisp with any
256C/C++ compiler, being able to build standalone executables and libraries, and
257supporting 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+)))
560f51d0
TUBK
262
263(define-public clisp
264 (package
265 (name "clisp")
e4c399fe 266 (version "2.49-92")
560f51d0
TUBK
267 (source
268 (origin
e4c399fe
EF
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))
560f51d0 274 (sha256
e4c399fe
EF
275 (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))
276 (patches (search-patches "clisp-remove-failing-test.patch"))))
560f51d0
TUBK
277 (build-system gnu-build-system)
278 (inputs `(("libffcall" ,libffcall)
f473b8f1
EF
279 ("ncurses" ,ncurses)
280 ("readline" ,readline)
560f51d0
TUBK
281 ("libsigsegv" ,libsigsegv)))
282 (arguments
e4c399fe
EF
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")
f90ef3c3
MW
291 #:build #f
292 #:phases
636c77d0
RW
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.
e4c399fe
EF
301 (substitute* '("src/clisp-link.in"
302 "src/unix.d"
303 "src/makemake.in")
304 (("/bin/sh") (which "sh")))
636c77d0
RW
305 (substitute* (find-files "." "configure|Makefile")
306 (("/bin/sh") "sh"))
307 (substitute* '("src/clisp-link.in")
308 (("/bin/pwd") "pwd"))
636c77d0 309 #t)))
560f51d0
TUBK
310 ;; Makefiles seem to have race conditions.
311 #:parallel-build? #f))
e4c399fe 312 (home-page "https://clisp.sourceforge.io/")
4cc78cb3
LC
313 (synopsis "A Common Lisp implementation")
314 (description
315 "GNU CLISP is an implementation of ANSI Common Lisp. Common Lisp is a
316high-level, object-oriented functional programming language. CLISP includes
317an interpreter, a compiler, a debugger, and much more.")
4bd2e2a5 318 (license license:gpl2+)))
b702b52d
TUBK
319
320(define-public sbcl
321 (package
322 (name "sbcl")
31b898ec 323 (version "1.5.1")
b702b52d
TUBK
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
31b898ec 330 (base32 "08z62qba0kmm15k93s2rq7ipi769895g8iwigcp20qjh6amwnwph"))
8d0489ae
AP
331 (modules '((guix build utils)))
332 (snippet
333 ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
6cbee49d
MW
334 `(begin
335 (substitute* "contrib/asdf/asdf.lisp"
336 ,@(asdf-substitutions name))
337 #t))))
b702b52d 338 (build-system gnu-build-system)
05f5ce0c 339 (outputs '("out" "doc"))
b702b52d 340 (native-inputs
4bddcae9
PN
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
76d520fa
EF
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))))
b702b52d
TUBK
356 ("which" ,which)
357 ("inetutils" ,inetutils) ;for hostname(1)
05f5ce0c 358 ("ed" ,ed)
4bddcae9 359 ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
05f5ce0c 360 ("texinfo" ,texinfo)))
b702b52d 361 (arguments
76d520fa 362 `(#:modules ((guix build gnu-build-system)
f0b7dc7e
ST
363 (guix build utils)
364 (srfi srfi-1))
365 #:phases
1ee131df
FB
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))
1925a879
AP
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)$"))
1ee131df
FB
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))))))
4bddcae9
PN
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))
1ee131df
FB
418 (replace 'build
419 (lambda* (#:key outputs #:allow-other-keys)
420 (setenv "CC" "gcc")
76d520fa
EF
421 (invoke "sh" "make.sh" ,@(match (%current-system)
422 ((or "x86_64-linux" "i686-linux")
423 `("ccl"))
424 (_
425 `("clisp")))
4bddcae9
PN
426 (string-append "--prefix="
427 (assoc-ref outputs "out")))))
1ee131df 428 (replace 'install
b702b52d 429 (lambda _
4bddcae9 430 (invoke "sh" "install.sh")))
05f5ce0c
FB
431 (add-after 'build 'build-doc
432 (lambda _
433 (with-directory-excursion "doc/manual"
4bddcae9
PN
434 (and (invoke "make" "info")
435 (invoke "make" "dist")))))
05f5ce0c
FB
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))))
1ee131df
FB
448 ;; No 'check' target, though "make.sh" (build phase) runs tests.
449 #:tests? #f))
8d0489ae
AP
450 (native-search-paths
451 (list (search-path-specification
452 (variable "XDG_DATA_DIRS")
453 (files '("share")))))
b702b52d
TUBK
454 (home-page "http://www.sbcl.org/")
455 (synopsis "Common Lisp implementation")
456 (description "Steel Bank Common Lisp (SBCL) is a high performance Common
457Lisp compiler. In addition to the compiler and runtime system for ANSI Common
458Lisp, it provides an interactive environment including a debugger, a
459statistical 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")))))
531a9aac
TUBK
464
465(define-public ccl
466 (package
467 (name "ccl")
04ab38b7 468 (version "1.11.5")
531a9aac
TUBK
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
04ab38b7 481 "https://github.com/Clozure/ccl/releases/download/v" version
3701f014 482 "/ccl-" version "-"
531a9aac
TUBK
483 (match (%current-system)
484 ((or "i686-linux" "x86_64-linux") "linuxx86")
42f11801
MW
485 ("armhf-linux" "linuxarm")
486 ;; Prevent errors when querying this package on unsupported
487 ;; platforms, e.g. when running "guix package --search="
488 (_ "UNSUPPORTED"))
531a9aac
TUBK
489 ".tar.gz"))
490 (sha256
491 (base32
492 (match (%current-system)
493 ((or "i686-linux" "x86_64-linux")
04ab38b7 494 "0hs1f3z7crgzvinpj990kv9gvbsipxvcvwbmk54n51nasvc5025q")
42f11801 495 ("armhf-linux"
04ab38b7 496 "0p0l1dzsygb6i1xxgbipjpxkn46xhq3jm41a34ga1qqp4x8lkr62")
42f11801 497 (_ ""))))))))
531a9aac
TUBK
498 (native-inputs
499 `(("m4" ,m4)
500 ("subversion" ,subversion)))
501 (arguments
502 `(#:tests? #f ;no 'check' target
fc7d5a34
AP
503 #:modules ((srfi srfi-26)
504 (guix build utils)
505 (guix build gnu-build-system))
531a9aac 506 #:phases
dc1d3cde
KK
507 (modify-phases %standard-phases
508 (replace 'unpack
509 (lambda* (#:key inputs #:allow-other-keys)
7d416066
RW
510 (invoke "tar" "xzvf" (assoc-ref inputs "ccl"))
511 (chdir "ccl")
512 #t))
dc1d3cde
KK
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 _
bcc65510
EF
518 (substitute* "lisp-kernel/m4macros.m4"
519 (("/bin/pwd") (which "pwd")))
dc1d3cde
KK
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")
7d416066 533 (invoke "make" "clean")))
dc1d3cde
KK
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
531a9aac
TUBK
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))
76eb7266 549 ("i686-linux" "lx86cl")
531a9aac 550 ("x86_64-linux" "lx86cl64")
76eb7266
MW
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")))
531a9aac 556 (heap (string-append kernel ".image")))
fc7d5a34
AP
557 (install-file kernel libdir)
558 (install-file heap libdir)
559
910ac0ef
PN
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 (_ '())))))
fc7d5a34
AP
567 (for-each copy-recursively
568 dirs
569 (map (cut string-append libdir <>) dirs)))
570
531a9aac 571 (mkdir-p bindir)
531a9aac
TUBK
572 (with-output-to-file wrapper
573 (lambda ()
574 (display
575 (string-append
576 "#!" bash "/bin/sh\n"
eff8e0b4
PN
577 "export CCL_DEFAULT_DIRECTORY=" libdir "\n"
578 "exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
dc1d3cde
KK
579 (chmod wrapper #o755))
580 #t)))))
531a9aac 581 (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
910ac0ef 582 (home-page "https://ccl.clozure.com/")
531a9aac
TUBK
583 (synopsis "Common Lisp implementation")
584 (description "Clozure CL (often called CCL for short) is a Common Lisp
585implementation featuring fast compilation speed, native threads, a precise,
586generational, compacting garbage collector, and a convenient foreign-function
587interface.")
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
423eef36 592
05c63898 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"
6cbee49d
MW
606 (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
607 (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
608 (substitute* "src/main.c"
609 (("\" \\(built \" __DATE__ \"\\)\"") ""))
610 #t))
05c63898 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
645designed to please people who want to prototype large numerical
646applications. Lush includes an extensive library of
647vector/matrix/tensor manipulation, numerous numerical libraries
648(including GSL, LAPACK, and BLAS), a set of graphic functions, a
649simple GUI toolkit, and interfaces to various graphic and multimedia
650libraries such as OpenGL, SDL, Video4Linux, and ALSA (video/audio
651grabbing), and others. Lush is an ideal frontend script language for
652programming projects written in C or other languages. Lush also has
653libraries for Machine Learning, Neural Nets and statistical estimation.")
654 (home-page "http://lush.sourceforge.net/")
655 (license license:lgpl2.1+)))
656
a72debb7
AP
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
677conceptual extensions to Common Lisp. It is conservative in scope, and
678portable 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))
86022c92
AP
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"))))
0e1371be 701 (inputs `(("alexandria" ,sbcl-alexandria)))
86022c92
AP
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
705goes) regression testing framework. It has been designed with Common Lisp's
706interactive 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))
8662809d
AP
715
716(define-public sbcl-bordeaux-threads
543cf6fd
AP
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
8662809d
AP
736MP/Threading interface. It is similar to the CLIM-SYS threading and lock
737support.")
543cf6fd
AP
738 (home-page "https://common-lisp.net/project/bordeaux-threads/")
739 (license license:x11))))
8662809d
AP
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))
059cab30
AP
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
767ANSI CL by David N. Gray. The proposal did not make it into ANSI CL, but most
768popular CL implementations implement it. This package provides an extremely
769thin 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))
3c55c780 778
1075623a
PL
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,
801logical 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
3c55c780
AP
815(define-public sbcl-flexi-streams
816 (package
817 (name "sbcl-flexi-streams")
5dff0752 818 (version "1.0.16")
3c55c780
AP
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
5dff0752 826 (base32 "1fb0jrwxr5c3i2lhy7kn30m1n0vggfzwjm1dacx6y5wf9wfsbamw"))
3c55c780
AP
827 (file-name (string-append "flexi-streams-" version ".tar.gz"))))
828 (build-system asdf-build-system/sbcl)
0e1371be 829 (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
3c55c780
AP
830 (synopsis "Implementation of virtual bivalent streams for Common Lisp")
831 (description "Flexi-streams is an implementation of \"virtual\" bivalent
832streams that can be layered atop real binary or bivalent streams and that can
833be used to read and write character data in various single- or multi-octet
834encodings which can be changed on the fly. It also supplies in-memory binary
835streams 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))
5aa608a7
AP
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)
0e1371be 859 (native-inputs `(("flexi-streams" ,sbcl-flexi-streams)))
5aa608a7
AP
860 (synopsis "Portable regular expression library for Common Lisp")
861 (description "CL-PPCRE is a portable regular expression library for Common
862Lisp, which is compatible with perl. It is pretty fast, thread-safe, and
863compatible 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))
4b51b21c 872
ac259253
RW
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
897is compatible with perl. It is pretty fast, thread-safe, and compatible with
898ANSI-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
4b51b21c
AP
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"
6cbee49d
MW
945 (("\\(:file \"trapezoid\"\\)") ""))
946 #t))))
4b51b21c 947 (build-system asdf-build-system/sbcl)
4b51b21c
AP
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
951originally taken from a CMUCL distribution, was modified somewhat in order to
952make it compile and run under SBCL, then a selection of patches were added
953from 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))
d075960f 961
b693aa6e
RW
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
4b193da3 972(define-public stumpwm
d075960f 973 (package
4b193da3 974 (name "stumpwm")
ba9ba64d 975 (version "18.11")
d075960f
AP
976 (source (origin
977 (method url-fetch)
978 (uri (string-append
979 "https://github.com/stumpwm/stumpwm/archive/"
980 version ".tar.gz"))
981 (sha256
ba9ba64d 982 (base32 "177gxfk4c127i9crghx6fmkipznhgylvzgnjb2pna38g21gg6s39"))
dba83d7d
PL
983 (file-name (string-append "stumpwm-" version ".tar.gz"))
984 (patches
af8c90e8
CLW
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.
dba83d7d 987 (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
d075960f 988 (build-system asdf-build-system/sbcl)
46c1c553
TGR
989 (native-inputs `(("fiasco" ,sbcl-fiasco)
990 ("texinfo" ,texinfo)))
0e1371be 991 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
abf818bc
OP
992 ("clx" ,sbcl-clx)
993 ("alexandria" ,sbcl-alexandria)))
290bf612 994 (outputs '("out" "lib"))
d075960f 995 (arguments
4b193da3
PL
996 '(#:asd-system-name "stumpwm"
997 #:phases
d075960f
AP
998 (modify-phases %standard-phases
999 (add-after 'create-symlinks 'build-program
b4c9f0c5 1000 (lambda* (#:key outputs #:allow-other-keys)
d075960f 1001 (build-program
290bf612 1002 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
4209c31b 1003 outputs
d075960f
AP
1004 #:entry-program '((stumpwm:stumpwm) 0))))
1005 (add-after 'build-program 'create-desktop-file
290bf612
AP
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
d075960f
AP
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~%"
290bf612 1021 out)))
46c1c553
TGR
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)
d075960f
AP
1032 #t))))))
1033 (synopsis "Window manager written in Common Lisp")
1034 (description "Stumpwm is a window manager written entirely in Common Lisp.
1035It attempts to be highly customizable while relying entirely on the keyboard
1036for input. These design decisions reflect the growing popularity of
1037productive, customizable lisp based systems.")
7bf837fd 1038 (home-page "https://github.com/stumpwm/stumpwm")
d075960f 1039 (license license:gpl2+)
4b193da3 1040 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
d075960f 1041
4b193da3
PL
1042(define-public sbcl-stumpwm
1043 (deprecated-package "sbcl-stumpwm" stumpwm))
d075960f 1044
4b193da3
PL
1045(define-public cl-stumpwm
1046 (package
1047 (inherit (sbcl-package->cl-source-package stumpwm))
1048 (name "cl-stumpwm")))
e3e171ee 1049
75e8b3af
AP
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.
e3e171ee 1054(define sbcl-slynk-boot0
1d98b44e
AP
1055 (let ((revision "2")
1056 (commit "cbf84c36c4eca8b032e3fd16177a7bc02df3ec4c"))
e3e171ee 1057 (package
f56da605 1058 (name "sbcl-slynk-boot0")
e3e171ee
AP
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
1d98b44e 1068 (base32 "13dyhsravn591p7g6is01mp2ynzjnnj7pwgi57r6xqmd4611y9vh"))
e3e171ee
AP
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")
1d98b44e
AP
1079 (("\\(defsystem :slynk/util")
1080 "(defsystem :slynk/util :depends-on (:slynk)")
1081 ((":depends-on \\(:slynk :slynk/util\\)")
1082 ":depends-on (:slynk :slynk-util)"))
e3e171ee
AP
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"))
1d98b44e
AP
1089 (substitute* "contrib/slynk-fancy-inspector.lisp"
1090 (("slynk/util") "slynk-util")
1091 ((":compile-toplevel :load-toplevel") ""))
e3e171ee
AP
1092 (rename-file "contrib" "slynk/contrib")
1093 ;; Move slynk's contents into the base directory for easier
1094 ;; access
6cbee49d
MW
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))))
e3e171ee
AP
1101 (build-system asdf-build-system/sbcl)
1102 (arguments
f56da605
AP
1103 `(#:tests? #f ; No test suite
1104 #:asd-system-name "slynk"))
e3e171ee 1105 (synopsis "Common Lisp IDE for Emacs")
14afc7b8
AP
1106 (description "SLY is a fork of SLIME, an IDE backend for Common Lisp.
1107It also features a completely redesigned REPL based on Emacs's own
1108full-featured comint.el, live code annotations, and a consistent interactive
1109button interface. Everything can be copied to the REPL. One can create
1110multiple inspectors with independent history.")
e3e171ee
AP
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
f56da605
AP
1116 (package
1117 (inherit (sbcl-package->cl-source-package sbcl-slynk-boot0))
1118 (name "cl-slynk")))
e3e171ee
AP
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")
0e1371be 1127 (inputs `(("slynk" ,sbcl-slynk-boot0)))
e3e171ee 1128 (arguments
f56da605
AP
1129 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1130 ((#:asd-file _ "") "slynk.asd")
1d98b44e 1131 ((#:asd-system-name _ #f) "slynk/arglists")))))
e3e171ee
AP
1132
1133(define ecl-slynk-arglists
1134 (sbcl-package->ecl-package sbcl-slynk-arglists))
1135
1136(define sbcl-slynk-util
1137 (package
1d98b44e
AP
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")))))
e3e171ee
AP
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")
0e1371be 1153 (inputs `(("slynk-util" ,sbcl-slynk-util)
1d98b44e
AP
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")))))
e3e171ee
AP
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)
1d98b44e
AP
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")))))
e3e171ee
AP
1169
1170(define ecl-slynk-package-fu
1171 (sbcl-package->ecl-package sbcl-slynk-package-fu))
1172
1173(define sbcl-slynk-mrepl
1174 (package
1d98b44e
AP
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")))))
e3e171ee
AP
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)
1d98b44e
AP
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")))))
e3e171ee
AP
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)
1d98b44e
AP
1198 (name "sbcl-slynk-profiler")
1199 (arguments
1200 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1201 ((#:asd-system-name _ #f) "slynk/profiler")))))
e3e171ee
AP
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)
1d98b44e
AP
1209 (name "sbcl-slynk-stickers")
1210 (arguments
1211 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1212 ((#:asd-system-name _ #f) "slynk/stickers")))))
e3e171ee
AP
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)
1d98b44e
AP
1220 (name "sbcl-slynk-indentation")
1221 (arguments
1222 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1223 ((#:asd-system-name _ #f) "slynk/indentation")))))
e3e171ee
AP
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)
1d98b44e
AP
1231 (name "sbcl-slynk-retro")
1232 (arguments
1233 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1234 ((#:asd-system-name _ #f) "slynk/retro")))))
e3e171ee
AP
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)
f56da605 1255 (name "sbcl-slynk")
e3e171ee
AP
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") "//"))
b4c9f0c5
AP
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")
4209c31b 1300 %outputs
e3cfef22
MW
1301 #:dependencies ',slynk-systems))
1302 #t)))))
e3e171ee
AP
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")
e3cfef22
MW
1324 paths)
1325 #t)))))))
96784438 1326
4b193da3 1327(define-public stumpwm+slynk
96784438 1328 (package
4b193da3
PL
1329 (inherit stumpwm)
1330 (name "stumpwm-with-slynk")
96784438 1331 (outputs '("out"))
4209c31b 1332 (inputs
4b193da3 1333 `(("stumpwm" ,stumpwm "lib")
96784438
AP
1334 ("slynk" ,sbcl-slynk)))
1335 (arguments
4b193da3 1336 (substitute-keyword-arguments (package-arguments stumpwm)
96784438
AP
1337 ((#:phases phases)
1338 `(modify-phases ,phases
1339 (replace 'build-program
4209c31b 1340 (lambda* (#:key inputs outputs #:allow-other-keys)
96784438
AP
1341 (let* ((out (assoc-ref outputs "out"))
1342 (program (string-append out "/bin/stumpwm")))
4209c31b 1343 (build-program program outputs
96784438
AP
1344 #:entry-program '((stumpwm:stumpwm) 0)
1345 #:dependencies '("stumpwm"
4209c31b
AP
1346 ,@slynk-systems)
1347 #:dependency-prefixes
1348 (map (lambda (input) (assoc-ref inputs input))
1349 '("stumpwm" "slynk")))
96784438
AP
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)
290bf612 1356 (delete 'create-asd-file)
96784438
AP
1357 (delete 'cleanup)
1358 (delete 'create-symlinks)))))))
d00c96d7 1359
4b193da3
PL
1360(define-public sbcl-stumpwm+slynk
1361 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
1362
d00c96d7
RW
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
1383JavaScript (ECMAScript 3). It has basic support for ECMAScript 5.")
1384 (license license:zlib))))
d0eec99a
RW
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
1403strings into one of the standard Common Lisp number types without using the
1404reader. @code{parse-number} accepts an arbitrary string and attempts to parse
1405the string into one of the standard Common Lisp number types, if possible, or
1406else @code{parse-number} signals an error of type @code{invalid-number}.")
1407 (license license:bsd-3)))
1408
476b583f
RW
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.
1428It 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)))
52650a4d
RW
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)))
03e8182b 1451 (file-name (git-file-name name version))
52650a4d
RW
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
1465compressor. 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
36a4366d 1472@item group most consecutive statements using the @code{sequence} operator (comma)
52650a4d
RW
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))))
dd35abfe
RW
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")))
56c240ba
LC
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
1561was originally developed in 1971 on the PDP-10 computer under the Incompatible
1562Timesharing System (ITS) to provide high level language support for the
1563Dynamic Modeling Group at MIT's Project MAC. Infocom built the original
1564PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
1565based on a subset of MDL. Confusion is a MDL interpreter that works just well
1566enough 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+))))
99c61242
PN
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
1590utilities that make it even easier to manipulate text in Common Lisp. It has
1591100% 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))
8c661ff1
PN
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
1619consistent 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))
0cd6fb49
PN
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
1647documentation 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))
4ef9ddbd
PN
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,
1679with 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))
2d418bfa
PN
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
1710GNU 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))
ef091e91
PN
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
1740to AT&T Yacc, Berkeley Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm.
1741
1742CL-Yacc uses the algorithm due to Aho and Ullman, which is the one also used
1743by AT&T Yacc, Berkeley Yacc and Zebu. It does not use the faster algorithm due
1744to 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))
232e1abc
PN
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
1775and 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))
8f41fa06
PN
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
1816Additionally, a synchronization wrapper is provided to make any queue
1817conforming to the @command{jpl-queues} API thread-safe for lightweight
1818multithreading applications. (See Calispel for a more sophisticated CL
1819multithreaded message-passing library with timeouts and alternation among
1820several 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))
989cd79b
PN
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.
1849It began as a fork of FiveAM; however, FiveAM development has continued, while
1850that 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))
bdf83297
PN
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.
1883In 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))
14100159
PN
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
1922satisfying 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))
6a1761cb
PN
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))
b4ba1c0a
PN
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
1982supporting the following languages: Common Lisp, Emacs Lisp, Scheme, Clojure,
1983C, 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))
ef0c3e14
PN
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
2020parsing, 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))
1a3d39c4
PN
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
2042code blocks")
2043 (description
2044 "3bmd extension which adds support for GitHub-style fenced code blocks,
2045with @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))
18554968
PN
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
2073Lisp's standard pathname functions. It is intended to provide some
2074unification between current CL implementations on Windows, OS X, Linux, and
2075Unix. Most of the code was written by Peter Seibel for his book Practical
2076Common 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))
5800c538
PN
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))
fbdd9b2c
PN
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
2132have to read or write 16-, 32-, or 64-bit datatypes in signed or unsigned
2133flavors. Common Lisp sort of supports this by specifying :element-type for
2134streams, but that facility is underspecified and there's nothing similar for
2135read/write from octet vectors. What most people wind up doing is rolling their
2136own small facility for their particular needs and calling it a day.
2137
2138This library attempts to be comprehensive and centralize such
2139facilities. Functions to read 16-, 32-, and 64-bit quantities from octet
2140vectors in signed or unsigned flavors are provided; these functions are also
2141SETFable. Since it's sometimes desirable to read/write directly from streams,
2142functions for doing so are also provided. On some implementations,
2143reading/writing IEEE singles/doubles (i.e. single-float and double-float) will
2144also 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))
e549ba05
PN
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.
2178It includes support for several popular ciphers, digests, MACs and public key
2179cryptography algorithms. For several implementations that support Gray
2180streams, 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))
fb8c4bc6
PN
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
2212named 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))
f07efbf1
PN
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
2241simpler to input string literals which contain backslashes and double quotes
2242This is very useful for writing complicated docstrings and, as it turns out,
2243writing 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))
8d8d1c8d 2251
c4d4ae1e
PN
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
2292processes that doesn't run under Emacs. Lisp processes created by
2293@command{M-x slime} automatically start the server.")
0ee6692a 2294 (license (list license:gpl2+ license:public-domain))))
c4d4ae1e 2295
8d8d1c8d
PN
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
2324environment. Narrative primarily lives in so called sections that mix markdown
2325docstrings with references to functions, variables, etc, all of which should
2326probably have their own docstrings.
2327
2328The primary focus is on making code easily explorable by using SLIME's
2329@command{M-.} (@command{slime-edit-definition}). See how to enable some
2330fanciness in Emacs Integration. Generating documentation from sections and all
2331the referenced items in Markdown or HTML format is also implemented.
2332
2333With the simplistic tools provided, one may accomplish similar effects as with
2334Literate Programming, but documentation is generated from code, not vice versa
2335and there is no support for chunking yet. Code is first, code must look
2336pretty, 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))
a927eb36 2345
19a1c3be
PN
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
2365testing. 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
9f3000cc
PN
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
2395new 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
5b8a801d
PN
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"))
e9f305a1
EF
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))))
5b8a801d
PN
2427 (build-system asdf-build-system/sbcl)
2428 (arguments
2429 ;; The tests require a debugger, but we run with the debugger disabled.
e9f305a1 2430 '(#:tests? #f))
5b8a801d
PN
2431 (synopsis "LIsp Framework for Testing")
2432 (description
2433 "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
2434Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
2435testcases are organized into hierarchical testsuites each of which can have
2436its own fixture. When run, a testcase can succeed, fail, or error. LIFT
2437supports randomized testing, benchmarking, profiling, and reporting.")
2438 (home-page "https://github.com/gwkkwg/lift")
fdf02484 2439 (license license:expat))))
5b8a801d
PN
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
d4142232
PN
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
2471extension of let*. It features:
2472
2473@itemize
2474@item Clean, consistent syntax and small implementation (less than 300 LOC,
2475not 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
8caa928d
PN
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
2515hexadecimal representation for RGB).
2516@item Some predefined colors (currently X11 color names – of course the
2517library does not depend on X11).Because color in your terminal is nice.
2518@end itemize
2519
2520This 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
68a7b929
PN
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
2554ANSI terminal with colored text. It provides the macro @command{with-color}
2555which causes everything printed in the body to be displayed with the provided
2556color. It further provides functions which will print the argument with the
2557named color.")
2558 (home-page "https://github.com/pnathan/cl-ansi-text")
5914489d 2559 (license license:llgpl))))
68a7b929
PN
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
1a42bb80
PN
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
86afb0a2
PN
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
2613advantages 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
41b3b866
PN
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
2657readability in mind. Unlike other libraries, the code is not a
2658pattern-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
28b52970
PN
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
2696values from a string in Common Lisp.")
2697 (home-page "https://github.com/soemraws/parse-float")
28b52970
PN
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
a927eb36
PN
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
2731single-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))
109ce303 2740
a28d00d9
PN
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
109ce303
PN
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
2785utilities that make it even easier to manipulate text in Common Lisp. It has
2786100% 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))
1de50cb7
PN
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
2814tester 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))
3f4c21c5
PN
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
2846programs. 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))
eb766dfe
PN
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
2875non-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))
6fef7c0e
PN
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
2895non-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))
a889ba99
PN
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
2917non-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))
144085cd
PN
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
2937non-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))
92b1d09b
PN
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
2959non-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))
5d9bf762
PN
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)
3004purports to be a portable foreign function interface for Common Lisp.
3005The CFFI library is composed of a Lisp-implementation-specific backend
3006in the CFFI-SYS package, and a portable frontend in the CFFI
3007package.")
3008 (license license:expat)))
99b3d203
PN
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)))))
9eea4e03
PN
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)))))
d3142f2f
PN
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"))))))))))
41123072
PN
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)))))
8f065b47
PN
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
3102relational database engine.")
3103 (license license:public-domain))))
4624d2e2
PN
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
3129JavaScript. Parenscript code can run almost identically on both the
3130browser (as JavaScript) and server (as Common Lisp).
3131
3132Parenscript code is treated the same way as Common Lisp code, making the full
3133power of Lisp macros available for JavaScript. This provides a web
3134development environment that is unmatched in its ability to reduce code
3135duplication and provide advanced meta-programming facilities to web
3136developers.
3137
3138At the same time, Parenscript is different from almost all other \"language
3139X\" 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
3143as-is. There are no JavaScript files to include.
3144@item Native types: Parenscript works entirely with native JavaScript data
3145types. There are no new types introduced, and object prototypes are not
3146touched.
3147@item Native calling convention: Any JavaScript code can be called without the
3148need for bindings. Likewise, Parenscript can be used to make efficient,
3149self-contained JavaScript libraries.
3150@item Readable code: Parenscript generates concise, formatted, idiomatic
3151JavaScript code. Identifier names are preserved. This enables seamless
3152debugging in tools like Firebug.
3153@item Efficiency: Parenscript introduces minimal overhead for advanced Common
3154Lisp features. The generated code is almost as fast as hand-written
3155JavaScript.
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))
dedbf37e
PN
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
3187and a corresponding decoder of JSON data to Lisp objects. Both the encoder
3188and the decoder are highly customizable; at the same time, the default
3189settings 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))
2cc931db
PN
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
3218advantage of the library is the ability to concisely define command line
3219options once and then use this definition for parsing and extraction of
3220command line arguments, as well as printing description of command line
3221options (you get --help for free). This way you don't need to repeat
3222yourself. Also, @command{unix-opts} doesn't depend on anything and allows to
3223precisely 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))
4aa23420
PN
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
3251finalizers, weak hash-tables and weak pointers on all major implementations of
3252the 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))
85be9191
PN
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
3279of the absent or incorrect CLOS MOP features across a broad range of Common
3280Lisp 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))
c88985d9
PN
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
3313is a library for creating graphical user interfaces.")
3314 (license license:lgpl3))))
64dcf7d9
PN
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))))))))))
77a5461c
PN
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))))))))))
867b3f47
PN
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))))))))))
7176fe7c
PN
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))))))))))
9ecc457b
PN
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))))))))))
a3bdddc3
PN
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))))))))))
7b5b8c44
PN
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))))))))))
c80dfee9
PN
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))))
24fd7586
PN
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
f6e95280 3488 (url "https://github.com/jmercouris/cl-webkit")
24fd7586
PN
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))))))))
f6e95280 3510 (home-page "https://github.com/jmercouris/cl-webkit")
24fd7586
PN
3511 (synopsis "Binding to WebKitGTK+ for Common Lisp")
3512 (description
3513 "@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp,
3514currently targeting WebKit version 2. The WebKitGTK+ library adds web
3515browsing capabilities to an application, leveraging the full power of the
3516WebKit browsing engine.")
3517 (license license:expat))))
e2e5004f
PN
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
3542Lisp, 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))
96ce8b55
PN
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))
9eeef6ab
PN
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
3620Lisp. Its goals are axiomatic syntax, simple implementation to support
3621portability, 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
e24ef369 3627(define-public ecl-cl-css
9eeef6ab 3628 (sbcl-package->ecl-package sbcl-cl-css))
9fabcb6c
PN
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
3653Lisp (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))
75c95c76
PN
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
3689interface for as many Common Lisp implementations as possible, while keeping
3690the abstraction and portability layer as thin as possible.")
3691 (license license:expat))))
be01e79c
PN
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))
79dc47c9
PN
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))
c931f809
PN
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
3744parser 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
3749comments and whitespace).
3750@item It has a core API that is simple, efficient and pure functional, much
3751like that from SSAX (see also http://ssax.sourceforge.net).
3752@item It supports different DOM models: an XSML-based one, an LXML-based one
3753and a classic xml-element struct based one.
3754@item It is reasonably time and space efficient (internally avoiding garbage
3755generatation as much as possible).
3756@item It does support CDATA.
3757@item It should support the same character sets as your Common Lisp
3758implementation.
3759@item It does support XML name spaces.
3760@end itemize
3761
3762This 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))
8c5160db
PN
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
3794client 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))
2c742a06
PN
3802
3803(define-public sbcl-trivial-clipboard
6693cdd6 3804 (let ((commit "5af3415d1484e6d69a1b5c178f24680d9fd01796"))
2c742a06
PN
3805 (package
3806 (name "sbcl-trivial-clipboard")
6693cdd6 3807 (version (git-version "0.0.0.0" "2" commit))
2c742a06
PN
3808 (source
3809 (origin
3810 (method git-fetch)
3811 (uri (git-reference
3812 (url "https://github.com/snmsts/trivial-clipboard")
3813 (commit commit)))
6693cdd6 3814 (file-name (git-file-name "trivial-clipboard" version))
2c742a06
PN
3815 (sha256
3816 (base32
6693cdd6 3817 "1gb515z5yq6h5548pb1fwhmb0hhq1ssyb78pvxh4alq799xipxs9"))))
2c742a06
PN
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"
6693cdd6
PN
3829 (("\\(executable-find \"xclip\"\\)")
3830 (string-append "(executable-find \""
3831 (assoc-ref inputs "xclip")
3832 "/bin/xclip\")"))))))))
2c742a06
PN
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))
d1ae5a12 3844
977b0db4
KCB
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
3866standard was how to get a Lisp to output its call stack when something has
3867gone wrong. As such, each Lisp has developed its own notion of what to
3868display, how to display it, and what sort of arguments can be used to
3869customize it. @code{trivial-backtrace} is a simple solution to generating a
3870backtrace portably.")
3871 (license license:bsd-style))))
3872
3873(define-public cl-trivial-backtrace
3874 (sbcl-package->cl-source-package sbcl-trivial-backtrace))
3875
d2137182
KCB
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
3895process 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
66c84d20
KCB
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
3919RFC 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
d1ae5a12
KCB
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
3960code was written by Eric Marsden and includes contributions by Jochen Schmidt.
3961Development 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))
610ee80a
KCB
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
3994Rosenberg's CL packages.")
3995 (license license:llgpl))))
3996
3997(define-public cl-kmrcl
3998 (sbcl-package->cl-source-package sbcl-kmrcl))
9945a170
KCB
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.
4027Besides conversion to and from strings, integer conversions are supported.
4028Encoding with Uniform Resource Identifiers is supported by using a modified
4029encoding 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))
990724c8
KCB
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
4053defined in RFC 2616.")
4054 (license license:bsd-2)))
4055
4056(define-public cl-chunga
4057 (sbcl-package->cl-source-package sbcl-chunga))
a4aefc1b
KCB
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
4083programmer seems to write at least one during his career - and CL-WHO (where
4084WHO means \"with-html-output\" for want of a better acronym) is probably just
4085as 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))
50fe395d
KCB
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
4114data")
4115 (description
4116 "DEFLATE data, defined in RFC1951, forms the core of popular
4117compression formats such as zlib (RFC 1950) and gzip (RFC 1952). As such,
4118Chipz also provides for decompressing data in those formats as well. BZIP2 is
4119the 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))
5ceb1492
KCB
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
4159knows how to handle HTTP/1.1 chunking, persistent connections, re-usable
4160sockets, 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))
155fc436
KCB
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
4197time a toolkit for building dynamic websites. As a stand-alone web server,
4198Hunchentoot is capable of HTTP/1.1 chunking (both directions), persistent
4199connections (keep-alive), and SSL.")
4200 (license license:bsd-2)))
4201
4202(define-public cl-hunchentoot
4203 (sbcl-package->cl-source-package sbcl-hunchentoot))
47a8aaa8
KCB
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
4223PROPER-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))
85d1c705
KCB
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))
7408b219
KCB
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))
2005104e
KCB
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
4310SLIME.")
4311 (license license:llgpl)))
4312
4313(define-public cl-syntax-annot
4314 (sbcl-package->cl-source-package sbcl-syntax-annot))
a7b1ae38
KCB
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
4346is a collection of Common Lisp Utilities, things that everybody writes since
4347they're not part of the official standard. There are some very useful things
4348there; the only problems are that they aren't implemented as well as you'd
4349like (some aren't implemented at all) and they aren't conveniently packaged
4350and maintained. It takes quite a bit of work to carefully implement utilities
4351for common use, commented and documented, with error checking placed
4352everywhere 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))
9e005948
KCB
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
4377addition, 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))