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