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