gnu: python-astor: Remove duplicate.
[jackhill/guix/guix.git] / gnu / packages / lisp.scm
CommitLineData
f842bbed
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 John Darrington <jmd@gnu.org>
00ab9458 3;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
e396976b 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
05f5ce0c 5;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
4a78fd46 6;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
14afc7b8 7;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
636c77d0 8;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
f3cd6633 9;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
5dff0752 10;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
56c240ba 11;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
28e32b14 12;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
27ebd5c4 13;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
4b193da3 14;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
f842bbed
JD
15;;;
16;;; This file is part of GNU Guix.
17;;;
18;;; GNU Guix is free software; you can redistribute it and/or modify it
19;;; under the terms of the GNU General Public License as published by
20;;; the Free Software Foundation; either version 3 of the License, or (at
21;;; your option) any later version.
22;;;
23;;; GNU Guix is distributed in the hope that it will be useful, but
24;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26;;; GNU General Public License for more details.
27;;;
28;;; You should have received a copy of the GNU General Public License
29;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30
31(define-module (gnu packages lisp)
32 #:use-module (gnu packages)
b5b73a82 33 #:use-module ((guix licenses) #:prefix license:)
f842bbed 34 #:use-module (guix packages)
f842bbed 35 #:use-module (guix download)
423eef36 36 #:use-module (guix git-download)
a927eb36 37 #:use-module (guix hg-download)
f842bbed 38 #:use-module (guix utils)
00ab9458 39 #:use-module (guix build-system gnu)
28e32b14 40 #:use-module (guix build-system ant)
a72debb7 41 #:use-module (guix build-system asdf)
e3e171ee 42 #:use-module (guix build-system trivial)
5ff15b86 43 #:use-module (gnu packages admin)
ce0614dd 44 #:use-module (gnu packages base)
5ff15b86 45 #:use-module (gnu packages bdw-gc)
05c63898 46 #:use-module (gnu packages compression)
5ff15b86 47 #:use-module (gnu packages ed)
05c63898 48 #:use-module (gnu packages fontutils)
5ff15b86
EF
49 #:use-module (gnu packages gcc)
50 #:use-module (gnu packages gettext)
51 #:use-module (gnu packages gl)
52 #:use-module (gnu packages glib)
53 #:use-module (gnu packages m4)
05c63898 54 #:use-module (gnu packages maths)
00ab9458 55 #:use-module (gnu packages multiprecision)
f473b8f1 56 #:use-module (gnu packages ncurses)
560f51d0 57 #:use-module (gnu packages libffcall)
5ff15b86 58 #:use-module (gnu packages libffi)
b702b52d 59 #:use-module (gnu packages libsigsegv)
05c63898 60 #:use-module (gnu packages linux)
5ff15b86 61 #:use-module (gnu packages perl)
05c63898 62 #:use-module (gnu packages pkg-config)
5ff15b86
EF
63 #:use-module (gnu packages readline)
64 #:use-module (gnu packages sdl)
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")
4bddcae9 321 (version "1.4.13")
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
4bddcae9 328 (base32 "120rnnz8367lk7ljqlf8xidm4b0d738xqsib4kq0q5ms5r7fzgvm"))
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)
ba9ba64d 987 (native-inputs `(("fiasco" ,sbcl-fiasco)))
0e1371be 988 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
abf818bc
OP
989 ("clx" ,sbcl-clx)
990 ("alexandria" ,sbcl-alexandria)))
290bf612 991 (outputs '("out" "lib"))
d075960f 992 (arguments
4b193da3
PL
993 '(#:asd-system-name "stumpwm"
994 #:phases
d075960f
AP
995 (modify-phases %standard-phases
996 (add-after 'create-symlinks 'build-program
b4c9f0c5 997 (lambda* (#:key outputs #:allow-other-keys)
d075960f 998 (build-program
290bf612 999 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
4209c31b 1000 outputs
d075960f
AP
1001 #:entry-program '((stumpwm:stumpwm) 0))))
1002 (add-after 'build-program 'create-desktop-file
290bf612
AP
1003 (lambda* (#:key outputs #:allow-other-keys)
1004 (let* ((out (assoc-ref outputs "out"))
1005 (xsessions (string-append out "/share/xsessions")))
1006 (mkdir-p xsessions)
1007 (call-with-output-file
1008 (string-append xsessions "/stumpwm.desktop")
1009 (lambda (file)
1010 (format file
d075960f
AP
1011 "[Desktop Entry]~@
1012 Name=stumpwm~@
1013 Comment=The Stump Window Manager~@
1014 Exec=~a/bin/stumpwm~@
1015 TryExec=~@*~a/bin/stumpwm~@
1016 Icon=~@
1017 Type=Application~%"
290bf612 1018 out)))
d075960f
AP
1019 #t))))))
1020 (synopsis "Window manager written in Common Lisp")
1021 (description "Stumpwm is a window manager written entirely in Common Lisp.
1022It attempts to be highly customizable while relying entirely on the keyboard
1023for input. These design decisions reflect the growing popularity of
1024productive, customizable lisp based systems.")
7bf837fd 1025 (home-page "https://github.com/stumpwm/stumpwm")
d075960f 1026 (license license:gpl2+)
4b193da3 1027 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
d075960f 1028
4b193da3
PL
1029(define-public sbcl-stumpwm
1030 (deprecated-package "sbcl-stumpwm" stumpwm))
d075960f 1031
4b193da3
PL
1032(define-public cl-stumpwm
1033 (package
1034 (inherit (sbcl-package->cl-source-package stumpwm))
1035 (name "cl-stumpwm")))
e3e171ee 1036
75e8b3af
AP
1037;; The slynk that users expect to install includes all of slynk's contrib
1038;; modules. Therefore, we build the base module and all contribs first; then
1039;; we expose the union of these as `sbcl-slynk'. The following variable
1040;; describes the base module.
e3e171ee 1041(define sbcl-slynk-boot0
1d98b44e
AP
1042 (let ((revision "2")
1043 (commit "cbf84c36c4eca8b032e3fd16177a7bc02df3ec4c"))
e3e171ee 1044 (package
f56da605 1045 (name "sbcl-slynk-boot0")
e3e171ee
AP
1046 (version (string-append "1.0.0-beta-" revision "." (string-take commit 7)))
1047 (source
1048 (origin
1049 (method git-fetch)
1050 (uri
1051 (git-reference
1052 (url "https://github.com/joaotavora/sly.git")
1053 (commit commit)))
1054 (sha256
1d98b44e 1055 (base32 "13dyhsravn591p7g6is01mp2ynzjnnj7pwgi57r6xqmd4611y9vh"))
e3e171ee
AP
1056 (file-name (string-append "slynk-" version "-checkout"))
1057 (modules '((guix build utils)
1058 (ice-9 ftw)))
1059 (snippet
1060 '(begin
1061 ;; Move the contribs into the main source directory for easier
1062 ;; access
1063 (substitute* "slynk/slynk.asd"
1064 (("\\.\\./contrib")
1065 "contrib")
1d98b44e
AP
1066 (("\\(defsystem :slynk/util")
1067 "(defsystem :slynk/util :depends-on (:slynk)")
1068 ((":depends-on \\(:slynk :slynk/util\\)")
1069 ":depends-on (:slynk :slynk-util)"))
e3e171ee
AP
1070 (substitute* "contrib/slynk-trace-dialog.lisp"
1071 (("\\(slynk::reset-inspector\\)") ; Causes problems on load
1072 "nil"))
1073 (substitute* "contrib/slynk-profiler.lisp"
1074 (("slynk:to-line")
1075 "slynk-pprint-to-line"))
1d98b44e
AP
1076 (substitute* "contrib/slynk-fancy-inspector.lisp"
1077 (("slynk/util") "slynk-util")
1078 ((":compile-toplevel :load-toplevel") ""))
e3e171ee
AP
1079 (rename-file "contrib" "slynk/contrib")
1080 ;; Move slynk's contents into the base directory for easier
1081 ;; access
6cbee49d
MW
1082 (for-each (lambda (file)
1083 (unless (string-prefix? "." file)
1084 (rename-file (string-append "slynk/" file)
1085 (string-append "./" (basename file)))))
1086 (scandir "slynk"))
1087 #t))))
e3e171ee
AP
1088 (build-system asdf-build-system/sbcl)
1089 (arguments
f56da605
AP
1090 `(#:tests? #f ; No test suite
1091 #:asd-system-name "slynk"))
e3e171ee 1092 (synopsis "Common Lisp IDE for Emacs")
14afc7b8
AP
1093 (description "SLY is a fork of SLIME, an IDE backend for Common Lisp.
1094It also features a completely redesigned REPL based on Emacs's own
1095full-featured comint.el, live code annotations, and a consistent interactive
1096button interface. Everything can be copied to the REPL. One can create
1097multiple inspectors with independent history.")
e3e171ee
AP
1098 (home-page "https://github.com/joaotavora/sly")
1099 (license license:public-domain)
1100 (properties `((cl-source-variant . ,(delay cl-slynk)))))))
1101
1102(define-public cl-slynk
f56da605
AP
1103 (package
1104 (inherit (sbcl-package->cl-source-package sbcl-slynk-boot0))
1105 (name "cl-slynk")))
e3e171ee
AP
1106
1107(define ecl-slynk-boot0
1108 (sbcl-package->ecl-package sbcl-slynk-boot0))
1109
1110(define sbcl-slynk-arglists
1111 (package
1112 (inherit sbcl-slynk-boot0)
1113 (name "sbcl-slynk-arglists")
0e1371be 1114 (inputs `(("slynk" ,sbcl-slynk-boot0)))
e3e171ee 1115 (arguments
f56da605
AP
1116 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1117 ((#:asd-file _ "") "slynk.asd")
1d98b44e 1118 ((#:asd-system-name _ #f) "slynk/arglists")))))
e3e171ee
AP
1119
1120(define ecl-slynk-arglists
1121 (sbcl-package->ecl-package sbcl-slynk-arglists))
1122
1123(define sbcl-slynk-util
1124 (package
1d98b44e
AP
1125 (inherit sbcl-slynk-boot0)
1126 (name "sbcl-slynk-util")
1127 (inputs `(("slynk" ,sbcl-slynk-boot0)))
1128 (arguments
1129 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1130 ((#:asd-file _ "") "slynk.asd")
1131 ((#:asd-system-name _ #f) "slynk/util")))))
e3e171ee
AP
1132
1133(define ecl-slynk-util
1134 (sbcl-package->ecl-package sbcl-slynk-util))
1135
1136(define sbcl-slynk-fancy-inspector
1137 (package
1138 (inherit sbcl-slynk-arglists)
1139 (name "sbcl-slynk-fancy-inspector")
0e1371be 1140 (inputs `(("slynk-util" ,sbcl-slynk-util)
1d98b44e
AP
1141 ,@(package-inputs sbcl-slynk-arglists)))
1142 (arguments
1143 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1144 ((#:asd-system-name _ #f) "slynk/fancy-inspector")))))
e3e171ee
AP
1145
1146(define ecl-slynk-fancy-inspector
1147 (sbcl-package->ecl-package sbcl-slynk-fancy-inspector))
1148
1149(define sbcl-slynk-package-fu
1150 (package
1151 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1152 (name "sbcl-slynk-package-fu")
1153 (arguments
1154 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1155 ((#:asd-system-name _ #f) "slynk/package-fu")))))
e3e171ee
AP
1156
1157(define ecl-slynk-package-fu
1158 (sbcl-package->ecl-package sbcl-slynk-package-fu))
1159
1160(define sbcl-slynk-mrepl
1161 (package
1d98b44e
AP
1162 (inherit sbcl-slynk-fancy-inspector)
1163 (name "sbcl-slynk-mrepl")
1164 (arguments
1165 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1166 ((#:asd-system-name _ #f) "slynk/mrepl")))))
e3e171ee
AP
1167
1168(define ecl-slynk-mrepl
1169 (sbcl-package->ecl-package sbcl-slynk-mrepl))
1170
1171(define sbcl-slynk-trace-dialog
1172 (package
1173 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1174 (name "sbcl-slynk-trace-dialog")
1175 (arguments
1176 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1177 ((#:asd-system-name _ #f) "slynk/trace-dialog")))))
e3e171ee
AP
1178
1179(define ecl-slynk-trace-dialog
1180 (sbcl-package->ecl-package sbcl-slynk-trace-dialog))
1181
1182(define sbcl-slynk-profiler
1183 (package
1184 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1185 (name "sbcl-slynk-profiler")
1186 (arguments
1187 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1188 ((#:asd-system-name _ #f) "slynk/profiler")))))
e3e171ee
AP
1189
1190(define ecl-slynk-profiler
1191 (sbcl-package->ecl-package sbcl-slynk-profiler))
1192
1193(define sbcl-slynk-stickers
1194 (package
1195 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1196 (name "sbcl-slynk-stickers")
1197 (arguments
1198 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1199 ((#:asd-system-name _ #f) "slynk/stickers")))))
e3e171ee
AP
1200
1201(define ecl-slynk-stickers
1202 (sbcl-package->ecl-package sbcl-slynk-stickers))
1203
1204(define sbcl-slynk-indentation
1205 (package
1206 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1207 (name "sbcl-slynk-indentation")
1208 (arguments
1209 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1210 ((#:asd-system-name _ #f) "slynk/indentation")))))
e3e171ee
AP
1211
1212(define ecl-slynk-indentation
1213 (sbcl-package->ecl-package sbcl-slynk-indentation))
1214
1215(define sbcl-slynk-retro
1216 (package
1217 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1218 (name "sbcl-slynk-retro")
1219 (arguments
1220 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1221 ((#:asd-system-name _ #f) "slynk/retro")))))
e3e171ee
AP
1222
1223(define ecl-slynk-retro
1224 (sbcl-package->ecl-package sbcl-slynk-retro))
1225
1226(define slynk-systems
1227 '("slynk"
1228 "slynk-util"
1229 "slynk-arglists"
1230 "slynk-fancy-inspector"
1231 "slynk-package-fu"
1232 "slynk-mrepl"
1233 "slynk-profiler"
1234 "slynk-trace-dialog"
1235 "slynk-stickers"
1236 "slynk-indentation"
1237 "slynk-retro"))
1238
1239(define-public sbcl-slynk
1240 (package
1241 (inherit sbcl-slynk-boot0)
f56da605 1242 (name "sbcl-slynk")
e3e171ee
AP
1243 (inputs
1244 `(("slynk" ,sbcl-slynk-boot0)
1245 ("slynk-util" ,sbcl-slynk-util)
1246 ("slynk-arglists" ,sbcl-slynk-arglists)
1247 ("slynk-fancy-inspector" ,sbcl-slynk-fancy-inspector)
1248 ("slynk-package-fu" ,sbcl-slynk-package-fu)
1249 ("slynk-mrepl" ,sbcl-slynk-mrepl)
1250 ("slynk-profiler" ,sbcl-slynk-profiler)
1251 ("slynk-trace-dialog" ,sbcl-slynk-trace-dialog)
1252 ("slynk-stickers" ,sbcl-slynk-stickers)
1253 ("slynk-indentation" ,sbcl-slynk-indentation)
1254 ("slynk-retro" ,sbcl-slynk-retro)))
1255 (native-inputs `(("sbcl" ,sbcl)))
1256 (build-system trivial-build-system)
1257 (source #f)
1258 (outputs '("out" "image"))
1259 (arguments
1260 `(#:modules ((guix build union)
1261 (guix build utils)
1262 (guix build lisp-utils))
1263 #:builder
1264 (begin
1265 (use-modules (ice-9 match)
1266 (srfi srfi-1)
1267 (guix build union)
1268 (guix build lisp-utils))
1269
1270 (union-build
1271 (assoc-ref %outputs "out")
1272 (filter-map
1273 (match-lambda
1274 ((name . path)
1275 (if (string-prefix? "slynk" name) path #f)))
1276 %build-inputs))
1277
1278 (prepend-to-source-registry
1279 (string-append (assoc-ref %outputs "out") "//"))
b4c9f0c5
AP
1280
1281 (parameterize ((%lisp-type "sbcl")
1282 (%lisp (string-append (assoc-ref %build-inputs "sbcl")
1283 "/bin/sbcl")))
1284 (build-image (string-append
1285 (assoc-ref %outputs "image")
1286 "/bin/slynk")
4209c31b 1287 %outputs
e3cfef22
MW
1288 #:dependencies ',slynk-systems))
1289 #t)))))
e3e171ee
AP
1290
1291(define-public ecl-slynk
1292 (package
1293 (inherit sbcl-slynk)
1294 (name "ecl-slynk")
1295 (inputs
1296 (map (match-lambda
1297 ((name pkg . _)
1298 (list name (sbcl-package->ecl-package pkg))))
1299 (package-inputs sbcl-slynk)))
1300 (native-inputs '())
1301 (outputs '("out"))
1302 (arguments
1303 '(#:modules ((guix build union))
1304 #:builder
1305 (begin
1306 (use-modules (ice-9 match)
1307 (guix build union))
1308 (match %build-inputs
1309 (((names . paths) ...)
1310 (union-build (assoc-ref %outputs "out")
e3cfef22
MW
1311 paths)
1312 #t)))))))
96784438 1313
4b193da3 1314(define-public stumpwm+slynk
96784438 1315 (package
4b193da3
PL
1316 (inherit stumpwm)
1317 (name "stumpwm-with-slynk")
96784438 1318 (outputs '("out"))
4209c31b 1319 (inputs
4b193da3 1320 `(("stumpwm" ,stumpwm "lib")
96784438
AP
1321 ("slynk" ,sbcl-slynk)))
1322 (arguments
4b193da3 1323 (substitute-keyword-arguments (package-arguments stumpwm)
96784438
AP
1324 ((#:phases phases)
1325 `(modify-phases ,phases
1326 (replace 'build-program
4209c31b 1327 (lambda* (#:key inputs outputs #:allow-other-keys)
96784438
AP
1328 (let* ((out (assoc-ref outputs "out"))
1329 (program (string-append out "/bin/stumpwm")))
4209c31b 1330 (build-program program outputs
96784438
AP
1331 #:entry-program '((stumpwm:stumpwm) 0)
1332 #:dependencies '("stumpwm"
4209c31b
AP
1333 ,@slynk-systems)
1334 #:dependency-prefixes
1335 (map (lambda (input) (assoc-ref inputs input))
1336 '("stumpwm" "slynk")))
96784438
AP
1337 ;; Remove unneeded file.
1338 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
1339 #t)))
1340 (delete 'copy-source)
1341 (delete 'build)
1342 (delete 'check)
290bf612 1343 (delete 'create-asd-file)
96784438
AP
1344 (delete 'cleanup)
1345 (delete 'create-symlinks)))))))
d00c96d7 1346
4b193da3
PL
1347(define-public sbcl-stumpwm+slynk
1348 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
1349
d00c96d7
RW
1350(define-public sbcl-parse-js
1351 (let ((commit "fbadc6029bec7039602abfc06c73bb52970998f6")
1352 (revision "1"))
1353 (package
1354 (name "sbcl-parse-js")
1355 (version (string-append "0.0.0-" revision "." (string-take commit 9)))
1356 (source
1357 (origin
1358 (method git-fetch)
1359 (uri (git-reference
1360 (url "http://marijn.haverbeke.nl/git/parse-js")
1361 (commit commit)))
1362 (file-name (string-append name "-" commit "-checkout"))
1363 (sha256
1364 (base32
1365 "1wddrnr5kiya5s3gp4cdq6crbfy9fqcz7fr44p81502sj3bvdv39"))))
1366 (build-system asdf-build-system/sbcl)
1367 (home-page "http://marijnhaverbeke.nl/parse-js/")
1368 (synopsis "Parse JavaScript")
1369 (description "Parse-js is a Common Lisp package for parsing
1370JavaScript (ECMAScript 3). It has basic support for ECMAScript 5.")
1371 (license license:zlib))))
d0eec99a
RW
1372
1373(define-public sbcl-parse-number
1374 (package
1375 (name "sbcl-parse-number")
1376 (version "1.5")
1377 (source
1378 (origin
1379 (method url-fetch)
1380 (uri (string-append "https://github.com/sharplispers/parse-number/"
1381 "archive/v" version ".tar.gz"))
1382 (file-name (string-append name "-" version ".tar.gz"))
1383 (sha256
1384 (base32
1385 "1k6s4v65ksc1j5i0dprvzfvj213v6nah7i0rgd0726ngfjisj9ir"))))
1386 (build-system asdf-build-system/sbcl)
1387 (home-page "http://www.cliki.net/PARSE-NUMBER")
1388 (synopsis "Parse numbers")
1389 (description "@code{parse-number} is a library of functions for parsing
1390strings into one of the standard Common Lisp number types without using the
1391reader. @code{parse-number} accepts an arbitrary string and attempts to parse
1392the string into one of the standard Common Lisp number types, if possible, or
1393else @code{parse-number} signals an error of type @code{invalid-number}.")
1394 (license license:bsd-3)))
1395
476b583f
RW
1396(define-public sbcl-iterate
1397 (package
1398 (name "sbcl-iterate")
1399 ;; The latest official release (1.4.3) fails to build so we have to take
1400 ;; the current darcs tarball from quicklisp.
1401 (version "20160825")
1402 (source
1403 (origin
1404 (method url-fetch)
1405 (uri (string-append "http://beta.quicklisp.org/archive/iterate/"
1406 "2016-08-25/iterate-"
1407 version "-darcs.tgz"))
1408 (sha256
1409 (base32
1410 "0kvz16gnxnkdz0fy1x8y5yr28nfm7i2qpvix7mgwccdpjmsb4pgm"))))
1411 (build-system asdf-build-system/sbcl)
1412 (home-page "https://common-lisp.net/project/iterate/")
1413 (synopsis "Iteration construct for Common Lisp")
1414 (description "@code{iterate} is an iteration construct for Common Lisp.
1415It is similar to the @code{CL:LOOP} macro, with these distinguishing marks:
1416
1417@itemize
1418@item it is extensible,
1419@item it helps editors like Emacs indent iterate forms by having a more
1420 lisp-like syntax, and
1421@item it isn't part of the ANSI standard for Common Lisp.
1422@end itemize\n")
1423 (license license:expat)))
52650a4d
RW
1424
1425(define-public sbcl-cl-uglify-js
1426 ;; There have been many bug fixes since the 2010 release.
1427 (let ((commit "429c5e1d844e2f96b44db8fccc92d6e8e28afdd5")
1428 (revision "1"))
1429 (package
1430 (name "sbcl-cl-uglify-js")
1431 (version (string-append "0.1-" revision "." (string-take commit 9)))
1432 (source
1433 (origin
1434 (method git-fetch)
1435 (uri (git-reference
1436 (url "https://github.com/mishoo/cl-uglify-js.git")
1437 (commit commit)))
03e8182b 1438 (file-name (git-file-name name version))
52650a4d
RW
1439 (sha256
1440 (base32
1441 "0k39y3c93jgxpr7gwz7w0d8yknn1fdnxrjhd03057lvk5w8js27a"))))
1442 (build-system asdf-build-system/sbcl)
1443 (inputs
1444 `(("sbcl-parse-js" ,sbcl-parse-js)
1445 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
1446 ("sbcl-cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
1447 ("sbcl-parse-number" ,sbcl-parse-number)
1448 ("sbcl-iterate" ,sbcl-iterate)))
1449 (home-page "https://github.com/mishoo/cl-uglify-js")
1450 (synopsis "JavaScript compressor library for Common Lisp")
1451 (description "This is a Common Lisp version of UglifyJS, a JavaScript
1452compressor. It works on data produced by @code{parse-js} to generate a
1453@dfn{minified} version of the code. Currently it can:
1454
1455@itemize
1456@item reduce variable names (usually to single letters)
1457@item join consecutive @code{var} statements
1458@item resolve simple binary expressions
1459@item group most consecutive statements using the ``sequence'' operator (comma)
1460@item remove unnecessary blocks
1461@item convert @code{IF} expressions in various ways that result in smaller code
1462@item remove some unreachable code
1463@end itemize\n")
1464 (license license:zlib))))
dd35abfe
RW
1465
1466(define-public uglify-js
1467 (package
1468 (inherit sbcl-cl-uglify-js)
1469 (name "uglify-js")
1470 (build-system trivial-build-system)
1471 (arguments
1472 `(#:modules ((guix build utils))
1473 #:builder
1474 (let* ((bin (string-append (assoc-ref %outputs "out") "/bin/"))
1475 (script (string-append bin "uglify-js")))
1476 (use-modules (guix build utils))
1477 (mkdir-p bin)
1478 (with-output-to-file script
1479 (lambda _
1480 (format #t "#!~a/bin/sbcl --script
1481 (require :asdf)
1482 (push (truename \"~a/lib/sbcl\") asdf:*central-registry*)"
1483 (assoc-ref %build-inputs "sbcl")
1484 (assoc-ref %build-inputs "sbcl-cl-uglify-js"))
1485 ;; FIXME: cannot use progn here because otherwise it fails to
1486 ;; find cl-uglify-js.
1487 (for-each
1488 write
1489 '(;; Quiet, please!
1490 (let ((*standard-output* (make-broadcast-stream))
1491 (*error-output* (make-broadcast-stream)))
1492 (asdf:load-system :cl-uglify-js))
1493 (let ((file (cadr *posix-argv*)))
1494 (if file
1495 (format t "~a"
1496 (cl-uglify-js:ast-gen-code
1497 (cl-uglify-js:ast-mangle
1498 (cl-uglify-js:ast-squeeze
1499 (with-open-file (in file)
1500 (parse-js:parse-js in))))
1501 :beautify nil))
1502 (progn
1503 (format *error-output*
1504 "Please provide a JavaScript file.~%")
1505 (sb-ext:exit :code 1))))))))
1506 (chmod script #o755)
1507 #t)))
1508 (inputs
1509 `(("sbcl" ,sbcl)
1510 ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js)))
1511 (synopsis "JavaScript compressor")))
56c240ba
LC
1512
1513(define-public confusion-mdl
1514 (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
1515 (package
1516 (name "confusion-mdl")
1517 (version "0.2")
1518 (source (origin
1519 (method git-fetch)
1520 (uri (git-reference
1521 (url (string-append "https://gitlab.com/emacsomancer/" name))
1522 (commit commit)))
1523 (sha256
1524 (base32
1525 "1zi8kflzvwqg97ha1sa5xjisbjs5z1mvbpa772vfxiv5ksnpxp0d"))
1526 (file-name (git-file-name name version))))
1527 (build-system gnu-build-system)
1528 (arguments
1529 `(#:tests? #f ; there are no tests
1530 #:phases
1531 (modify-phases %standard-phases
1532 (delete 'configure)
1533 (replace 'build
1534 (lambda* (#:key (make-flags '()) #:allow-other-keys)
1535 (apply invoke "make" "CC=gcc" make-flags)))
1536 (replace 'install
1537 (lambda* (#:key outputs #:allow-other-keys)
1538 (let* ((out (assoc-ref outputs "out"))
1539 (bin (string-append out "/bin")))
1540 (install-file "mdli" bin)
1541 #t))))))
1542 (native-inputs
1543 `(("perl" ,perl)))
1544 (inputs
1545 `(("libgc" ,libgc)))
1546 (synopsis "Interpreter for the MIT Design Language (MDL)")
1547 (description "MDL (the MIT Design Language) is a descendant of Lisp. It
1548was originally developed in 1971 on the PDP-10 computer under the Incompatible
1549Timesharing System (ITS) to provide high level language support for the
1550Dynamic Modeling Group at MIT's Project MAC. Infocom built the original
1551PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
1552based on a subset of MDL. Confusion is a MDL interpreter that works just well
1553enough to play the original mainframe Zork all the way through.")
1554 (home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
1555 (license license:gpl3+))))
99c61242
PN
1556
1557(define-public sbcl-cl-strings
1558 (let ((revision "1")
1559 (commit "c5c5cbafbf3e6181d03c354d66e41a4f063f00ae"))
1560 (package
1561 (name "sbcl-cl-strings")
1562 (version (git-version "0.0.0" revision commit))
1563 (source
1564 (origin
1565 (method git-fetch)
1566 (uri (git-reference
1567 (url "https://github.com/diogoalexandrefranco/cl-strings")
1568 (commit commit)))
1569 (sha256
1570 (base32
1571 "00754mfaqallj480lwd346nkfb6ra8pa8xcxcylf4baqn604zlmv"))
1572 (file-name (string-append "cl-strings-" version "-checkout"))))
1573 (build-system asdf-build-system/sbcl)
1574 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
1575 (description
1576 "@command{cl-strings} is a small, portable, dependency-free set of
1577utilities that make it even easier to manipulate text in Common Lisp. It has
1578100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")
1579 (home-page "https://github.com/diogoalexandrefranco/cl-strings")
1580 (license license:expat))))
1581
1582(define-public cl-strings
1583 (sbcl-package->cl-source-package sbcl-cl-strings))
1584
1585(define-public ecl-cl-strings
1586 (sbcl-package->ecl-package sbcl-cl-strings))
8c661ff1
PN
1587
1588(define-public sbcl-trivial-features
1589 (package
1590 (name "sbcl-trivial-features")
1591 (version "0.8")
1592 (source
1593 (origin
1594 (method url-fetch)
1595 (uri (string-append
1596 "https://github.com/trivial-features/trivial-features/archive/v"
1597 version ".tar.gz"))
1598 (sha256
1599 (base32 "0db1awn6jyhcfhyfvpjvfziprmq85cigf19mwbvaprhblydsag3c"))
1600 (file-name (string-append "trivial-features-" version ".tar.gz"))))
1601 (build-system asdf-build-system/sbcl)
1602 (arguments '(#:tests? #f))
1603 (home-page "http://cliki.net/trivial-features")
1604 (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp")
1605 (description "Trivial-features ensures that @code{*FEATURES*} is
1606consistent across multiple Common Lisp implementations.")
1607 (license license:expat)))
1608
1609(define-public cl-trivial-features
1610 (sbcl-package->cl-source-package sbcl-trivial-features))
1611
1612(define-public ecl-trivial-features
1613 (sbcl-package->ecl-package sbcl-trivial-features))
0cd6fb49
PN
1614
1615(define-public sbcl-hu.dwim.asdf
1616 (let ((commit "170b0e4fdde3df0bc537327e7600575daac9e141"))
1617 (package
1618 (name "sbcl-hu.dwim.asdf")
1619 (version (git-version "0.0.0" "1" commit))
1620 (source
1621 (origin
1622 (method git-fetch)
1623 (uri
1624 (git-reference
1625 (url "https://github.com/nixeagle/hu.dwim.asdf")
1626 (commit commit)))
1627 (sha256
1628 (base32 "10ax7p8y6vjqxzcq125p62kf68zi455a65ysgk0kl1f2v839c33v"))
1629 (file-name (git-file-name "hu.dwim.asdf" version))))
1630 (build-system asdf-build-system/sbcl)
1631 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.asdf")
1632 (synopsis "Extensions to ASDF")
1633 (description "Various ASDF extensions such as attached test and
1634documentation system, explicit development support, etc.")
1635 (license license:public-domain))))
1636
1637(define-public cl-hu.dwim.asdf
1638 (sbcl-package->cl-source-package sbcl-hu.dwim.asdf))
1639
1640(define-public ecl-hu.dwim.asdf
1641 (sbcl-package->ecl-package sbcl-hu.dwim.asdf))
4ef9ddbd
PN
1642
1643(define-public sbcl-hu.dwim.stefil
1644 (let ((commit "ab6d1aa8995878a1b66d745dfd0ba021090bbcf9"))
1645 (package
1646 (name "sbcl-hu.dwim.stefil")
1647 (version (git-version "0.0.0" "1" commit))
1648 (source
1649 (origin
1650 (method git-fetch)
1651 (uri
1652 (git-reference
1653 (url "https://gitlab.common-lisp.net/xcvb/hu.dwim.stefil.git")
1654 (commit commit)))
1655 (sha256
1656 (base32 "1d8yccw65zj3zh46cbi3x6nmn1dwdb76s9d0av035077mvyirqqp"))
1657 (file-name (git-file-name "hu.dwim.stefil" version))))
1658 (build-system asdf-build-system/sbcl)
1659 (native-inputs
1660 `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
1661 (inputs
1662 `(("sbcl-alexandria" ,sbcl-alexandria)))
1663 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.stefil")
1664 (synopsis "Simple test framework")
1665 (description "Stefil is a simple test framework for Common Lisp,
1666with a focus on interactive development.")
1667 (license license:public-domain))))
1668
1669(define-public cl-hu.dwim.stefil
1670 (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
1671
1672(define-public ecl-hu.dwim.stefil
1673 (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
2d418bfa
PN
1674
1675(define-public sbcl-babel
1676 (package
1677 (name "sbcl-babel")
1678 (version "0.5.0")
1679 (source
1680 (origin
1681 (method url-fetch)
1682 (uri (string-append
1683 "https://github.com/cl-babel/babel/archive/v"
1684 version ".tar.gz"))
1685 (sha256
1686 (base32 "189kgbmslh36xx0d2i1g6a7mcvjryvjzkdlnhilqy5xs7hkyqirq"))
1687 (file-name (string-append name "-" version ".tar.gz"))))
1688 (build-system asdf-build-system/sbcl)
1689 (native-inputs
1690 `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
1691 (inputs
1692 `(("sbcl-alexandria" ,sbcl-alexandria)
1693 ("sbcl-trivial-features" ,sbcl-trivial-features)))
1694 (home-page "https://common-lisp.net/project/babel/")
1695 (synopsis "Charset encoding and decoding library")
1696 (description "Babel is a charset encoding and decoding library, not unlike
1697GNU libiconv, but completely written in Common Lisp.")
1698 (license license:expat)))
1699
1700(define-public cl-babel
1701 (sbcl-package->cl-source-package sbcl-babel))
1702
1703(define-public ecl-babel
1704 (sbcl-package->ecl-package sbcl-babel))
ef091e91
PN
1705
1706(define-public sbcl-cl-yacc
1707 (package
1708 (name "sbcl-cl-yacc")
1709 (version "0.3")
1710 (source
1711 (origin
1712 (method git-fetch)
1713 (uri (git-reference
1714 (url "https://github.com/jech/cl-yacc")
1715 (commit (string-append "cl-yacc-" version))))
1716 (sha256
1717 (base32
1718 "16946pzf8vvadnyfayvj8rbh4zjzw90h0azz2qk1mxrvhh5wklib"))
1719 (file-name (string-append "cl-yacc-" version "-checkout"))))
1720 (build-system asdf-build-system/sbcl)
1721 (arguments
1722 `(#:asd-file "yacc.asd"
1723 #:asd-system-name "yacc"))
1724 (synopsis "LALR(1) parser generator for Common Lisp, similar in spirit to Yacc")
1725 (description
1726 "CL-Yacc is a LALR(1) parser generator for Common Lisp, similar in spirit
1727to AT&T Yacc, Berkeley Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm.
1728
1729CL-Yacc uses the algorithm due to Aho and Ullman, which is the one also used
1730by AT&T Yacc, Berkeley Yacc and Zebu. It does not use the faster algorithm due
1731to DeRemer and Pennello, which is used by Bison and lalr.scm (not lalr.cl).")
1732 (home-page "https://www.irif.fr/~jch//software/cl-yacc/")
1733 (license license:expat)))
1734
1735(define-public cl-yacc
1736 (sbcl-package->cl-source-package sbcl-cl-yacc))
1737
1738(define-public ecl-cl-yacc
1739 (sbcl-package->ecl-package sbcl-cl-yacc))
232e1abc
PN
1740
1741(define-public sbcl-jpl-util
1742 (let ((commit "0311ed374e19a49d43318064d729fe3abd9a3b62"))
1743 (package
1744 (name "sbcl-jpl-util")
1745 (version "20151005")
1746 (source
1747 (origin
1748 (method git-fetch)
1749 (uri (git-reference
1750 ;; Quicklisp uses this fork.
1751 (url "https://github.com/hawkir/cl-jpl-util")
1752 (commit commit)))
1753 (file-name
1754 (git-file-name "jpl-util" version))
1755 (sha256
1756 (base32
1757 "0nc0rk9n8grkg3045xsw34whmcmddn2sfrxki4268g7kpgz0d2yz"))))
1758 (build-system asdf-build-system/sbcl)
1759 (synopsis "Collection of Common Lisp utility functions and macros")
1760 (description
1761 "@command{cl-jpl-util} is a collection of Common Lisp utility functions
1762and macros, primarily for software projects written in CL by the author.")
1763 (home-page "https://www.thoughtcrime.us/software/cl-jpl-util/")
1764 (license license:isc))))
1765
1766(define-public cl-jpl-util
1767 (sbcl-package->cl-source-package sbcl-jpl-util))
1768
1769(define-public ecl-jpl-util
1770 (sbcl-package->ecl-package sbcl-jpl-util))
8f41fa06
PN
1771
1772(define-public sbcl-jpl-queues
1773 (package
1774 (name "sbcl-jpl-queues")
1775 (version "0.1")
1776 (source
1777 (origin
1778 (method url-fetch)
1779 (uri (string-append
1780 "http://www.thoughtcrime.us/software/jpl-queues/jpl-queues-"
1781 version
1782 ".tar.gz"))
1783 (sha256
1784 (base32
1785 "1wvvv7j117h9a42qaj1g4fh4mji28xqs7s60rn6d11gk9jl76h96"))))
1786 (build-system asdf-build-system/sbcl)
1787 (inputs
1788 `(("jpl-util" ,sbcl-jpl-util)
1789 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
1790 (arguments
1791 ;; Tests seem to be broken.
1792 `(#:tests? #f))
1793 (synopsis "Common Lisp library implementing a few different kinds of queues")
1794 (description
1795 "A Common Lisp library implementing a few different kinds of queues:
1796
1797@itemize
1798@item Bounded and unbounded FIFO queues.
1799@item Lossy bounded FIFO queues that drop elements when full.
1800@item Unbounded random-order queues that use less memory than unbounded FIFO queues.
1801@end itemize
1802
1803Additionally, a synchronization wrapper is provided to make any queue
1804conforming to the @command{jpl-queues} API thread-safe for lightweight
1805multithreading applications. (See Calispel for a more sophisticated CL
1806multithreaded message-passing library with timeouts and alternation among
1807several blockable channels.)")
1808 (home-page "https://www.thoughtcrime.us/software/jpl-queues/")
1809 (license license:isc)))
1810
1811(define-public cl-jpl-queues
1812 (sbcl-package->cl-source-package sbcl-jpl-queues))
1813
1814(define-public ecl-jpl-queues
1815 (sbcl-package->ecl-package sbcl-jpl-queues))
989cd79b
PN
1816
1817(define-public sbcl-eos
1818 (let ((commit "b0faca83781ead9a588661e37bd47f90362ccd94"))
1819 (package
1820 (name "sbcl-eos")
1821 (version (git-version "0.0.0" "1" commit))
1822 (source
1823 (origin
1824 (method git-fetch)
1825 (uri (git-reference
1826 (url "https://github.com/adlai/Eos")
1827 (commit commit)))
1828 (sha256
1829 (base32
1830 "1bq8cfg087iyxmxi1mwgx5cfgy3b8ydrf81xljcis8qbgb2vszph"))
1831 (file-name (git-file-name "eos" version))))
1832 (build-system asdf-build-system/sbcl)
1833 (synopsis "Unit Testing for Common Lisp")
1834 (description
1835 "Eos was a unit testing library for Common Lisp.
1836It began as a fork of FiveAM; however, FiveAM development has continued, while
1837that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
1838 (home-page "https://github.com/adlai/Eos")
1839 (license license:expat))))
1840
1841(define-public cl-eos
1842 (sbcl-package->cl-source-package sbcl-eos))
1843
1844(define-public ecl-eos
1845 (sbcl-package->ecl-package sbcl-eos))
bdf83297
PN
1846
1847(define-public sbcl-esrap
1848 (let ((commit "133be8b05c2aae48696fe5b739eea2fa573fa48d"))
1849 (package
1850 (name "sbcl-esrap")
1851 (version (git-version "0.0.0" "1" commit))
1852 (source
1853 (origin
1854 (method git-fetch)
1855 (uri (git-reference
1856 (url "https://github.com/nikodemus/esrap")
1857 (commit commit)))
1858 (sha256
1859 (base32
1860 "02d5clihsdryhf7pix8c5di2571fdsffh75d40fkzhws90r5mksl"))
1861 (file-name (git-file-name "esrap" version))))
1862 (build-system asdf-build-system/sbcl)
1863 (native-inputs
1864 `(("eos" ,sbcl-eos))) ;For testing only.
1865 (inputs
1866 `(("alexandria" ,sbcl-alexandria)))
1867 (synopsis "Common Lisp packrat parser")
1868 (description
1869 "A packrat parser for Common Lisp.
1870In addition to regular Packrat / Parsing Grammar / TDPL features ESRAP supports:
1871
1872@itemize
1873@item dynamic redefinition of nonterminals
1874@item inline grammars
1875@item semantic predicates
1876@item introspective facilities (describing grammars, tracing, setting breaks)
1877@end itemize\n")
1878 (home-page "https://nikodemus.github.io/esrap/")
1879 (license license:expat))))
1880
1881(define-public cl-esrap
1882 (sbcl-package->cl-source-package sbcl-esrap))
1883
1884(define-public ecl-esrap
1885 (sbcl-package->ecl-package sbcl-esrap))
14100159
PN
1886
1887(define-public sbcl-split-sequence
1888 (package
1889 (name "sbcl-split-sequence")
1890 (version "1.4.1")
1891 (source
1892 (origin
1893 (method git-fetch)
1894 (uri (git-reference
1895 (url "https://github.com/sharplispers/split-sequence")
1896 (commit (string-append "v" version))))
1897 (sha256
1898 (base32
1899 "0c3zp6b7fmmp93sfhq112ind4zkld49ycw68z409xpnz3gc0wpf0"))
1900 (file-name (git-file-name "split-sequence" version))))
1901 (build-system asdf-build-system/sbcl)
1902 (arguments
1903 ;; TODO: Tests seem to be broken.
1904 ;; https://github.com/sharplispers/split-sequence/issues/8
1905 `(#:tests? #f))
1906 (synopsis "Member of the Common Lisp Utilities family of programs")
1907 (description
1908 "Splits sequence into a list of subsequences delimited by objects
1909satisfying the test.")
1910 (home-page "https://cliki.net/split-sequence")
1911 (license license:expat)))
1912
1913(define-public cl-split-sequence
1914 (sbcl-package->cl-source-package sbcl-split-sequence))
1915
1916(define-public ecl-split-sequence
1917 (sbcl-package->ecl-package sbcl-split-sequence))
6a1761cb
PN
1918
1919(define-public sbcl-html-encode
1920 (package
1921 (name "sbcl-html-encode")
1922 (version "1.2")
1923 (source
1924 (origin
1925 (method url-fetch)
1926 (uri (string-append
1927 "http://beta.quicklisp.org/archive/html-encode/2010-10-06/html-encode-"
1928 version ".tgz"))
1929 (sha256
1930 (base32
1931 "06mf8wn95yf5swhmzk4vp0xr4ylfl33dgfknkabbkd8n6jns8gcf"))
1932 (file-name (string-append "colorize" version "-checkout"))))
1933 (build-system asdf-build-system/sbcl)
1934 (synopsis "Common Lisp library for encoding text in various web-savvy encodings")
1935 (description
1936 "A library for encoding text in various web-savvy encodings.")
1937 (home-page "http://quickdocs.org/html-encode/")
1938 (license license:expat)))
1939
1940(define-public cl-html-encode
1941 (sbcl-package->cl-source-package sbcl-html-encode))
1942
1943(define-public ecl-html-encode
1944 (sbcl-package->ecl-package sbcl-html-encode))
b4ba1c0a
PN
1945
1946(define-public sbcl-colorize
1947 (let ((commit "ea676b584e0899cec82f21a9e6871172fe3c0eb5"))
1948 (package
1949 (name "sbcl-colorize")
1950 (version (git-version "0.0.0" "1" commit))
1951 (source
1952 (origin
1953 (method git-fetch)
1954 (uri (git-reference
1955 (url "https://github.com/kingcons/colorize")
1956 (commit commit)))
1957 (sha256
1958 (base32
1959 "1pdg4kiaczmr3ivffhirp7m3lbr1q27rn7dhaay0vwghmi31zcw9"))
1960 (file-name (git-file-name "colorize" version))))
1961 (build-system asdf-build-system/sbcl)
1962 (inputs
1963 `(("alexandria" ,sbcl-alexandria)
1964 ("split-sequence" ,sbcl-split-sequence)
1965 ("html-encode" ,sbcl-html-encode)))
1966 (synopsis "Common Lisp for syntax highlighting")
1967 (description
1968 "@command{colorize} is a Lisp library for syntax highlighting
1969supporting the following languages: Common Lisp, Emacs Lisp, Scheme, Clojure,
1970C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
1971 (home-page "https://github.com/kingcons/colorize")
1972 ;; TODO: Missing license?
1973 (license license:expat))))
1974
1975(define-public cl-colorize
1976 (sbcl-package->cl-source-package sbcl-colorize))
1977
1978(define-public ecl-colorize
1979 (sbcl-package->ecl-package sbcl-colorize))
ef0c3e14
PN
1980
1981(define-public sbcl-3bmd
1982 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
1983 (package
1984 (name "sbcl-3bmd")
1985 (version (git-version "0.0.0" "1" commit))
1986 (source
1987 (origin
1988 (method git-fetch)
1989 (uri (git-reference
1990 (url "https://github.com/3b/3bmd")
1991 (commit commit)))
1992 (sha256
1993 (base32
1994 "1rgv3gi7wf963ikmmpk132wgn0icddf226gq3bmcnk1fr3v9gf2f"))
1995 (file-name (git-file-name "3bmd" version))))
1996 (build-system asdf-build-system/sbcl)
1997 (arguments
1998 ;; FIXME: We need to specify the name because the build-system thinks
1999 ;; "3" is a version marker.
2000 `(#:asd-system-name "3bmd"))
2001 (inputs
2002 `(("esrap" ,sbcl-esrap)
2003 ("split-sequence" ,sbcl-split-sequence)))
2004 (synopsis "Markdown processor in Command Lisp using esrap parser")
2005 (description
2006 "Common Lisp Markdown -> HTML converter, using @command{esrap} for
2007parsing, and grammar based on @command{peg-markdown}.")
2008 (home-page "https://github.com/3b/3bmd")
2009 (license license:expat))))
2010
2011(define-public cl-3bmd
2012 (sbcl-package->cl-source-package sbcl-3bmd))
2013
2014(define-public ecl-3bmd
2015 (sbcl-package->ecl-package sbcl-3bmd))
1a3d39c4
PN
2016
2017(define-public sbcl-3bmd-ext-code-blocks
2018 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
2019 (package
2020 (inherit sbcl-3bmd)
2021 (name "sbcl-3bmd-ext-code-blocks")
2022 (arguments
2023 `(#:asd-system-name "3bmd-ext-code-blocks"
2024 #:asd-file "3bmd-ext-code-blocks.asd"))
2025 (inputs
2026 `(("3bmd" ,sbcl-3bmd)
2027 ("colorize" ,sbcl-colorize)))
2028 (synopsis "3bmd extension which adds support for GitHub-style fenced
2029code blocks")
2030 (description
2031 "3bmd extension which adds support for GitHub-style fenced code blocks,
2032with @command{colorize} support."))))
2033
2034(define-public cl-3bmd-ext-code-blocks
2035 (sbcl-package->cl-source-package sbcl-3bmd-ext-code-blocks))
2036
2037(define-public ecl-3bmd-ext-code-blocks
2038 (sbcl-package->ecl-package sbcl-3bmd-ext-code-blocks))
18554968
PN
2039
2040(define-public sbcl-cl-fad
2041 (package
2042 (name "sbcl-cl-fad")
2043 (version "0.7.5")
2044 (source
2045 (origin
2046 (method git-fetch)
2047 (uri (git-reference
2048 (url "https://github.com/edicl/cl-fad/")
2049 (commit (string-append "v" version))))
2050 (sha256
2051 (base32
2052 "1l1qmk9z57q84bz5r04sxsksggsnd7dgkxlybzh9imz6ma7sm52m"))
2053 (file-name (string-append "cl-fad" version "-checkout"))))
2054 (build-system asdf-build-system/sbcl)
2055 (inputs
2056 `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
2057 (synopsis "Portable pathname library for Common Lisp")
2058 (description
2059 "CL-FAD (for \"Files and Directories\") is a thin layer atop Common
2060Lisp's standard pathname functions. It is intended to provide some
2061unification between current CL implementations on Windows, OS X, Linux, and
2062Unix. Most of the code was written by Peter Seibel for his book Practical
2063Common Lisp.")
2064 (home-page "https://edicl.github.io/cl-fad/")
2065 (license license:bsd-2)))
2066
2067(define-public cl-fad
2068 (sbcl-package->cl-source-package sbcl-cl-fad))
2069
2070(define-public ecl-cl-fad
2071 (sbcl-package->ecl-package sbcl-cl-fad))
5800c538
PN
2072
2073(define-public sbcl-rt
2074 (package
2075 (name "sbcl-rt")
2076 (version "1990.12.19")
2077 (source
2078 (origin
2079 (method url-fetch)
2080 (uri (string-append "http://beta.quicklisp.org/archive/rt/2010-10-06/rt-"
2081 "20101006-git" ".tgz"))
2082 (sha256
2083 (base32
2084 "1jncar0xwkqk8yrc2dln389ivvgzs7ijdhhs3zpfyi5d21f0qa1v"))))
2085 (build-system asdf-build-system/sbcl)
2086 (synopsis "MIT Regression Tester")
2087 (description
2088 "RT provides a framework for writing regression test suites.")
2089 (home-page "https://github.com/sharplispers/nibbles")
2090 (license license:unlicense)))
2091
2092(define-public cl-rt
2093 (sbcl-package->cl-source-package sbcl-rt))
2094
2095(define-public ecl-rt
2096 (sbcl-package->ecl-package sbcl-rt))
fbdd9b2c
PN
2097
2098(define-public sbcl-nibbles
2099 (package
2100 (name "sbcl-nibbles")
2101 (version "0.14")
2102 (source
2103 (origin
2104 (method git-fetch)
2105 (uri (git-reference
2106 (url "https://github.com/sharplispers/nibbles/")
2107 (commit (string-append "v" version))))
2108 (sha256
2109 (base32
2110 "1v7qfgpvdr6nz7v63dj69d26dis0kff3rd8xamr1llfdvza2pm8f"))
2111 (file-name (git-file-name "nibbles" version))))
2112 (build-system asdf-build-system/sbcl)
2113 (native-inputs
2114 ;; Tests only.
2115 `(("rt" ,sbcl-rt)))
2116 (synopsis "Common Lisp library for accessing octet-addressed blocks of data")
2117 (description
2118 "When dealing with network protocols and file formats, it's common to
2119have to read or write 16-, 32-, or 64-bit datatypes in signed or unsigned
2120flavors. Common Lisp sort of supports this by specifying :element-type for
2121streams, but that facility is underspecified and there's nothing similar for
2122read/write from octet vectors. What most people wind up doing is rolling their
2123own small facility for their particular needs and calling it a day.
2124
2125This library attempts to be comprehensive and centralize such
2126facilities. Functions to read 16-, 32-, and 64-bit quantities from octet
2127vectors in signed or unsigned flavors are provided; these functions are also
2128SETFable. Since it's sometimes desirable to read/write directly from streams,
2129functions for doing so are also provided. On some implementations,
2130reading/writing IEEE singles/doubles (i.e. single-float and double-float) will
2131also be supported.")
2132 (home-page "https://github.com/sharplispers/nibbles")
2133 (license license:bsd-3)))
2134
2135(define-public cl-nibbles
2136 (sbcl-package->cl-source-package sbcl-nibbles))
2137
2138(define-public ecl-nibbles
2139 (sbcl-package->ecl-package sbcl-nibbles))
e549ba05
PN
2140
2141(define-public sbcl-ironclad
2142 (package
2143 (name "sbcl-ironclad")
2144 (version "0.42")
2145 (source
2146 (origin
2147 (method git-fetch)
2148 (uri (git-reference
2149 (url "https://github.com/sharplispers/ironclad/")
2150 (commit (string-append "v" version))))
2151 (sha256
2152 (base32
2153 "1wjcb9vpybxjrmch7f7s78a5abxmnknbd4fl49dl5lz8a3fc8vf0"))
2154 (file-name (string-append "ironblad" version "-checkout"))))
2155 (build-system asdf-build-system/sbcl)
2156 (native-inputs
2157 ;; Tests only.
2158 `(("rt" ,sbcl-rt)))
2159 (inputs
2160 `(("flexi-streams" ,sbcl-flexi-streams)
2161 ("nibbles" ,sbcl-nibbles)))
2162 (synopsis "Cryptographic toolkit written in Common Lisp")
2163 (description
2164 "Ironclad is a cryptography library written entirely in Common Lisp.
2165It includes support for several popular ciphers, digests, MACs and public key
2166cryptography algorithms. For several implementations that support Gray
2167streams, support is included for convenient stream wrappers.")
2168 (home-page "https://github.com/sharplispers/ironclad")
2169 (license license:bsd-3)))
2170
2171(define-public cl-ironclad
2172 (sbcl-package->cl-source-package sbcl-ironclad))
2173
2174(define-public ecl-ironclad
2175 (sbcl-package->ecl-package sbcl-ironclad))
fb8c4bc6
PN
2176
2177(define-public sbcl-named-readtables
2178 (let ((commit "4dfb89fa1af6b305b6492b8af042f5190c11e9fc")
2179 (revision "1"))
2180 (package
2181 (name "sbcl-named-readtables")
2182 (version (string-append "0.9-" revision "." (string-take commit 7)))
2183 (source
2184 (origin
2185 (method git-fetch)
2186 (uri (git-reference
2187 (url "https://github.com/melisgl/named-readtables.git")
2188 (commit commit)))
2189 (sha256
2190 (base32 "083kgh5462iqbb4px6kq8s7sggvpvkm36hx4qi9rnaw53b6ilqkk"))
2191 (file-name (git-file-name "named-readtables" version))))
2192 (build-system asdf-build-system/sbcl)
2193 (arguments
2194 ;; Tests seem to be broken.
2195 `(#:tests? #f))
2196 (home-page "https://github.com/melisgl/named-readtables/")
2197 (synopsis "Library that creates a namespace for named readtables")
2198 (description "Named readtables is a library that creates a namespace for
2199named readtables, which is akin to package namespacing in Common Lisp.")
2200 (license license:bsd-3))))
2201
2202(define-public cl-named-readtables
2203 (sbcl-package->cl-source-package sbcl-named-readtables))
2204
2205(define-public ecl-named-readtables
2206 (sbcl-package->ecl-package sbcl-named-readtables))
f07efbf1
PN
2207
2208(define-public sbcl-pythonic-string-reader
2209 (let ((commit "47a70ba1e32362e03dad6ef8e6f36180b560f86a"))
2210 (package
2211 (name "sbcl-pythonic-string-reader")
2212 (version (git-version "0.0.0" "1" commit))
2213 (source
2214 (origin
2215 (method git-fetch)
2216 (uri (git-reference
2217 (url "https://github.com/smithzvk/pythonic-string-reader/")
2218 (commit commit)))
2219 (sha256
2220 (base32 "1b5iryqw8xsh36swckmz8rrngmc39k92si33fgy5pml3n9l5rq3j"))
2221 (file-name (git-file-name "pythonic-string-reader" version))))
2222 (build-system asdf-build-system/sbcl)
2223 (inputs
2224 `(("named-readtables" ,sbcl-named-readtables)))
2225 (home-page "https://github.com/smithzvk/pythonic-string-reader")
2226 (synopsis "Read table modification inspired by Python's three quote strings")
2227 (description "This piece of code sets up some reader macros that make it
2228simpler to input string literals which contain backslashes and double quotes
2229This is very useful for writing complicated docstrings and, as it turns out,
2230writing code that contains string literals that contain code themselves.")
2231 (license license:bsd-3))))
2232
2233(define-public cl-pythonic-string-reader
2234 (sbcl-package->cl-source-package sbcl-pythonic-string-reader))
2235
2236(define-public ecl-pythonic-string-reader
2237 (sbcl-package->ecl-package sbcl-pythonic-string-reader))
8d8d1c8d 2238
c4d4ae1e
PN
2239(define-public sbcl-slime-swank
2240 (package
2241 (name "sbcl-slime-swank")
2242 (version "2.22")
2243 (source
2244 (origin
2245 (file-name (string-append name "-" version ".tar.gz"))
2246 (method git-fetch)
2247 (uri (git-reference
2248 ;; (url "https://github.com/slime/slime/")
2249 ;; (commit "841f61467c03dea9f38ff9d5af0e21a8aa29e8f7")
2250 ;; REVIEW: Do we need sionescu's patch to package SWANK?
2251 (url "https://github.com/sionescu/slime/")
2252 ;; (commit "swank-asdf")
2253 (commit "2f7c3fcb3ac7d50d844d5c6ca0e89b52a45e1d3a")))
2254 (sha256
2255 (base32
2256 ;; "065bc4y6iskazdfwlhgcjlzg9bi2hyjbhmyjw3461506pgkj08vi"
2257 "0pkmg94wn4ii1zhlrncn44mdc5i6c5v0i9gbldx4dwl2yy7ibz5c"))
2258 (modules '((guix build utils)))
2259 (snippet
2260 '(begin
2261 (substitute* "contrib/swank-listener-hooks.lisp"
2262 ((":compile-toplevel :load-toplevel ") ""))
2263 (substitute* "contrib/swank-presentations.lisp"
2264 ((":compile-toplevel :load-toplevel ") ""))
2265 (substitute* "swank.asd"
2266 ((":file \"packages\".*" all)
2267 (string-append all "(:file \"swank-loader-asdf\")\n")))
2268 (substitute* "swank-loader-asdf.lisp"
2269 ((":common-lisp" all) (string-append all " #:asdf")))
2270 #t))))
2271 (build-system asdf-build-system/sbcl)
2272 (arguments
2273 `(#:asd-file "swank.asd"
2274 #:asd-system-name "swank"))
2275 (home-page "https://github.com/slime/slime")
2276 (synopsis "Common Lisp Swank server")
2277 (description
2278 "This is only useful if you want to start a Swank server in a Lisp
2279processes that doesn't run under Emacs. Lisp processes created by
2280@command{M-x slime} automatically start the server.")
0ee6692a 2281 (license (list license:gpl2+ license:public-domain))))
c4d4ae1e 2282
8d8d1c8d
PN
2283(define-public sbcl-mgl-pax
2284 (let ((commit "818448418d6b9de74620f606f5b23033c6082769"))
2285 (package
2286 (name "sbcl-mgl-pax")
2287 (version (git-version "0.0.0" "1" commit))
2288 (source
2289 (origin
2290 (method git-fetch)
2291 (uri (git-reference
2292 (url "https://github.com/melisgl/mgl-pax")
2293 (commit commit)))
2294 (sha256
2295 (base32
2296 "1p97zfkh130bdxqqxwaw2j9psv58751wakx7czbfpq410lg7dd7i"))
2297 (file-name (git-file-name "mgl-pax" version))))
2298 (build-system asdf-build-system/sbcl)
2299 (inputs
2300 `(("3bmd" ,sbcl-3bmd)
2301 ("3bmd-ext-code-blocks" ,sbcl-3bmd-ext-code-blocks)
2302 ("babel" ,sbcl-babel)
2303 ("cl-fad" ,sbcl-cl-fad)
2304 ("ironclad" ,sbcl-ironclad)
2305 ("named-readtables" ,sbcl-named-readtables)
2306 ("pythonic-string-reader" ,sbcl-pythonic-string-reader)
2307 ("swank" ,sbcl-slime-swank)))
2308 (synopsis "Exploratory programming environment and documentation generator")
2309 (description
2310 "PAX provides an extremely poor man's Explorable Programming
2311environment. Narrative primarily lives in so called sections that mix markdown
2312docstrings with references to functions, variables, etc, all of which should
2313probably have their own docstrings.
2314
2315The primary focus is on making code easily explorable by using SLIME's
2316@command{M-.} (@command{slime-edit-definition}). See how to enable some
2317fanciness in Emacs Integration. Generating documentation from sections and all
2318the referenced items in Markdown or HTML format is also implemented.
2319
2320With the simplistic tools provided, one may accomplish similar effects as with
2321Literate Programming, but documentation is generated from code, not vice versa
2322and there is no support for chunking yet. Code is first, code must look
2323pretty, documentation is code.")
2324 (home-page "http://quotenil.com/")
2325 (license license:expat))))
2326
2327(define-public cl-mgl-pax
2328 (sbcl-package->cl-source-package sbcl-mgl-pax))
2329
2330(define-public ecl-mgl-pax
2331 (sbcl-package->ecl-package sbcl-mgl-pax))
a927eb36 2332
19a1c3be
PN
2333(define-public sbcl-lisp-unit
2334 (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
2335 (package
2336 (name "sbcl-lisp-unit")
2337 (version (git-version "0.0.0" "1" commit))
2338 (source
2339 (origin
2340 (method git-fetch)
2341 (uri (git-reference
2342 (url "https://github.com/OdonataResearchLLC/lisp-unit")
2343 (commit commit)))
2344 (sha256
2345 (base32
2346 "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
2347 (file-name (git-file-name "lisp-unit" version))))
2348 (build-system asdf-build-system/sbcl)
2349 (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
2350 (description
2351 "@command{lisp-unit} is a Common Lisp library that supports unit
2352testing. It is an extension of the library written by Chris Riesbeck.")
2353 (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
2354 (license license:expat))))
2355
2356(define-public cl-lisp-unit
2357 (sbcl-package->cl-source-package sbcl-lisp-unit))
2358
2359(define-public ecl-lisp-unit
2360 (sbcl-package->ecl-package sbcl-lisp-unit))
2361
9f3000cc
PN
2362(define-public sbcl-anaphora
2363 (package
2364 (name "sbcl-anaphora")
2365 (version "0.9.6")
2366 (source
2367 (origin
2368 (method git-fetch)
2369 (uri (git-reference
2370 (url "https://github.com/tokenrove/anaphora")
2371 (commit version)))
2372 (sha256
2373 (base32
2374 "19wfrk3asimznkli0x2rfy637hwpdgqyvwj3vhq9x7vjvyf5vv6x"))
2375 (file-name (git-file-name "anaphora" version))))
2376 (build-system asdf-build-system/sbcl)
2377 (native-inputs
2378 `(("rt" ,sbcl-rt)))
2379 (synopsis "The anaphoric macro collection from Hell")
2380 (description
2381 "Anaphora is the anaphoric macro collection from Hell: it includes many
2382new fiends in addition to old friends like @command{aif} and
2383@command{awhen}.")
2384 (home-page "https://github.com/tokenrove/anaphora")
2385 (license license:public-domain)))
2386
2387(define-public cl-anaphora
2388 (sbcl-package->cl-source-package sbcl-anaphora))
2389
2390(define-public ecl-anaphora
2391 (sbcl-package->ecl-package sbcl-anaphora))
2392
5b8a801d
PN
2393(define-public sbcl-lift
2394 (let ((commit "7d49a66c62759535624037826891152223d4206c"))
2395 (package
2396 (name "sbcl-lift")
2397 (version (git-version "0.0.0" "1" commit))
2398 (source
2399 (origin
2400 (method git-fetch)
2401 (uri (git-reference
2402 (url "https://github.com/gwkkwg/lift")
2403 (commit commit)))
2404 (sha256
2405 (base32
2406 "127v5avpz1i4m0lkaxqrq8hrl69rdazqaxf6s8awf0nd7wj2g4dp"))
e9f305a1
EF
2407 (file-name (git-file-name "lift" version))
2408 (modules '((guix build utils)))
2409 (snippet
2410 ;; Don't keep the bundled website
2411 `(begin
2412 (delete-file-recursively "website")
2413 #t))))
5b8a801d
PN
2414 (build-system asdf-build-system/sbcl)
2415 (arguments
2416 ;; The tests require a debugger, but we run with the debugger disabled.
e9f305a1 2417 '(#:tests? #f))
5b8a801d
PN
2418 (synopsis "LIsp Framework for Testing")
2419 (description
2420 "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
2421Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
2422testcases are organized into hierarchical testsuites each of which can have
2423its own fixture. When run, a testcase can succeed, fail, or error. LIFT
2424supports randomized testing, benchmarking, profiling, and reporting.")
2425 (home-page "https://github.com/gwkkwg/lift")
fdf02484 2426 (license license:expat))))
5b8a801d
PN
2427
2428(define-public cl-lift
2429 (sbcl-package->cl-source-package sbcl-lift))
2430
2431(define-public ecl-lift
2432 (sbcl-package->ecl-package sbcl-lift))
2433
d4142232
PN
2434(define-public sbcl-let-plus
2435 (let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb"))
2436 (package
2437 (name "sbcl-let-plus")
2438 (version (git-version "0.0.0" "1" commit))
2439 (source
2440 (origin
2441 (method git-fetch)
2442 (uri (git-reference
2443 (url "https://github.com/sharplispers/let-plus")
2444 (commit commit)))
2445 (sha256
2446 (base32
2447 "0i050ca2iys9f5mb7dgqgqdxfnc3b0rnjdwv95sqd490vkiwrsaj"))
2448 (file-name (git-file-name "let-plus" version))))
2449 (build-system asdf-build-system/sbcl)
2450 (inputs
2451 `(("alexandria" ,sbcl-alexandria)
2452 ("anaphora" ,sbcl-anaphora)))
2453 (native-inputs
2454 `(("lift" ,sbcl-lift)))
2455 (synopsis "Destructuring extension of let*")
2456 (description
2457 "This library implements the let+ macro, which is a dectructuring
2458extension of let*. It features:
2459
2460@itemize
2461@item Clean, consistent syntax and small implementation (less than 300 LOC,
2462not counting tests)
2463@item Placeholder macros allow editor hints and syntax highlighting
2464@item @command{&ign} for ignored values (in forms where that makes sense)
2465@item Very easy to extend
2466@end itemize\n")
2467 (home-page "https://github.com/sharplispers/let-plus")
2468 (license license:boost1.0))))
2469
2470(define-public cl-let-plus
2471 (sbcl-package->cl-source-package sbcl-let-plus))
2472
2473(define-public ecl-let-plus
2474 (sbcl-package->ecl-package sbcl-let-plus))
2475
8caa928d
PN
2476(define-public sbcl-cl-colors
2477 (let ((commit "827410584553f5c717eec6182343b7605f707f75"))
2478 (package
2479 (name "sbcl-cl-colors")
2480 (version (git-version "0.0.0" "1" commit))
2481 (source
2482 (origin
2483 (method git-fetch)
2484 (uri (git-reference
2485 (url "https://github.com/tpapp/cl-colors")
2486 (commit commit)))
2487 (sha256
2488 (base32
2489 "0l446lday4hybsm9bq3jli97fvv8jb1d33abg79vbylpwjmf3y9a"))
2490 (file-name (git-file-name "cl-colors" version))))
2491 (build-system asdf-build-system/sbcl)
2492 (inputs
2493 `(("alexandria" ,sbcl-alexandria)
2494 ("let-plus" ,sbcl-let-plus)))
2495 (synopsis "Simple color library for Common Lisp")
2496 (description
2497 "This is a very simple color library for Common Lisp, providing
2498
2499@itemize
2500@item Types for representing colors in HSV and RGB spaces.
2501@item Simple conversion functions between the above types (and also
2502hexadecimal representation for RGB).
2503@item Some predefined colors (currently X11 color names – of course the
2504library does not depend on X11).Because color in your terminal is nice.
2505@end itemize
2506
2507This library is no longer supported by its author.")
2508 (home-page "https://github.com/tpapp/cl-colors")
2509 (license license:boost1.0))))
2510
2511(define-public cl-colors
2512 (sbcl-package->cl-source-package sbcl-cl-colors))
2513
2514(define-public ecl-cl-colors
2515 (sbcl-package->ecl-package sbcl-cl-colors))
2516
68a7b929
PN
2517(define-public sbcl-cl-ansi-text
2518 (let ((commit "53badf7878f27f22f2d4a2a43e6df458e43acbe9"))
2519 (package
2520 (name "sbcl-cl-ansi-text")
2521 (version (git-version "1.0.0" "1" commit))
2522 (source
2523 (origin
2524 (method git-fetch)
2525 (uri (git-reference
2526 (url "https://github.com/pnathan/cl-ansi-text")
2527 (commit commit)))
2528 (sha256
2529 (base32
2530 "11i27n0dbz5lmygiw65zzr8lx0rac6b6yysqranphn31wls6ja3v"))
2531 (file-name (git-file-name "cl-ansi-text" version))))
2532 (build-system asdf-build-system/sbcl)
2533 (inputs
2534 `(("alexandria" ,sbcl-alexandria)
2535 ("cl-colors" ,sbcl-cl-colors)))
2536 (native-inputs
2537 `(("fiveam" ,sbcl-fiveam)))
2538 (synopsis "ANSI terminal color implementation for Common Lisp")
2539 (description
2540 "@command{cl-ansi-text} provides utilities which enable printing to an
2541ANSI terminal with colored text. It provides the macro @command{with-color}
2542which causes everything printed in the body to be displayed with the provided
2543color. It further provides functions which will print the argument with the
2544named color.")
2545 (home-page "https://github.com/pnathan/cl-ansi-text")
2546 ;; REVIEW: The actual license is LLGPL. Should we add it to Guix?
2547 (license license:lgpl3+))))
2548
2549(define-public cl-ansi-text
2550 (sbcl-package->cl-source-package sbcl-cl-ansi-text))
2551
2552(define-public ecl-cl-ansi-text
2553 (sbcl-package->ecl-package sbcl-cl-ansi-text))
2554
1a42bb80
PN
2555(define-public sbcl-prove-asdf
2556 (let ((commit "4f9122bd393e63c5c70c1fba23070622317cfaa0"))
2557 (package
2558 (name "sbcl-prove-asdf")
2559 (version (git-version "1.0.0" "1" commit))
2560 (source
2561 (origin
2562 (method git-fetch)
2563 (uri (git-reference
2564 (url "https://github.com/fukamachi/prove")
2565 (commit commit)))
2566 (sha256
2567 (base32
2568 "07sbfw459z8bbjvx1qlmfa8qk2mvbjnnzi2mi0x72blaj8bkl4vc"))
2569 (file-name (git-file-name "prove" version))))
2570 (build-system asdf-build-system/sbcl)
2571 (arguments
2572 `(#:asd-file "prove-asdf.asd"))
2573 (synopsis "Test requirement for the Common Lisp 'prove' library")
2574 (description
2575 "Test requirement for the Common Lisp @command{prove} library.")
2576 (home-page "https://github.com/fukamachi/prove")
2577 (license license:expat))))
2578
2579(define-public cl-prove-asdf
2580 (sbcl-package->cl-source-package sbcl-prove-asdf))
2581
2582(define-public ecl-prove-asdf
2583 (sbcl-package->ecl-package sbcl-prove-asdf))
2584
86afb0a2
PN
2585(define-public sbcl-prove
2586 (package
2587 (inherit sbcl-prove-asdf)
2588 (name "sbcl-prove")
2589 (inputs
2590 `(("alexandria" ,sbcl-alexandria)
2591 ("cl-ppcre" ,sbcl-cl-ppcre)
2592 ("cl-ansi-text" ,sbcl-cl-ansi-text)))
2593 (native-inputs
2594 `(("prove-asdf" ,sbcl-prove-asdf)))
2595 (arguments
2596 `(#:asd-file "prove.asd"))
2597 (synopsis "Yet another unit testing framework for Common Lisp")
2598 (description
2599 "This project was originally called @command{cl-test-more}.
2600@command{prove} is yet another unit testing framework for Common Lisp. The
2601advantages of @command{prove} are:
2602
2603@itemize
2604@item Various simple functions for testing and informative error messages
2605@item ASDF integration
2606@item Extensible test reporters
2607@item Colorizes the report if it's available (note for SLIME)
2608@item Reports test durations
2609@end itemize\n")))
2610
2611(define-public cl-prove
2612 (sbcl-package->cl-source-package sbcl-prove))
2613
2614(define-public ecl-prove
2615 (sbcl-package->ecl-package sbcl-prove))
2616
41b3b866
PN
2617(define-public sbcl-proc-parse
2618 (let ((commit "ac3636834d561bdc2686c956dbd82494537285fd"))
2619 (package
2620 (name "sbcl-proc-parse")
2621 (version (git-version "0.0.0" "1" commit))
2622 (source
2623 (origin
2624 (method git-fetch)
2625 (uri (git-reference
2626 (url "https://github.com/fukamachi/proc-parse")
2627 (commit commit)))
2628 (sha256
2629 (base32
2630 "06rnl0h4cx6xv2wj3jczmmcxqn2703inmmvg1s4npbghmijsybfh"))
2631 (file-name (git-file-name "proc-parse" version))))
2632 (build-system asdf-build-system/sbcl)
2633 (inputs
2634 `(("alexandria" ,sbcl-alexandria)
2635 ("babel" ,sbcl-babel)))
2636 (native-inputs
2637 `(("prove" ,sbcl-prove)
2638 ("prove-asdf" ,sbcl-prove-asdf)))
2639 (arguments
2640 ;; TODO: Tests don't find "proc-parse-test", why?
2641 `(#:tests? #f))
2642 (synopsis "Procedural vector parser")
2643 (description
2644 "This is a string/octets parser library for Common Lisp with speed and
2645readability in mind. Unlike other libraries, the code is not a
2646pattern-matching-like, but a char-by-char procedural parser.")
2647 (home-page "https://github.com/fukamachi/proc-parse")
2648 (license license:bsd-2))))
2649
2650(define-public cl-proc-parse
2651 (sbcl-package->cl-source-package sbcl-proc-parse))
2652
2653(define-public ecl-proc-parse
2654 (sbcl-package->ecl-package sbcl-proc-parse))
2655
28b52970
PN
2656(define-public sbcl-parse-float
2657 (let ((commit "2aae569f2a4b2eb3bfb5401a959425dcf151b09c"))
2658 (package
2659 (name "sbcl-parse-float")
2660 (version (git-version "0.0.0" "1" commit))
2661 (source
2662 (origin
2663 (method git-fetch)
2664 (uri (git-reference
2665 (url "https://github.com/soemraws/parse-float")
2666 (commit commit)))
2667 (sha256
2668 (base32
2669 "08xw8cchhmqcc0byng69m3f5a2izc9y2290jzz2k0qrbibp1fdk7"))
2670 (file-name (git-file-name "proc-parse" version))))
2671 (build-system asdf-build-system/sbcl)
2672 (inputs
2673 `(("alexandria" ,sbcl-alexandria)
2674 ("babel" ,sbcl-babel)))
2675 (native-inputs
2676 `(("prove" ,sbcl-prove)
2677 ("prove-asdf" ,sbcl-prove-asdf)))
2678 (arguments
2679 ;; TODO: Tests don't find "proc-parse-test", why?
2680 `(#:tests? #f))
2681 (synopsis "Parse a floating point value from a string in Common Lisp")
2682 (description
2683 "This package exports the following function to parse floating-point
2684values from a string in Common Lisp.")
2685 (home-page "https://github.com/soemraws/parse-float")
28b52970
PN
2686 (license license:public-domain))))
2687
2688(define-public cl-parse-float
2689 (sbcl-package->cl-source-package sbcl-parse-float))
2690
2691(define-public ecl-parse-float
2692 (sbcl-package->ecl-package sbcl-parse-float))
2693
a927eb36
PN
2694(define-public sbcl-ascii-strings
2695 (let ((revision "1")
2696 (changeset "5048480a61243e6f1b02884012c8f25cdbee6d97"))
2697 (package
2698 (name "sbcl-ascii-strings")
2699 (version (string-append "0-" revision "." (string-take changeset 7)))
2700 (source
2701 (origin
2702 (method hg-fetch)
2703 (uri (hg-reference
2704 (url "https://bitbucket.org/vityok/cl-string-match/")
2705 (changeset changeset)))
2706 (sha256
2707 (base32
2708 "01wn5qx562w43ssy92xlfgv79w7p0nv0wbl76mpmba131n9ziq2y"))
2709 (file-name (git-file-name "cl-string-match" version))))
2710 (build-system asdf-build-system/sbcl)
2711 (inputs
2712 `(("alexandria" ,sbcl-alexandria)
2713 ("babel" ,sbcl-babel)))
2714 (arguments
2715 `(#:asd-file "ascii-strings.asd"))
2716 (synopsis "Operations on ASCII strings")
2717 (description
2718 "Operations on ASCII strings. Essentially this can be any kind of
2719single-byte encoded strings.")
2720 (home-page "https://bitbucket.org/vityok/cl-string-match/")
2721 (license license:bsd-3))))
2722
2723(define-public cl-ascii-strings
2724 (sbcl-package->cl-source-package sbcl-ascii-strings))
2725
2726(define-public ecl-ascii-strings
2727 (sbcl-package->ecl-package sbcl-ascii-strings))
109ce303 2728
a28d00d9
PN
2729(define-public sbcl-simple-scanf
2730 (package
2731 (inherit sbcl-ascii-strings)
2732 (name "sbcl-simple-scanf")
2733 (inputs
2734 `(("alexandria" ,sbcl-alexandria)
2735 ("iterate" ,sbcl-iterate)
2736 ("proc-parse" ,sbcl-proc-parse)
2737 ("parse-float" ,sbcl-parse-float)))
2738 (arguments
2739 `(#:asd-file "simple-scanf.asd"))
2740 (synopsis "Simple scanf-like functionality implementation")
2741 (description
2742 "A simple scanf-like functionality implementation.")))
2743
2744(define-public cl-simple-scanf
2745 (sbcl-package->cl-source-package sbcl-simple-scanf))
2746
2747(define-public ecl-simple-scanf
2748 (sbcl-package->ecl-package sbcl-simple-scanf))
2749
109ce303
PN
2750(define-public sbcl-cl-string-match
2751 (package
2752 (inherit sbcl-ascii-strings)
2753 (name "sbcl-cl-string-match")
2754 (inputs
2755 `(("alexandria" ,sbcl-alexandria)
2756 ("ascii-strings" ,sbcl-ascii-strings)
2757 ("yacc" ,sbcl-cl-yacc)
2758 ("jpl-util" ,sbcl-jpl-util)
2759 ("jpl-queues" ,sbcl-jpl-queues)
2760 ("mgl-pax" ,sbcl-mgl-pax)
2761 ("iterate" ,sbcl-iterate)))
2762 ;; TODO: Tests are not evaluated properly.
2763 (native-inputs
2764 ;; For testing:
2765 `(("lisp-unit" ,sbcl-lisp-unit)
2766 ("simple-scanf" ,sbcl-simple-scanf)))
2767 (arguments
2768 `(#:tests? #f
2769 #:asd-file "cl-string-match.asd"))
2770 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
2771 (description
2772 "@command{cl-strings} is a small, portable, dependency-free set of
2773utilities that make it even easier to manipulate text in Common Lisp. It has
2774100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")))
2775
2776(define-public cl-string-match
2777 (sbcl-package->cl-source-package sbcl-cl-string-match))
2778
2779(define-public ecl-cl-string-match
2780 (sbcl-package->ecl-package sbcl-cl-string-match))
1de50cb7
PN
2781
2782(define-public sbcl-ptester
2783 (package
2784 (name "sbcl-ptester")
2785 (version "20160929")
2786 (source
2787 (origin
2788 (method url-fetch)
2789 (uri (string-append "http://beta.quicklisp.org/archive/ptester/"
2790 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2791 "/ptester-"
2792 version
2793 "-git.tgz"))
2794 (sha256
2795 (base32
2796 "04rlq1zljhxc65pm31bah3sq3as24l0sdivz440s79qlnnyh13hz"))))
2797 (build-system asdf-build-system/sbcl)
2798 (home-page "http://quickdocs.org/ptester/")
2799 (synopsis "Portable test harness package")
2800 (description
2801 "@command{ptester} is a portable testing framework based on Franz's
2802tester module.")
2803 (license license:lgpl3+)))
2804
2805(define-public cl-ptester
2806 (sbcl-package->cl-source-package sbcl-ptester))
2807
2808(define-public ecl-ptester
2809 (sbcl-package->ecl-package sbcl-ptester))
3f4c21c5
PN
2810
2811(define-public sbcl-puri
2812 (package
2813 (name "sbcl-puri")
2814 (version "20180228")
2815 (source
2816 (origin
2817 (method url-fetch)
2818 (uri (string-append "http://beta.quicklisp.org/archive/puri/"
2819 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2820 "/puri-"
2821 version
2822 "-git.tgz"))
2823 (sha256
2824 (base32
2825 "1s4r5adrjy5asry45xbcbklxhdjydvf6n55z897nvyw33bigrnbz"))))
2826 (build-system asdf-build-system/sbcl)
2827 ;; REVIEW: Webiste down?
2828 (native-inputs
2829 `(("ptester" ,sbcl-ptester)))
2830 (home-page "http://files.kpe.io/puri/")
2831 (synopsis "Portable URI Library")
2832 (description
2833 "This is portable Universal Resource Identifier library for Common Lisp
2834programs. It parses URI according to the RFC 2396 specification")
2835 (license license:lgpl3+)))
2836
2837(define-public cl-puri
2838 (sbcl-package->cl-source-package sbcl-puri))
2839
2840(define-public ecl-puri
2841 (sbcl-package->ecl-package sbcl-puri))
eb766dfe
PN
2842
2843(define-public sbcl-queues
2844 (let ((commit "47d4da65e9ea20953b74aeeab7e89a831b66bc94"))
2845 (package
2846 (name "sbcl-queues")
2847 (version (git-version "0.0.0" "1" commit))
2848 (source
2849 (origin
2850 (method git-fetch)
2851 (uri (git-reference
2852 (url "https://github.com/oconnore/queues")
2853 (commit commit)))
2854 (file-name (git-file-name "queues" version))
2855 (sha256
2856 (base32
2857 "0wdhfnzi4v6d97pggzj2aw55si94w4327br94jrmyvwf351wqjvv"))))
2858 (build-system asdf-build-system/sbcl)
2859 (home-page "https://github.com/oconnore/queues")
2860 (synopsis "Common Lisp queue library")
2861 (description
2862 "This is a simple queue library for Common Lisp with features such as
2863non-consing thread safe queues and fibonacci priority queues.")
2864 (license license:expat))))
2865
2866(define-public cl-queues
2867 (sbcl-package->cl-source-package sbcl-queues))
2868
2869(define-public ecl-queues
2870 (sbcl-package->ecl-package sbcl-queues))
6fef7c0e
PN
2871
2872(define-public sbcl-queues.simple-queue
2873 (package
2874 (inherit sbcl-queues)
2875 (name "sbcl-queues.simple-queue")
2876 (inputs
2877 `(("sbcl-queues" ,sbcl-queues)))
2878 (arguments
2879 `(#:asd-file "queues.simple-queue.asd"))
2880 (synopsis "Simple queue implementation")
2881 (description
2882 "This is a simple queue library for Common Lisp with features such as
2883non-consing thread safe queues and fibonacci priority queues.")
2884 (license license:expat)))
2885
2886(define-public cl-queues.simple-queue
2887 (sbcl-package->cl-source-package sbcl-queues.simple-queue))
2888
2889(define-public ecl-queues.simple-queue
2890 (sbcl-package->ecl-package sbcl-queues.simple-queue))
a889ba99
PN
2891
2892(define-public sbcl-queues.simple-cqueue
2893 (package
2894 (inherit sbcl-queues)
2895 (name "sbcl-queues.simple-cqueue")
2896 (inputs
2897 `(("sbcl-queues" ,sbcl-queues)
2898 ("sbcl-queues.simple-queue" ,sbcl-queues.simple-queue)
2899 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2900 (arguments
2901 `(#:asd-file "queues.simple-cqueue.asd"))
2902 (synopsis "Thread safe queue implementation")
2903 (description
2904 "This is a simple queue library for Common Lisp with features such as
2905non-consing thread safe queues and fibonacci priority queues.")
2906 (license license:expat)))
2907
2908(define-public cl-queues.simple-cqueue
2909 (sbcl-package->cl-source-package sbcl-queues.simple-cqueue))
2910
2911(define-public ecl-queues.simple-cqueue
2912 (sbcl-package->ecl-package sbcl-queues.simple-cqueue))
144085cd
PN
2913
2914(define-public sbcl-queues.priority-queue
2915 (package
2916 (inherit sbcl-queues)
2917 (name "sbcl-queues.priority-queue")
2918 (inputs
2919 `(("sbcl-queues" ,sbcl-queues)))
2920 (arguments
2921 `(#:asd-file "queues.priority-queue.asd"))
2922 (synopsis "Priority queue (Fibonacci) implementation")
2923 (description
2924 "This is a simple queue library for Common Lisp with features such as
2925non-consing thread safe queues and fibonacci priority queues.")
2926 (license license:expat)))
2927
2928(define-public cl-queues.priority-queue
2929 (sbcl-package->cl-source-package sbcl-queues.priority-queue))
2930
2931(define-public ecl-queues.priority-queue
2932 (sbcl-package->ecl-package sbcl-queues.priority-queue))
92b1d09b
PN
2933
2934(define-public sbcl-queues.priority-cqueue
2935 (package
2936 (inherit sbcl-queues)
2937 (name "sbcl-queues.priority-cqueue")
2938 (inputs
2939 `(("sbcl-queues" ,sbcl-queues)
2940 ("sbcl-queues.priority-queue" ,sbcl-queues.priority-queue)
2941 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2942 (arguments
2943 `(#:asd-file "queues.priority-cqueue.asd"))
2944 (synopsis "Thread safe fibonacci priority queue implementation")
2945 (description
2946 "This is a simple queue library for Common Lisp with features such as
2947non-consing thread safe queues and fibonacci priority queues.")
2948 (license license:expat)))
2949
2950(define-public cl-queues.priority-cqueue
2951 (sbcl-package->cl-source-package sbcl-queues.priority-cqueue))
2952
2953(define-public ecl-queues.priority-cqueue
2954 (sbcl-package->ecl-package sbcl-queues.priority-cqueue))
5d9bf762
PN
2955
2956(define sbcl-cffi-bootstrap
2957 (package
2958 (name "sbcl-cffi-bootstrap")
2959 (version "0.19.0")
2960 (source
2961 (origin
2962 (method url-fetch)
2963 (uri (string-append "https://github.com/cffi/cffi/archive/v"
2964 version ".tar.gz"))
2965 (sha256
2966 (base32 "07bc3c1fbfx17wgrvx6bh9byilfzfwv5n597cfdllm0vzwvbmiyk"))
2967 (file-name (string-append name "-" version ".tar.gz"))))
2968 (build-system asdf-build-system/sbcl)
2969 (inputs
2970 `(("libffi" ,libffi)
2971 ("alexandria" ,sbcl-alexandria)
2972 ("babel" ,sbcl-babel)
2973 ("trivial-features" ,sbcl-trivial-features)))
2974 (native-inputs
2975 `(("pkg-config" ,pkg-config)))
2976 (arguments
2977 '(#:phases
2978 (modify-phases %standard-phases
2979 (add-after 'unpack 'fix-paths
2980 (lambda* (#:key inputs #:allow-other-keys)
2981 (substitute* "libffi/libffi.lisp"
2982 (("libffi.so.6" all) (string-append
2983 (assoc-ref inputs "libffi")
2984 "/lib/" all)))
2985 (substitute* "toolchain/c-toolchain.lisp"
2986 (("\"cc\"") (format #f "~S" (which "gcc")))))))
2987 #:asd-system-name "cffi"
2988 #:tests? #f))
2989 (home-page "https://common-lisp.net/project/cffi/")
2990 (synopsis "Common Foreign Function Interface for Common Lisp")
2991 (description "The Common Foreign Function Interface (CFFI)
2992purports to be a portable foreign function interface for Common Lisp.
2993The CFFI library is composed of a Lisp-implementation-specific backend
2994in the CFFI-SYS package, and a portable frontend in the CFFI
2995package.")
2996 (license license:expat)))
99b3d203
PN
2997
2998(define-public sbcl-cffi-toolchain
2999 (package
3000 (inherit sbcl-cffi-bootstrap)
3001 (name "sbcl-cffi-toolchain")
3002 (inputs
3003 `(("libffi" ,libffi)
3004 ("sbcl-cffi" ,sbcl-cffi-bootstrap)))
3005 (arguments
3006 (substitute-keyword-arguments (package-arguments sbcl-cffi-bootstrap)
3007 ((#:asd-system-name _) #f)
3008 ((#:tests? _) #t)))))
9eea4e03
PN
3009
3010(define-public sbcl-cffi-libffi
3011 (package
3012 (inherit sbcl-cffi-toolchain)
3013 (name "sbcl-cffi-libffi")
3014 (inputs
3015 `(("cffi" ,sbcl-cffi-bootstrap)
3016 ("cffi-grovel" ,sbcl-cffi-grovel)
3017 ("trivial-features" ,sbcl-trivial-features)
3018 ("libffi" ,libffi)))))
d3142f2f
PN
3019
3020(define-public sbcl-cffi-grovel
3021 (package
3022 (inherit sbcl-cffi-toolchain)
3023 (name "sbcl-cffi-grovel")
3024 (inputs
3025 `(("libffi" ,libffi)
3026 ("cffi" ,sbcl-cffi-bootstrap)
3027 ("cffi-toolchain" ,sbcl-cffi-toolchain)
3028 ("alexandria" ,sbcl-alexandria)))
3029 (arguments
3030 (substitute-keyword-arguments (package-arguments sbcl-cffi-toolchain)
3031 ((#:phases phases)
3032 `(modify-phases ,phases
3033 (add-after 'build 'install-headers
3034 (lambda* (#:key outputs #:allow-other-keys)
3035 (install-file "grovel/common.h"
3036 (string-append
3037 (assoc-ref outputs "out")
3038 "/include/grovel"))))))))))
41123072
PN
3039
3040(define-public sbcl-cffi
3041 (package
3042 (inherit sbcl-cffi-toolchain)
3043 (name "sbcl-cffi")
3044 (inputs (package-inputs sbcl-cffi-bootstrap))
3045 (native-inputs
3046 `(("cffi-grovel" ,sbcl-cffi-grovel)
3047 ("cffi-libffi" ,sbcl-cffi-libffi)
3048 ("rt" ,sbcl-rt)
3049 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3050 ,@(package-native-inputs sbcl-cffi-bootstrap)))))
8f065b47
PN
3051
3052(define-public sbcl-cl-sqlite
3053 (let ((commit "c738e66d4266ef63a1debc4ef4a1b871a068c112"))
3054 (package
3055 (name "sbcl-cl-sqlite")
3056 (version (git-version "0.2" "1" commit))
3057 (source
3058 (origin
3059 (method git-fetch)
3060 (uri (git-reference
3061 (url "https://github.com/dmitryvk/cl-sqlite")
3062 (commit commit)))
3063 (file-name (git-file-name "cl-sqlite" version))
3064 (sha256
3065 (base32
3066 "1ng45k1hdb84sqjryrfx93g66bsbybmpy301wd0fdybnc5jzr36q"))))
3067 (build-system asdf-build-system/sbcl)
3068 (inputs
3069 `(("iterate" ,sbcl-iterate)
3070 ("cffi" ,sbcl-cffi)
3071 ("sqlite" ,sqlite)))
3072 (native-inputs
3073 `(("fiveam" ,sbcl-fiveam)
3074 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
3075 (arguments
3076 `(#:tests? #f ; Upstream seems to have issues with tests: https://github.com/dmitryvk/cl-sqlite/issues/7
3077 #:asd-file "sqlite.asd"
3078 #:asd-system-name "sqlite"
3079 #:phases
3080 (modify-phases %standard-phases
3081 (add-after 'unpack 'fix-paths
3082 (lambda* (#:key inputs #:allow-other-keys)
3083 (substitute* "sqlite-ffi.lisp"
3084 (("libsqlite3" all) (string-append
3085 (assoc-ref inputs "sqlite")"/lib/" all))))))))
3086 (home-page "https://common-lisp.net/project/cl-sqlite/")
3087 (synopsis "Common Lisp binding for SQLite")
3088 (description
3089 "The @command{cl-sqlite} package is an interface to the SQLite embedded
3090relational database engine.")
3091 (license license:public-domain))))
4624d2e2
PN
3092
3093(define-public sbcl-parenscript
3094 (let ((commit "061d8e286c81c3f45c84fb2b11ee7d83f590a8f8"))
3095 (package
3096 (name "sbcl-parenscript")
3097 (version (git-version "2.6" "1" commit))
3098 (source
3099 (origin
3100 (method git-fetch)
3101 (uri (git-reference
3102 (url "https://gitlab.common-lisp.net/parenscript/parenscript")
3103 (commit commit)))
3104 (file-name (git-file-name "parenscript" version))
3105 (sha256
3106 (base32
3107 "1kbhgsjbikc73m5cwdp4d4fdafyqcr1b7b630qjrziql0nh6mi3k"))))
3108 (build-system asdf-build-system/sbcl)
3109 (inputs
3110 `(("cl-ppcre" ,sbcl-cl-ppcre)
3111 ("anaphora" ,sbcl-anaphora)
3112 ("named-readtables" ,sbcl-named-readtables)))
3113 (home-page "https://common-lisp.net/project/parenscript/")
3114 (synopsis "Translator from a subset of Common Lisp to JavaScript")
3115 (description
3116 "Parenscript is a translator from an extended subset of Common Lisp to
3117JavaScript. Parenscript code can run almost identically on both the
3118browser (as JavaScript) and server (as Common Lisp).
3119
3120Parenscript code is treated the same way as Common Lisp code, making the full
3121power of Lisp macros available for JavaScript. This provides a web
3122development environment that is unmatched in its ability to reduce code
3123duplication and provide advanced meta-programming facilities to web
3124developers.
3125
3126At the same time, Parenscript is different from almost all other \"language
3127X\" to JavaScript translators in that it imposes almost no overhead:
3128
3129@itemize
3130@item No run-time dependencies: Any piece of Parenscript code is runnable
3131as-is. There are no JavaScript files to include.
3132@item Native types: Parenscript works entirely with native JavaScript data
3133types. There are no new types introduced, and object prototypes are not
3134touched.
3135@item Native calling convention: Any JavaScript code can be called without the
3136need for bindings. Likewise, Parenscript can be used to make efficient,
3137self-contained JavaScript libraries.
3138@item Readable code: Parenscript generates concise, formatted, idiomatic
3139JavaScript code. Identifier names are preserved. This enables seamless
3140debugging in tools like Firebug.
3141@item Efficiency: Parenscript introduces minimal overhead for advanced Common
3142Lisp features. The generated code is almost as fast as hand-written
3143JavaScript.
3144@end itemize\n")
3145 (license license:bsd-3))))
3146
3147(define-public cl-parenscript
3148 (sbcl-package->cl-source-package sbcl-parenscript))
3149
3150(define-public ecl-parenscript
3151 (sbcl-package->ecl-package sbcl-parenscript))
dedbf37e
PN
3152
3153(define-public sbcl-cl-json
3154 (let ((commit "6dfebb9540bfc3cc33582d0c03c9ec27cb913e79"))
3155 (package
3156 (name "sbcl-cl-json")
3157 (version (git-version "0.5" "1" commit))
3158 (source
3159 (origin
3160 (method git-fetch)
3161 (uri (git-reference
3162 (url "https://github.com/hankhero/cl-json")
3163 (commit commit)))
3164 (file-name (git-file-name "cl-json" version))
3165 (sha256
3166 (base32
3167 "0fx3m3x3s5ji950yzpazz4s0img3l6b3d6l3jrfjv0lr702496lh"))))
3168 (build-system asdf-build-system/sbcl)
3169 (native-inputs
3170 `(("fiveam" ,sbcl-fiveam)))
3171 (home-page "https://github.com/hankhero/cl-json")
3172 (synopsis "JSON encoder and decoder for Common-Lisp")
3173 (description
3174 "@command{cl-json} provides an encoder of Lisp objects to JSON format
3175and a corresponding decoder of JSON data to Lisp objects. Both the encoder
3176and the decoder are highly customizable; at the same time, the default
3177settings ensure a very simple mode of operation, similar to that provided by
3178@command{yason} or @command{st-json}.")
3179 (license license:expat))))
3180
3181(define-public cl-json
3182 (sbcl-package->cl-source-package sbcl-cl-json))
3183
3184(define-public ecl-cl-json
3185 (sbcl-package->ecl-package sbcl-cl-json))
2cc931db
PN
3186
3187(define-public sbcl-unix-opts
3188 (package
3189 (name "sbcl-unix-opts")
3190 (version "0.1.7")
3191 (source
3192 (origin
3193 (method git-fetch)
3194 (uri (git-reference
3195 (url "https://github.com/libre-man/unix-opts")
3196 (commit version)))
3197 (file-name (git-file-name "unix-opts" version))
3198 (sha256
3199 (base32
3200 "08djdi1ard09fijb7w9bdmhmwd98b1hzmcnjw9fqjiqa0g3b44rr"))))
3201 (build-system asdf-build-system/sbcl)
3202 (home-page "https://github.com/hankhero/cl-json")
3203 (synopsis "Unix-style command line options parser")
3204 (description
3205 "This is a minimalistic parser of command line options. The main
3206advantage of the library is the ability to concisely define command line
3207options once and then use this definition for parsing and extraction of
3208command line arguments, as well as printing description of command line
3209options (you get --help for free). This way you don't need to repeat
3210yourself. Also, @command{unix-opts} doesn't depend on anything and allows to
3211precisely control behavior of the parser via Common Lisp restarts.")
3212 (license license:expat)))
3213
3214(define-public cl-unix-opts
3215 (sbcl-package->cl-source-package sbcl-unix-opts))
3216
3217(define-public ecl-unix-opts
3218 (sbcl-package->ecl-package sbcl-unix-opts))
4aa23420
PN
3219
3220(define-public sbcl-trivial-garbage
3221 (package
3222 (name "sbcl-trivial-garbage")
3223 (version "0.21")
3224 (source
3225 (origin
3226 (method url-fetch)
3227 (uri (string-append
3228 "https://github.com/trivial-garbage/trivial-garbage/archive/v"
3229 version ".tar.gz"))
3230 (sha256
3231 (base32 "0b244nlszkrqawsnp568clnx32xmvjmbbagbz7625w9n0yq7396y"))
3232 (file-name (string-append "trivial-garbage-" version ".tar.gz"))))
3233 (build-system asdf-build-system/sbcl)
3234 (native-inputs
3235 `(("rt" ,sbcl-rt)))
3236 (home-page "https://common-lisp.net/project/trivial-garbage/")
3237 (synopsis "Portable GC-related APIs for Common Lisp")
3238 (description "@command{trivial-garbage} provides a portable API to
3239finalizers, weak hash-tables and weak pointers on all major implementations of
3240the Common Lisp programming language.")
3241 (license license:public-domain)))
3242
3243(define-public cl-trivial-garbage
3244 (sbcl-package->cl-source-package sbcl-trivial-garbage))
3245
3246(define-public ecl-trivial-garbage
3247 (sbcl-package->ecl-package sbcl-trivial-garbage))
85be9191
PN
3248
3249(define-public sbcl-closer-mop
3250 (let ((commit "fac29ce90e3a46e1fc6cf182190e193526fa9dbc"))
3251 (package
3252 (name "sbcl-closer-mop")
3253 (version (git-version "1.0.0" "1" commit))
3254 (source
3255 (origin
3256 (method git-fetch)
3257 (uri (git-reference
3258 (url "https://github.com/pcostanza/closer-mop")
3259 (commit commit)))
3260 (sha256
3261 (base32 "0hvh77y869h8fg9di5snyg85fxq6fdh9gj1igmx1g6j6j5x915dl"))
3262 (file-name (git-file-name "closer-mop" version ))))
3263 (build-system asdf-build-system/sbcl)
3264 (home-page "https://github.com/pcostanza/closer-mop")
3265 (synopsis "Rectifies absent or incorrect CLOS MOP features")
3266 (description "Closer to MOP is a compatibility layer that rectifies many
3267of the absent or incorrect CLOS MOP features across a broad range of Common
3268Lisp implementations.")
3269 (license license:expat))))
3270
3271(define-public cl-closer-mop
3272 (sbcl-package->cl-source-package sbcl-closer-mop))
3273
3274(define-public ecl-closer-mop
3275 (sbcl-package->ecl-package sbcl-closer-mop))
c88985d9
PN
3276
3277(define sbcl-cl-cffi-gtk-boot0
3278 (let ((commit "29443c5aaca975709df8025c4649366d882033cb"))
3279 (package
3280 (name "sbcl-cl-cffi-gtk-boot0")
3281 (version (git-version "0.11.2" "1" commit))
3282 (source
3283 (origin
3284 (method git-fetch)
3285 (uri (git-reference
3286 (url "https://github.com/Ferada/cl-cffi-gtk/")
3287 (commit commit)))
3288 (file-name (git-file-name "cl-cffi-gtk" version))
3289 (sha256
3290 (base32
3291 "0f6s92sf8xyzh1yksqx8bsy1sv0zmy0c13j3b8bavaba5hlxpxah"))))
3292 (build-system asdf-build-system/sbcl)
3293 (inputs
3294 `(("iterate" ,sbcl-iterate)
3295 ("cffi" ,sbcl-cffi)
3296 ("trivial-features" ,sbcl-trivial-features)))
3297 (home-page "https://github.com/Ferada/cl-cffi-gtk/")
3298 (synopsis "Common Lisp binding for GTK+3")
3299 (description
3300 "@command{cl-cffi-gtk} is a Lisp binding to GTK+ 3 (GIMP Toolkit) which
3301is a library for creating graphical user interfaces.")
3302 (license license:lgpl3))))
64dcf7d9
PN
3303
3304(define-public sbcl-cl-cffi-gtk-glib
3305 (package
3306 (inherit sbcl-cl-cffi-gtk-boot0)
3307 (name "sbcl-cl-cffi-gtk-glib")
3308 (inputs
3309 `(("glib" ,glib)
3310 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3311 (arguments
3312 `(#:asd-file "glib/cl-cffi-gtk-glib.asd"
3313 #:phases
3314 (modify-phases %standard-phases
3315 (add-after 'unpack 'fix-paths
3316 (lambda* (#:key inputs #:allow-other-keys)
3317 (substitute* "glib/glib.init.lisp"
3318 (("libglib|libgthread" all) (string-append
3319 (assoc-ref inputs "glib") "/lib/" all))))))))))
77a5461c
PN
3320
3321(define-public sbcl-cl-cffi-gtk-gobject
3322 (package
3323 (inherit sbcl-cl-cffi-gtk-boot0)
3324 (name "sbcl-cl-cffi-gtk-gobject")
3325 (inputs
3326 `(("glib" ,glib)
3327 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3328 ("trivial-garbage" ,sbcl-trivial-garbage)
3329 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3330 ("closer-mop" ,sbcl-closer-mop)
3331 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3332 (arguments
3333 `(#:asd-file "gobject/cl-cffi-gtk-gobject.asd"
3334 #:phases
3335 (modify-phases %standard-phases
3336 (add-after 'unpack 'fix-paths
3337 (lambda* (#:key inputs #:allow-other-keys)
3338 (substitute* "gobject/gobject.init.lisp"
3339 (("libgobject" all) (string-append
3340 (assoc-ref inputs "glib") "/lib/" all))))))))))
867b3f47
PN
3341
3342(define-public sbcl-cl-cffi-gtk-gio
3343 (package
3344 (inherit sbcl-cl-cffi-gtk-boot0)
3345 (name "sbcl-cl-cffi-gtk-gio")
3346 (inputs
3347 `(("glib" ,glib)
3348 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3349 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3350 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3351 (arguments
3352 `(#:asd-file "gio/cl-cffi-gtk-gio.asd"
3353 #:phases
3354 (modify-phases %standard-phases
3355 (add-after 'unpack 'fix-paths
3356 (lambda* (#:key inputs #:allow-other-keys)
3357 (substitute* "gio/gio.init.lisp"
3358 (("libgio" all)
3359 (string-append
3360 (assoc-ref inputs "glib") "/lib/" all))))))))))
7176fe7c
PN
3361
3362(define-public sbcl-cl-cffi-gtk-cairo
3363 (package
3364 (inherit sbcl-cl-cffi-gtk-boot0)
3365 (name "sbcl-cl-cffi-gtk-cairo")
3366 (inputs
3367 `(("cairo" ,cairo)
3368 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3369 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3370 (arguments
3371 `(#:asd-file "cairo/cl-cffi-gtk-cairo.asd"
3372 #:phases
3373 (modify-phases %standard-phases
3374 (add-after 'unpack 'fix-paths
3375 (lambda* (#:key inputs #:allow-other-keys)
3376 (substitute* "cairo/cairo.init.lisp"
3377 (("libcairo" all)
3378 (string-append
3379 (assoc-ref inputs "cairo") "/lib/" all))))))))))
9ecc457b
PN
3380
3381(define-public sbcl-cl-cffi-gtk-pango
3382 (package
3383 (inherit sbcl-cl-cffi-gtk-boot0)
3384 (name "sbcl-cl-cffi-gtk-pango")
3385 (inputs
3386 `(("pango" ,pango)
3387 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3388 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3389 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3390 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3391 (arguments
3392 `(#:asd-file "pango/cl-cffi-gtk-pango.asd"
3393 #:phases
3394 (modify-phases %standard-phases
3395 (add-after 'unpack 'fix-paths
3396 (lambda* (#:key inputs #:allow-other-keys)
3397 (substitute* "pango/pango.init.lisp"
3398 (("libpango" all)
3399 (string-append
3400 (assoc-ref inputs "pango") "/lib/" all))))))))))
a3bdddc3
PN
3401
3402(define-public sbcl-cl-cffi-gtk-gdk-pixbuf
3403 (package
3404 (inherit sbcl-cl-cffi-gtk-boot0)
3405 (name "sbcl-cl-cffi-gtk-gdk-pixbuf")
3406 (inputs
3407 `(("gdk-pixbuf" ,gdk-pixbuf)
3408 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3409 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3410 (arguments
3411 `(#:asd-file "gdk-pixbuf/cl-cffi-gtk-gdk-pixbuf.asd"
3412 #:phases
3413 (modify-phases %standard-phases
3414 (add-after 'unpack 'fix-paths
3415 (lambda* (#:key inputs #:allow-other-keys)
3416 (substitute* "gdk-pixbuf/gdk-pixbuf.init.lisp"
3417 (("libgdk_pixbuf" all)
3418 (string-append
3419 (assoc-ref inputs "gdk-pixbuf") "/lib/" all))))))))))
7b5b8c44
PN
3420
3421(define-public sbcl-cl-cffi-gtk-gdk
3422 (package
3423 (inherit sbcl-cl-cffi-gtk-boot0)
3424 (name "sbcl-cl-cffi-gtk-gdk")
3425 (inputs
3426 `(("gtk" ,gtk+)
3427 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3428 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3429 ("cl-cffi-gtk-gdk-pixbuf" ,sbcl-cl-cffi-gtk-gdk-pixbuf)
3430 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3431 ("cl-cffi-gtk-pango" ,sbcl-cl-cffi-gtk-pango)
3432 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3433 (arguments
3434 `(#:asd-file "gdk/cl-cffi-gtk-gdk.asd"
3435 #:phases
3436 (modify-phases %standard-phases
3437 (add-after 'unpack 'fix-paths
3438 (lambda* (#:key inputs #:allow-other-keys)
3439 (substitute* "gdk/gdk.init.lisp"
3440 (("libgdk" all)
3441 (string-append
3442 (assoc-ref inputs "gtk") "/lib/" all)))
3443 (substitute* "gdk/gdk.package.lisp"
3444 (("libgtk" all)
3445 (string-append
3446 (assoc-ref inputs "gtk") "/lib/" all))))))))))
c80dfee9
PN
3447
3448(define-public sbcl-cl-cffi-gtk
3449 (package
3450 (inherit sbcl-cl-cffi-gtk-boot0)
3451 (name "sbcl-cl-cffi-gtk")
3452 (inputs
3453 `(("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3454 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3455 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3456 ("cl-cffi-gtk-gdk" ,sbcl-cl-cffi-gtk-gdk)
3457 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3458 (native-inputs
3459 `(("fiveam" ,sbcl-fiveam)))
3460 (arguments
3461 `(#:asd-file "gtk/cl-cffi-gtk.asd"
3462 #:test-asd-file "test/cl-cffi-gtk-test.asd"
3463 ;; TODO: Tests fail with memory fault.
3464 ;; See https://github.com/Ferada/cl-cffi-gtk/issues/24.
3465 #:tests? #f))))
24fd7586
PN
3466
3467(define-public sbcl-cl-webkit
3468 (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31"))
3469 (package
3470 (name "sbcl-cl-webkit")
3471 (version (git-version "2.4" "1" commit))
3472 (source
3473 (origin
3474 (method git-fetch)
3475 (uri (git-reference
f6e95280 3476 (url "https://github.com/jmercouris/cl-webkit")
24fd7586
PN
3477 (commit commit)))
3478 (file-name (git-file-name "cl-webkit" version))
3479 (sha256
3480 (base32
3481 "0f5lyn9i7xrn3g1bddga377mcbawkbxydijpg389q4n04gqj0vwf"))))
3482 (build-system asdf-build-system/sbcl)
3483 (inputs
3484 `(("cffi" ,sbcl-cffi)
3485 ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
3486 ("webkitgtk" ,webkitgtk)))
3487 (arguments
3488 `(#:asd-file "webkit2/cl-webkit2.asd"
3489 #:asd-system-name "cl-webkit2"
3490 #:phases
3491 (modify-phases %standard-phases
3492 (add-after 'unpack 'fix-paths
3493 (lambda* (#:key inputs #:allow-other-keys)
3494 (substitute* "webkit2/webkit2.init.lisp"
3495 (("libwebkit2gtk" all)
3496 (string-append
3497 (assoc-ref inputs "webkitgtk") "/lib/" all))))))))
f6e95280 3498 (home-page "https://github.com/jmercouris/cl-webkit")
24fd7586
PN
3499 (synopsis "Binding to WebKitGTK+ for Common Lisp")
3500 (description
3501 "@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp,
3502currently targeting WebKit version 2. The WebKitGTK+ library adds web
3503browsing capabilities to an application, leveraging the full power of the
3504WebKit browsing engine.")
3505 (license license:expat))))
e2e5004f
PN
3506
3507(define-public sbcl-lparallel
3508 (package
3509 (name "sbcl-lparallel")
3510 (version "2.8.4")
3511 (source
3512 (origin
3513 (method git-fetch)
3514 (uri (git-reference
3515 (url "https://github.com/lmj/lparallel/")
3516 (commit (string-append "lparallel-" version))))
3517 (file-name (git-file-name "lparallel" version))
3518 (sha256
3519 (base32
3520 "0g0aylrbbrqsz0ahmwhvnk4cmc2931fllbpcfgzsprwnqqd7vwq9"))))
3521 (build-system asdf-build-system/sbcl)
3522 (inputs
3523 `(("alexandria" ,sbcl-alexandria)
3524 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3525 ("trivial-garbage" ,sbcl-trivial-garbage)))
3526 (home-page "https://lparallel.org/")
3527 (synopsis "Parallelism for Common Lisp")
3528 (description
3529 "@command{lparallel} is a library for parallel programming in Common
3530Lisp, featuring:
3531
3532@itemize
3533@item a simple model of task submission with receiving queue,
3534@item constructs for expressing fine-grained parallelism,
3535@item asynchronous condition handling across thread boundaries,
3536@item parallel versions of map, reduce, sort, remove, and many others,
3537@item promises, futures, and delayed evaluation constructs,
3538@item computation trees for parallelizing interconnected tasks,
3539@item bounded and unbounded FIFO queues,
3540@item high and low priority tasks,
3541@item task killing by category,
3542@item integrated timeouts.
3543@end itemize\n")
3544 (license license:expat)))
3545
3546(define-public cl-lparallel
3547 (sbcl-package->cl-source-package sbcl-lparallel))
3548
3549(define-public ecl-lparallel
3550 (sbcl-package->ecl-package sbcl-lparallel))
96ce8b55
PN
3551
3552(define-public sbcl-cl-markup
3553 (let ((commit "e0eb7debf4bdff98d1f49d0f811321a6a637b390"))
3554 (package
3555 (name "sbcl-cl-markup")
3556 (version (git-version "0.1" "1" commit))
3557 (source
3558 (origin
3559 (method git-fetch)
3560 (uri (git-reference
3561 (url "https://github.com/arielnetworks/cl-markup/")
3562 (commit commit)))
3563 (file-name (git-file-name "cl-markup" version))
3564 (sha256
3565 (base32
3566 "10l6k45971dl13fkdmva7zc6i453lmq9j4xax2ci6pjzlc6xjhp7"))))
3567 (build-system asdf-build-system/sbcl)
3568 (home-page "https://github.com/arielnetworks/cl-markup/")
3569 (synopsis "Markup generation library for Common Lisp")
3570 (description
3571 "A modern markup generation library for Common Lisp that features:
3572
3573@itemize
3574@item Fast (even faster through compiling the code)
3575@item Safety
3576@item Support for multiple document types (markup, xml, html, html5, xhtml)
3577@item Output with doctype
3578@item Direct output to stream
3579@end itemize\n")
3580 (license license:lgpl3+))))
3581
3582(define-public cl-markup
3583 (sbcl-package->cl-source-package sbcl-cl-markup))
3584
3585(define-public ecl-cl-markup
3586 (sbcl-package->ecl-package sbcl-cl-markup))
9eeef6ab
PN
3587
3588(define-public sbcl-cl-css
3589 (let ((commit "8fe654c8f0cf95b300718101cce4feb517f78e2f"))
3590 (package
3591 (name "sbcl-cl-css")
3592 (version (git-version "0.1" "1" commit))
3593 (source
3594 (origin
3595 (method git-fetch)
3596 (uri (git-reference
3597 (url "https://github.com/inaimathi/cl-css/")
3598 (commit commit)))
3599 (file-name (git-file-name "cl-css" version))
3600 (sha256
3601 (base32
3602 "1lc42zi2sw11fl2589sc19nr5sd2p0wy7wgvgwaggxa5f3ajhsmd"))))
3603 (build-system asdf-build-system/sbcl)
3604 (home-page "https://github.com/inaimathi/cl-css/")
3605 (synopsis "Non-validating, inline CSS generator for Common Lisp")
3606 (description
3607 "This is a dead-simple, non validating, inline CSS generator for Common
3608Lisp. Its goals are axiomatic syntax, simple implementation to support
3609portability, and boilerplate reduction in CSS.")
3610 (license license:expat))))
3611
3612(define-public cl-css
3613 (sbcl-package->cl-source-package sbcl-cl-css))
3614
3615(define-public ecl-cl-markup
3616 (sbcl-package->ecl-package sbcl-cl-css))
9fabcb6c
PN
3617
3618(define-public sbcl-portable-threads
3619 (let ((commit "c0e61a1faeb0583c80fd3f20b16cc4c555226920"))
3620 (package
3621 (name "sbcl-portable-threads")
3622 (version (git-version "2.3" "1" commit))
3623 (source
3624 (origin
3625 (method git-fetch)
3626 (uri (git-reference
3627 (url "https://github.com/binghe/portable-threads/")
3628 (commit commit)))
3629 (file-name (git-file-name "portable-threads" version))
3630 (sha256
3631 (base32
3632 "03fmxyarc0xf4kavwkfa0a2spkyfrz6hbgbi9y4q7ny5aykdyfaq"))))
3633 (build-system asdf-build-system/sbcl)
3634 (arguments
3635 `(;; Tests seem broken.
3636 #:tests? #f))
3637 (home-page "https://github.com/binghe/portable-threads")
3638 (synopsis "Portable threads (and scheduled and periodic functions) API for Common Lisp")
3639 (description
3640 "Portable Threads (and Scheduled and Periodic Functions) API for Common
3641Lisp (from GBBopen project).")
3642 (license license:asl2.0))))
3643
3644(define-public cl-portable-threads
3645 (sbcl-package->cl-source-package sbcl-portable-threads))
3646
3647(define-public ecl-portable-threada
3648 (sbcl-package->ecl-package sbcl-portable-threads))
75c95c76
PN
3649
3650(define-public sbcl-usocket-boot0
3651 ;; usocket's test rely on usocket-server which depends on usocket itself.
3652 ;; We break this cyclic dependency with -boot0 that packages usocket.
3653 (let ((commit "86e7efbfe50101931edf4b67cdcfa7e221ecfde9"))
3654 (package
3655 (name "sbcl-usocket-boot0")
3656 (version (git-version "0.7.1" "1" commit))
3657 (source
3658 (origin
3659 (method git-fetch)
3660 (uri (git-reference
3661 (url "https://github.com/usocket/usocket/")
3662 (commit commit)))
3663 (file-name (git-file-name "usocket" version))
3664 (sha256
3665 (base32
3666 "1lk6ipakrib7kdgzw44hrgmls9akp5pz4h35yynw0k5zwmmq6374"))))
3667 (build-system asdf-build-system/sbcl)
3668 (inputs
3669 `(("split-sequence" ,sbcl-split-sequence)))
3670 (arguments
3671 `(#:tests? #f
3672 #:asd-system-name "usocket"))
3673 (home-page "https://common-lisp.net/project/usocket/")
3674 (synopsis "Universal socket library for Common Lisp (server side)")
3675 (description
3676 "This library strives to provide a portable TCP/IP and UDP/IP socket
3677interface for as many Common Lisp implementations as possible, while keeping
3678the abstraction and portability layer as thin as possible.")
3679 (license license:expat))))
be01e79c
PN
3680
3681(define-public sbcl-usocket-server
3682 (package
3683 (inherit sbcl-usocket-boot0)
3684 (name "sbcl-usocket-server")
3685 (inputs
3686 `(("usocket" ,sbcl-usocket-boot0)
3687 ("portable-threads" ,sbcl-portable-threads)))
3688 (arguments
3689 '(#:asd-system-name "usocket-server"))
3690 (synopsis "Universal socket library for Common Lisp (server side)")))
3691
3692(define-public cl-usocket-server
3693 (sbcl-package->cl-source-package sbcl-usocket-server))
3694
3695(define-public ecl-socket-server
3696 (sbcl-package->ecl-package sbcl-usocket-server))
79dc47c9
PN
3697
3698(define-public sbcl-usocket
3699 (package
3700 (inherit sbcl-usocket-boot0)
3701 (name "sbcl-usocket")
3702 (arguments
3703 ;; FIXME: Tests need network access?
3704 `(#:tests? #f))
3705 (native-inputs
3706 ;; Testing only.
3707 `(("usocket-server" ,sbcl-usocket-server)
3708 ("rt" ,sbcl-rt)))))
3709
3710(define-public cl-usocket
3711 (sbcl-package->cl-source-package sbcl-usocket))
3712
3713(define-public ecl-socket
3714 (sbcl-package->ecl-package sbcl-usocket))
c931f809
PN
3715
3716(define-public sbcl-s-xml
3717 (package
3718 (name "sbcl-s-xml")
3719 (version "3")
3720 (source
3721 (origin
3722 (method url-fetch)
3723 (uri "https://common-lisp.net/project/s-xml/s-xml.tgz")
3724 (sha256
3725 (base32
3726 "061qcr0dzshsa38s5ma4ay924cwak2nq9gy59dw6v9p0qb58nzjf"))))
3727 (build-system asdf-build-system/sbcl)
3728 (home-page "https://common-lisp.net/project/s-xml/")
3729 (synopsis "Simple XML parser implemented in Common Lisp")
3730 (description
3731 "S-XML is a simple XML parser implemented in Common Lisp. This XML
3732parser implementation has the following features:
3733
3734@itemize
3735@item It works (handling many common XML usages).
3736@item It is very small (the core is about 700 lines of code, including
3737comments and whitespace).
3738@item It has a core API that is simple, efficient and pure functional, much
3739like that from SSAX (see also http://ssax.sourceforge.net).
3740@item It supports different DOM models: an XSML-based one, an LXML-based one
3741and a classic xml-element struct based one.
3742@item It is reasonably time and space efficient (internally avoiding garbage
3743generatation as much as possible).
3744@item It does support CDATA.
3745@item It should support the same character sets as your Common Lisp
3746implementation.
3747@item It does support XML name spaces.
3748@end itemize
3749
3750This XML parser implementation has the following limitations:
3751
3752@itemize
3753@item It does not support any special tags (like processing instructions).
3754@item It is not validating, even skips DTD's all together.
3755@end itemize\n")
3756 (license license:lgpl3+)))
3757
3758(define-public cl-s-xml
3759 (sbcl-package->cl-source-package sbcl-s-xml))
3760
3761(define-public ecl-s-xml
3762 (sbcl-package->ecl-package sbcl-s-xml))
8c5160db
PN
3763
3764(define-public sbcl-s-xml-rpc
3765 (package
3766 (name "sbcl-s-xml-rpc")
3767 (version "7")
3768 (source
3769 (origin
3770 (method url-fetch)
3771 (uri "https://common-lisp.net/project/s-xml-rpc/s-xml-rpc.tgz")
3772 (sha256
3773 (base32
3774 "02z7k163d51v0pzk8mn1xb6h5s6x64gjqkslhwm3a5x26k2gfs11"))))
3775 (build-system asdf-build-system/sbcl)
3776 (inputs
3777 `(("s-xml" ,sbcl-s-xml)))
3778 (home-page "https://common-lisp.net/project/s-xml-rpc/")
3779 (synopsis "Implementation of XML-RPC in Common Lisp for both client and server")
3780 (description
3781 "S-XML-RPC is an implementation of XML-RPC in Common Lisp for both
3782client and server.")
3783 (license license:lgpl3+)))
3784
3785(define-public cl-s-xml-rpc
3786 (sbcl-package->cl-source-package sbcl-s-xml-rpc))
3787
3788(define-public ecl-s-xml-rpc
3789 (sbcl-package->ecl-package sbcl-s-xml-rpc))
2c742a06
PN
3790
3791(define-public sbcl-trivial-clipboard
6693cdd6 3792 (let ((commit "5af3415d1484e6d69a1b5c178f24680d9fd01796"))
2c742a06
PN
3793 (package
3794 (name "sbcl-trivial-clipboard")
6693cdd6 3795 (version (git-version "0.0.0.0" "2" commit))
2c742a06
PN
3796 (source
3797 (origin
3798 (method git-fetch)
3799 (uri (git-reference
3800 (url "https://github.com/snmsts/trivial-clipboard")
3801 (commit commit)))
6693cdd6 3802 (file-name (git-file-name "trivial-clipboard" version))
2c742a06
PN
3803 (sha256
3804 (base32
6693cdd6 3805 "1gb515z5yq6h5548pb1fwhmb0hhq1ssyb78pvxh4alq799xipxs9"))))
2c742a06
PN
3806 (build-system asdf-build-system/sbcl)
3807 (inputs
3808 `(("xclip" ,xclip)))
3809 (native-inputs
3810 `(("fiveam" ,sbcl-fiveam)))
3811 (arguments
3812 `(#:phases
3813 (modify-phases %standard-phases
3814 (add-after 'unpack 'fix-paths
3815 (lambda* (#:key inputs #:allow-other-keys)
3816 (substitute* "src/text.lisp"
6693cdd6
PN
3817 (("\\(executable-find \"xclip\"\\)")
3818 (string-append "(executable-find \""
3819 (assoc-ref inputs "xclip")
3820 "/bin/xclip\")"))))))))
2c742a06
PN
3821 (home-page "https://github.com/snmsts/trivial-clipboard")
3822 (synopsis "Access system clipboard in Common Lisp")
3823 (description
3824 "@command{trivial-clipboard} gives access to the system clipboard.")
3825 (license license:expat))))
3826
3827(define-public cl-trivial-clipboard
3828 (sbcl-package->cl-source-package sbcl-trivial-clipboard))
3829
3830(define-public ecl-trivial-clipboard
3831 (sbcl-package->ecl-package sbcl-trivial-clipboard))