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