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