gnu: sysstat: Update to 12.1.6.
[jackhill/guix/guix.git] / gnu / packages / lisp.scm
CommitLineData
f842bbed
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 John Darrington <jmd@gnu.org>
00ab9458 3;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
e396976b 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
05f5ce0c 5;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch>
47956fa0 6;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
14afc7b8 7;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
e24ef369 8;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
f3cd6633 9;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
46c1c553 10;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
56c240ba 11;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
28e32b14 12;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
27ebd5c4 13;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
c894b803 14;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
5914489d 15;;; Copyright © 2019 Katherine Cox-Buday <cox.katherine.e@gmail.com>
29331827 16;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
a0c3a2e3 17;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
f842bbed
JD
18;;;
19;;; This file is part of GNU Guix.
20;;;
21;;; GNU Guix is free software; you can redistribute it and/or modify it
22;;; under the terms of the GNU General Public License as published by
23;;; the Free Software Foundation; either version 3 of the License, or (at
24;;; your option) any later version.
25;;;
26;;; GNU Guix is distributed in the hope that it will be useful, but
27;;; WITHOUT ANY WARRANTY; without even the implied warranty of
28;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29;;; GNU General Public License for more details.
30;;;
31;;; You should have received a copy of the GNU General Public License
32;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33
34(define-module (gnu packages lisp)
35 #:use-module (gnu packages)
b5b73a82 36 #:use-module ((guix licenses) #:prefix license:)
f842bbed 37 #:use-module (guix packages)
f842bbed 38 #:use-module (guix download)
423eef36 39 #:use-module (guix git-download)
a927eb36 40 #:use-module (guix hg-download)
f842bbed 41 #:use-module (guix utils)
00ab9458 42 #:use-module (guix build-system gnu)
28e32b14 43 #:use-module (guix build-system ant)
a72debb7 44 #:use-module (guix build-system asdf)
e3e171ee 45 #:use-module (guix build-system trivial)
5ff15b86 46 #:use-module (gnu packages admin)
ce0614dd 47 #:use-module (gnu packages base)
5ff15b86 48 #:use-module (gnu packages bdw-gc)
a0c3a2e3 49 #:use-module (gnu packages bison)
ef656e11 50 #:use-module (gnu packages c)
05c63898 51 #:use-module (gnu packages compression)
5ff15b86 52 #:use-module (gnu packages ed)
a0c3a2e3 53 #:use-module (gnu packages flex)
05c63898 54 #:use-module (gnu packages fontutils)
5ff15b86
EF
55 #:use-module (gnu packages gcc)
56 #:use-module (gnu packages gettext)
57 #:use-module (gnu packages gl)
58 #:use-module (gnu packages glib)
59 #:use-module (gnu packages m4)
05c63898 60 #:use-module (gnu packages maths)
00ab9458 61 #:use-module (gnu packages multiprecision)
f473b8f1 62 #:use-module (gnu packages ncurses)
560f51d0 63 #:use-module (gnu packages libffcall)
5ff15b86 64 #:use-module (gnu packages libffi)
b702b52d 65 #:use-module (gnu packages libsigsegv)
05c63898 66 #:use-module (gnu packages linux)
5ff15b86 67 #:use-module (gnu packages perl)
05c63898 68 #:use-module (gnu packages pkg-config)
20b96ced
KCB
69 #:use-module (gnu packages python)
70 #:use-module (gnu packages python-xyz)
5ff15b86
EF
71 #:use-module (gnu packages readline)
72 #:use-module (gnu packages sdl)
cd0322a3 73 #:use-module (gnu packages sqlite)
5ff15b86
EF
74 #:use-module (gnu packages tex)
75 #:use-module (gnu packages texinfo)
d1ae5a12 76 #:use-module (gnu packages tls)
531a9aac 77 #:use-module (gnu packages version-control)
05c63898 78 #:use-module (gnu packages xorg)
8f065b47 79 #:use-module (gnu packages databases)
64dcf7d9 80 #:use-module (gnu packages gtk)
24fd7586 81 #:use-module (gnu packages webkit)
2c742a06 82 #:use-module (gnu packages xdisorg)
419fb3f1 83 #:use-module (ice-9 match)
1de50cb7 84 #:use-module (srfi srfi-19))
f842bbed 85
8d0489ae
AP
86(define (asdf-substitutions lisp)
87 ;; Prepend XDG_DATA_DIRS/LISP-bundle-systems to ASDF's
88 ;; 'default-system-source-registry'.
89 `((("\\(,dir \"systems/\"\\)\\)")
90 (format #f
91 "(,dir \"~a-bundle-systems\")))
92
93 ,@(loop :for dir :in (xdg-data-dirs \"common-lisp/\")
94 :collect `(:directory (,dir \"systems\"))"
95 ,lisp))))
96
f842bbed 97(define-public gcl
5a8b00f2
KK
98 (let ((commit "d3335e2b3deb63f930eb0328e9b05377744c9512")
99 (revision "2")) ;Guix package revision
dd0134fc
KK
100 (package
101 (name "gcl")
102 (version (string-append "2.6.12-" revision "."
103 (string-take commit 7)))
104 (source
105 (origin
106 (method git-fetch)
107 (uri (git-reference
108 (url "https://git.savannah.gnu.org/r/gcl.git")
109 (commit commit)))
110 (file-name (string-append "gcl-" version "-checkout"))
111 (sha256
5a8b00f2 112 (base32 "05v86lhvsby05nzvcd3c4k0wljvgdgd0i6arzd2fx1yd67dl6fgj"))))
dd0134fc
KK
113 (build-system gnu-build-system)
114 (arguments
115 `(#:parallel-build? #f ; The build system seems not to be thread safe.
116 #:tests? #f ; There does not seem to be make check or anything similar.
117 #:configure-flags '("--enable-ansi") ; required for use by the maxima package
118 #:make-flags (list
119 (string-append "GCL_CC=" (assoc-ref %build-inputs "gcc")
120 "/bin/gcc")
121 (string-append "CC=" (assoc-ref %build-inputs "gcc")
122 "/bin/gcc"))
123 #:phases
124 (modify-phases %standard-phases
125 (add-before 'configure 'pre-conf
126 (lambda* (#:key inputs #:allow-other-keys)
127 (chdir "gcl")
128 (substitute*
129 (append
130 '("pcl/impl/kcl/makefile.akcl"
131 "add-defs"
132 "unixport/makefile.dos"
133 "add-defs.bat"
134 "gcl-tk/makefile.prev"
135 "add-defs1")
136 (find-files "h" "\\.defs"))
137 (("SHELL=/bin/bash")
138 (string-append "SHELL=" (which "bash")))
139 (("SHELL=/bin/sh")
140 (string-append "SHELL=" (which "sh"))))
141 (substitute* "h/linux.defs"
142 (("#CC") "CC")
143 (("-fwritable-strings") "")
144 (("-Werror") ""))
145 (substitute* "lsp/gcl_top.lsp"
146 (("\"cc\"")
147 (string-append "\"" (assoc-ref %build-inputs "gcc")
148 "/bin/gcc\""))
149 (("\\(or \\(get-path \\*cc\\*\\) \\*cc\\*\\)") "*cc*")
150 (("\"ld\"")
151 (string-append "\"" (assoc-ref %build-inputs "binutils")
152 "/bin/ld\""))
153 (("\\(or \\(get-path \\*ld\\*\\) \\*ld\\*\\)") "*ld*")
154 (("\\(get-path \"objdump --source \"\\)")
155 (string-append "\"" (assoc-ref %build-inputs "binutils")
156 "/bin/objdump --source \"")))
157 #t))
158 (add-after 'install 'wrap
159 (lambda* (#:key inputs outputs #:allow-other-keys)
160 (let* ((gcl (assoc-ref outputs "out"))
161 (input-path (lambda (lib path)
162 (string-append
163 (assoc-ref inputs lib) path)))
164 (binaries '("binutils")))
165 ;; GCC and the GNU binutils are necessary for GCL to be
166 ;; able to compile Lisp functions and programs (this is
167 ;; a standard feature in Common Lisp). While the
168 ;; the location of GCC is specified in the make-flags,
169 ;; the GNU binutils must be available in GCL's $PATH.
170 (wrap-program (string-append gcl "/bin/gcl")
171 `("PATH" prefix ,(map (lambda (binary)
172 (input-path binary "/bin"))
173 binaries))))
174 #t))
175 ;; drop strip phase to make maxima build, see
176 ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html
177 (delete 'strip))))
178 (inputs
179 `(("gmp" ,gmp)
180 ("readline" ,readline)))
181 (native-inputs
978154ae 182 `(("m4" ,m4)
27ebd5c4 183 ("texinfo" ,texinfo)))
dd0134fc
KK
184 (home-page "https://www.gnu.org/software/gcl/")
185 (synopsis "A Common Lisp implementation")
186 (description "GCL is an implementation of the Common Lisp language. It
f842bbed
JD
187features the ability to compile to native object code and to load native
188object code modules directly into its lisp core. It also features a
189stratified garbage collection strategy, a source-level debugger and a built-in
190interface to the Tk widget system.")
dd0134fc 191 (license license:lgpl2.0+))))
f842bbed 192
00ab9458
TUBK
193(define-public ecl
194 (package
195 (name "ecl")
108f69c4 196 (version "16.1.3")
00ab9458
TUBK
197 (source
198 (origin
199 (method url-fetch)
e0524511
AP
200 (uri (string-append
201 "https://common-lisp.net/project/ecl/static/files/release/"
202 name "-" version ".tgz"))
00ab9458 203 (sha256
108f69c4 204 (base32 "0m0j24w5d5a9dwwqyrg0d35c0nys16ijb4r0nyk87yp82v38b9bn"))
fb7dc6d6
AP
205 (modules '((guix build utils)))
206 (snippet
207 ;; Add ecl-bundle-systems to 'default-system-source-registry'.
6cbee49d
MW
208 `(begin
209 (substitute* "contrib/asdf/asdf.lisp"
210 ,@(asdf-substitutions name))
211 #t))))
00ab9458 212 (build-system gnu-build-system)
cb03a9b6 213 ;; src/configure uses 'which' to confirm the existence of 'gzip'.
00ab9458
TUBK
214 (native-inputs `(("which" ,which)))
215 (inputs `(("gmp" ,gmp)
216 ("libatomic-ops" ,libatomic-ops)
217 ("libgc" ,libgc)
218 ("libffi" ,libffi)))
219 (arguments
60474cd1 220 '(#:tests? #t
60474cd1
AP
221 #:parallel-tests? #f
222 #:phases
223 (modify-phases %standard-phases
224 (delete 'check)
54a43ff4
AP
225 (add-after 'install 'wrap
226 (lambda* (#:key inputs outputs #:allow-other-keys)
227 (let* ((ecl (assoc-ref outputs "out"))
228 (input-path (lambda (lib path)
229 (string-append
230 (assoc-ref inputs lib) path)))
231 (libraries '("gmp" "libatomic-ops" "libgc" "libffi" "libc"))
232 (binaries '("gcc" "ld-wrapper" "binutils"))
233 (library-directories
234 (map (lambda (lib) (input-path lib "/lib"))
235 libraries)))
236
237 (wrap-program (string-append ecl "/bin/ecl")
238 `("PATH" prefix
239 ,(map (lambda (binary)
240 (input-path binary "/bin"))
241 binaries))
242 `("CPATH" suffix
243 ,(map (lambda (lib)
244 (input-path lib "/include"))
932b2ea2 245 `("kernel-headers" ,@libraries)))
54a43ff4
AP
246 `("LIBRARY_PATH" suffix ,library-directories)
247 `("LD_LIBRARY_PATH" suffix ,library-directories)))))
108f69c4
AP
248 (add-after 'wrap 'check (assoc-ref %standard-phases 'check))
249 (add-before 'check 'fix-path-to-ecl
250 (lambda _
251 (substitute* "build/tests/Makefile"
252 (("\\$\\{exec_prefix\\}/") ""))
253 #t)))))
fb7dc6d6
AP
254 (native-search-paths
255 (list (search-path-specification
256 (variable "XDG_DATA_DIRS")
257 (files '("share")))))
00ab9458
TUBK
258 (home-page "http://ecls.sourceforge.net/")
259 (synopsis "Embeddable Common Lisp")
260 (description "ECL is an implementation of the Common Lisp language as
261defined by the ANSI X3J13 specification. Its most relevant features are: a
262bytecode compiler and interpreter, being able to compile Common Lisp with any
263C/C++ compiler, being able to build standalone executables and libraries, and
264supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
265 ;; Note that the file "Copyright" points to some files and directories
266 ;; which aren't under the lgpl2.0+ and instead contain many different,
267 ;; non-copyleft licenses.
268 (license license:lgpl2.0+)))
560f51d0
TUBK
269
270(define-public clisp
271 (package
272 (name "clisp")
e4c399fe 273 (version "2.49-92")
560f51d0
TUBK
274 (source
275 (origin
e4c399fe
EF
276 (method git-fetch)
277 (uri (git-reference
278 (url "https://gitlab.com/gnu-clisp/clisp")
279 (commit "clisp-2.49.92-2018-02-18")))
280 (file-name (git-file-name name version))
560f51d0 281 (sha256
e4c399fe
EF
282 (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))
283 (patches (search-patches "clisp-remove-failing-test.patch"))))
560f51d0
TUBK
284 (build-system gnu-build-system)
285 (inputs `(("libffcall" ,libffcall)
f473b8f1
EF
286 ("ncurses" ,ncurses)
287 ("readline" ,readline)
560f51d0
TUBK
288 ("libsigsegv" ,libsigsegv)))
289 (arguments
e4c399fe
EF
290 `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"
291 (or (%current-system)
292 (%current-target-system)))
293 '("CFLAGS=-falign-functions=4")
294 '())
295 "--with-dynamic-ffi"
296 "--with-dynamic-modules"
297 "--with-module=rawsock")
f90ef3c3
MW
298 #:build #f
299 #:phases
636c77d0
RW
300 (modify-phases %standard-phases
301 (add-after 'unpack 'patch-sh-and-pwd
302 (lambda _
303 ;; The package is very messy with its references to "/bin/sh" and
304 ;; some other absolute paths to traditional tools. These appear in
305 ;; many places where our automatic patching misses them. Therefore
306 ;; we do the following, in this early (post-unpack) phase, to solve
307 ;; the problem from its root.
e4c399fe
EF
308 (substitute* '("src/clisp-link.in"
309 "src/unix.d"
310 "src/makemake.in")
311 (("/bin/sh") (which "sh")))
636c77d0
RW
312 (substitute* (find-files "." "configure|Makefile")
313 (("/bin/sh") "sh"))
314 (substitute* '("src/clisp-link.in")
315 (("/bin/pwd") "pwd"))
636c77d0 316 #t)))
560f51d0
TUBK
317 ;; Makefiles seem to have race conditions.
318 #:parallel-build? #f))
e4c399fe 319 (home-page "https://clisp.sourceforge.io/")
4cc78cb3
LC
320 (synopsis "A Common Lisp implementation")
321 (description
322 "GNU CLISP is an implementation of ANSI Common Lisp. Common Lisp is a
323high-level, object-oriented functional programming language. CLISP includes
324an interpreter, a compiler, a debugger, and much more.")
4bd2e2a5 325 (license license:gpl2+)))
b702b52d
TUBK
326
327(define-public sbcl
328 (package
329 (name "sbcl")
0908f931 330 (version "1.5.5")
b702b52d
TUBK
331 (source
332 (origin
333 (method url-fetch)
334 (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
335 version "-source.tar.bz2"))
336 (sha256
0908f931 337 (base32 "1qmapk2hyxxqd3ajiqacz4isij0ibx7gn10n8dbmq33gm3kgliyb"))
8d0489ae
AP
338 (modules '((guix build utils)))
339 (snippet
340 ;; Add sbcl-bundle-systems to 'default-system-source-registry'.
6cbee49d
MW
341 `(begin
342 (substitute* "contrib/asdf/asdf.lisp"
343 ,@(asdf-substitutions name))
344 #t))))
b702b52d 345 (build-system gnu-build-system)
05f5ce0c 346 (outputs '("out" "doc"))
b702b52d 347 (native-inputs
4bddcae9
PN
348 ;; From INSTALL:
349 ;; Supported build hosts are:
350 ;; SBCL
351 ;; CMUCL
352 ;; CCL (formerly known as OpenMCL)
353 ;; ABCL (recent versions only)
354 ;; CLISP (only some versions: 2.44.1 is OK, 2.47 is not)
355 ;; XCL
76d520fa
EF
356 ;; CCL seems ideal then, but it unfortunately only builds reliably
357 ;; on some architectures.
358 `(,@(match (%current-system)
359 ((or "x86_64-linux" "i686-linux")
360 `(("ccl" ,ccl)))
361 (_
362 `(("clisp" ,clisp))))
b702b52d
TUBK
363 ("which" ,which)
364 ("inetutils" ,inetutils) ;for hostname(1)
05f5ce0c 365 ("ed" ,ed)
4bddcae9 366 ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
5c8b9a43
PN
367 ("texinfo" ,texinfo)
368 ("zlib" ,zlib)))
b702b52d 369 (arguments
76d520fa 370 `(#:modules ((guix build gnu-build-system)
f0b7dc7e
ST
371 (guix build utils)
372 (srfi srfi-1))
373 #:phases
1ee131df
FB
374 (modify-phases %standard-phases
375 (delete 'configure)
376 (add-before 'build 'patch-unix-tool-paths
377 (lambda* (#:key outputs inputs #:allow-other-keys)
378 (let ((out (assoc-ref outputs "out"))
379 (bash (assoc-ref inputs "bash"))
380 (coreutils (assoc-ref inputs "coreutils"))
381 (ed (assoc-ref inputs "ed")))
382 (define (quoted-path input path)
383 (string-append "\"" input path "\""))
384 ;; Patch absolute paths in string literals. Note that this
385 ;; occurs in some .sh files too (which contain Lisp code). Use
386 ;; ISO-8859-1 because some of the files are ISO-8859-1 encoded.
387 (with-fluids ((%default-port-encoding #f))
1925a879
AP
388 ;; The removed file is utf-16-be encoded, which gives substitute*
389 ;; trouble. It does not contain references to the listed programs.
390 (substitute* (delete
391 "./tests/data/compile-file-pos-utf16be.lisp"
392 (find-files "." "\\.(lisp|sh)$"))
1ee131df
FB
393 (("\"/bin/sh\"") (quoted-path bash "/bin/sh"))
394 (("\"/usr/bin/env\"") (quoted-path coreutils "/usr/bin/env"))
395 (("\"/bin/cat\"") (quoted-path coreutils "/bin/cat"))
396 (("\"/bin/ed\"") (quoted-path ed "/bin/ed"))
397 (("\"/bin/echo\"") (quoted-path coreutils "/bin/echo"))
398 (("\"/bin/uname\"") (quoted-path coreutils "/bin/uname"))))
399 ;; This one script has a non-string occurrence of /bin/sh.
400 (substitute* '("tests/foreign.test.sh")
401 ;; Leave whitespace so we don't match the shebang.
402 ((" /bin/sh ") " sh "))
403 ;; This file contains a module that can create executable files
404 ;; which depend on the presence of SBCL. It generates shell
405 ;; scripts doing "exec sbcl ..." to achieve this. We patch both
406 ;; the shebang and the reference to "sbcl", tying the generated
407 ;; executables to the exact SBCL package that generated them.
408 (substitute* '("contrib/sb-executable/sb-executable.lisp")
409 (("/bin/sh") (string-append bash "/bin/sh"))
410 (("exec sbcl") (string-append "exec " out "/bin/sbcl")))
411 ;; Disable some tests that fail in our build environment.
412 (substitute* '("contrib/sb-bsd-sockets/tests.lisp")
413 ;; This requires /etc/protocols.
414 (("\\(deftest get-protocol-by-name/error" all)
415 (string-append "#+nil ;disabled by Guix\n" all)))
416 (substitute* '("contrib/sb-posix/posix-tests.lisp")
417 ;; These assume some users/groups which we don't have.
418 (("\\(deftest pwent\\.[12]" all)
419 (string-append "#+nil ;disabled by Guix\n" all))
420 (("\\(deftest grent\\.[12]" all)
421 (string-append "#+nil ;disabled by Guix\n" all))))))
4bddcae9
PN
422 ;; FIXME: the texlive-union insists on regenerating fonts. It stores
423 ;; them in HOME, so it needs to be writeable.
424 (add-before 'build 'set-HOME
425 (lambda _ (setenv "HOME" "/tmp") #t))
5c8b9a43
PN
426 ;; TODO: We need to install the source as well (`src/code' directory)
427 ;; so that "go do definition" can work.
1ee131df
FB
428 (replace 'build
429 (lambda* (#:key outputs #:allow-other-keys)
430 (setenv "CC" "gcc")
76d520fa
EF
431 (invoke "sh" "make.sh" ,@(match (%current-system)
432 ((or "x86_64-linux" "i686-linux")
433 `("ccl"))
434 (_
435 `("clisp")))
4bddcae9 436 (string-append "--prefix="
5c8b9a43
PN
437 (assoc-ref outputs "out"))
438 "--with-sb-core-compression"
439 "--with-sb-xref-for-internals")))
1ee131df 440 (replace 'install
b702b52d 441 (lambda _
4bddcae9 442 (invoke "sh" "install.sh")))
05f5ce0c
FB
443 (add-after 'build 'build-doc
444 (lambda _
445 (with-directory-excursion "doc/manual"
4bddcae9
PN
446 (and (invoke "make" "info")
447 (invoke "make" "dist")))))
05f5ce0c
FB
448 (add-after 'install 'install-doc
449 (lambda* (#:key outputs #:allow-other-keys)
450 (let* ((out (assoc-ref outputs "out"))
451 (doc (assoc-ref outputs "doc"))
452 (old-doc-dir (string-append out "/share/doc"))
453 (new-doc/sbcl-dir (string-append doc "/share/doc/sbcl")))
454 (rmdir (string-append old-doc-dir "/sbcl/html"))
455 (mkdir-p new-doc/sbcl-dir)
456 (copy-recursively (string-append old-doc-dir "/sbcl")
457 new-doc/sbcl-dir)
458 (delete-file-recursively old-doc-dir)
459 #t))))
1ee131df
FB
460 ;; No 'check' target, though "make.sh" (build phase) runs tests.
461 #:tests? #f))
8d0489ae
AP
462 (native-search-paths
463 (list (search-path-specification
464 (variable "XDG_DATA_DIRS")
465 (files '("share")))))
b702b52d
TUBK
466 (home-page "http://www.sbcl.org/")
467 (synopsis "Common Lisp implementation")
468 (description "Steel Bank Common Lisp (SBCL) is a high performance Common
469Lisp compiler. In addition to the compiler and runtime system for ANSI Common
470Lisp, it provides an interactive environment including a debugger, a
471statistical profiler, a code coverage tool, and many other extensions.")
472 ;; Public domain in jurisdictions that allow it, bsd-2 otherwise. MIT
473 ;; loop macro has its own license. See COPYING file for further notes.
474 (license (list license:public-domain license:bsd-2
475 (license:x11-style "file://src/code/loop.lisp")))))
531a9aac
TUBK
476
477(define-public ccl
478 (package
479 (name "ccl")
04ab38b7 480 (version "1.11.5")
531a9aac
TUBK
481 (source #f)
482 (build-system gnu-build-system)
483 ;; CCL consists of a "lisp kernel" and "heap image", both of which are
484 ;; shipped in precompiled form in source tarballs. The former is a C
485 ;; program which we can rebuild from scratch, but the latter cannot be
486 ;; generated without an already working copy of CCL, and is platform
487 ;; dependent, so we need to fetch the correct tarball for the platform.
488 (inputs
489 `(("ccl"
490 ,(origin
491 (method url-fetch)
492 (uri (string-append
04ab38b7 493 "https://github.com/Clozure/ccl/releases/download/v" version
3701f014 494 "/ccl-" version "-"
531a9aac
TUBK
495 (match (%current-system)
496 ((or "i686-linux" "x86_64-linux") "linuxx86")
42f11801
MW
497 ("armhf-linux" "linuxarm")
498 ;; Prevent errors when querying this package on unsupported
499 ;; platforms, e.g. when running "guix package --search="
500 (_ "UNSUPPORTED"))
531a9aac
TUBK
501 ".tar.gz"))
502 (sha256
503 (base32
504 (match (%current-system)
505 ((or "i686-linux" "x86_64-linux")
04ab38b7 506 "0hs1f3z7crgzvinpj990kv9gvbsipxvcvwbmk54n51nasvc5025q")
42f11801 507 ("armhf-linux"
04ab38b7 508 "0p0l1dzsygb6i1xxgbipjpxkn46xhq3jm41a34ga1qqp4x8lkr62")
42f11801 509 (_ ""))))))))
531a9aac
TUBK
510 (native-inputs
511 `(("m4" ,m4)
512 ("subversion" ,subversion)))
513 (arguments
514 `(#:tests? #f ;no 'check' target
fc7d5a34
AP
515 #:modules ((srfi srfi-26)
516 (guix build utils)
517 (guix build gnu-build-system))
531a9aac 518 #:phases
dc1d3cde
KK
519 (modify-phases %standard-phases
520 (replace 'unpack
521 (lambda* (#:key inputs #:allow-other-keys)
7d416066
RW
522 (invoke "tar" "xzvf" (assoc-ref inputs "ccl"))
523 (chdir "ccl")
524 #t))
dc1d3cde
KK
525 (delete 'configure)
526 (add-before 'build 'pre-build
527 ;; Enter the source directory for the current platform's lisp
528 ;; kernel, and run 'make clean' to remove the precompiled one.
529 (lambda _
bcc65510
EF
530 (substitute* "lisp-kernel/m4macros.m4"
531 (("/bin/pwd") (which "pwd")))
dc1d3cde
KK
532 (chdir (string-append
533 "lisp-kernel/"
534 ,(match (or (%current-target-system) (%current-system))
535 ("i686-linux" "linuxx8632")
536 ("x86_64-linux" "linuxx8664")
537 ("armhf-linux" "linuxarm")
538 ;; Prevent errors when querying this package
539 ;; on unsupported platforms, e.g. when running
540 ;; "guix package --search="
541 (_ "UNSUPPORTED"))))
542 (substitute* '("Makefile")
543 (("/bin/rm") "rm"))
544 (setenv "CC" "gcc")
7d416066 545 (invoke "make" "clean")))
dc1d3cde
KK
546 ;; XXX Do we need to recompile the heap image as well for Guix?
547 ;; For now just use the one we already got in the tarball.
548 (replace 'install
531a9aac
TUBK
549 (lambda* (#:key outputs inputs #:allow-other-keys)
550 ;; The lisp kernel built by running 'make' in lisp-kernel/$system
551 ;; is put back into the original directory, so go back. The heap
552 ;; image is there as well.
553 (chdir "../..")
554 (let* ((out (assoc-ref outputs "out"))
555 (libdir (string-append out "/lib/"))
556 (bindir (string-append out "/bin/"))
557 (wrapper (string-append bindir "ccl"))
558 (bash (assoc-ref inputs "bash"))
559 (kernel
560 ,(match (or (%current-target-system) (%current-system))
76eb7266 561 ("i686-linux" "lx86cl")
531a9aac 562 ("x86_64-linux" "lx86cl64")
76eb7266
MW
563 ("armhf-linux" "armcl")
564 ;; Prevent errors when querying this package
565 ;; on unsupported platforms, e.g. when running
566 ;; "guix package --search="
567 (_ "UNSUPPORTED")))
531a9aac 568 (heap (string-append kernel ".image")))
fc7d5a34
AP
569 (install-file kernel libdir)
570 (install-file heap libdir)
571
910ac0ef
PN
572 (let ((dirs '("lib" "library" "examples" "tools" "objc-bridge"
573 ,@(match (%current-system)
574 ("x86_64-linux"
575 '("x86-headers64"))
576 ("i686-linux"
577 '("x86-headers"))
578 (_ '())))))
fc7d5a34
AP
579 (for-each copy-recursively
580 dirs
581 (map (cut string-append libdir <>) dirs)))
582
531a9aac 583 (mkdir-p bindir)
531a9aac
TUBK
584 (with-output-to-file wrapper
585 (lambda ()
586 (display
587 (string-append
588 "#!" bash "/bin/sh\n"
eff8e0b4
PN
589 "export CCL_DEFAULT_DIRECTORY=" libdir "\n"
590 "exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
dc1d3cde
KK
591 (chmod wrapper #o755))
592 #t)))))
531a9aac 593 (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
910ac0ef 594 (home-page "https://ccl.clozure.com/")
531a9aac
TUBK
595 (synopsis "Common Lisp implementation")
596 (description "Clozure CL (often called CCL for short) is a Common Lisp
597implementation featuring fast compilation speed, native threads, a precise,
598generational, compacting garbage collector, and a convenient foreign-function
599interface.")
600 ;; See file doc/LICENSE for clarifications it makes regarding how the LGPL
601 ;; applies to Lisp code according to them.
602 (license (list license:lgpl2.1
603 license:clarified-artistic)))) ;TRIVIAL-LDAP package
423eef36 604
05c63898 605(define-public lush2
606 (package
607 (name "lush2")
608 (version "2.0.1")
609 (source
610 (origin
611 (method url-fetch)
612 (uri (string-append "mirror://sourceforge/lush/lush2/lush-"
613 version ".tar.gz"))
614 (modules '((guix build utils)))
615 (snippet
616 '(begin
617 (substitute* "src/unix.c"
6cbee49d
MW
618 (("\\{ \"LUSH_DATE\", __DATE__ \\},") "")
619 (("\\{ \"LUSH_TIME\", __TIME__ \\},") ""))
620 (substitute* "src/main.c"
621 (("\" \\(built \" __DATE__ \"\\)\"") ""))
622 #t))
05c63898 623 (sha256
624 (base32
625 "02pkfn3nqdkm9fm44911dbcz0v3r0l53vygj8xigl6id5g3iwi4k"))))
626 (build-system gnu-build-system)
627 (arguments
628 `(;; We have to add these LIBS so that they are found.
629 #:configure-flags (list "LIBS=-lz"
630 "X_EXTRA_LIBS=-lfontconfig"
631 "--with-x")
632 #:tests? #f)) ; No make check.
633 (native-inputs `(("intltool" ,intltool)))
634 (inputs
635 `(("alsa-lib" ,alsa-lib)
636 ("sdl" ,sdl)
637 ("sdl-image" ,sdl-image)
638 ("sdl-mixer" ,sdl-mixer)
639 ("sdl-net" ,sdl-net)
640 ("sdl-ttf" ,sdl-ttf)
641 ("lapack" ,lapack)
642 ("libxft" ,libxft)
643 ("fontconfig" ,fontconfig)
644 ("gsl" ,gsl)
645 ("openblas" ,openblas)
646 ("glu" ,glu)
647 ("mesa" ,mesa)
648 ("mesa-utils" ,mesa-utils)
649 ("binutils" ,binutils)
650 ("libiberty" ,libiberty)
651 ("readline" ,readline)
652 ("zlib" ,zlib)
653 ("gettext-minimal" ,gettext-minimal)))
654 (synopsis "Lisp Universal Shell")
655 (description
656 "Lush is an object-oriented Lisp interpreter/compiler with features
657designed to please people who want to prototype large numerical
658applications. Lush includes an extensive library of
659vector/matrix/tensor manipulation, numerous numerical libraries
660(including GSL, LAPACK, and BLAS), a set of graphic functions, a
661simple GUI toolkit, and interfaces to various graphic and multimedia
662libraries such as OpenGL, SDL, Video4Linux, and ALSA (video/audio
663grabbing), and others. Lush is an ideal frontend script language for
664programming projects written in C or other languages. Lush also has
665libraries for Machine Learning, Neural Nets and statistical estimation.")
666 (home-page "http://lush.sourceforge.net/")
667 (license license:lgpl2.1+)))
668
a72debb7
AP
669(define-public sbcl-alexandria
670 (let ((revision "1")
671 (commit "926a066611b7b11cb71e26c827a271e500888c30"))
672 (package
673 (name "sbcl-alexandria")
674 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
675 (source
676 (origin
677 (method git-fetch)
678 (uri (git-reference
679 (url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
680 (commit commit)))
681 (sha256
682 (base32
683 "18yncicdkh294j05rhgm23gzi36y9qy6vrfba8vg69jrxjp1hx8l"))
684 (file-name (string-append "alexandria-" version "-checkout"))))
685 (build-system asdf-build-system/sbcl)
686 (synopsis "Collection of portable utilities for Common Lisp")
687 (description
688 "Alexandria is a collection of portable utilities. It does not contain
689conceptual extensions to Common Lisp. It is conservative in scope, and
690portable between implementations.")
691 (home-page "https://common-lisp.net/project/alexandria/")
692 (license license:public-domain))))
693
694(define-public cl-alexandria
695 (sbcl-package->cl-source-package sbcl-alexandria))
696
697(define-public ecl-alexandria
698 (sbcl-package->ecl-package sbcl-alexandria))
86022c92
AP
699
700(define-public sbcl-fiveam
701 (package
702 (name "sbcl-fiveam")
703 (version "1.2")
704 (source
705 (origin
02fbb5c3
TGR
706 (method git-fetch)
707 (uri (git-reference
708 (url "https://github.com/sionescu/fiveam.git")
709 (commit (string-append "v" version))))
710 (file-name (git-file-name "fiveam" version))
86022c92 711 (sha256
02fbb5c3 712 (base32 "1yx9716mk8pq9076q6cjx4c9lyax3amiccy37sh0913k2x8gsm4l"))))
0e1371be 713 (inputs `(("alexandria" ,sbcl-alexandria)))
86022c92
AP
714 (build-system asdf-build-system/sbcl)
715 (synopsis "Common Lisp testing framework")
716 (description "FiveAM is a simple (as far as writing and running tests
717goes) regression testing framework. It has been designed with Common Lisp's
718interactive development model in mind.")
719 (home-page "https://common-lisp.net/project/fiveam/")
720 (license license:bsd-3)))
721
722(define-public cl-fiveam
723 (sbcl-package->cl-source-package sbcl-fiveam))
724
725(define-public ecl-fiveam
726 (sbcl-package->ecl-package sbcl-fiveam))
8662809d
AP
727
728(define-public sbcl-bordeaux-threads
29331827 729 (let ((commit "5dce49fbc829f4d136a734f5ef4f5d599660984f")
543cf6fd
AP
730 (revision "1"))
731 (package
732 (name "sbcl-bordeaux-threads")
29331827 733 (version (git-version "0.8.6" revision commit))
543cf6fd
AP
734 (source (origin
735 (method git-fetch)
736 (uri (git-reference
737 (url "https://github.com/sionescu/bordeaux-threads.git")
738 (commit commit)))
739 (sha256
29331827 740 (base32 "1gkh9rz7zw57n3110ikcf4835950wr4hgp8l79id5ai6nd86x7wv"))
543cf6fd
AP
741 (file-name
742 (git-file-name "bordeaux-threads" version))))
743 (inputs `(("alexandria" ,sbcl-alexandria)))
744 (native-inputs `(("fiveam" ,sbcl-fiveam)))
745 (build-system asdf-build-system/sbcl)
746 (synopsis "Portable shared-state concurrency library for Common Lisp")
747 (description "BORDEAUX-THREADS is a proposed standard for a minimal
8662809d
AP
748MP/Threading interface. It is similar to the CLIM-SYS threading and lock
749support.")
543cf6fd
AP
750 (home-page "https://common-lisp.net/project/bordeaux-threads/")
751 (license license:x11))))
8662809d
AP
752
753(define-public cl-bordeaux-threads
754 (sbcl-package->cl-source-package sbcl-bordeaux-threads))
755
756(define-public ecl-bordeaux-threads
757 (sbcl-package->ecl-package sbcl-bordeaux-threads))
059cab30
AP
758
759(define-public sbcl-trivial-gray-streams
760 (let ((revision "1")
761 (commit "0483ade330508b4b2edeabdb47d16ec9437ee1cb"))
762 (package
763 (name "sbcl-trivial-gray-streams")
764 (version (string-append "0.0.0-" revision "." (string-take commit 7)))
765 (source
766 (origin
767 (method git-fetch)
768 (uri
769 (git-reference
770 (url "https://github.com/trivial-gray-streams/trivial-gray-streams.git")
771 (commit commit)))
772 (sha256
773 (base32 "0m3rpf2x0zmdk3nf1qfa01j6a55vj7gkwhyw78qslcgbjlgh8p4d"))
774 (file-name
775 (string-append "trivial-gray-streams-" version "-checkout"))))
776 (build-system asdf-build-system/sbcl)
777 (synopsis "Compatibility layer for Gray streams implementations")
778 (description "Gray streams is an interface proposed for inclusion with
779ANSI CL by David N. Gray. The proposal did not make it into ANSI CL, but most
780popular CL implementations implement it. This package provides an extremely
781thin compatibility layer for gray streams.")
782 (home-page "http://www.cliki.net/trivial-gray-streams")
783 (license license:x11))))
784
785(define-public cl-trivial-gray-streams
786 (sbcl-package->cl-source-package sbcl-trivial-gray-streams))
787
788(define-public ecl-trivial-gray-streams
789 (sbcl-package->ecl-package sbcl-trivial-gray-streams))
3c55c780 790
1075623a
PL
791(define-public sbcl-fiasco
792 (let ((commit "d62f7558b21addc89f87e306f65d7f760632655f")
793 (revision "1"))
794 (package
795 (name "sbcl-fiasco")
796 (version (git-version "0.0.1" revision commit))
797 (source
798 (origin
799 (method git-fetch)
800 (uri (git-reference
801 (url "https://github.com/joaotavora/fiasco.git")
802 (commit commit)))
803 (file-name (git-file-name "fiasco" version))
804 (sha256
805 (base32
806 "1zwxs3d6iswayavcmb49z2892xhym7n556d8dnmvalc32pm9bkjh"))))
807 (build-system asdf-build-system/sbcl)
808 (inputs
809 `(("alexandria" ,sbcl-alexandria)
810 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
811 (synopsis "Simple and powerful test framework for Common Lisp")
812 (description "A Common Lisp test framework that treasures your failures,
813logical continuation of Stefil. It focuses on interactive debugging.")
814 (home-page "https://github.com/joaotavora/fiasco")
815 ;; LICENCE specifies this is public-domain unless the legislation
816 ;; doesn't allow or recognize it. In that case it falls back to a
817 ;; permissive licence.
818 (license (list license:public-domain
819 (license:x11-style "file://LICENCE"))))))
820
821(define-public cl-fiasco
822 (sbcl-package->cl-source-package sbcl-fiasco))
823
824(define-public ecl-fiasco
825 (sbcl-package->ecl-package sbcl-fiasco))
826
3c55c780
AP
827(define-public sbcl-flexi-streams
828 (package
829 (name "sbcl-flexi-streams")
5dff0752 830 (version "1.0.16")
3c55c780
AP
831 (source
832 (origin
574edcc0
TGR
833 (method git-fetch)
834 (uri (git-reference
835 (url "https://github.com/edicl/flexi-streams.git")
836 (commit (string-append "v" version))))
837 (file-name (git-file-name "flexi-streams" version))
3c55c780 838 (sha256
574edcc0 839 (base32 "0gvykjlmja060zqq6nn6aqxlshh6r6ijahmmgf20q0d839rwpgxc"))))
3c55c780 840 (build-system asdf-build-system/sbcl)
574edcc0
TGR
841 (arguments
842 `(#:phases
843 (modify-phases %standard-phases
844 (add-after 'unpack 'make-git-checkout-writable
845 (lambda _
846 (for-each make-file-writable (find-files "."))
847 #t)))))
0e1371be 848 (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
3c55c780
AP
849 (synopsis "Implementation of virtual bivalent streams for Common Lisp")
850 (description "Flexi-streams is an implementation of \"virtual\" bivalent
851streams that can be layered atop real binary or bivalent streams and that can
852be used to read and write character data in various single- or multi-octet
853encodings which can be changed on the fly. It also supplies in-memory binary
854streams which are similar to string streams.")
855 (home-page "http://weitz.de/flexi-streams/")
856 (license license:bsd-3)))
857
858(define-public cl-flexi-streams
859 (sbcl-package->cl-source-package sbcl-flexi-streams))
860
861(define-public ecl-flexi-streams
862 (sbcl-package->ecl-package sbcl-flexi-streams))
5aa608a7
AP
863
864(define-public sbcl-cl-ppcre
865 (package
866 (name "sbcl-cl-ppcre")
867 (version "2.0.11")
868 (source
869 (origin
eabcf02e
TGR
870 (method git-fetch)
871 (uri (git-reference
872 (url "https://github.com/edicl/cl-ppcre.git")
873 (commit (string-append "v" version))))
874 (file-name (git-file-name "cl-ppcre" version))
5aa608a7 875 (sha256
eabcf02e 876 (base32 "0q3iany07vgqm144lw6pj0af2d3vsikpbkwcxr30fci3kzsq4f49"))))
5aa608a7 877 (build-system asdf-build-system/sbcl)
0e1371be 878 (native-inputs `(("flexi-streams" ,sbcl-flexi-streams)))
5aa608a7
AP
879 (synopsis "Portable regular expression library for Common Lisp")
880 (description "CL-PPCRE is a portable regular expression library for Common
881Lisp, which is compatible with perl. It is pretty fast, thread-safe, and
882compatible with ANSI-compliant Common Lisp implementations.")
883 (home-page "http://weitz.de/cl-ppcre/")
884 (license license:bsd-2)))
885
886(define-public cl-ppcre
887 (sbcl-package->cl-source-package sbcl-cl-ppcre))
888
889(define-public ecl-cl-ppcre
890 (sbcl-package->ecl-package sbcl-cl-ppcre))
4b51b21c 891
ac259253
RW
892(define sbcl-cl-unicode-base
893 (let ((revision "1")
894 (commit "9fcd06fba1ddc9e66aed2f2d6c32dc9b764f03ea"))
895 (package
896 (name "sbcl-cl-unicode-base")
897 (version (string-append "0.1.5-" revision "." (string-take commit 7)))
898 (source (origin
899 (method git-fetch)
900 (uri (git-reference
901 (url "https://github.com/edicl/cl-unicode.git")
902 (commit commit)))
903 (file-name (string-append "cl-unicode-" version "-checkout"))
904 (sha256
905 (base32
906 "1jicprb5b3bv57dy1kg03572gxkcaqdjhak00426s76g0plmx5ki"))))
907 (build-system asdf-build-system/sbcl)
908 (arguments
909 '(#:asd-file "cl-unicode.asd"
910 #:asd-system-name "cl-unicode/base"))
911 (inputs
912 `(("cl-ppcre" ,sbcl-cl-ppcre)))
913 (home-page "http://weitz.de/cl-unicode/")
914 (synopsis "Portable Unicode library for Common Lisp")
915 (description "CL-UNICODE is a portable Unicode library Common Lisp, which
916is compatible with perl. It is pretty fast, thread-safe, and compatible with
917ANSI-compliant Common Lisp implementations.")
918 (license license:bsd-2))))
919
920(define-public sbcl-cl-unicode
921 (package
922 (inherit sbcl-cl-unicode-base)
923 (name "sbcl-cl-unicode")
924 (inputs
925 `(("cl-unicode/base" ,sbcl-cl-unicode-base)
926 ,@(package-inputs sbcl-cl-unicode-base)))
927 (native-inputs
928 `(("flexi-streams" ,sbcl-flexi-streams)))
929 (arguments '())))
930
931(define-public ecl-cl-unicode
932 (sbcl-package->ecl-package sbcl-cl-unicode))
933
934(define-public cl-unicode
935 (sbcl-package->cl-source-package sbcl-cl-unicode))
936
4b51b21c 937(define-public sbcl-clx
c894b803
PL
938 (package
939 (name "sbcl-clx")
940 (version "0.7.5")
941 (source
942 (origin
943 (method git-fetch)
944 (uri
945 (git-reference
946 (url "https://github.com/sharplispers/clx.git")
947 (commit version)))
948 (sha256
949 (base32
950 "1vi67z9hpj5rr4xcmfbfwzmlcc0ah7hzhrmfid6lqdkva238v2wf"))
951 (file-name (string-append "clx-" version))))
952 (build-system asdf-build-system/sbcl)
953 (native-inputs
954 `(("fiasco" ,sbcl-fiasco)))
955 (home-page "http://www.cliki.net/portable-clx")
956 (synopsis "X11 client library for Common Lisp")
957 (description "CLX is an X11 client library for Common Lisp. The code was
4b51b21c
AP
958originally taken from a CMUCL distribution, was modified somewhat in order to
959make it compile and run under SBCL, then a selection of patches were added
960from other CLXes around the net.")
c894b803 961 (license license:x11)))
4b51b21c
AP
962
963(define-public cl-clx
964 (sbcl-package->cl-source-package sbcl-clx))
965
966(define-public ecl-clx
967 (sbcl-package->ecl-package sbcl-clx))
d075960f 968
b693aa6e
RW
969(define-public sbcl-cl-ppcre-unicode
970 (package (inherit sbcl-cl-ppcre)
971 (name "sbcl-cl-ppcre-unicode")
972 (arguments
973 `(#:tests? #f ; tests fail with "Component :CL-PPCRE-TEST not found"
974 #:asd-file "cl-ppcre-unicode.asd"))
975 (inputs
976 `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
977 ("sbcl-cl-unicode" ,sbcl-cl-unicode)))))
978
4b193da3 979(define-public stumpwm
d075960f 980 (package
4b193da3 981 (name "stumpwm")
ba9ba64d 982 (version "18.11")
4d2c51de
TGR
983 (source
984 (origin
985 (method git-fetch)
986 (uri (git-reference
987 (url "https://github.com/stumpwm/stumpwm.git")
988 (commit version)))
989 (file-name (git-file-name "stumpwm" version))
990 (sha256
991 (base32 "003g1fmh7446ws49866kzny4lrk1wf034dq5fa4m9mq1nzc7cwv7"))
992 (patches
993 ;; This patch is included in the post-18.11 git master tree
994 ;; and can be removed when we move to the next release.
995 (search-patches "stumpwm-fix-broken-read-one-line.patch"))))
d075960f 996 (build-system asdf-build-system/sbcl)
46c1c553
TGR
997 (native-inputs `(("fiasco" ,sbcl-fiasco)
998 ("texinfo" ,texinfo)))
0e1371be 999 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
abf818bc
OP
1000 ("clx" ,sbcl-clx)
1001 ("alexandria" ,sbcl-alexandria)))
290bf612 1002 (outputs '("out" "lib"))
d075960f 1003 (arguments
4b193da3
PL
1004 '(#:asd-system-name "stumpwm"
1005 #:phases
d075960f
AP
1006 (modify-phases %standard-phases
1007 (add-after 'create-symlinks 'build-program
b4c9f0c5 1008 (lambda* (#:key outputs #:allow-other-keys)
d075960f 1009 (build-program
290bf612 1010 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
4209c31b 1011 outputs
d075960f
AP
1012 #:entry-program '((stumpwm:stumpwm) 0))))
1013 (add-after 'build-program 'create-desktop-file
290bf612
AP
1014 (lambda* (#:key outputs #:allow-other-keys)
1015 (let* ((out (assoc-ref outputs "out"))
1016 (xsessions (string-append out "/share/xsessions")))
1017 (mkdir-p xsessions)
1018 (call-with-output-file
1019 (string-append xsessions "/stumpwm.desktop")
1020 (lambda (file)
1021 (format file
d075960f
AP
1022 "[Desktop Entry]~@
1023 Name=stumpwm~@
1024 Comment=The Stump Window Manager~@
1025 Exec=~a/bin/stumpwm~@
1026 TryExec=~@*~a/bin/stumpwm~@
1027 Icon=~@
1028 Type=Application~%"
290bf612 1029 out)))
46c1c553
TGR
1030 #t)))
1031 (add-after 'install 'install-manual
1032 (lambda* (#:key outputs #:allow-other-keys)
1033 ;; The proper way to the manual is bootstrapping a full autotools
1034 ;; build system and running ‘./configure && make stumpwm.info’ to
1035 ;; do some macro substitution. We can get away with much less.
1036 (let* ((out (assoc-ref outputs "out"))
1037 (info (string-append out "/share/info")))
1038 (invoke "makeinfo" "stumpwm.texi.in")
1039 (install-file "stumpwm.info" info)
d075960f
AP
1040 #t))))))
1041 (synopsis "Window manager written in Common Lisp")
1042 (description "Stumpwm is a window manager written entirely in Common Lisp.
1043It attempts to be highly customizable while relying entirely on the keyboard
1044for input. These design decisions reflect the growing popularity of
1045productive, customizable lisp based systems.")
7bf837fd 1046 (home-page "https://github.com/stumpwm/stumpwm")
d075960f 1047 (license license:gpl2+)
4b193da3 1048 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
d075960f 1049
4b193da3
PL
1050(define-public sbcl-stumpwm
1051 (deprecated-package "sbcl-stumpwm" stumpwm))
d075960f 1052
4b193da3
PL
1053(define-public cl-stumpwm
1054 (package
1055 (inherit (sbcl-package->cl-source-package stumpwm))
1056 (name "cl-stumpwm")))
e3e171ee 1057
75e8b3af
AP
1058;; The slynk that users expect to install includes all of slynk's contrib
1059;; modules. Therefore, we build the base module and all contribs first; then
1060;; we expose the union of these as `sbcl-slynk'. The following variable
1061;; describes the base module.
e3e171ee 1062(define sbcl-slynk-boot0
1d98b44e
AP
1063 (let ((revision "2")
1064 (commit "cbf84c36c4eca8b032e3fd16177a7bc02df3ec4c"))
e3e171ee 1065 (package
f56da605 1066 (name "sbcl-slynk-boot0")
e3e171ee
AP
1067 (version (string-append "1.0.0-beta-" revision "." (string-take commit 7)))
1068 (source
1069 (origin
1070 (method git-fetch)
1071 (uri
1072 (git-reference
1073 (url "https://github.com/joaotavora/sly.git")
1074 (commit commit)))
1075 (sha256
1d98b44e 1076 (base32 "13dyhsravn591p7g6is01mp2ynzjnnj7pwgi57r6xqmd4611y9vh"))
e3e171ee
AP
1077 (file-name (string-append "slynk-" version "-checkout"))
1078 (modules '((guix build utils)
1079 (ice-9 ftw)))
1080 (snippet
1081 '(begin
1082 ;; Move the contribs into the main source directory for easier
1083 ;; access
1084 (substitute* "slynk/slynk.asd"
1085 (("\\.\\./contrib")
1086 "contrib")
1d98b44e
AP
1087 (("\\(defsystem :slynk/util")
1088 "(defsystem :slynk/util :depends-on (:slynk)")
1089 ((":depends-on \\(:slynk :slynk/util\\)")
1090 ":depends-on (:slynk :slynk-util)"))
e3e171ee
AP
1091 (substitute* "contrib/slynk-trace-dialog.lisp"
1092 (("\\(slynk::reset-inspector\\)") ; Causes problems on load
1093 "nil"))
1094 (substitute* "contrib/slynk-profiler.lisp"
1095 (("slynk:to-line")
1096 "slynk-pprint-to-line"))
1d98b44e
AP
1097 (substitute* "contrib/slynk-fancy-inspector.lisp"
1098 (("slynk/util") "slynk-util")
1099 ((":compile-toplevel :load-toplevel") ""))
e3e171ee
AP
1100 (rename-file "contrib" "slynk/contrib")
1101 ;; Move slynk's contents into the base directory for easier
1102 ;; access
6cbee49d
MW
1103 (for-each (lambda (file)
1104 (unless (string-prefix? "." file)
1105 (rename-file (string-append "slynk/" file)
1106 (string-append "./" (basename file)))))
1107 (scandir "slynk"))
1108 #t))))
e3e171ee
AP
1109 (build-system asdf-build-system/sbcl)
1110 (arguments
f56da605
AP
1111 `(#:tests? #f ; No test suite
1112 #:asd-system-name "slynk"))
e3e171ee 1113 (synopsis "Common Lisp IDE for Emacs")
14afc7b8
AP
1114 (description "SLY is a fork of SLIME, an IDE backend for Common Lisp.
1115It also features a completely redesigned REPL based on Emacs's own
1116full-featured comint.el, live code annotations, and a consistent interactive
1117button interface. Everything can be copied to the REPL. One can create
1118multiple inspectors with independent history.")
e3e171ee
AP
1119 (home-page "https://github.com/joaotavora/sly")
1120 (license license:public-domain)
1121 (properties `((cl-source-variant . ,(delay cl-slynk)))))))
1122
1123(define-public cl-slynk
f56da605
AP
1124 (package
1125 (inherit (sbcl-package->cl-source-package sbcl-slynk-boot0))
1126 (name "cl-slynk")))
e3e171ee
AP
1127
1128(define ecl-slynk-boot0
1129 (sbcl-package->ecl-package sbcl-slynk-boot0))
1130
1131(define sbcl-slynk-arglists
1132 (package
1133 (inherit sbcl-slynk-boot0)
1134 (name "sbcl-slynk-arglists")
0e1371be 1135 (inputs `(("slynk" ,sbcl-slynk-boot0)))
e3e171ee 1136 (arguments
f56da605
AP
1137 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1138 ((#:asd-file _ "") "slynk.asd")
1d98b44e 1139 ((#:asd-system-name _ #f) "slynk/arglists")))))
e3e171ee
AP
1140
1141(define ecl-slynk-arglists
1142 (sbcl-package->ecl-package sbcl-slynk-arglists))
1143
1144(define sbcl-slynk-util
1145 (package
1d98b44e
AP
1146 (inherit sbcl-slynk-boot0)
1147 (name "sbcl-slynk-util")
1148 (inputs `(("slynk" ,sbcl-slynk-boot0)))
1149 (arguments
1150 (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
1151 ((#:asd-file _ "") "slynk.asd")
1152 ((#:asd-system-name _ #f) "slynk/util")))))
e3e171ee
AP
1153
1154(define ecl-slynk-util
1155 (sbcl-package->ecl-package sbcl-slynk-util))
1156
1157(define sbcl-slynk-fancy-inspector
1158 (package
1159 (inherit sbcl-slynk-arglists)
1160 (name "sbcl-slynk-fancy-inspector")
0e1371be 1161 (inputs `(("slynk-util" ,sbcl-slynk-util)
1d98b44e
AP
1162 ,@(package-inputs sbcl-slynk-arglists)))
1163 (arguments
1164 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1165 ((#:asd-system-name _ #f) "slynk/fancy-inspector")))))
e3e171ee
AP
1166
1167(define ecl-slynk-fancy-inspector
1168 (sbcl-package->ecl-package sbcl-slynk-fancy-inspector))
1169
1170(define sbcl-slynk-package-fu
1171 (package
1172 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1173 (name "sbcl-slynk-package-fu")
1174 (arguments
1175 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1176 ((#:asd-system-name _ #f) "slynk/package-fu")))))
e3e171ee
AP
1177
1178(define ecl-slynk-package-fu
1179 (sbcl-package->ecl-package sbcl-slynk-package-fu))
1180
1181(define sbcl-slynk-mrepl
1182 (package
1d98b44e
AP
1183 (inherit sbcl-slynk-fancy-inspector)
1184 (name "sbcl-slynk-mrepl")
1185 (arguments
1186 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1187 ((#:asd-system-name _ #f) "slynk/mrepl")))))
e3e171ee
AP
1188
1189(define ecl-slynk-mrepl
1190 (sbcl-package->ecl-package sbcl-slynk-mrepl))
1191
1192(define sbcl-slynk-trace-dialog
1193 (package
1194 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1195 (name "sbcl-slynk-trace-dialog")
1196 (arguments
1197 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1198 ((#:asd-system-name _ #f) "slynk/trace-dialog")))))
e3e171ee
AP
1199
1200(define ecl-slynk-trace-dialog
1201 (sbcl-package->ecl-package sbcl-slynk-trace-dialog))
1202
1203(define sbcl-slynk-profiler
1204 (package
1205 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1206 (name "sbcl-slynk-profiler")
1207 (arguments
1208 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1209 ((#:asd-system-name _ #f) "slynk/profiler")))))
e3e171ee
AP
1210
1211(define ecl-slynk-profiler
1212 (sbcl-package->ecl-package sbcl-slynk-profiler))
1213
1214(define sbcl-slynk-stickers
1215 (package
1216 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1217 (name "sbcl-slynk-stickers")
1218 (arguments
1219 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1220 ((#:asd-system-name _ #f) "slynk/stickers")))))
e3e171ee
AP
1221
1222(define ecl-slynk-stickers
1223 (sbcl-package->ecl-package sbcl-slynk-stickers))
1224
1225(define sbcl-slynk-indentation
1226 (package
1227 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1228 (name "sbcl-slynk-indentation")
1229 (arguments
1230 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1231 ((#:asd-system-name _ #f) "slynk/indentation")))))
e3e171ee
AP
1232
1233(define ecl-slynk-indentation
1234 (sbcl-package->ecl-package sbcl-slynk-indentation))
1235
1236(define sbcl-slynk-retro
1237 (package
1238 (inherit sbcl-slynk-arglists)
1d98b44e
AP
1239 (name "sbcl-slynk-retro")
1240 (arguments
1241 (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
1242 ((#:asd-system-name _ #f) "slynk/retro")))))
e3e171ee
AP
1243
1244(define ecl-slynk-retro
1245 (sbcl-package->ecl-package sbcl-slynk-retro))
1246
1247(define slynk-systems
1248 '("slynk"
1249 "slynk-util"
1250 "slynk-arglists"
1251 "slynk-fancy-inspector"
1252 "slynk-package-fu"
1253 "slynk-mrepl"
1254 "slynk-profiler"
1255 "slynk-trace-dialog"
1256 "slynk-stickers"
1257 "slynk-indentation"
1258 "slynk-retro"))
1259
1260(define-public sbcl-slynk
1261 (package
1262 (inherit sbcl-slynk-boot0)
f56da605 1263 (name "sbcl-slynk")
e3e171ee
AP
1264 (inputs
1265 `(("slynk" ,sbcl-slynk-boot0)
1266 ("slynk-util" ,sbcl-slynk-util)
1267 ("slynk-arglists" ,sbcl-slynk-arglists)
1268 ("slynk-fancy-inspector" ,sbcl-slynk-fancy-inspector)
1269 ("slynk-package-fu" ,sbcl-slynk-package-fu)
1270 ("slynk-mrepl" ,sbcl-slynk-mrepl)
1271 ("slynk-profiler" ,sbcl-slynk-profiler)
1272 ("slynk-trace-dialog" ,sbcl-slynk-trace-dialog)
1273 ("slynk-stickers" ,sbcl-slynk-stickers)
1274 ("slynk-indentation" ,sbcl-slynk-indentation)
1275 ("slynk-retro" ,sbcl-slynk-retro)))
1276 (native-inputs `(("sbcl" ,sbcl)))
1277 (build-system trivial-build-system)
1278 (source #f)
1279 (outputs '("out" "image"))
1280 (arguments
1281 `(#:modules ((guix build union)
1282 (guix build utils)
1283 (guix build lisp-utils))
1284 #:builder
1285 (begin
1286 (use-modules (ice-9 match)
1287 (srfi srfi-1)
1288 (guix build union)
1289 (guix build lisp-utils))
1290
1291 (union-build
1292 (assoc-ref %outputs "out")
1293 (filter-map
1294 (match-lambda
1295 ((name . path)
1296 (if (string-prefix? "slynk" name) path #f)))
1297 %build-inputs))
1298
1299 (prepend-to-source-registry
1300 (string-append (assoc-ref %outputs "out") "//"))
b4c9f0c5
AP
1301
1302 (parameterize ((%lisp-type "sbcl")
1303 (%lisp (string-append (assoc-ref %build-inputs "sbcl")
1304 "/bin/sbcl")))
1305 (build-image (string-append
1306 (assoc-ref %outputs "image")
1307 "/bin/slynk")
4209c31b 1308 %outputs
e3cfef22
MW
1309 #:dependencies ',slynk-systems))
1310 #t)))))
e3e171ee
AP
1311
1312(define-public ecl-slynk
1313 (package
1314 (inherit sbcl-slynk)
1315 (name "ecl-slynk")
1316 (inputs
1317 (map (match-lambda
1318 ((name pkg . _)
1319 (list name (sbcl-package->ecl-package pkg))))
1320 (package-inputs sbcl-slynk)))
1321 (native-inputs '())
1322 (outputs '("out"))
1323 (arguments
1324 '(#:modules ((guix build union))
1325 #:builder
1326 (begin
1327 (use-modules (ice-9 match)
1328 (guix build union))
1329 (match %build-inputs
1330 (((names . paths) ...)
1331 (union-build (assoc-ref %outputs "out")
e3cfef22
MW
1332 paths)
1333 #t)))))))
96784438 1334
4b193da3 1335(define-public stumpwm+slynk
96784438 1336 (package
4b193da3
PL
1337 (inherit stumpwm)
1338 (name "stumpwm-with-slynk")
96784438 1339 (outputs '("out"))
4209c31b 1340 (inputs
4b193da3 1341 `(("stumpwm" ,stumpwm "lib")
96784438
AP
1342 ("slynk" ,sbcl-slynk)))
1343 (arguments
4b193da3 1344 (substitute-keyword-arguments (package-arguments stumpwm)
96784438
AP
1345 ((#:phases phases)
1346 `(modify-phases ,phases
1347 (replace 'build-program
4209c31b 1348 (lambda* (#:key inputs outputs #:allow-other-keys)
96784438
AP
1349 (let* ((out (assoc-ref outputs "out"))
1350 (program (string-append out "/bin/stumpwm")))
4209c31b 1351 (build-program program outputs
96784438
AP
1352 #:entry-program '((stumpwm:stumpwm) 0)
1353 #:dependencies '("stumpwm"
4209c31b
AP
1354 ,@slynk-systems)
1355 #:dependency-prefixes
1356 (map (lambda (input) (assoc-ref inputs input))
1357 '("stumpwm" "slynk")))
96784438
AP
1358 ;; Remove unneeded file.
1359 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
1360 #t)))
1361 (delete 'copy-source)
1362 (delete 'build)
1363 (delete 'check)
290bf612 1364 (delete 'create-asd-file)
96784438
AP
1365 (delete 'cleanup)
1366 (delete 'create-symlinks)))))))
d00c96d7 1367
4b193da3
PL
1368(define-public sbcl-stumpwm+slynk
1369 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
1370
d00c96d7
RW
1371(define-public sbcl-parse-js
1372 (let ((commit "fbadc6029bec7039602abfc06c73bb52970998f6")
1373 (revision "1"))
1374 (package
1375 (name "sbcl-parse-js")
1376 (version (string-append "0.0.0-" revision "." (string-take commit 9)))
1377 (source
1378 (origin
1379 (method git-fetch)
1380 (uri (git-reference
1381 (url "http://marijn.haverbeke.nl/git/parse-js")
1382 (commit commit)))
1383 (file-name (string-append name "-" commit "-checkout"))
1384 (sha256
1385 (base32
1386 "1wddrnr5kiya5s3gp4cdq6crbfy9fqcz7fr44p81502sj3bvdv39"))))
1387 (build-system asdf-build-system/sbcl)
1388 (home-page "http://marijnhaverbeke.nl/parse-js/")
1389 (synopsis "Parse JavaScript")
1390 (description "Parse-js is a Common Lisp package for parsing
1391JavaScript (ECMAScript 3). It has basic support for ECMAScript 5.")
1392 (license license:zlib))))
d0eec99a
RW
1393
1394(define-public sbcl-parse-number
1395 (package
1396 (name "sbcl-parse-number")
1397 (version "1.5")
1398 (source
1399 (origin
1400 (method url-fetch)
1401 (uri (string-append "https://github.com/sharplispers/parse-number/"
1402 "archive/v" version ".tar.gz"))
1403 (file-name (string-append name "-" version ".tar.gz"))
1404 (sha256
1405 (base32
1406 "1k6s4v65ksc1j5i0dprvzfvj213v6nah7i0rgd0726ngfjisj9ir"))))
1407 (build-system asdf-build-system/sbcl)
1408 (home-page "http://www.cliki.net/PARSE-NUMBER")
1409 (synopsis "Parse numbers")
1410 (description "@code{parse-number} is a library of functions for parsing
1411strings into one of the standard Common Lisp number types without using the
1412reader. @code{parse-number} accepts an arbitrary string and attempts to parse
1413the string into one of the standard Common Lisp number types, if possible, or
1414else @code{parse-number} signals an error of type @code{invalid-number}.")
1415 (license license:bsd-3)))
1416
476b583f
RW
1417(define-public sbcl-iterate
1418 (package
1419 (name "sbcl-iterate")
1420 ;; The latest official release (1.4.3) fails to build so we have to take
1421 ;; the current darcs tarball from quicklisp.
1422 (version "20160825")
1423 (source
1424 (origin
1425 (method url-fetch)
1426 (uri (string-append "http://beta.quicklisp.org/archive/iterate/"
1427 "2016-08-25/iterate-"
1428 version "-darcs.tgz"))
1429 (sha256
1430 (base32
1431 "0kvz16gnxnkdz0fy1x8y5yr28nfm7i2qpvix7mgwccdpjmsb4pgm"))))
1432 (build-system asdf-build-system/sbcl)
1433 (home-page "https://common-lisp.net/project/iterate/")
1434 (synopsis "Iteration construct for Common Lisp")
1435 (description "@code{iterate} is an iteration construct for Common Lisp.
1436It is similar to the @code{CL:LOOP} macro, with these distinguishing marks:
1437
1438@itemize
1439@item it is extensible,
1440@item it helps editors like Emacs indent iterate forms by having a more
1441 lisp-like syntax, and
1442@item it isn't part of the ANSI standard for Common Lisp.
1443@end itemize\n")
1444 (license license:expat)))
52650a4d
RW
1445
1446(define-public sbcl-cl-uglify-js
1447 ;; There have been many bug fixes since the 2010 release.
1448 (let ((commit "429c5e1d844e2f96b44db8fccc92d6e8e28afdd5")
1449 (revision "1"))
1450 (package
1451 (name "sbcl-cl-uglify-js")
1452 (version (string-append "0.1-" revision "." (string-take commit 9)))
1453 (source
1454 (origin
1455 (method git-fetch)
1456 (uri (git-reference
1457 (url "https://github.com/mishoo/cl-uglify-js.git")
1458 (commit commit)))
03e8182b 1459 (file-name (git-file-name name version))
52650a4d
RW
1460 (sha256
1461 (base32
1462 "0k39y3c93jgxpr7gwz7w0d8yknn1fdnxrjhd03057lvk5w8js27a"))))
1463 (build-system asdf-build-system/sbcl)
1464 (inputs
1465 `(("sbcl-parse-js" ,sbcl-parse-js)
1466 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
1467 ("sbcl-cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
1468 ("sbcl-parse-number" ,sbcl-parse-number)
1469 ("sbcl-iterate" ,sbcl-iterate)))
1470 (home-page "https://github.com/mishoo/cl-uglify-js")
1471 (synopsis "JavaScript compressor library for Common Lisp")
1472 (description "This is a Common Lisp version of UglifyJS, a JavaScript
1473compressor. It works on data produced by @code{parse-js} to generate a
1474@dfn{minified} version of the code. Currently it can:
1475
1476@itemize
1477@item reduce variable names (usually to single letters)
1478@item join consecutive @code{var} statements
1479@item resolve simple binary expressions
36a4366d 1480@item group most consecutive statements using the @code{sequence} operator (comma)
52650a4d
RW
1481@item remove unnecessary blocks
1482@item convert @code{IF} expressions in various ways that result in smaller code
1483@item remove some unreachable code
1484@end itemize\n")
1485 (license license:zlib))))
dd35abfe
RW
1486
1487(define-public uglify-js
1488 (package
1489 (inherit sbcl-cl-uglify-js)
1490 (name "uglify-js")
1491 (build-system trivial-build-system)
1492 (arguments
1493 `(#:modules ((guix build utils))
1494 #:builder
1495 (let* ((bin (string-append (assoc-ref %outputs "out") "/bin/"))
1496 (script (string-append bin "uglify-js")))
1497 (use-modules (guix build utils))
1498 (mkdir-p bin)
1499 (with-output-to-file script
1500 (lambda _
1501 (format #t "#!~a/bin/sbcl --script
1502 (require :asdf)
1503 (push (truename \"~a/lib/sbcl\") asdf:*central-registry*)"
1504 (assoc-ref %build-inputs "sbcl")
1505 (assoc-ref %build-inputs "sbcl-cl-uglify-js"))
1506 ;; FIXME: cannot use progn here because otherwise it fails to
1507 ;; find cl-uglify-js.
1508 (for-each
1509 write
1510 '(;; Quiet, please!
1511 (let ((*standard-output* (make-broadcast-stream))
1512 (*error-output* (make-broadcast-stream)))
1513 (asdf:load-system :cl-uglify-js))
1514 (let ((file (cadr *posix-argv*)))
1515 (if file
1516 (format t "~a"
1517 (cl-uglify-js:ast-gen-code
1518 (cl-uglify-js:ast-mangle
1519 (cl-uglify-js:ast-squeeze
1520 (with-open-file (in file)
1521 (parse-js:parse-js in))))
1522 :beautify nil))
1523 (progn
1524 (format *error-output*
1525 "Please provide a JavaScript file.~%")
1526 (sb-ext:exit :code 1))))))))
1527 (chmod script #o755)
1528 #t)))
1529 (inputs
1530 `(("sbcl" ,sbcl)
1531 ("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js)))
1532 (synopsis "JavaScript compressor")))
56c240ba
LC
1533
1534(define-public confusion-mdl
1535 (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
1536 (package
1537 (name "confusion-mdl")
1538 (version "0.2")
1539 (source (origin
1540 (method git-fetch)
1541 (uri (git-reference
1542 (url (string-append "https://gitlab.com/emacsomancer/" name))
1543 (commit commit)))
1544 (sha256
1545 (base32
1546 "1zi8kflzvwqg97ha1sa5xjisbjs5z1mvbpa772vfxiv5ksnpxp0d"))
1547 (file-name (git-file-name name version))))
1548 (build-system gnu-build-system)
1549 (arguments
1550 `(#:tests? #f ; there are no tests
1551 #:phases
1552 (modify-phases %standard-phases
1553 (delete 'configure)
1554 (replace 'build
1555 (lambda* (#:key (make-flags '()) #:allow-other-keys)
1556 (apply invoke "make" "CC=gcc" make-flags)))
1557 (replace 'install
1558 (lambda* (#:key outputs #:allow-other-keys)
1559 (let* ((out (assoc-ref outputs "out"))
1560 (bin (string-append out "/bin")))
1561 (install-file "mdli" bin)
1562 #t))))))
1563 (native-inputs
1564 `(("perl" ,perl)))
1565 (inputs
1566 `(("libgc" ,libgc)))
1567 (synopsis "Interpreter for the MIT Design Language (MDL)")
1568 (description "MDL (the MIT Design Language) is a descendant of Lisp. It
1569was originally developed in 1971 on the PDP-10 computer under the Incompatible
1570Timesharing System (ITS) to provide high level language support for the
1571Dynamic Modeling Group at MIT's Project MAC. Infocom built the original
1572PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
1573based on a subset of MDL. Confusion is a MDL interpreter that works just well
1574enough to play the original mainframe Zork all the way through.")
1575 (home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
1576 (license license:gpl3+))))
99c61242
PN
1577
1578(define-public sbcl-cl-strings
1579 (let ((revision "1")
1580 (commit "c5c5cbafbf3e6181d03c354d66e41a4f063f00ae"))
1581 (package
1582 (name "sbcl-cl-strings")
1583 (version (git-version "0.0.0" revision commit))
1584 (source
1585 (origin
1586 (method git-fetch)
1587 (uri (git-reference
1588 (url "https://github.com/diogoalexandrefranco/cl-strings")
1589 (commit commit)))
1590 (sha256
1591 (base32
1592 "00754mfaqallj480lwd346nkfb6ra8pa8xcxcylf4baqn604zlmv"))
1593 (file-name (string-append "cl-strings-" version "-checkout"))))
1594 (build-system asdf-build-system/sbcl)
1595 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
1596 (description
1597 "@command{cl-strings} is a small, portable, dependency-free set of
1598utilities that make it even easier to manipulate text in Common Lisp. It has
1599100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")
1600 (home-page "https://github.com/diogoalexandrefranco/cl-strings")
1601 (license license:expat))))
1602
1603(define-public cl-strings
1604 (sbcl-package->cl-source-package sbcl-cl-strings))
1605
1606(define-public ecl-cl-strings
1607 (sbcl-package->ecl-package sbcl-cl-strings))
8c661ff1
PN
1608
1609(define-public sbcl-trivial-features
1610 (package
1611 (name "sbcl-trivial-features")
1612 (version "0.8")
1613 (source
1614 (origin
9769caa9
TGR
1615 (method git-fetch)
1616 (uri (git-reference
1617 (url "https://github.com/trivial-features/trivial-features.git")
1618 (commit (string-append "v" version))))
1619 (file-name (git-file-name "trivial-features" version))
8c661ff1 1620 (sha256
9769caa9 1621 (base32 "0ccv7dqyrk55xga78i5vzlic7mdwp28in3g1a8fqhlk6626scsq9"))))
8c661ff1
PN
1622 (build-system asdf-build-system/sbcl)
1623 (arguments '(#:tests? #f))
1624 (home-page "http://cliki.net/trivial-features")
1625 (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp")
1626 (description "Trivial-features ensures that @code{*FEATURES*} is
1627consistent across multiple Common Lisp implementations.")
1628 (license license:expat)))
1629
1630(define-public cl-trivial-features
1631 (sbcl-package->cl-source-package sbcl-trivial-features))
1632
1633(define-public ecl-trivial-features
1634 (sbcl-package->ecl-package sbcl-trivial-features))
0cd6fb49
PN
1635
1636(define-public sbcl-hu.dwim.asdf
1637 (let ((commit "170b0e4fdde3df0bc537327e7600575daac9e141"))
1638 (package
1639 (name "sbcl-hu.dwim.asdf")
1640 (version (git-version "0.0.0" "1" commit))
1641 (source
1642 (origin
1643 (method git-fetch)
1644 (uri
1645 (git-reference
1646 (url "https://github.com/nixeagle/hu.dwim.asdf")
1647 (commit commit)))
1648 (sha256
1649 (base32 "10ax7p8y6vjqxzcq125p62kf68zi455a65ysgk0kl1f2v839c33v"))
1650 (file-name (git-file-name "hu.dwim.asdf" version))))
1651 (build-system asdf-build-system/sbcl)
1652 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.asdf")
1653 (synopsis "Extensions to ASDF")
1654 (description "Various ASDF extensions such as attached test and
1655documentation system, explicit development support, etc.")
1656 (license license:public-domain))))
1657
1658(define-public cl-hu.dwim.asdf
1659 (sbcl-package->cl-source-package sbcl-hu.dwim.asdf))
1660
1661(define-public ecl-hu.dwim.asdf
1662 (sbcl-package->ecl-package sbcl-hu.dwim.asdf))
4ef9ddbd
PN
1663
1664(define-public sbcl-hu.dwim.stefil
1665 (let ((commit "ab6d1aa8995878a1b66d745dfd0ba021090bbcf9"))
1666 (package
1667 (name "sbcl-hu.dwim.stefil")
1668 (version (git-version "0.0.0" "1" commit))
1669 (source
1670 (origin
1671 (method git-fetch)
1672 (uri
1673 (git-reference
1674 (url "https://gitlab.common-lisp.net/xcvb/hu.dwim.stefil.git")
1675 (commit commit)))
1676 (sha256
1677 (base32 "1d8yccw65zj3zh46cbi3x6nmn1dwdb76s9d0av035077mvyirqqp"))
1678 (file-name (git-file-name "hu.dwim.stefil" version))))
1679 (build-system asdf-build-system/sbcl)
1680 (native-inputs
1681 `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
1682 (inputs
1683 `(("sbcl-alexandria" ,sbcl-alexandria)))
1684 (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.stefil")
1685 (synopsis "Simple test framework")
1686 (description "Stefil is a simple test framework for Common Lisp,
1687with a focus on interactive development.")
1688 (license license:public-domain))))
1689
1690(define-public cl-hu.dwim.stefil
1691 (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
1692
1693(define-public ecl-hu.dwim.stefil
1694 (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
2d418bfa
PN
1695
1696(define-public sbcl-babel
1697 (package
1698 (name "sbcl-babel")
1699 (version "0.5.0")
1700 (source
1701 (origin
0471c001
TGR
1702 (method git-fetch)
1703 (uri (git-reference
1704 (url "https://github.com/cl-babel/babel.git")
1705 (commit (string-append "v" version))))
1706 (file-name (git-file-name "babel" version))
2d418bfa 1707 (sha256
0471c001 1708 (base32 "139a8rn2gnhj082n8jg01gc8fyr63hkj57hgrnmb3d1r327yc77f"))))
2d418bfa
PN
1709 (build-system asdf-build-system/sbcl)
1710 (native-inputs
1711 `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
1712 (inputs
1713 `(("sbcl-alexandria" ,sbcl-alexandria)
1714 ("sbcl-trivial-features" ,sbcl-trivial-features)))
1715 (home-page "https://common-lisp.net/project/babel/")
1716 (synopsis "Charset encoding and decoding library")
1717 (description "Babel is a charset encoding and decoding library, not unlike
1718GNU libiconv, but completely written in Common Lisp.")
1719 (license license:expat)))
1720
1721(define-public cl-babel
1722 (sbcl-package->cl-source-package sbcl-babel))
1723
1724(define-public ecl-babel
1725 (sbcl-package->ecl-package sbcl-babel))
ef091e91
PN
1726
1727(define-public sbcl-cl-yacc
1728 (package
1729 (name "sbcl-cl-yacc")
1730 (version "0.3")
1731 (source
1732 (origin
1733 (method git-fetch)
1734 (uri (git-reference
1735 (url "https://github.com/jech/cl-yacc")
1736 (commit (string-append "cl-yacc-" version))))
1737 (sha256
1738 (base32
1739 "16946pzf8vvadnyfayvj8rbh4zjzw90h0azz2qk1mxrvhh5wklib"))
1740 (file-name (string-append "cl-yacc-" version "-checkout"))))
1741 (build-system asdf-build-system/sbcl)
1742 (arguments
1743 `(#:asd-file "yacc.asd"
1744 #:asd-system-name "yacc"))
1745 (synopsis "LALR(1) parser generator for Common Lisp, similar in spirit to Yacc")
1746 (description
1747 "CL-Yacc is a LALR(1) parser generator for Common Lisp, similar in spirit
1748to AT&T Yacc, Berkeley Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm.
1749
1750CL-Yacc uses the algorithm due to Aho and Ullman, which is the one also used
1751by AT&T Yacc, Berkeley Yacc and Zebu. It does not use the faster algorithm due
1752to DeRemer and Pennello, which is used by Bison and lalr.scm (not lalr.cl).")
1753 (home-page "https://www.irif.fr/~jch//software/cl-yacc/")
1754 (license license:expat)))
1755
1756(define-public cl-yacc
1757 (sbcl-package->cl-source-package sbcl-cl-yacc))
1758
1759(define-public ecl-cl-yacc
1760 (sbcl-package->ecl-package sbcl-cl-yacc))
232e1abc
PN
1761
1762(define-public sbcl-jpl-util
1763 (let ((commit "0311ed374e19a49d43318064d729fe3abd9a3b62"))
1764 (package
1765 (name "sbcl-jpl-util")
1766 (version "20151005")
1767 (source
1768 (origin
1769 (method git-fetch)
1770 (uri (git-reference
1771 ;; Quicklisp uses this fork.
1772 (url "https://github.com/hawkir/cl-jpl-util")
1773 (commit commit)))
1774 (file-name
1775 (git-file-name "jpl-util" version))
1776 (sha256
1777 (base32
1778 "0nc0rk9n8grkg3045xsw34whmcmddn2sfrxki4268g7kpgz0d2yz"))))
1779 (build-system asdf-build-system/sbcl)
1780 (synopsis "Collection of Common Lisp utility functions and macros")
1781 (description
1782 "@command{cl-jpl-util} is a collection of Common Lisp utility functions
1783and macros, primarily for software projects written in CL by the author.")
1784 (home-page "https://www.thoughtcrime.us/software/cl-jpl-util/")
1785 (license license:isc))))
1786
1787(define-public cl-jpl-util
1788 (sbcl-package->cl-source-package sbcl-jpl-util))
1789
1790(define-public ecl-jpl-util
1791 (sbcl-package->ecl-package sbcl-jpl-util))
8f41fa06
PN
1792
1793(define-public sbcl-jpl-queues
1794 (package
1795 (name "sbcl-jpl-queues")
1796 (version "0.1")
1797 (source
1798 (origin
1799 (method url-fetch)
1800 (uri (string-append
1801 "http://www.thoughtcrime.us/software/jpl-queues/jpl-queues-"
1802 version
1803 ".tar.gz"))
1804 (sha256
1805 (base32
1806 "1wvvv7j117h9a42qaj1g4fh4mji28xqs7s60rn6d11gk9jl76h96"))))
1807 (build-system asdf-build-system/sbcl)
1808 (inputs
1809 `(("jpl-util" ,sbcl-jpl-util)
1810 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
1811 (arguments
1812 ;; Tests seem to be broken.
1813 `(#:tests? #f))
1814 (synopsis "Common Lisp library implementing a few different kinds of queues")
1815 (description
1816 "A Common Lisp library implementing a few different kinds of queues:
1817
1818@itemize
1819@item Bounded and unbounded FIFO queues.
1820@item Lossy bounded FIFO queues that drop elements when full.
1821@item Unbounded random-order queues that use less memory than unbounded FIFO queues.
1822@end itemize
1823
1824Additionally, a synchronization wrapper is provided to make any queue
1825conforming to the @command{jpl-queues} API thread-safe for lightweight
1826multithreading applications. (See Calispel for a more sophisticated CL
1827multithreaded message-passing library with timeouts and alternation among
1828several blockable channels.)")
1829 (home-page "https://www.thoughtcrime.us/software/jpl-queues/")
1830 (license license:isc)))
1831
1832(define-public cl-jpl-queues
1833 (sbcl-package->cl-source-package sbcl-jpl-queues))
1834
1835(define-public ecl-jpl-queues
1836 (sbcl-package->ecl-package sbcl-jpl-queues))
989cd79b
PN
1837
1838(define-public sbcl-eos
1839 (let ((commit "b0faca83781ead9a588661e37bd47f90362ccd94"))
1840 (package
1841 (name "sbcl-eos")
1842 (version (git-version "0.0.0" "1" commit))
1843 (source
1844 (origin
1845 (method git-fetch)
1846 (uri (git-reference
1847 (url "https://github.com/adlai/Eos")
1848 (commit commit)))
1849 (sha256
1850 (base32
1851 "1bq8cfg087iyxmxi1mwgx5cfgy3b8ydrf81xljcis8qbgb2vszph"))
1852 (file-name (git-file-name "eos" version))))
1853 (build-system asdf-build-system/sbcl)
1854 (synopsis "Unit Testing for Common Lisp")
1855 (description
1856 "Eos was a unit testing library for Common Lisp.
1857It began as a fork of FiveAM; however, FiveAM development has continued, while
1858that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
1859 (home-page "https://github.com/adlai/Eos")
1860 (license license:expat))))
1861
1862(define-public cl-eos
1863 (sbcl-package->cl-source-package sbcl-eos))
1864
1865(define-public ecl-eos
1866 (sbcl-package->ecl-package sbcl-eos))
bdf83297
PN
1867
1868(define-public sbcl-esrap
1869 (let ((commit "133be8b05c2aae48696fe5b739eea2fa573fa48d"))
1870 (package
1871 (name "sbcl-esrap")
1872 (version (git-version "0.0.0" "1" commit))
1873 (source
1874 (origin
1875 (method git-fetch)
1876 (uri (git-reference
1877 (url "https://github.com/nikodemus/esrap")
1878 (commit commit)))
1879 (sha256
1880 (base32
1881 "02d5clihsdryhf7pix8c5di2571fdsffh75d40fkzhws90r5mksl"))
1882 (file-name (git-file-name "esrap" version))))
1883 (build-system asdf-build-system/sbcl)
1884 (native-inputs
1885 `(("eos" ,sbcl-eos))) ;For testing only.
1886 (inputs
1887 `(("alexandria" ,sbcl-alexandria)))
1888 (synopsis "Common Lisp packrat parser")
1889 (description
1890 "A packrat parser for Common Lisp.
1891In addition to regular Packrat / Parsing Grammar / TDPL features ESRAP supports:
1892
1893@itemize
1894@item dynamic redefinition of nonterminals
1895@item inline grammars
1896@item semantic predicates
1897@item introspective facilities (describing grammars, tracing, setting breaks)
1898@end itemize\n")
1899 (home-page "https://nikodemus.github.io/esrap/")
1900 (license license:expat))))
1901
1902(define-public cl-esrap
1903 (sbcl-package->cl-source-package sbcl-esrap))
1904
1905(define-public ecl-esrap
1906 (sbcl-package->ecl-package sbcl-esrap))
14100159
PN
1907
1908(define-public sbcl-split-sequence
1909 (package
1910 (name "sbcl-split-sequence")
1911 (version "1.4.1")
1912 (source
1913 (origin
1914 (method git-fetch)
1915 (uri (git-reference
1916 (url "https://github.com/sharplispers/split-sequence")
1917 (commit (string-append "v" version))))
1918 (sha256
1919 (base32
1920 "0c3zp6b7fmmp93sfhq112ind4zkld49ycw68z409xpnz3gc0wpf0"))
1921 (file-name (git-file-name "split-sequence" version))))
1922 (build-system asdf-build-system/sbcl)
1923 (arguments
1924 ;; TODO: Tests seem to be broken.
1925 ;; https://github.com/sharplispers/split-sequence/issues/8
1926 `(#:tests? #f))
1927 (synopsis "Member of the Common Lisp Utilities family of programs")
1928 (description
1929 "Splits sequence into a list of subsequences delimited by objects
1930satisfying the test.")
1931 (home-page "https://cliki.net/split-sequence")
1932 (license license:expat)))
1933
1934(define-public cl-split-sequence
1935 (sbcl-package->cl-source-package sbcl-split-sequence))
1936
1937(define-public ecl-split-sequence
1938 (sbcl-package->ecl-package sbcl-split-sequence))
6a1761cb
PN
1939
1940(define-public sbcl-html-encode
1941 (package
1942 (name "sbcl-html-encode")
1943 (version "1.2")
1944 (source
1945 (origin
1946 (method url-fetch)
1947 (uri (string-append
1948 "http://beta.quicklisp.org/archive/html-encode/2010-10-06/html-encode-"
1949 version ".tgz"))
1950 (sha256
1951 (base32
1952 "06mf8wn95yf5swhmzk4vp0xr4ylfl33dgfknkabbkd8n6jns8gcf"))
1953 (file-name (string-append "colorize" version "-checkout"))))
1954 (build-system asdf-build-system/sbcl)
1955 (synopsis "Common Lisp library for encoding text in various web-savvy encodings")
1956 (description
1957 "A library for encoding text in various web-savvy encodings.")
1958 (home-page "http://quickdocs.org/html-encode/")
1959 (license license:expat)))
1960
1961(define-public cl-html-encode
1962 (sbcl-package->cl-source-package sbcl-html-encode))
1963
1964(define-public ecl-html-encode
1965 (sbcl-package->ecl-package sbcl-html-encode))
b4ba1c0a
PN
1966
1967(define-public sbcl-colorize
1968 (let ((commit "ea676b584e0899cec82f21a9e6871172fe3c0eb5"))
1969 (package
1970 (name "sbcl-colorize")
1971 (version (git-version "0.0.0" "1" commit))
1972 (source
1973 (origin
1974 (method git-fetch)
1975 (uri (git-reference
1976 (url "https://github.com/kingcons/colorize")
1977 (commit commit)))
1978 (sha256
1979 (base32
1980 "1pdg4kiaczmr3ivffhirp7m3lbr1q27rn7dhaay0vwghmi31zcw9"))
1981 (file-name (git-file-name "colorize" version))))
1982 (build-system asdf-build-system/sbcl)
1983 (inputs
1984 `(("alexandria" ,sbcl-alexandria)
1985 ("split-sequence" ,sbcl-split-sequence)
1986 ("html-encode" ,sbcl-html-encode)))
1987 (synopsis "Common Lisp for syntax highlighting")
1988 (description
1989 "@command{colorize} is a Lisp library for syntax highlighting
1990supporting the following languages: Common Lisp, Emacs Lisp, Scheme, Clojure,
1991C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
1992 (home-page "https://github.com/kingcons/colorize")
1993 ;; TODO: Missing license?
1994 (license license:expat))))
1995
1996(define-public cl-colorize
1997 (sbcl-package->cl-source-package sbcl-colorize))
1998
1999(define-public ecl-colorize
2000 (sbcl-package->ecl-package sbcl-colorize))
ef0c3e14
PN
2001
2002(define-public sbcl-3bmd
2003 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
2004 (package
2005 (name "sbcl-3bmd")
2006 (version (git-version "0.0.0" "1" commit))
2007 (source
2008 (origin
2009 (method git-fetch)
2010 (uri (git-reference
2011 (url "https://github.com/3b/3bmd")
2012 (commit commit)))
2013 (sha256
2014 (base32
2015 "1rgv3gi7wf963ikmmpk132wgn0icddf226gq3bmcnk1fr3v9gf2f"))
2016 (file-name (git-file-name "3bmd" version))))
2017 (build-system asdf-build-system/sbcl)
2018 (arguments
2019 ;; FIXME: We need to specify the name because the build-system thinks
2020 ;; "3" is a version marker.
2021 `(#:asd-system-name "3bmd"))
2022 (inputs
2023 `(("esrap" ,sbcl-esrap)
2024 ("split-sequence" ,sbcl-split-sequence)))
2025 (synopsis "Markdown processor in Command Lisp using esrap parser")
2026 (description
2027 "Common Lisp Markdown -> HTML converter, using @command{esrap} for
2028parsing, and grammar based on @command{peg-markdown}.")
2029 (home-page "https://github.com/3b/3bmd")
2030 (license license:expat))))
2031
2032(define-public cl-3bmd
2033 (sbcl-package->cl-source-package sbcl-3bmd))
2034
2035(define-public ecl-3bmd
2036 (sbcl-package->ecl-package sbcl-3bmd))
1a3d39c4
PN
2037
2038(define-public sbcl-3bmd-ext-code-blocks
2039 (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
2040 (package
2041 (inherit sbcl-3bmd)
2042 (name "sbcl-3bmd-ext-code-blocks")
2043 (arguments
2044 `(#:asd-system-name "3bmd-ext-code-blocks"
2045 #:asd-file "3bmd-ext-code-blocks.asd"))
2046 (inputs
2047 `(("3bmd" ,sbcl-3bmd)
2048 ("colorize" ,sbcl-colorize)))
2049 (synopsis "3bmd extension which adds support for GitHub-style fenced
2050code blocks")
2051 (description
2052 "3bmd extension which adds support for GitHub-style fenced code blocks,
2053with @command{colorize} support."))))
2054
2055(define-public cl-3bmd-ext-code-blocks
2056 (sbcl-package->cl-source-package sbcl-3bmd-ext-code-blocks))
2057
2058(define-public ecl-3bmd-ext-code-blocks
2059 (sbcl-package->ecl-package sbcl-3bmd-ext-code-blocks))
18554968
PN
2060
2061(define-public sbcl-cl-fad
2062 (package
2063 (name "sbcl-cl-fad")
2064 (version "0.7.5")
2065 (source
2066 (origin
2067 (method git-fetch)
2068 (uri (git-reference
2069 (url "https://github.com/edicl/cl-fad/")
2070 (commit (string-append "v" version))))
2071 (sha256
2072 (base32
2073 "1l1qmk9z57q84bz5r04sxsksggsnd7dgkxlybzh9imz6ma7sm52m"))
2074 (file-name (string-append "cl-fad" version "-checkout"))))
2075 (build-system asdf-build-system/sbcl)
2076 (inputs
2077 `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
2078 (synopsis "Portable pathname library for Common Lisp")
2079 (description
2080 "CL-FAD (for \"Files and Directories\") is a thin layer atop Common
2081Lisp's standard pathname functions. It is intended to provide some
2082unification between current CL implementations on Windows, OS X, Linux, and
2083Unix. Most of the code was written by Peter Seibel for his book Practical
2084Common Lisp.")
2085 (home-page "https://edicl.github.io/cl-fad/")
2086 (license license:bsd-2)))
2087
2088(define-public cl-fad
2089 (sbcl-package->cl-source-package sbcl-cl-fad))
2090
2091(define-public ecl-cl-fad
2092 (sbcl-package->ecl-package sbcl-cl-fad))
5800c538
PN
2093
2094(define-public sbcl-rt
2095 (package
2096 (name "sbcl-rt")
2097 (version "1990.12.19")
2098 (source
2099 (origin
2100 (method url-fetch)
2101 (uri (string-append "http://beta.quicklisp.org/archive/rt/2010-10-06/rt-"
2102 "20101006-git" ".tgz"))
2103 (sha256
2104 (base32
2105 "1jncar0xwkqk8yrc2dln389ivvgzs7ijdhhs3zpfyi5d21f0qa1v"))))
2106 (build-system asdf-build-system/sbcl)
2107 (synopsis "MIT Regression Tester")
2108 (description
2109 "RT provides a framework for writing regression test suites.")
2110 (home-page "https://github.com/sharplispers/nibbles")
2111 (license license:unlicense)))
2112
2113(define-public cl-rt
2114 (sbcl-package->cl-source-package sbcl-rt))
2115
2116(define-public ecl-rt
2117 (sbcl-package->ecl-package sbcl-rt))
fbdd9b2c
PN
2118
2119(define-public sbcl-nibbles
2120 (package
2121 (name "sbcl-nibbles")
2122 (version "0.14")
2123 (source
2124 (origin
2125 (method git-fetch)
2126 (uri (git-reference
2127 (url "https://github.com/sharplispers/nibbles/")
2128 (commit (string-append "v" version))))
2129 (sha256
2130 (base32
2131 "1v7qfgpvdr6nz7v63dj69d26dis0kff3rd8xamr1llfdvza2pm8f"))
2132 (file-name (git-file-name "nibbles" version))))
2133 (build-system asdf-build-system/sbcl)
2134 (native-inputs
2135 ;; Tests only.
2136 `(("rt" ,sbcl-rt)))
2137 (synopsis "Common Lisp library for accessing octet-addressed blocks of data")
2138 (description
2139 "When dealing with network protocols and file formats, it's common to
2140have to read or write 16-, 32-, or 64-bit datatypes in signed or unsigned
2141flavors. Common Lisp sort of supports this by specifying :element-type for
2142streams, but that facility is underspecified and there's nothing similar for
2143read/write from octet vectors. What most people wind up doing is rolling their
2144own small facility for their particular needs and calling it a day.
2145
2146This library attempts to be comprehensive and centralize such
2147facilities. Functions to read 16-, 32-, and 64-bit quantities from octet
2148vectors in signed or unsigned flavors are provided; these functions are also
2149SETFable. Since it's sometimes desirable to read/write directly from streams,
2150functions for doing so are also provided. On some implementations,
2151reading/writing IEEE singles/doubles (i.e. single-float and double-float) will
2152also be supported.")
2153 (home-page "https://github.com/sharplispers/nibbles")
2154 (license license:bsd-3)))
2155
2156(define-public cl-nibbles
2157 (sbcl-package->cl-source-package sbcl-nibbles))
2158
2159(define-public ecl-nibbles
2160 (sbcl-package->ecl-package sbcl-nibbles))
e549ba05
PN
2161
2162(define-public sbcl-ironclad
2163 (package
2164 (name "sbcl-ironclad")
2165 (version "0.42")
2166 (source
2167 (origin
2168 (method git-fetch)
2169 (uri (git-reference
2170 (url "https://github.com/sharplispers/ironclad/")
2171 (commit (string-append "v" version))))
2172 (sha256
2173 (base32
2174 "1wjcb9vpybxjrmch7f7s78a5abxmnknbd4fl49dl5lz8a3fc8vf0"))
2175 (file-name (string-append "ironblad" version "-checkout"))))
2176 (build-system asdf-build-system/sbcl)
2177 (native-inputs
2178 ;; Tests only.
2179 `(("rt" ,sbcl-rt)))
2180 (inputs
2181 `(("flexi-streams" ,sbcl-flexi-streams)
2182 ("nibbles" ,sbcl-nibbles)))
2183 (synopsis "Cryptographic toolkit written in Common Lisp")
2184 (description
2185 "Ironclad is a cryptography library written entirely in Common Lisp.
2186It includes support for several popular ciphers, digests, MACs and public key
2187cryptography algorithms. For several implementations that support Gray
2188streams, support is included for convenient stream wrappers.")
2189 (home-page "https://github.com/sharplispers/ironclad")
2190 (license license:bsd-3)))
2191
2192(define-public cl-ironclad
2193 (sbcl-package->cl-source-package sbcl-ironclad))
2194
2195(define-public ecl-ironclad
2196 (sbcl-package->ecl-package sbcl-ironclad))
fb8c4bc6
PN
2197
2198(define-public sbcl-named-readtables
2199 (let ((commit "4dfb89fa1af6b305b6492b8af042f5190c11e9fc")
2200 (revision "1"))
2201 (package
2202 (name "sbcl-named-readtables")
2203 (version (string-append "0.9-" revision "." (string-take commit 7)))
2204 (source
2205 (origin
2206 (method git-fetch)
2207 (uri (git-reference
2208 (url "https://github.com/melisgl/named-readtables.git")
2209 (commit commit)))
2210 (sha256
2211 (base32 "083kgh5462iqbb4px6kq8s7sggvpvkm36hx4qi9rnaw53b6ilqkk"))
2212 (file-name (git-file-name "named-readtables" version))))
2213 (build-system asdf-build-system/sbcl)
2214 (arguments
2215 ;; Tests seem to be broken.
2216 `(#:tests? #f))
2217 (home-page "https://github.com/melisgl/named-readtables/")
2218 (synopsis "Library that creates a namespace for named readtables")
2219 (description "Named readtables is a library that creates a namespace for
2220named readtables, which is akin to package namespacing in Common Lisp.")
2221 (license license:bsd-3))))
2222
2223(define-public cl-named-readtables
2224 (sbcl-package->cl-source-package sbcl-named-readtables))
2225
2226(define-public ecl-named-readtables
2227 (sbcl-package->ecl-package sbcl-named-readtables))
f07efbf1
PN
2228
2229(define-public sbcl-pythonic-string-reader
2230 (let ((commit "47a70ba1e32362e03dad6ef8e6f36180b560f86a"))
2231 (package
2232 (name "sbcl-pythonic-string-reader")
2233 (version (git-version "0.0.0" "1" commit))
2234 (source
2235 (origin
2236 (method git-fetch)
2237 (uri (git-reference
2238 (url "https://github.com/smithzvk/pythonic-string-reader/")
2239 (commit commit)))
2240 (sha256
2241 (base32 "1b5iryqw8xsh36swckmz8rrngmc39k92si33fgy5pml3n9l5rq3j"))
2242 (file-name (git-file-name "pythonic-string-reader" version))))
2243 (build-system asdf-build-system/sbcl)
2244 (inputs
2245 `(("named-readtables" ,sbcl-named-readtables)))
2246 (home-page "https://github.com/smithzvk/pythonic-string-reader")
2247 (synopsis "Read table modification inspired by Python's three quote strings")
2248 (description "This piece of code sets up some reader macros that make it
2249simpler to input string literals which contain backslashes and double quotes
2250This is very useful for writing complicated docstrings and, as it turns out,
2251writing code that contains string literals that contain code themselves.")
2252 (license license:bsd-3))))
2253
2254(define-public cl-pythonic-string-reader
2255 (sbcl-package->cl-source-package sbcl-pythonic-string-reader))
2256
2257(define-public ecl-pythonic-string-reader
2258 (sbcl-package->ecl-package sbcl-pythonic-string-reader))
8d8d1c8d 2259
c4d4ae1e
PN
2260(define-public sbcl-slime-swank
2261 (package
2262 (name "sbcl-slime-swank")
2263 (version "2.22")
2264 (source
2265 (origin
2266 (file-name (string-append name "-" version ".tar.gz"))
2267 (method git-fetch)
2268 (uri (git-reference
2269 ;; (url "https://github.com/slime/slime/")
2270 ;; (commit "841f61467c03dea9f38ff9d5af0e21a8aa29e8f7")
2271 ;; REVIEW: Do we need sionescu's patch to package SWANK?
2272 (url "https://github.com/sionescu/slime/")
2273 ;; (commit "swank-asdf")
2274 (commit "2f7c3fcb3ac7d50d844d5c6ca0e89b52a45e1d3a")))
2275 (sha256
2276 (base32
2277 ;; "065bc4y6iskazdfwlhgcjlzg9bi2hyjbhmyjw3461506pgkj08vi"
2278 "0pkmg94wn4ii1zhlrncn44mdc5i6c5v0i9gbldx4dwl2yy7ibz5c"))
2279 (modules '((guix build utils)))
2280 (snippet
2281 '(begin
2282 (substitute* "contrib/swank-listener-hooks.lisp"
2283 ((":compile-toplevel :load-toplevel ") ""))
2284 (substitute* "contrib/swank-presentations.lisp"
2285 ((":compile-toplevel :load-toplevel ") ""))
2286 (substitute* "swank.asd"
2287 ((":file \"packages\".*" all)
2288 (string-append all "(:file \"swank-loader-asdf\")\n")))
2289 (substitute* "swank-loader-asdf.lisp"
2290 ((":common-lisp" all) (string-append all " #:asdf")))
2291 #t))))
2292 (build-system asdf-build-system/sbcl)
2293 (arguments
2294 `(#:asd-file "swank.asd"
2295 #:asd-system-name "swank"))
2296 (home-page "https://github.com/slime/slime")
2297 (synopsis "Common Lisp Swank server")
2298 (description
2299 "This is only useful if you want to start a Swank server in a Lisp
2300processes that doesn't run under Emacs. Lisp processes created by
2301@command{M-x slime} automatically start the server.")
0ee6692a 2302 (license (list license:gpl2+ license:public-domain))))
c4d4ae1e 2303
8d8d1c8d
PN
2304(define-public sbcl-mgl-pax
2305 (let ((commit "818448418d6b9de74620f606f5b23033c6082769"))
2306 (package
2307 (name "sbcl-mgl-pax")
2308 (version (git-version "0.0.0" "1" commit))
2309 (source
2310 (origin
2311 (method git-fetch)
2312 (uri (git-reference
2313 (url "https://github.com/melisgl/mgl-pax")
2314 (commit commit)))
2315 (sha256
2316 (base32
2317 "1p97zfkh130bdxqqxwaw2j9psv58751wakx7czbfpq410lg7dd7i"))
2318 (file-name (git-file-name "mgl-pax" version))))
2319 (build-system asdf-build-system/sbcl)
2320 (inputs
2321 `(("3bmd" ,sbcl-3bmd)
2322 ("3bmd-ext-code-blocks" ,sbcl-3bmd-ext-code-blocks)
2323 ("babel" ,sbcl-babel)
2324 ("cl-fad" ,sbcl-cl-fad)
2325 ("ironclad" ,sbcl-ironclad)
2326 ("named-readtables" ,sbcl-named-readtables)
2327 ("pythonic-string-reader" ,sbcl-pythonic-string-reader)
2328 ("swank" ,sbcl-slime-swank)))
2329 (synopsis "Exploratory programming environment and documentation generator")
2330 (description
2331 "PAX provides an extremely poor man's Explorable Programming
2332environment. Narrative primarily lives in so called sections that mix markdown
2333docstrings with references to functions, variables, etc, all of which should
2334probably have their own docstrings.
2335
2336The primary focus is on making code easily explorable by using SLIME's
2337@command{M-.} (@command{slime-edit-definition}). See how to enable some
2338fanciness in Emacs Integration. Generating documentation from sections and all
2339the referenced items in Markdown or HTML format is also implemented.
2340
2341With the simplistic tools provided, one may accomplish similar effects as with
2342Literate Programming, but documentation is generated from code, not vice versa
2343and there is no support for chunking yet. Code is first, code must look
2344pretty, documentation is code.")
2345 (home-page "http://quotenil.com/")
2346 (license license:expat))))
2347
2348(define-public cl-mgl-pax
2349 (sbcl-package->cl-source-package sbcl-mgl-pax))
2350
2351(define-public ecl-mgl-pax
2352 (sbcl-package->ecl-package sbcl-mgl-pax))
a927eb36 2353
19a1c3be
PN
2354(define-public sbcl-lisp-unit
2355 (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
2356 (package
2357 (name "sbcl-lisp-unit")
2358 (version (git-version "0.0.0" "1" commit))
2359 (source
2360 (origin
2361 (method git-fetch)
2362 (uri (git-reference
2363 (url "https://github.com/OdonataResearchLLC/lisp-unit")
2364 (commit commit)))
2365 (sha256
2366 (base32
2367 "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
2368 (file-name (git-file-name "lisp-unit" version))))
2369 (build-system asdf-build-system/sbcl)
2370 (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
2371 (description
2372 "@command{lisp-unit} is a Common Lisp library that supports unit
2373testing. It is an extension of the library written by Chris Riesbeck.")
2374 (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
2375 (license license:expat))))
2376
2377(define-public cl-lisp-unit
2378 (sbcl-package->cl-source-package sbcl-lisp-unit))
2379
2380(define-public ecl-lisp-unit
2381 (sbcl-package->ecl-package sbcl-lisp-unit))
2382
9f3000cc
PN
2383(define-public sbcl-anaphora
2384 (package
2385 (name "sbcl-anaphora")
2386 (version "0.9.6")
2387 (source
2388 (origin
2389 (method git-fetch)
2390 (uri (git-reference
2391 (url "https://github.com/tokenrove/anaphora")
2392 (commit version)))
2393 (sha256
2394 (base32
2395 "19wfrk3asimznkli0x2rfy637hwpdgqyvwj3vhq9x7vjvyf5vv6x"))
2396 (file-name (git-file-name "anaphora" version))))
2397 (build-system asdf-build-system/sbcl)
2398 (native-inputs
2399 `(("rt" ,sbcl-rt)))
2400 (synopsis "The anaphoric macro collection from Hell")
2401 (description
2402 "Anaphora is the anaphoric macro collection from Hell: it includes many
2403new fiends in addition to old friends like @command{aif} and
2404@command{awhen}.")
2405 (home-page "https://github.com/tokenrove/anaphora")
2406 (license license:public-domain)))
2407
2408(define-public cl-anaphora
2409 (sbcl-package->cl-source-package sbcl-anaphora))
2410
2411(define-public ecl-anaphora
2412 (sbcl-package->ecl-package sbcl-anaphora))
2413
5b8a801d
PN
2414(define-public sbcl-lift
2415 (let ((commit "7d49a66c62759535624037826891152223d4206c"))
2416 (package
2417 (name "sbcl-lift")
2418 (version (git-version "0.0.0" "1" commit))
2419 (source
2420 (origin
2421 (method git-fetch)
2422 (uri (git-reference
2423 (url "https://github.com/gwkkwg/lift")
2424 (commit commit)))
2425 (sha256
2426 (base32
2427 "127v5avpz1i4m0lkaxqrq8hrl69rdazqaxf6s8awf0nd7wj2g4dp"))
e9f305a1
EF
2428 (file-name (git-file-name "lift" version))
2429 (modules '((guix build utils)))
2430 (snippet
2431 ;; Don't keep the bundled website
2432 `(begin
2433 (delete-file-recursively "website")
2434 #t))))
5b8a801d
PN
2435 (build-system asdf-build-system/sbcl)
2436 (arguments
2437 ;; The tests require a debugger, but we run with the debugger disabled.
e9f305a1 2438 '(#:tests? #f))
5b8a801d
PN
2439 (synopsis "LIsp Framework for Testing")
2440 (description
2441 "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
2442Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
2443testcases are organized into hierarchical testsuites each of which can have
2444its own fixture. When run, a testcase can succeed, fail, or error. LIFT
2445supports randomized testing, benchmarking, profiling, and reporting.")
2446 (home-page "https://github.com/gwkkwg/lift")
fdf02484 2447 (license license:expat))))
5b8a801d
PN
2448
2449(define-public cl-lift
2450 (sbcl-package->cl-source-package sbcl-lift))
2451
2452(define-public ecl-lift
2453 (sbcl-package->ecl-package sbcl-lift))
2454
d4142232
PN
2455(define-public sbcl-let-plus
2456 (let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb"))
2457 (package
2458 (name "sbcl-let-plus")
2459 (version (git-version "0.0.0" "1" commit))
2460 (source
2461 (origin
2462 (method git-fetch)
2463 (uri (git-reference
2464 (url "https://github.com/sharplispers/let-plus")
2465 (commit commit)))
2466 (sha256
2467 (base32
2468 "0i050ca2iys9f5mb7dgqgqdxfnc3b0rnjdwv95sqd490vkiwrsaj"))
2469 (file-name (git-file-name "let-plus" version))))
2470 (build-system asdf-build-system/sbcl)
2471 (inputs
2472 `(("alexandria" ,sbcl-alexandria)
2473 ("anaphora" ,sbcl-anaphora)))
2474 (native-inputs
2475 `(("lift" ,sbcl-lift)))
2476 (synopsis "Destructuring extension of let*")
2477 (description
2478 "This library implements the let+ macro, which is a dectructuring
2479extension of let*. It features:
2480
2481@itemize
2482@item Clean, consistent syntax and small implementation (less than 300 LOC,
2483not counting tests)
2484@item Placeholder macros allow editor hints and syntax highlighting
2485@item @command{&ign} for ignored values (in forms where that makes sense)
2486@item Very easy to extend
2487@end itemize\n")
2488 (home-page "https://github.com/sharplispers/let-plus")
2489 (license license:boost1.0))))
2490
2491(define-public cl-let-plus
2492 (sbcl-package->cl-source-package sbcl-let-plus))
2493
2494(define-public ecl-let-plus
2495 (sbcl-package->ecl-package sbcl-let-plus))
2496
8caa928d
PN
2497(define-public sbcl-cl-colors
2498 (let ((commit "827410584553f5c717eec6182343b7605f707f75"))
2499 (package
2500 (name "sbcl-cl-colors")
2501 (version (git-version "0.0.0" "1" commit))
2502 (source
2503 (origin
2504 (method git-fetch)
2505 (uri (git-reference
2506 (url "https://github.com/tpapp/cl-colors")
2507 (commit commit)))
2508 (sha256
2509 (base32
2510 "0l446lday4hybsm9bq3jli97fvv8jb1d33abg79vbylpwjmf3y9a"))
2511 (file-name (git-file-name "cl-colors" version))))
2512 (build-system asdf-build-system/sbcl)
2513 (inputs
2514 `(("alexandria" ,sbcl-alexandria)
2515 ("let-plus" ,sbcl-let-plus)))
2516 (synopsis "Simple color library for Common Lisp")
2517 (description
2518 "This is a very simple color library for Common Lisp, providing
2519
2520@itemize
2521@item Types for representing colors in HSV and RGB spaces.
2522@item Simple conversion functions between the above types (and also
2523hexadecimal representation for RGB).
2524@item Some predefined colors (currently X11 color names – of course the
2525library does not depend on X11).Because color in your terminal is nice.
2526@end itemize
2527
2528This library is no longer supported by its author.")
2529 (home-page "https://github.com/tpapp/cl-colors")
2530 (license license:boost1.0))))
2531
2532(define-public cl-colors
2533 (sbcl-package->cl-source-package sbcl-cl-colors))
2534
2535(define-public ecl-cl-colors
2536 (sbcl-package->ecl-package sbcl-cl-colors))
2537
68a7b929
PN
2538(define-public sbcl-cl-ansi-text
2539 (let ((commit "53badf7878f27f22f2d4a2a43e6df458e43acbe9"))
2540 (package
2541 (name "sbcl-cl-ansi-text")
2542 (version (git-version "1.0.0" "1" commit))
2543 (source
2544 (origin
2545 (method git-fetch)
2546 (uri (git-reference
2547 (url "https://github.com/pnathan/cl-ansi-text")
2548 (commit commit)))
2549 (sha256
2550 (base32
2551 "11i27n0dbz5lmygiw65zzr8lx0rac6b6yysqranphn31wls6ja3v"))
2552 (file-name (git-file-name "cl-ansi-text" version))))
2553 (build-system asdf-build-system/sbcl)
2554 (inputs
2555 `(("alexandria" ,sbcl-alexandria)
2556 ("cl-colors" ,sbcl-cl-colors)))
2557 (native-inputs
2558 `(("fiveam" ,sbcl-fiveam)))
2559 (synopsis "ANSI terminal color implementation for Common Lisp")
2560 (description
2561 "@command{cl-ansi-text} provides utilities which enable printing to an
2562ANSI terminal with colored text. It provides the macro @command{with-color}
2563which causes everything printed in the body to be displayed with the provided
2564color. It further provides functions which will print the argument with the
2565named color.")
2566 (home-page "https://github.com/pnathan/cl-ansi-text")
5914489d 2567 (license license:llgpl))))
68a7b929
PN
2568
2569(define-public cl-ansi-text
2570 (sbcl-package->cl-source-package sbcl-cl-ansi-text))
2571
2572(define-public ecl-cl-ansi-text
2573 (sbcl-package->ecl-package sbcl-cl-ansi-text))
2574
1a42bb80
PN
2575(define-public sbcl-prove-asdf
2576 (let ((commit "4f9122bd393e63c5c70c1fba23070622317cfaa0"))
2577 (package
2578 (name "sbcl-prove-asdf")
2579 (version (git-version "1.0.0" "1" commit))
2580 (source
2581 (origin
2582 (method git-fetch)
2583 (uri (git-reference
2584 (url "https://github.com/fukamachi/prove")
2585 (commit commit)))
2586 (sha256
2587 (base32
2588 "07sbfw459z8bbjvx1qlmfa8qk2mvbjnnzi2mi0x72blaj8bkl4vc"))
2589 (file-name (git-file-name "prove" version))))
2590 (build-system asdf-build-system/sbcl)
2591 (arguments
2592 `(#:asd-file "prove-asdf.asd"))
2593 (synopsis "Test requirement for the Common Lisp 'prove' library")
2594 (description
2595 "Test requirement for the Common Lisp @command{prove} library.")
2596 (home-page "https://github.com/fukamachi/prove")
2597 (license license:expat))))
2598
2599(define-public cl-prove-asdf
2600 (sbcl-package->cl-source-package sbcl-prove-asdf))
2601
2602(define-public ecl-prove-asdf
2603 (sbcl-package->ecl-package sbcl-prove-asdf))
2604
86afb0a2
PN
2605(define-public sbcl-prove
2606 (package
2607 (inherit sbcl-prove-asdf)
2608 (name "sbcl-prove")
2609 (inputs
2610 `(("alexandria" ,sbcl-alexandria)
2611 ("cl-ppcre" ,sbcl-cl-ppcre)
2612 ("cl-ansi-text" ,sbcl-cl-ansi-text)))
2613 (native-inputs
2614 `(("prove-asdf" ,sbcl-prove-asdf)))
2615 (arguments
2616 `(#:asd-file "prove.asd"))
2617 (synopsis "Yet another unit testing framework for Common Lisp")
2618 (description
2619 "This project was originally called @command{cl-test-more}.
2620@command{prove} is yet another unit testing framework for Common Lisp. The
2621advantages of @command{prove} are:
2622
2623@itemize
2624@item Various simple functions for testing and informative error messages
2625@item ASDF integration
2626@item Extensible test reporters
2627@item Colorizes the report if it's available (note for SLIME)
2628@item Reports test durations
2629@end itemize\n")))
2630
2631(define-public cl-prove
2632 (sbcl-package->cl-source-package sbcl-prove))
2633
2634(define-public ecl-prove
2635 (sbcl-package->ecl-package sbcl-prove))
2636
41b3b866
PN
2637(define-public sbcl-proc-parse
2638 (let ((commit "ac3636834d561bdc2686c956dbd82494537285fd"))
2639 (package
2640 (name "sbcl-proc-parse")
2641 (version (git-version "0.0.0" "1" commit))
2642 (source
2643 (origin
2644 (method git-fetch)
2645 (uri (git-reference
2646 (url "https://github.com/fukamachi/proc-parse")
2647 (commit commit)))
2648 (sha256
2649 (base32
2650 "06rnl0h4cx6xv2wj3jczmmcxqn2703inmmvg1s4npbghmijsybfh"))
2651 (file-name (git-file-name "proc-parse" version))))
2652 (build-system asdf-build-system/sbcl)
2653 (inputs
2654 `(("alexandria" ,sbcl-alexandria)
2655 ("babel" ,sbcl-babel)))
2656 (native-inputs
2657 `(("prove" ,sbcl-prove)
2658 ("prove-asdf" ,sbcl-prove-asdf)))
2659 (arguments
2660 ;; TODO: Tests don't find "proc-parse-test", why?
2661 `(#:tests? #f))
2662 (synopsis "Procedural vector parser")
2663 (description
2664 "This is a string/octets parser library for Common Lisp with speed and
2665readability in mind. Unlike other libraries, the code is not a
2666pattern-matching-like, but a char-by-char procedural parser.")
2667 (home-page "https://github.com/fukamachi/proc-parse")
2668 (license license:bsd-2))))
2669
2670(define-public cl-proc-parse
2671 (sbcl-package->cl-source-package sbcl-proc-parse))
2672
2673(define-public ecl-proc-parse
2674 (sbcl-package->ecl-package sbcl-proc-parse))
2675
28b52970
PN
2676(define-public sbcl-parse-float
2677 (let ((commit "2aae569f2a4b2eb3bfb5401a959425dcf151b09c"))
2678 (package
2679 (name "sbcl-parse-float")
2680 (version (git-version "0.0.0" "1" commit))
2681 (source
2682 (origin
2683 (method git-fetch)
2684 (uri (git-reference
2685 (url "https://github.com/soemraws/parse-float")
2686 (commit commit)))
2687 (sha256
2688 (base32
2689 "08xw8cchhmqcc0byng69m3f5a2izc9y2290jzz2k0qrbibp1fdk7"))
2690 (file-name (git-file-name "proc-parse" version))))
2691 (build-system asdf-build-system/sbcl)
2692 (inputs
2693 `(("alexandria" ,sbcl-alexandria)
2694 ("babel" ,sbcl-babel)))
2695 (native-inputs
2696 `(("prove" ,sbcl-prove)
2697 ("prove-asdf" ,sbcl-prove-asdf)))
2698 (arguments
2699 ;; TODO: Tests don't find "proc-parse-test", why?
2700 `(#:tests? #f))
2701 (synopsis "Parse a floating point value from a string in Common Lisp")
2702 (description
2703 "This package exports the following function to parse floating-point
2704values from a string in Common Lisp.")
2705 (home-page "https://github.com/soemraws/parse-float")
28b52970
PN
2706 (license license:public-domain))))
2707
2708(define-public cl-parse-float
2709 (sbcl-package->cl-source-package sbcl-parse-float))
2710
2711(define-public ecl-parse-float
2712 (sbcl-package->ecl-package sbcl-parse-float))
2713
a927eb36
PN
2714(define-public sbcl-ascii-strings
2715 (let ((revision "1")
2716 (changeset "5048480a61243e6f1b02884012c8f25cdbee6d97"))
2717 (package
2718 (name "sbcl-ascii-strings")
2719 (version (string-append "0-" revision "." (string-take changeset 7)))
2720 (source
2721 (origin
2722 (method hg-fetch)
2723 (uri (hg-reference
2724 (url "https://bitbucket.org/vityok/cl-string-match/")
2725 (changeset changeset)))
2726 (sha256
2727 (base32
2728 "01wn5qx562w43ssy92xlfgv79w7p0nv0wbl76mpmba131n9ziq2y"))
2729 (file-name (git-file-name "cl-string-match" version))))
2730 (build-system asdf-build-system/sbcl)
2731 (inputs
2732 `(("alexandria" ,sbcl-alexandria)
2733 ("babel" ,sbcl-babel)))
2734 (arguments
2735 `(#:asd-file "ascii-strings.asd"))
2736 (synopsis "Operations on ASCII strings")
2737 (description
2738 "Operations on ASCII strings. Essentially this can be any kind of
2739single-byte encoded strings.")
2740 (home-page "https://bitbucket.org/vityok/cl-string-match/")
2741 (license license:bsd-3))))
2742
2743(define-public cl-ascii-strings
2744 (sbcl-package->cl-source-package sbcl-ascii-strings))
2745
2746(define-public ecl-ascii-strings
2747 (sbcl-package->ecl-package sbcl-ascii-strings))
109ce303 2748
a28d00d9
PN
2749(define-public sbcl-simple-scanf
2750 (package
2751 (inherit sbcl-ascii-strings)
2752 (name "sbcl-simple-scanf")
2753 (inputs
2754 `(("alexandria" ,sbcl-alexandria)
2755 ("iterate" ,sbcl-iterate)
2756 ("proc-parse" ,sbcl-proc-parse)
2757 ("parse-float" ,sbcl-parse-float)))
2758 (arguments
2759 `(#:asd-file "simple-scanf.asd"))
2760 (synopsis "Simple scanf-like functionality implementation")
2761 (description
2762 "A simple scanf-like functionality implementation.")))
2763
2764(define-public cl-simple-scanf
2765 (sbcl-package->cl-source-package sbcl-simple-scanf))
2766
2767(define-public ecl-simple-scanf
2768 (sbcl-package->ecl-package sbcl-simple-scanf))
2769
109ce303
PN
2770(define-public sbcl-cl-string-match
2771 (package
2772 (inherit sbcl-ascii-strings)
2773 (name "sbcl-cl-string-match")
2774 (inputs
2775 `(("alexandria" ,sbcl-alexandria)
2776 ("ascii-strings" ,sbcl-ascii-strings)
2777 ("yacc" ,sbcl-cl-yacc)
2778 ("jpl-util" ,sbcl-jpl-util)
2779 ("jpl-queues" ,sbcl-jpl-queues)
2780 ("mgl-pax" ,sbcl-mgl-pax)
2781 ("iterate" ,sbcl-iterate)))
2782 ;; TODO: Tests are not evaluated properly.
2783 (native-inputs
2784 ;; For testing:
2785 `(("lisp-unit" ,sbcl-lisp-unit)
2786 ("simple-scanf" ,sbcl-simple-scanf)))
2787 (arguments
2788 `(#:tests? #f
2789 #:asd-file "cl-string-match.asd"))
2790 (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
2791 (description
2792 "@command{cl-strings} is a small, portable, dependency-free set of
2793utilities that make it even easier to manipulate text in Common Lisp. It has
2794100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")))
2795
2796(define-public cl-string-match
2797 (sbcl-package->cl-source-package sbcl-cl-string-match))
2798
2799(define-public ecl-cl-string-match
2800 (sbcl-package->ecl-package sbcl-cl-string-match))
1de50cb7
PN
2801
2802(define-public sbcl-ptester
2803 (package
2804 (name "sbcl-ptester")
2805 (version "20160929")
2806 (source
2807 (origin
2808 (method url-fetch)
2809 (uri (string-append "http://beta.quicklisp.org/archive/ptester/"
2810 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2811 "/ptester-"
2812 version
2813 "-git.tgz"))
2814 (sha256
2815 (base32
2816 "04rlq1zljhxc65pm31bah3sq3as24l0sdivz440s79qlnnyh13hz"))))
2817 (build-system asdf-build-system/sbcl)
2818 (home-page "http://quickdocs.org/ptester/")
2819 (synopsis "Portable test harness package")
2820 (description
2821 "@command{ptester} is a portable testing framework based on Franz's
2822tester module.")
2823 (license license:lgpl3+)))
2824
2825(define-public cl-ptester
2826 (sbcl-package->cl-source-package sbcl-ptester))
2827
2828(define-public ecl-ptester
2829 (sbcl-package->ecl-package sbcl-ptester))
3f4c21c5
PN
2830
2831(define-public sbcl-puri
2832 (package
2833 (name "sbcl-puri")
2834 (version "20180228")
2835 (source
2836 (origin
2837 (method url-fetch)
2838 (uri (string-append "http://beta.quicklisp.org/archive/puri/"
2839 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
2840 "/puri-"
2841 version
2842 "-git.tgz"))
2843 (sha256
2844 (base32
2845 "1s4r5adrjy5asry45xbcbklxhdjydvf6n55z897nvyw33bigrnbz"))))
2846 (build-system asdf-build-system/sbcl)
2847 ;; REVIEW: Webiste down?
2848 (native-inputs
2849 `(("ptester" ,sbcl-ptester)))
2850 (home-page "http://files.kpe.io/puri/")
2851 (synopsis "Portable URI Library")
2852 (description
2853 "This is portable Universal Resource Identifier library for Common Lisp
2854programs. It parses URI according to the RFC 2396 specification")
2855 (license license:lgpl3+)))
2856
2857(define-public cl-puri
2858 (sbcl-package->cl-source-package sbcl-puri))
2859
2860(define-public ecl-puri
2861 (sbcl-package->ecl-package sbcl-puri))
eb766dfe
PN
2862
2863(define-public sbcl-queues
2864 (let ((commit "47d4da65e9ea20953b74aeeab7e89a831b66bc94"))
2865 (package
2866 (name "sbcl-queues")
2867 (version (git-version "0.0.0" "1" commit))
2868 (source
2869 (origin
2870 (method git-fetch)
2871 (uri (git-reference
2872 (url "https://github.com/oconnore/queues")
2873 (commit commit)))
2874 (file-name (git-file-name "queues" version))
2875 (sha256
2876 (base32
2877 "0wdhfnzi4v6d97pggzj2aw55si94w4327br94jrmyvwf351wqjvv"))))
2878 (build-system asdf-build-system/sbcl)
2879 (home-page "https://github.com/oconnore/queues")
2880 (synopsis "Common Lisp queue library")
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
2887 (sbcl-package->cl-source-package sbcl-queues))
2888
2889(define-public ecl-queues
2890 (sbcl-package->ecl-package sbcl-queues))
6fef7c0e
PN
2891
2892(define-public sbcl-queues.simple-queue
2893 (package
2894 (inherit sbcl-queues)
2895 (name "sbcl-queues.simple-queue")
2896 (inputs
2897 `(("sbcl-queues" ,sbcl-queues)))
2898 (arguments
2899 `(#:asd-file "queues.simple-queue.asd"))
2900 (synopsis "Simple queue implementation")
2901 (description
2902 "This is a simple queue library for Common Lisp with features such as
2903non-consing thread safe queues and fibonacci priority queues.")
2904 (license license:expat)))
2905
2906(define-public cl-queues.simple-queue
2907 (sbcl-package->cl-source-package sbcl-queues.simple-queue))
2908
2909(define-public ecl-queues.simple-queue
2910 (sbcl-package->ecl-package sbcl-queues.simple-queue))
a889ba99
PN
2911
2912(define-public sbcl-queues.simple-cqueue
2913 (package
2914 (inherit sbcl-queues)
2915 (name "sbcl-queues.simple-cqueue")
2916 (inputs
2917 `(("sbcl-queues" ,sbcl-queues)
2918 ("sbcl-queues.simple-queue" ,sbcl-queues.simple-queue)
2919 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2920 (arguments
2921 `(#:asd-file "queues.simple-cqueue.asd"))
2922 (synopsis "Thread safe queue 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.simple-cqueue
2929 (sbcl-package->cl-source-package sbcl-queues.simple-cqueue))
2930
2931(define-public ecl-queues.simple-cqueue
2932 (sbcl-package->ecl-package sbcl-queues.simple-cqueue))
144085cd
PN
2933
2934(define-public sbcl-queues.priority-queue
2935 (package
2936 (inherit sbcl-queues)
2937 (name "sbcl-queues.priority-queue")
2938 (inputs
2939 `(("sbcl-queues" ,sbcl-queues)))
2940 (arguments
2941 `(#:asd-file "queues.priority-queue.asd"))
2942 (synopsis "Priority queue (Fibonacci) implementation")
2943 (description
2944 "This is a simple queue library for Common Lisp with features such as
2945non-consing thread safe queues and fibonacci priority queues.")
2946 (license license:expat)))
2947
2948(define-public cl-queues.priority-queue
2949 (sbcl-package->cl-source-package sbcl-queues.priority-queue))
2950
2951(define-public ecl-queues.priority-queue
2952 (sbcl-package->ecl-package sbcl-queues.priority-queue))
92b1d09b
PN
2953
2954(define-public sbcl-queues.priority-cqueue
2955 (package
2956 (inherit sbcl-queues)
2957 (name "sbcl-queues.priority-cqueue")
2958 (inputs
2959 `(("sbcl-queues" ,sbcl-queues)
2960 ("sbcl-queues.priority-queue" ,sbcl-queues.priority-queue)
2961 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
2962 (arguments
2963 `(#:asd-file "queues.priority-cqueue.asd"))
2964 (synopsis "Thread safe fibonacci priority queue implementation")
2965 (description
2966 "This is a simple queue library for Common Lisp with features such as
2967non-consing thread safe queues and fibonacci priority queues.")
2968 (license license:expat)))
2969
2970(define-public cl-queues.priority-cqueue
2971 (sbcl-package->cl-source-package sbcl-queues.priority-cqueue))
2972
2973(define-public ecl-queues.priority-cqueue
2974 (sbcl-package->ecl-package sbcl-queues.priority-cqueue))
5d9bf762
PN
2975
2976(define sbcl-cffi-bootstrap
2977 (package
2978 (name "sbcl-cffi-bootstrap")
2979 (version "0.19.0")
2980 (source
2981 (origin
0924b5bc
TGR
2982 (method git-fetch)
2983 (uri (git-reference
2984 (url "https://github.com/cffi/cffi.git")
2985 (commit (string-append "v" version))))
2986 (file-name (git-file-name "cffi-bootstrap" version))
5d9bf762 2987 (sha256
0924b5bc 2988 (base32 "09sfgc6r7ihmbkwfpvkq5fxc7h45cabpvgbvs47i5cvnmv3k72xy"))))
5d9bf762
PN
2989 (build-system asdf-build-system/sbcl)
2990 (inputs
2991 `(("libffi" ,libffi)
2992 ("alexandria" ,sbcl-alexandria)
2993 ("babel" ,sbcl-babel)
2994 ("trivial-features" ,sbcl-trivial-features)))
2995 (native-inputs
2996 `(("pkg-config" ,pkg-config)))
2997 (arguments
2998 '(#:phases
2999 (modify-phases %standard-phases
3000 (add-after 'unpack 'fix-paths
3001 (lambda* (#:key inputs #:allow-other-keys)
3002 (substitute* "libffi/libffi.lisp"
3003 (("libffi.so.6" all) (string-append
3004 (assoc-ref inputs "libffi")
3005 "/lib/" all)))
3006 (substitute* "toolchain/c-toolchain.lisp"
3007 (("\"cc\"") (format #f "~S" (which "gcc")))))))
3008 #:asd-system-name "cffi"
3009 #:tests? #f))
3010 (home-page "https://common-lisp.net/project/cffi/")
3011 (synopsis "Common Foreign Function Interface for Common Lisp")
3012 (description "The Common Foreign Function Interface (CFFI)
3013purports to be a portable foreign function interface for Common Lisp.
3014The CFFI library is composed of a Lisp-implementation-specific backend
3015in the CFFI-SYS package, and a portable frontend in the CFFI
3016package.")
3017 (license license:expat)))
99b3d203
PN
3018
3019(define-public sbcl-cffi-toolchain
3020 (package
3021 (inherit sbcl-cffi-bootstrap)
3022 (name "sbcl-cffi-toolchain")
3023 (inputs
3024 `(("libffi" ,libffi)
3025 ("sbcl-cffi" ,sbcl-cffi-bootstrap)))
3026 (arguments
3027 (substitute-keyword-arguments (package-arguments sbcl-cffi-bootstrap)
3028 ((#:asd-system-name _) #f)
3029 ((#:tests? _) #t)))))
9eea4e03
PN
3030
3031(define-public sbcl-cffi-libffi
3032 (package
3033 (inherit sbcl-cffi-toolchain)
3034 (name "sbcl-cffi-libffi")
3035 (inputs
3036 `(("cffi" ,sbcl-cffi-bootstrap)
3037 ("cffi-grovel" ,sbcl-cffi-grovel)
3038 ("trivial-features" ,sbcl-trivial-features)
3039 ("libffi" ,libffi)))))
d3142f2f
PN
3040
3041(define-public sbcl-cffi-grovel
3042 (package
3043 (inherit sbcl-cffi-toolchain)
3044 (name "sbcl-cffi-grovel")
3045 (inputs
3046 `(("libffi" ,libffi)
3047 ("cffi" ,sbcl-cffi-bootstrap)
3048 ("cffi-toolchain" ,sbcl-cffi-toolchain)
3049 ("alexandria" ,sbcl-alexandria)))
3050 (arguments
3051 (substitute-keyword-arguments (package-arguments sbcl-cffi-toolchain)
3052 ((#:phases phases)
3053 `(modify-phases ,phases
3054 (add-after 'build 'install-headers
3055 (lambda* (#:key outputs #:allow-other-keys)
3056 (install-file "grovel/common.h"
3057 (string-append
3058 (assoc-ref outputs "out")
3059 "/include/grovel"))))))))))
41123072
PN
3060
3061(define-public sbcl-cffi
3062 (package
3063 (inherit sbcl-cffi-toolchain)
3064 (name "sbcl-cffi")
3065 (inputs (package-inputs sbcl-cffi-bootstrap))
3066 (native-inputs
3067 `(("cffi-grovel" ,sbcl-cffi-grovel)
3068 ("cffi-libffi" ,sbcl-cffi-libffi)
3069 ("rt" ,sbcl-rt)
3070 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3071 ,@(package-native-inputs sbcl-cffi-bootstrap)))))
8f065b47
PN
3072
3073(define-public sbcl-cl-sqlite
3074 (let ((commit "c738e66d4266ef63a1debc4ef4a1b871a068c112"))
3075 (package
3076 (name "sbcl-cl-sqlite")
3077 (version (git-version "0.2" "1" commit))
3078 (source
3079 (origin
3080 (method git-fetch)
3081 (uri (git-reference
3082 (url "https://github.com/dmitryvk/cl-sqlite")
3083 (commit commit)))
3084 (file-name (git-file-name "cl-sqlite" version))
3085 (sha256
3086 (base32
3087 "1ng45k1hdb84sqjryrfx93g66bsbybmpy301wd0fdybnc5jzr36q"))))
3088 (build-system asdf-build-system/sbcl)
3089 (inputs
3090 `(("iterate" ,sbcl-iterate)
3091 ("cffi" ,sbcl-cffi)
3092 ("sqlite" ,sqlite)))
3093 (native-inputs
3094 `(("fiveam" ,sbcl-fiveam)
3095 ("bordeaux-threads" ,sbcl-bordeaux-threads)))
3096 (arguments
3097 `(#:tests? #f ; Upstream seems to have issues with tests: https://github.com/dmitryvk/cl-sqlite/issues/7
3098 #:asd-file "sqlite.asd"
3099 #:asd-system-name "sqlite"
3100 #:phases
3101 (modify-phases %standard-phases
3102 (add-after 'unpack 'fix-paths
3103 (lambda* (#:key inputs #:allow-other-keys)
3104 (substitute* "sqlite-ffi.lisp"
3105 (("libsqlite3" all) (string-append
3106 (assoc-ref inputs "sqlite")"/lib/" all))))))))
3107 (home-page "https://common-lisp.net/project/cl-sqlite/")
3108 (synopsis "Common Lisp binding for SQLite")
3109 (description
3110 "The @command{cl-sqlite} package is an interface to the SQLite embedded
3111relational database engine.")
3112 (license license:public-domain))))
4624d2e2
PN
3113
3114(define-public sbcl-parenscript
3115 (let ((commit "061d8e286c81c3f45c84fb2b11ee7d83f590a8f8"))
3116 (package
3117 (name "sbcl-parenscript")
3118 (version (git-version "2.6" "1" commit))
3119 (source
3120 (origin
3121 (method git-fetch)
3122 (uri (git-reference
3123 (url "https://gitlab.common-lisp.net/parenscript/parenscript")
3124 (commit commit)))
3125 (file-name (git-file-name "parenscript" version))
3126 (sha256
3127 (base32
3128 "1kbhgsjbikc73m5cwdp4d4fdafyqcr1b7b630qjrziql0nh6mi3k"))))
3129 (build-system asdf-build-system/sbcl)
3130 (inputs
3131 `(("cl-ppcre" ,sbcl-cl-ppcre)
3132 ("anaphora" ,sbcl-anaphora)
3133 ("named-readtables" ,sbcl-named-readtables)))
3134 (home-page "https://common-lisp.net/project/parenscript/")
3135 (synopsis "Translator from a subset of Common Lisp to JavaScript")
3136 (description
3137 "Parenscript is a translator from an extended subset of Common Lisp to
3138JavaScript. Parenscript code can run almost identically on both the
3139browser (as JavaScript) and server (as Common Lisp).
3140
3141Parenscript code is treated the same way as Common Lisp code, making the full
3142power of Lisp macros available for JavaScript. This provides a web
3143development environment that is unmatched in its ability to reduce code
3144duplication and provide advanced meta-programming facilities to web
3145developers.
3146
3147At the same time, Parenscript is different from almost all other \"language
3148X\" to JavaScript translators in that it imposes almost no overhead:
3149
3150@itemize
3151@item No run-time dependencies: Any piece of Parenscript code is runnable
3152as-is. There are no JavaScript files to include.
3153@item Native types: Parenscript works entirely with native JavaScript data
3154types. There are no new types introduced, and object prototypes are not
3155touched.
3156@item Native calling convention: Any JavaScript code can be called without the
3157need for bindings. Likewise, Parenscript can be used to make efficient,
3158self-contained JavaScript libraries.
3159@item Readable code: Parenscript generates concise, formatted, idiomatic
3160JavaScript code. Identifier names are preserved. This enables seamless
3161debugging in tools like Firebug.
3162@item Efficiency: Parenscript introduces minimal overhead for advanced Common
3163Lisp features. The generated code is almost as fast as hand-written
3164JavaScript.
3165@end itemize\n")
3166 (license license:bsd-3))))
3167
3168(define-public cl-parenscript
3169 (sbcl-package->cl-source-package sbcl-parenscript))
3170
3171(define-public ecl-parenscript
3172 (sbcl-package->ecl-package sbcl-parenscript))
dedbf37e
PN
3173
3174(define-public sbcl-cl-json
3175 (let ((commit "6dfebb9540bfc3cc33582d0c03c9ec27cb913e79"))
3176 (package
3177 (name "sbcl-cl-json")
3178 (version (git-version "0.5" "1" commit))
3179 (source
3180 (origin
3181 (method git-fetch)
3182 (uri (git-reference
3183 (url "https://github.com/hankhero/cl-json")
3184 (commit commit)))
3185 (file-name (git-file-name "cl-json" version))
3186 (sha256
3187 (base32
3188 "0fx3m3x3s5ji950yzpazz4s0img3l6b3d6l3jrfjv0lr702496lh"))))
3189 (build-system asdf-build-system/sbcl)
3190 (native-inputs
3191 `(("fiveam" ,sbcl-fiveam)))
3192 (home-page "https://github.com/hankhero/cl-json")
3193 (synopsis "JSON encoder and decoder for Common-Lisp")
3194 (description
3195 "@command{cl-json} provides an encoder of Lisp objects to JSON format
3196and a corresponding decoder of JSON data to Lisp objects. Both the encoder
3197and the decoder are highly customizable; at the same time, the default
3198settings ensure a very simple mode of operation, similar to that provided by
3199@command{yason} or @command{st-json}.")
3200 (license license:expat))))
3201
3202(define-public cl-json
3203 (sbcl-package->cl-source-package sbcl-cl-json))
3204
3205(define-public ecl-cl-json
3206 (sbcl-package->ecl-package sbcl-cl-json))
2cc931db
PN
3207
3208(define-public sbcl-unix-opts
3209 (package
3210 (name "sbcl-unix-opts")
3211 (version "0.1.7")
3212 (source
3213 (origin
3214 (method git-fetch)
3215 (uri (git-reference
3216 (url "https://github.com/libre-man/unix-opts")
3217 (commit version)))
3218 (file-name (git-file-name "unix-opts" version))
3219 (sha256
3220 (base32
3221 "08djdi1ard09fijb7w9bdmhmwd98b1hzmcnjw9fqjiqa0g3b44rr"))))
3222 (build-system asdf-build-system/sbcl)
3223 (home-page "https://github.com/hankhero/cl-json")
3224 (synopsis "Unix-style command line options parser")
3225 (description
3226 "This is a minimalistic parser of command line options. The main
3227advantage of the library is the ability to concisely define command line
3228options once and then use this definition for parsing and extraction of
3229command line arguments, as well as printing description of command line
3230options (you get --help for free). This way you don't need to repeat
3231yourself. Also, @command{unix-opts} doesn't depend on anything and allows to
3232precisely control behavior of the parser via Common Lisp restarts.")
3233 (license license:expat)))
3234
3235(define-public cl-unix-opts
3236 (sbcl-package->cl-source-package sbcl-unix-opts))
3237
3238(define-public ecl-unix-opts
3239 (sbcl-package->ecl-package sbcl-unix-opts))
4aa23420
PN
3240
3241(define-public sbcl-trivial-garbage
3242 (package
3243 (name "sbcl-trivial-garbage")
3244 (version "0.21")
3245 (source
3246 (origin
f86b4b56
TGR
3247 (method git-fetch)
3248 (uri (git-reference
3249 (url "https://github.com/trivial-garbage/trivial-garbage.git")
3250 (commit (string-append "v" version))))
3251 (file-name (git-file-name "trivial-garbage" version))
4aa23420 3252 (sha256
f86b4b56 3253 (base32 "0122jicfg7pca1wxw8zak1n92h5friqy60988ns0ysksj3fphw9n"))))
4aa23420
PN
3254 (build-system asdf-build-system/sbcl)
3255 (native-inputs
3256 `(("rt" ,sbcl-rt)))
3257 (home-page "https://common-lisp.net/project/trivial-garbage/")
3258 (synopsis "Portable GC-related APIs for Common Lisp")
3259 (description "@command{trivial-garbage} provides a portable API to
3260finalizers, weak hash-tables and weak pointers on all major implementations of
3261the Common Lisp programming language.")
3262 (license license:public-domain)))
3263
3264(define-public cl-trivial-garbage
3265 (sbcl-package->cl-source-package sbcl-trivial-garbage))
3266
3267(define-public ecl-trivial-garbage
3268 (sbcl-package->ecl-package sbcl-trivial-garbage))
85be9191
PN
3269
3270(define-public sbcl-closer-mop
3271 (let ((commit "fac29ce90e3a46e1fc6cf182190e193526fa9dbc"))
3272 (package
3273 (name "sbcl-closer-mop")
3274 (version (git-version "1.0.0" "1" commit))
3275 (source
3276 (origin
3277 (method git-fetch)
3278 (uri (git-reference
3279 (url "https://github.com/pcostanza/closer-mop")
3280 (commit commit)))
3281 (sha256
3282 (base32 "0hvh77y869h8fg9di5snyg85fxq6fdh9gj1igmx1g6j6j5x915dl"))
3283 (file-name (git-file-name "closer-mop" version ))))
3284 (build-system asdf-build-system/sbcl)
3285 (home-page "https://github.com/pcostanza/closer-mop")
3286 (synopsis "Rectifies absent or incorrect CLOS MOP features")
3287 (description "Closer to MOP is a compatibility layer that rectifies many
3288of the absent or incorrect CLOS MOP features across a broad range of Common
3289Lisp implementations.")
3290 (license license:expat))))
3291
3292(define-public cl-closer-mop
3293 (sbcl-package->cl-source-package sbcl-closer-mop))
3294
3295(define-public ecl-closer-mop
3296 (sbcl-package->ecl-package sbcl-closer-mop))
c88985d9
PN
3297
3298(define sbcl-cl-cffi-gtk-boot0
3299 (let ((commit "29443c5aaca975709df8025c4649366d882033cb"))
3300 (package
3301 (name "sbcl-cl-cffi-gtk-boot0")
3302 (version (git-version "0.11.2" "1" commit))
3303 (source
3304 (origin
3305 (method git-fetch)
3306 (uri (git-reference
3307 (url "https://github.com/Ferada/cl-cffi-gtk/")
3308 (commit commit)))
3309 (file-name (git-file-name "cl-cffi-gtk" version))
3310 (sha256
3311 (base32
3312 "0f6s92sf8xyzh1yksqx8bsy1sv0zmy0c13j3b8bavaba5hlxpxah"))))
3313 (build-system asdf-build-system/sbcl)
3314 (inputs
3315 `(("iterate" ,sbcl-iterate)
3316 ("cffi" ,sbcl-cffi)
3317 ("trivial-features" ,sbcl-trivial-features)))
3318 (home-page "https://github.com/Ferada/cl-cffi-gtk/")
3319 (synopsis "Common Lisp binding for GTK+3")
3320 (description
3321 "@command{cl-cffi-gtk} is a Lisp binding to GTK+ 3 (GIMP Toolkit) which
3322is a library for creating graphical user interfaces.")
3323 (license license:lgpl3))))
64dcf7d9
PN
3324
3325(define-public sbcl-cl-cffi-gtk-glib
3326 (package
3327 (inherit sbcl-cl-cffi-gtk-boot0)
3328 (name "sbcl-cl-cffi-gtk-glib")
3329 (inputs
3330 `(("glib" ,glib)
3331 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3332 (arguments
3333 `(#:asd-file "glib/cl-cffi-gtk-glib.asd"
3334 #:phases
3335 (modify-phases %standard-phases
3336 (add-after 'unpack 'fix-paths
3337 (lambda* (#:key inputs #:allow-other-keys)
3338 (substitute* "glib/glib.init.lisp"
3339 (("libglib|libgthread" all) (string-append
3340 (assoc-ref inputs "glib") "/lib/" all))))))))))
77a5461c
PN
3341
3342(define-public sbcl-cl-cffi-gtk-gobject
3343 (package
3344 (inherit sbcl-cl-cffi-gtk-boot0)
3345 (name "sbcl-cl-cffi-gtk-gobject")
3346 (inputs
3347 `(("glib" ,glib)
3348 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3349 ("trivial-garbage" ,sbcl-trivial-garbage)
3350 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3351 ("closer-mop" ,sbcl-closer-mop)
3352 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3353 (arguments
3354 `(#:asd-file "gobject/cl-cffi-gtk-gobject.asd"
3355 #:phases
3356 (modify-phases %standard-phases
3357 (add-after 'unpack 'fix-paths
3358 (lambda* (#:key inputs #:allow-other-keys)
3359 (substitute* "gobject/gobject.init.lisp"
3360 (("libgobject" all) (string-append
3361 (assoc-ref inputs "glib") "/lib/" all))))))))))
867b3f47
PN
3362
3363(define-public sbcl-cl-cffi-gtk-gio
3364 (package
3365 (inherit sbcl-cl-cffi-gtk-boot0)
3366 (name "sbcl-cl-cffi-gtk-gio")
3367 (inputs
3368 `(("glib" ,glib)
3369 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3370 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3371 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3372 (arguments
3373 `(#:asd-file "gio/cl-cffi-gtk-gio.asd"
3374 #:phases
3375 (modify-phases %standard-phases
3376 (add-after 'unpack 'fix-paths
3377 (lambda* (#:key inputs #:allow-other-keys)
3378 (substitute* "gio/gio.init.lisp"
3379 (("libgio" all)
3380 (string-append
3381 (assoc-ref inputs "glib") "/lib/" all))))))))))
7176fe7c
PN
3382
3383(define-public sbcl-cl-cffi-gtk-cairo
3384 (package
3385 (inherit sbcl-cl-cffi-gtk-boot0)
3386 (name "sbcl-cl-cffi-gtk-cairo")
3387 (inputs
3388 `(("cairo" ,cairo)
3389 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3390 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3391 (arguments
3392 `(#:asd-file "cairo/cl-cffi-gtk-cairo.asd"
3393 #:phases
3394 (modify-phases %standard-phases
3395 (add-after 'unpack 'fix-paths
3396 (lambda* (#:key inputs #:allow-other-keys)
3397 (substitute* "cairo/cairo.init.lisp"
3398 (("libcairo" all)
3399 (string-append
3400 (assoc-ref inputs "cairo") "/lib/" all))))))))))
9ecc457b
PN
3401
3402(define-public sbcl-cl-cffi-gtk-pango
3403 (package
3404 (inherit sbcl-cl-cffi-gtk-boot0)
3405 (name "sbcl-cl-cffi-gtk-pango")
3406 (inputs
3407 `(("pango" ,pango)
3408 ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3409 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3410 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3411 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3412 (arguments
3413 `(#:asd-file "pango/cl-cffi-gtk-pango.asd"
3414 #:phases
3415 (modify-phases %standard-phases
3416 (add-after 'unpack 'fix-paths
3417 (lambda* (#:key inputs #:allow-other-keys)
3418 (substitute* "pango/pango.init.lisp"
3419 (("libpango" all)
3420 (string-append
3421 (assoc-ref inputs "pango") "/lib/" all))))))))))
a3bdddc3
PN
3422
3423(define-public sbcl-cl-cffi-gtk-gdk-pixbuf
3424 (package
3425 (inherit sbcl-cl-cffi-gtk-boot0)
3426 (name "sbcl-cl-cffi-gtk-gdk-pixbuf")
3427 (inputs
3428 `(("gdk-pixbuf" ,gdk-pixbuf)
3429 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3430 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3431 (arguments
3432 `(#:asd-file "gdk-pixbuf/cl-cffi-gtk-gdk-pixbuf.asd"
3433 #:phases
3434 (modify-phases %standard-phases
3435 (add-after 'unpack 'fix-paths
3436 (lambda* (#:key inputs #:allow-other-keys)
3437 (substitute* "gdk-pixbuf/gdk-pixbuf.init.lisp"
3438 (("libgdk_pixbuf" all)
3439 (string-append
3440 (assoc-ref inputs "gdk-pixbuf") "/lib/" all))))))))))
7b5b8c44
PN
3441
3442(define-public sbcl-cl-cffi-gtk-gdk
3443 (package
3444 (inherit sbcl-cl-cffi-gtk-boot0)
3445 (name "sbcl-cl-cffi-gtk-gdk")
3446 (inputs
3447 `(("gtk" ,gtk+)
3448 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3449 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3450 ("cl-cffi-gtk-gdk-pixbuf" ,sbcl-cl-cffi-gtk-gdk-pixbuf)
3451 ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
3452 ("cl-cffi-gtk-pango" ,sbcl-cl-cffi-gtk-pango)
3453 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3454 (arguments
3455 `(#:asd-file "gdk/cl-cffi-gtk-gdk.asd"
3456 #:phases
3457 (modify-phases %standard-phases
3458 (add-after 'unpack 'fix-paths
3459 (lambda* (#:key inputs #:allow-other-keys)
3460 (substitute* "gdk/gdk.init.lisp"
3461 (("libgdk" all)
3462 (string-append
3463 (assoc-ref inputs "gtk") "/lib/" all)))
3464 (substitute* "gdk/gdk.package.lisp"
3465 (("libgtk" all)
3466 (string-append
3467 (assoc-ref inputs "gtk") "/lib/" all))))))))))
c80dfee9
PN
3468
3469(define-public sbcl-cl-cffi-gtk
3470 (package
3471 (inherit sbcl-cl-cffi-gtk-boot0)
3472 (name "sbcl-cl-cffi-gtk")
3473 (inputs
3474 `(("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
3475 ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
3476 ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
3477 ("cl-cffi-gtk-gdk" ,sbcl-cl-cffi-gtk-gdk)
3478 ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
3479 (native-inputs
3480 `(("fiveam" ,sbcl-fiveam)))
3481 (arguments
3482 `(#:asd-file "gtk/cl-cffi-gtk.asd"
3483 #:test-asd-file "test/cl-cffi-gtk-test.asd"
3484 ;; TODO: Tests fail with memory fault.
3485 ;; See https://github.com/Ferada/cl-cffi-gtk/issues/24.
3486 #:tests? #f))))
24fd7586
PN
3487
3488(define-public sbcl-cl-webkit
3489 (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31"))
3490 (package
3491 (name "sbcl-cl-webkit")
3492 (version (git-version "2.4" "1" commit))
3493 (source
3494 (origin
3495 (method git-fetch)
3496 (uri (git-reference
f6e95280 3497 (url "https://github.com/jmercouris/cl-webkit")
24fd7586
PN
3498 (commit commit)))
3499 (file-name (git-file-name "cl-webkit" version))
3500 (sha256
3501 (base32
3502 "0f5lyn9i7xrn3g1bddga377mcbawkbxydijpg389q4n04gqj0vwf"))))
3503 (build-system asdf-build-system/sbcl)
3504 (inputs
3505 `(("cffi" ,sbcl-cffi)
3506 ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
3507 ("webkitgtk" ,webkitgtk)))
3508 (arguments
3509 `(#:asd-file "webkit2/cl-webkit2.asd"
3510 #:asd-system-name "cl-webkit2"
3511 #:phases
3512 (modify-phases %standard-phases
3513 (add-after 'unpack 'fix-paths
3514 (lambda* (#:key inputs #:allow-other-keys)
3515 (substitute* "webkit2/webkit2.init.lisp"
3516 (("libwebkit2gtk" all)
3517 (string-append
3518 (assoc-ref inputs "webkitgtk") "/lib/" all))))))))
f6e95280 3519 (home-page "https://github.com/jmercouris/cl-webkit")
24fd7586
PN
3520 (synopsis "Binding to WebKitGTK+ for Common Lisp")
3521 (description
3522 "@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp,
3523currently targeting WebKit version 2. The WebKitGTK+ library adds web
3524browsing capabilities to an application, leveraging the full power of the
3525WebKit browsing engine.")
3526 (license license:expat))))
e2e5004f
PN
3527
3528(define-public sbcl-lparallel
3529 (package
3530 (name "sbcl-lparallel")
3531 (version "2.8.4")
3532 (source
3533 (origin
3534 (method git-fetch)
3535 (uri (git-reference
3536 (url "https://github.com/lmj/lparallel/")
3537 (commit (string-append "lparallel-" version))))
3538 (file-name (git-file-name "lparallel" version))
3539 (sha256
3540 (base32
3541 "0g0aylrbbrqsz0ahmwhvnk4cmc2931fllbpcfgzsprwnqqd7vwq9"))))
3542 (build-system asdf-build-system/sbcl)
3543 (inputs
3544 `(("alexandria" ,sbcl-alexandria)
3545 ("bordeaux-threads" ,sbcl-bordeaux-threads)
3546 ("trivial-garbage" ,sbcl-trivial-garbage)))
3547 (home-page "https://lparallel.org/")
3548 (synopsis "Parallelism for Common Lisp")
3549 (description
3550 "@command{lparallel} is a library for parallel programming in Common
3551Lisp, featuring:
3552
3553@itemize
3554@item a simple model of task submission with receiving queue,
3555@item constructs for expressing fine-grained parallelism,
3556@item asynchronous condition handling across thread boundaries,
3557@item parallel versions of map, reduce, sort, remove, and many others,
3558@item promises, futures, and delayed evaluation constructs,
3559@item computation trees for parallelizing interconnected tasks,
3560@item bounded and unbounded FIFO queues,
3561@item high and low priority tasks,
3562@item task killing by category,
3563@item integrated timeouts.
3564@end itemize\n")
3565 (license license:expat)))
3566
3567(define-public cl-lparallel
3568 (sbcl-package->cl-source-package sbcl-lparallel))
3569
3570(define-public ecl-lparallel
3571 (sbcl-package->ecl-package sbcl-lparallel))
96ce8b55
PN
3572
3573(define-public sbcl-cl-markup
3574 (let ((commit "e0eb7debf4bdff98d1f49d0f811321a6a637b390"))
3575 (package
3576 (name "sbcl-cl-markup")
3577 (version (git-version "0.1" "1" commit))
3578 (source
3579 (origin
3580 (method git-fetch)
3581 (uri (git-reference
3582 (url "https://github.com/arielnetworks/cl-markup/")
3583 (commit commit)))
3584 (file-name (git-file-name "cl-markup" version))
3585 (sha256
3586 (base32
3587 "10l6k45971dl13fkdmva7zc6i453lmq9j4xax2ci6pjzlc6xjhp7"))))
3588 (build-system asdf-build-system/sbcl)
3589 (home-page "https://github.com/arielnetworks/cl-markup/")
3590 (synopsis "Markup generation library for Common Lisp")
3591 (description
3592 "A modern markup generation library for Common Lisp that features:
3593
3594@itemize
3595@item Fast (even faster through compiling the code)
3596@item Safety
3597@item Support for multiple document types (markup, xml, html, html5, xhtml)
3598@item Output with doctype
3599@item Direct output to stream
3600@end itemize\n")
3601 (license license:lgpl3+))))
3602
3603(define-public cl-markup
3604 (sbcl-package->cl-source-package sbcl-cl-markup))
3605
3606(define-public ecl-cl-markup
3607 (sbcl-package->ecl-package sbcl-cl-markup))
9eeef6ab
PN
3608
3609(define-public sbcl-cl-css
3610 (let ((commit "8fe654c8f0cf95b300718101cce4feb517f78e2f"))
3611 (package
3612 (name "sbcl-cl-css")
3613 (version (git-version "0.1" "1" commit))
3614 (source
3615 (origin
3616 (method git-fetch)
3617 (uri (git-reference
3618 (url "https://github.com/inaimathi/cl-css/")
3619 (commit commit)))
3620 (file-name (git-file-name "cl-css" version))
3621 (sha256
3622 (base32
3623 "1lc42zi2sw11fl2589sc19nr5sd2p0wy7wgvgwaggxa5f3ajhsmd"))))
3624 (build-system asdf-build-system/sbcl)
3625 (home-page "https://github.com/inaimathi/cl-css/")
3626 (synopsis "Non-validating, inline CSS generator for Common Lisp")
3627 (description
3628 "This is a dead-simple, non validating, inline CSS generator for Common
3629Lisp. Its goals are axiomatic syntax, simple implementation to support
3630portability, and boilerplate reduction in CSS.")
3631 (license license:expat))))
3632
3633(define-public cl-css
3634 (sbcl-package->cl-source-package sbcl-cl-css))
3635
e24ef369 3636(define-public ecl-cl-css
9eeef6ab 3637 (sbcl-package->ecl-package sbcl-cl-css))
9fabcb6c
PN
3638
3639(define-public sbcl-portable-threads
3640 (let ((commit "c0e61a1faeb0583c80fd3f20b16cc4c555226920"))
3641 (package
3642 (name "sbcl-portable-threads")
3643 (version (git-version "2.3" "1" commit))
3644 (source
3645 (origin
3646 (method git-fetch)
3647 (uri (git-reference
3648 (url "https://github.com/binghe/portable-threads/")
3649 (commit commit)))
3650 (file-name (git-file-name "portable-threads" version))
3651 (sha256
3652 (base32
3653 "03fmxyarc0xf4kavwkfa0a2spkyfrz6hbgbi9y4q7ny5aykdyfaq"))))
3654 (build-system asdf-build-system/sbcl)
3655 (arguments
3656 `(;; Tests seem broken.
3657 #:tests? #f))
3658 (home-page "https://github.com/binghe/portable-threads")
3659 (synopsis "Portable threads (and scheduled and periodic functions) API for Common Lisp")
3660 (description
3661 "Portable Threads (and Scheduled and Periodic Functions) API for Common
3662Lisp (from GBBopen project).")
3663 (license license:asl2.0))))
3664
3665(define-public cl-portable-threads
3666 (sbcl-package->cl-source-package sbcl-portable-threads))
3667
3668(define-public ecl-portable-threada
3669 (sbcl-package->ecl-package sbcl-portable-threads))
75c95c76
PN
3670
3671(define-public sbcl-usocket-boot0
3672 ;; usocket's test rely on usocket-server which depends on usocket itself.
3673 ;; We break this cyclic dependency with -boot0 that packages usocket.
3674 (let ((commit "86e7efbfe50101931edf4b67cdcfa7e221ecfde9"))
3675 (package
3676 (name "sbcl-usocket-boot0")
3677 (version (git-version "0.7.1" "1" commit))
3678 (source
3679 (origin
3680 (method git-fetch)
3681 (uri (git-reference
3682 (url "https://github.com/usocket/usocket/")
3683 (commit commit)))
3684 (file-name (git-file-name "usocket" version))
3685 (sha256
3686 (base32
3687 "1lk6ipakrib7kdgzw44hrgmls9akp5pz4h35yynw0k5zwmmq6374"))))
3688 (build-system asdf-build-system/sbcl)
3689 (inputs
3690 `(("split-sequence" ,sbcl-split-sequence)))
3691 (arguments
3692 `(#:tests? #f
3693 #:asd-system-name "usocket"))
3694 (home-page "https://common-lisp.net/project/usocket/")
3695 (synopsis "Universal socket library for Common Lisp (server side)")
3696 (description
3697 "This library strives to provide a portable TCP/IP and UDP/IP socket
3698interface for as many Common Lisp implementations as possible, while keeping
3699the abstraction and portability layer as thin as possible.")
3700 (license license:expat))))
be01e79c
PN
3701
3702(define-public sbcl-usocket-server
3703 (package
3704 (inherit sbcl-usocket-boot0)
3705 (name "sbcl-usocket-server")
3706 (inputs
3707 `(("usocket" ,sbcl-usocket-boot0)
3708 ("portable-threads" ,sbcl-portable-threads)))
3709 (arguments
3710 '(#:asd-system-name "usocket-server"))
3711 (synopsis "Universal socket library for Common Lisp (server side)")))
3712
3713(define-public cl-usocket-server
3714 (sbcl-package->cl-source-package sbcl-usocket-server))
3715
3716(define-public ecl-socket-server
3717 (sbcl-package->ecl-package sbcl-usocket-server))
79dc47c9
PN
3718
3719(define-public sbcl-usocket
3720 (package
3721 (inherit sbcl-usocket-boot0)
3722 (name "sbcl-usocket")
3723 (arguments
3724 ;; FIXME: Tests need network access?
3725 `(#:tests? #f))
3726 (native-inputs
3727 ;; Testing only.
3728 `(("usocket-server" ,sbcl-usocket-server)
3729 ("rt" ,sbcl-rt)))))
3730
3731(define-public cl-usocket
3732 (sbcl-package->cl-source-package sbcl-usocket))
3733
3734(define-public ecl-socket
3735 (sbcl-package->ecl-package sbcl-usocket))
c931f809
PN
3736
3737(define-public sbcl-s-xml
3738 (package
3739 (name "sbcl-s-xml")
3740 (version "3")
3741 (source
3742 (origin
3743 (method url-fetch)
3744 (uri "https://common-lisp.net/project/s-xml/s-xml.tgz")
3745 (sha256
3746 (base32
3747 "061qcr0dzshsa38s5ma4ay924cwak2nq9gy59dw6v9p0qb58nzjf"))))
3748 (build-system asdf-build-system/sbcl)
3749 (home-page "https://common-lisp.net/project/s-xml/")
3750 (synopsis "Simple XML parser implemented in Common Lisp")
3751 (description
3752 "S-XML is a simple XML parser implemented in Common Lisp. This XML
3753parser implementation has the following features:
3754
3755@itemize
3756@item It works (handling many common XML usages).
3757@item It is very small (the core is about 700 lines of code, including
3758comments and whitespace).
3759@item It has a core API that is simple, efficient and pure functional, much
3760like that from SSAX (see also http://ssax.sourceforge.net).
3761@item It supports different DOM models: an XSML-based one, an LXML-based one
3762and a classic xml-element struct based one.
3763@item It is reasonably time and space efficient (internally avoiding garbage
3764generatation as much as possible).
3765@item It does support CDATA.
3766@item It should support the same character sets as your Common Lisp
3767implementation.
3768@item It does support XML name spaces.
3769@end itemize
3770
3771This XML parser implementation has the following limitations:
3772
3773@itemize
3774@item It does not support any special tags (like processing instructions).
3775@item It is not validating, even skips DTD's all together.
3776@end itemize\n")
3777 (license license:lgpl3+)))
3778
3779(define-public cl-s-xml
3780 (sbcl-package->cl-source-package sbcl-s-xml))
3781
3782(define-public ecl-s-xml
3783 (sbcl-package->ecl-package sbcl-s-xml))
8c5160db
PN
3784
3785(define-public sbcl-s-xml-rpc
3786 (package
3787 (name "sbcl-s-xml-rpc")
3788 (version "7")
3789 (source
3790 (origin
3791 (method url-fetch)
3792 (uri "https://common-lisp.net/project/s-xml-rpc/s-xml-rpc.tgz")
3793 (sha256
3794 (base32
3795 "02z7k163d51v0pzk8mn1xb6h5s6x64gjqkslhwm3a5x26k2gfs11"))))
3796 (build-system asdf-build-system/sbcl)
3797 (inputs
3798 `(("s-xml" ,sbcl-s-xml)))
3799 (home-page "https://common-lisp.net/project/s-xml-rpc/")
3800 (synopsis "Implementation of XML-RPC in Common Lisp for both client and server")
3801 (description
3802 "S-XML-RPC is an implementation of XML-RPC in Common Lisp for both
3803client and server.")
3804 (license license:lgpl3+)))
3805
3806(define-public cl-s-xml-rpc
3807 (sbcl-package->cl-source-package sbcl-s-xml-rpc))
3808
3809(define-public ecl-s-xml-rpc
3810 (sbcl-package->ecl-package sbcl-s-xml-rpc))
2c742a06
PN
3811
3812(define-public sbcl-trivial-clipboard
6693cdd6 3813 (let ((commit "5af3415d1484e6d69a1b5c178f24680d9fd01796"))
2c742a06
PN
3814 (package
3815 (name "sbcl-trivial-clipboard")
6693cdd6 3816 (version (git-version "0.0.0.0" "2" commit))
2c742a06
PN
3817 (source
3818 (origin
3819 (method git-fetch)
3820 (uri (git-reference
3821 (url "https://github.com/snmsts/trivial-clipboard")
3822 (commit commit)))
6693cdd6 3823 (file-name (git-file-name "trivial-clipboard" version))
2c742a06
PN
3824 (sha256
3825 (base32
6693cdd6 3826 "1gb515z5yq6h5548pb1fwhmb0hhq1ssyb78pvxh4alq799xipxs9"))))
2c742a06
PN
3827 (build-system asdf-build-system/sbcl)
3828 (inputs
3829 `(("xclip" ,xclip)))
3830 (native-inputs
3831 `(("fiveam" ,sbcl-fiveam)))
3832 (arguments
3833 `(#:phases
3834 (modify-phases %standard-phases
3835 (add-after 'unpack 'fix-paths
3836 (lambda* (#:key inputs #:allow-other-keys)
3837 (substitute* "src/text.lisp"
6693cdd6
PN
3838 (("\\(executable-find \"xclip\"\\)")
3839 (string-append "(executable-find \""
3840 (assoc-ref inputs "xclip")
3841 "/bin/xclip\")"))))))))
2c742a06
PN
3842 (home-page "https://github.com/snmsts/trivial-clipboard")
3843 (synopsis "Access system clipboard in Common Lisp")
3844 (description
3845 "@command{trivial-clipboard} gives access to the system clipboard.")
3846 (license license:expat))))
3847
3848(define-public cl-trivial-clipboard
3849 (sbcl-package->cl-source-package sbcl-trivial-clipboard))
3850
3851(define-public ecl-trivial-clipboard
3852 (sbcl-package->ecl-package sbcl-trivial-clipboard))
d1ae5a12 3853
977b0db4
KCB
3854(define-public sbcl-trivial-backtrace
3855 (let ((commit "ca81c011b86424a381a7563cea3b924f24e6fbeb")
3856 (revision "1"))
3857 (package
3858 (name "sbcl-trivial-backtrace")
3859 (version (git-version "0.0.0" revision commit))
3860 (source
3861 (origin
3862 (method git-fetch)
3863 (uri (git-reference
3864 (url "https://github.com/gwkkwg/trivial-backtrace.git")
3865 (commit commit)))
5924f621 3866 (file-name (git-file-name "trivial-backtrace" version))
977b0db4
KCB
3867 (sha256
3868 (base32 "10p41p43skj6cimdg8skjy7372s8v2xpkg8djjy0l8rm45i654k1"))))
3869 (build-system asdf-build-system/sbcl)
3870 (inputs
3871 `(("sbcl-lift" ,sbcl-lift)))
3872 (home-page "https://common-lisp.net/project/trivial-backtrace/")
3873 (synopsis "Portable simple API to work with backtraces in Common Lisp")
3874 (description
3875 "On of the many things that didn't quite get into the Common Lisp
3876standard was how to get a Lisp to output its call stack when something has
3877gone wrong. As such, each Lisp has developed its own notion of what to
3878display, how to display it, and what sort of arguments can be used to
3879customize it. @code{trivial-backtrace} is a simple solution to generating a
3880backtrace portably.")
4f6172f1 3881 (license license:expat))))
977b0db4
KCB
3882
3883(define-public cl-trivial-backtrace
3884 (sbcl-package->cl-source-package sbcl-trivial-backtrace))
3885
d2137182
KCB
3886(define-public sbcl-rfc2388
3887 (let ((commit "591bcf7e77f2c222c43953a80f8c297751dc0c4e")
3888 (revision "1"))
3889 (package
3890 (name "sbcl-rfc2388")
3891 (version (git-version "0.0.0" revision commit))
3892 (source
3893 (origin
3894 (method git-fetch)
3895 (uri (git-reference
3896 (url "https://github.com/jdz/rfc2388.git")
3897 (commit commit)))
0abf2d91 3898 (file-name (git-file-name "rfc2388" version))
d2137182
KCB
3899 (sha256
3900 (base32 "0phh5n3clhl9ji8jaxrajidn22d3f0aq87mlbfkkxlnx2pnw694k"))))
3901 (build-system asdf-build-system/sbcl)
3902 (home-page "https://github.com/jdz/rfc2388/")
3903 (synopsis "An implementation of RFC 2388 in Common Lisp")
3904 (description
3905 "This package contains an implementation of RFC 2388, which is used to
3906process form data posted with HTTP POST method using enctype
3907\"multipart/form-data\".")
3908 (license license:bsd-2))))
3909
3910(define-public cl-rfc2388
3911 (sbcl-package->cl-source-package sbcl-rfc2388))
3912
66c84d20
KCB
3913(define-public sbcl-md5
3914 (package
3915 (name "sbcl-md5")
3916 (version "2.0.4")
3917 (source
3918 (origin
3919 (method url-fetch)
3920 (uri (string-append
3921 "https://github.com/pmai/md5/archive/release-" version ".tar.gz"))
3922 (sha256
3923 (base32 "19yl9n0pjdz5gw4qi711lka97xcd9f81ylg434hk7jwn9f2s6w11"))))
3924 (build-system asdf-build-system/sbcl)
3925 (home-page "https://github.com/pmai/md5")
3926 (synopsis
3927 "Common Lisp implementation of the MD5 Message-Digest Algorithm (RFC 1321)")
3928 (description
3929 "This package implements The MD5 Message-Digest Algorithm, as defined in
3930RFC 1321 by R. Rivest, published April 1992.")
3931 (license license:public-domain)))
3932
3933(define-public cl-md5
3934 (sbcl-package->cl-source-package sbcl-md5))
3935
d1ae5a12
KCB
3936(define-public sbcl-cl+ssl
3937 (let ((commit "b81c1135cf5700e870ce2573d5035d249e491788")
3938 (revision "1"))
3939 (package
3940 (name "sbcl-cl+ssl")
3941 (version (git-version "0.0.0" revision commit))
3942 (source
3943 (origin
3944 (method git-fetch)
3945 (uri (git-reference
3946 (url "https://github.com/cl-plus-ssl/cl-plus-ssl.git")
3947 (commit commit)))
e976e199 3948 (file-name (git-file-name "cl+ssl" version))
d1ae5a12
KCB
3949 (sha256
3950 (base32 "1845i1pafmqb6cdlr53yaqy67kjrhkvbx6c37ca15cw70vhdr3z9"))))
3951 (build-system asdf-build-system/sbcl)
3952 (arguments
3953 '(#:phases
3954 (modify-phases %standard-phases
3955 (add-after 'unpack 'fix-paths
3956 (lambda* (#:key inputs #:allow-other-keys)
3957 (substitute* "src/reload.lisp"
3958 (("libssl.so" all)
3959 (string-append
3960 (assoc-ref inputs "openssl") "/lib/" all))))))))
3961 (inputs
3962 `(("openssl" ,openssl)
3963 ("sbcl-cffi" ,sbcl-cffi)
3964 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
3965 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
3966 ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)
3967 ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
3968 (home-page "http://common-lisp.net/project/cl-plus-ssl/")
3969 (synopsis "Common Lisp bindings to OpenSSL")
3970 (description
3971 "This library is a fork of SSL-CMUCL. The original SSL-CMUCL source
3972code was written by Eric Marsden and includes contributions by Jochen Schmidt.
3973Development into CL+SSL was done by David Lichteblau.")
3974 (license license:expat))))
3975
3976(define-public cl-cl+ssl
3977 (sbcl-package->cl-source-package sbcl-cl+ssl))
610ee80a
KCB
3978
3979(define-public sbcl-kmrcl
3980 (let ((version "1.109.0")
3981 (commit "5260068b2eb735af6796740c2db4955afac21636")
3982 (revision "1"))
3983 (package
3984 (name "sbcl-kmrcl")
3985 (version (git-version version revision commit))
3986 (source
3987 (origin
3988 (method git-fetch)
3989 (uri (git-reference
3990 (url "http://git.kpe.io/kmrcl.git/")
3991 (commit commit)))
3992 (file-name (git-file-name name version))
3993 (sha256
3994 (base32 "1va7xjgzfv674bpsli674i7zj3f7wg5kxic41kz18r6hh4n52dfv"))))
3995 (build-system asdf-build-system/sbcl)
3996 (arguments
3997 ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed in a
3998 ;; nested call to ASDF/OPERATE:OPERATE unless identically to toplevel
3999 '(#:tests? #f))
4000 (inputs
4001 `(("sbcl-rt" ,sbcl-rt)))
4002 (home-page "http://files.kpe.io/kmrcl/")
4003 (synopsis "General utilities for Common Lisp programs")
4004 (description
4005 "KMRCL is a collection of utilities used by a number of Kevin
4006Rosenberg's CL packages.")
4007 (license license:llgpl))))
4008
4009(define-public cl-kmrcl
4010 (sbcl-package->cl-source-package sbcl-kmrcl))
9945a170
KCB
4011
4012(define-public sbcl-cl-base64
4013 (let ((version "3.3.3"))
4014 (package
4015 (name "sbcl-cl-base64")
4016 (version version)
4017 (source
4018 (origin
4019 (method git-fetch)
4020 (uri (git-reference
4021 (url "http://git.kpe.io/cl-base64.git")
4022 (commit (string-append "v" version))))
45ea12f3 4023 (file-name (git-file-name "cl-base64" version))
9945a170
KCB
4024 (sha256
4025 (base32 "1dw6j7n6gsd2qa0p0rbsjxj00acxx3i9ca1qkgl0liy8lpnwkypl"))))
4026 (build-system asdf-build-system/sbcl)
4027 (arguments
4028 ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed
4029 ;; in a nested call to ASDF/OPERATE:OPERATE unless identically
4030 ;; to toplevel
4031 '(#:tests? #f))
4032 (inputs
4033 `(("sbcl-ptester" ,sbcl-ptester)
4034 ("sbcl-kmrcl" ,sbcl-kmrcl)))
4035 (home-page "http://files.kpe.io/cl-base64/")
4036 (synopsis
4037 "Common Lisp package to encode and decode base64 with URI support")
4038 (description
4039 "This package provides highly optimized base64 encoding and decoding.
4040Besides conversion to and from strings, integer conversions are supported.
4041Encoding with Uniform Resource Identifiers is supported by using a modified
4042encoding table that uses only URI-compatible characters.")
4043 (license license:bsd-3))))
4044
4045(define-public cl-base64
4046 (sbcl-package->cl-source-package sbcl-cl-base64))
990724c8
KCB
4047
4048(define-public sbcl-chunga
4049 (package
4050 (name "sbcl-chunga")
4051 (version "1.1.7")
4052 (source
4053 (origin
4054 (method url-fetch)
4055 (uri (string-append
4056 "https://github.com/edicl/chunga/archive/v" version ".tar.gz"))
4057 (sha256
4058 (base32 "0ra17kyc9l7qbaw003ly111r1cbn4zixbfq1ydr9cxw10v30q1n7"))))
4059 (build-system asdf-build-system/sbcl)
4060 (inputs
4061 `(("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
4062 (home-page "https://edicl.github.io/chunga/")
4063 (synopsis "Portable chunked streams for Common Lisp")
4064 (description
4065 "Chunga implements streams capable of chunked encoding on demand as
4066defined in RFC 2616.")
4067 (license license:bsd-2)))
4068
4069(define-public cl-chunga
4070 (sbcl-package->cl-source-package sbcl-chunga))
a4aefc1b
KCB
4071
4072(define-public sbcl-cl-who
4073 (let ((version "1.1.4")
4074 (commit "2c08caa4bafba720409af9171feeba3f32e86d32")
4075 (revision "1"))
4076 (package
4077 (name "sbcl-cl-who")
4078 (version (git-version version revision commit))
4079 (source
4080 (origin
4081 (method git-fetch)
4082 (uri (git-reference
4083 (url "https://github.com/edicl/cl-who.git")
4084 (commit commit)))
4085 (file-name (git-file-name name version))
4086 (sha256
4087 (base32
4088 "0yjb6sr3yazm288m318kqvj9xk8rm9n1lpimgf65ymqv0i5agxsb"))))
4089 (build-system asdf-build-system/sbcl)
4090 (native-inputs
4091 `(("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4092 (home-page "https://edicl.github.io/cl-who/")
4093 (synopsis "Yet another Lisp markup language")
4094 (description
4095 "There are plenty of Lisp Markup Languages out there - every Lisp
4096programmer seems to write at least one during his career - and CL-WHO (where
4097WHO means \"with-html-output\" for want of a better acronym) is probably just
4098as good or bad as the next one.")
4099 (license license:bsd-2))))
4100
4101(define-public cl-cl-who
4102 (sbcl-package->cl-source-package sbcl-cl-who))
50fe395d
KCB
4103
4104(define-public sbcl-chipz
4105 (let ((version "0.8")
4106 (commit "75dfbc660a5a28161c57f115adf74c8a926bfc4d")
4107 (revision "1"))
4108 (package
4109 (name "sbcl-chipz")
4110 (version (git-version version revision commit))
4111 (source
4112 (origin
4113 (method git-fetch)
4114 (uri (git-reference
4115 (url "https://github.com/froydnj/chipz.git")
4116 (commit commit)))
4117 (file-name (git-file-name name version))
4118 (sha256
4119 (base32
4120 "0plx4rs39zbs4gjk77h4a2q11zpy75fh9v8hnxrvsf8fnakajhwg"))))
4121 (build-system asdf-build-system/sbcl)
4122 (native-inputs
4123 `(("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4124 (home-page "http://method-combination.net/lisp/chipz/")
4125 (synopsis
4126 "Common Lisp library for decompressing deflate, zlib, gzip, and bzip2
4127data")
4128 (description
4129 "DEFLATE data, defined in RFC1951, forms the core of popular
4130compression formats such as zlib (RFC 1950) and gzip (RFC 1952). As such,
4131Chipz also provides for decompressing data in those formats as well. BZIP2 is
4132the format used by the popular compression tool bzip2.")
4133 ;; The author describes it as "MIT-like"
4134 (license license:expat))))
4135
4136(define-public cl-chipz
4137 (sbcl-package->cl-source-package sbcl-chipz))
5ceb1492
KCB
4138
4139(define-public sbcl-drakma
4140 (let ((version "2.0.4")
4141 (commit "7647c0ae842ff2058624e53979c7f297760c97a7")
4142 (revision "1"))
4143 (package
4144 (name "sbcl-drakma")
4145 (version (git-version version revision commit))
4146 (source
4147 (origin
4148 (method git-fetch)
4149 (uri (git-reference
4150 (url "https://github.com/edicl/drakma.git")
4151 (commit commit)))
4152 (file-name (git-file-name name version))
4153 (sha256
4154 (base32
4155 "1c4i9wakhj5pxfyyykxshdmv3180sbkrx6fcyynikmc0jd0rh84r"))))
4156 (build-system asdf-build-system/sbcl)
4157 (inputs
4158 `(("sbcl-puri" ,sbcl-puri)
4159 ("sbcl-cl-base64" ,sbcl-cl-base64)
4160 ("sbcl-chunga" ,sbcl-chunga)
4161 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
4162 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4163 ("sbcl-chipz" ,sbcl-chipz)
4164 ("sbcl-usocket" ,sbcl-usocket)
4165 ("sbcl-cl+ssl" ,sbcl-cl+ssl)))
4166 (native-inputs
4167 `(("sbcl-fiveam" ,sbcl-fiveam)))
4168 (home-page "https://edicl.github.io/drakma/")
4169 (synopsis "HTTP client written in Common Lisp")
4170 (description
4171 "Drakma is a full-featured HTTP client implemented in Common Lisp. It
4172knows how to handle HTTP/1.1 chunking, persistent connections, re-usable
4173sockets, SSL, continuable uploads, file uploads, cookies, and more.")
4174 (license license:bsd-2))))
4175
4176(define-public cl-drakma
4177 (sbcl-package->cl-source-package sbcl-drakma))
155fc436
KCB
4178
4179(define-public sbcl-hunchentoot
4180 (package
4181 (name "sbcl-hunchentoot")
4182 (version "1.2.38")
4183 (source
4184 (origin
0458ec2b
TGR
4185 (method git-fetch)
4186 (uri (git-reference
4187 (url "https://github.com/edicl/hunchentoot.git")
4188 (commit (string-append "v" version))))
4189 (file-name (git-file-name "hunchentoot" version))
155fc436 4190 (sha256
0458ec2b 4191 (base32 "1anpcad7w045m4rsjs1f3xdhjwx5cppq1h0vlb3q7dz81fi3i6yq"))))
155fc436
KCB
4192 (build-system asdf-build-system/sbcl)
4193 (native-inputs
4194 `(("sbcl-cl-who" ,sbcl-cl-who)
4195 ("sbcl-drakma" ,sbcl-drakma)))
4196 (inputs
4197 `(("sbcl-chunga" ,sbcl-chunga)
4198 ("sbcl-cl-base64" ,sbcl-cl-base64)
4199 ("sbcl-cl-fad" ,sbcl-cl-fad)
4200 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4201 ("sbcl-flexi-streams" ,sbcl-flexi-streams)
4202 ("sbcl-cl+ssl" ,sbcl-cl+ssl)
4203 ("sbcl-md5" ,sbcl-md5)
4204 ("sbcl-rfc2388" ,sbcl-rfc2388)
4205 ("sbcl-trivial-backtrace" ,sbcl-trivial-backtrace)
4206 ("sbcl-usocket" ,sbcl-usocket)))
4207 (home-page "https://edicl.github.io/hunchentoot/")
4208 (synopsis "Web server written in Common Lisp")
4209 (description
4210 "Hunchentoot is a web server written in Common Lisp and at the same
4211time a toolkit for building dynamic websites. As a stand-alone web server,
4212Hunchentoot is capable of HTTP/1.1 chunking (both directions), persistent
4213connections (keep-alive), and SSL.")
4214 (license license:bsd-2)))
4215
4216(define-public cl-hunchentoot
4217 (sbcl-package->cl-source-package sbcl-hunchentoot))
47a8aaa8
KCB
4218
4219(define-public sbcl-trivial-types
4220 (package
4221 (name "sbcl-trivial-types")
4222 (version "0.0.1")
4223 (source
4224 (origin
4225 (method git-fetch)
4226 (uri (git-reference
4227 (url "https://github.com/m2ym/trivial-types.git")
4228 (commit "ee869f2b7504d8aa9a74403641a5b42b16f47d88")))
4229 (file-name (git-file-name name version))
4230 (sha256
4231 (base32 "1s4cp9bdlbn8447q7w7f1wkgwrbvfzp20mgs307l5pxvdslin341"))))
4232 (build-system asdf-build-system/sbcl)
4233 (home-page "https://github.com/m2ym/trivial-types")
4234 (synopsis "Trivial type definitions for Common Lisp")
4235 (description
4236 "TRIVIAL-TYPES provides missing but important type definitions such as
4237PROPER-LIST, ASSOCIATION-LIST, PROPERTY-LIST and TUPLE.")
4238 (license license:llgpl)))
4239
4240(define-public cl-trivial-types
4241 (sbcl-package->cl-source-package sbcl-trivial-types))
85d1c705 4242
3f3dfd84 4243(define-public sbcl-cl-syntax
85d1c705 4244 (package
3f3dfd84 4245 (name "sbcl-cl-syntax")
85d1c705
KCB
4246 (version "0.0.3")
4247 (source
4248 (origin
4249 (method git-fetch)
4250 (uri (git-reference
4251 (url "https://github.com/m2ym/cl-syntax.git")
4252 (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
ad09f3b0 4253 (file-name (git-file-name "cl-syntax" version))
85d1c705
KCB
4254 (sha256
4255 (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y"))))
4256 (build-system asdf-build-system/sbcl)
4257 (arguments
4258 '(#:asd-file "cl-syntax.asd"
4259 #:asd-system-name "cl-syntax"))
4260 (inputs `(("sbcl-trivial-types" ,sbcl-trivial-types)
4261 ("sbcl-named-readtables" ,sbcl-named-readtables)))
4262 (home-page "https://github.com/m2ym/cl-syntax")
4263 (synopsis "Reader Syntax Coventions for Common Lisp and SLIME")
4264 (description
4265 "CL-SYNTAX provides Reader Syntax Coventions for Common Lisp and SLIME.")
4266 (license license:llgpl)))
4267
4268(define-public cl-syntax
3f3dfd84 4269 (sbcl-package->cl-source-package sbcl-cl-syntax))
7408b219 4270
3f3dfd84 4271(define-public sbcl-cl-annot
7408b219
KCB
4272 (let ((commit "c99e69c15d935eabc671b483349a406e0da9518d")
4273 (revision "1"))
4274 (package
3f3dfd84 4275 (name "sbcl-cl-annot")
7408b219
KCB
4276 (version (git-version "0.0.0" revision commit))
4277 (source
4278 (origin
4279 (method git-fetch)
4280 (uri (git-reference
4281 (url "https://github.com/m2ym/cl-annot.git")
4282 (commit commit)))
4283 (file-name (git-file-name name version))
4284 (sha256
4285 (base32 "1wq1gs9jjd5m6iwrv06c2d7i5dvqsfjcljgbspfbc93cg5xahk4n"))))
4286 (build-system asdf-build-system/sbcl)
4287 (arguments
4288 '(#:asd-file "cl-annot.asd"
4289 #:asd-system-name "cl-annot"))
4290 (inputs
4291 `(("sbcl-alexandria" ,sbcl-alexandria)))
4292 (home-page "https://github.com/m2ym/cl-annot")
4293 (synopsis "Python-like Annotation Syntax for Common Lisp.")
4294 (description
4295 "@code{cl-annot} is an general annotation library for Common Lisp.")
4296 (license license:llgpl))))
4297
4298(define-public cl-annot
3f3dfd84 4299 (sbcl-package->cl-source-package sbcl-cl-annot))
2005104e 4300
3f3dfd84 4301(define-public sbcl-cl-syntax-annot
2005104e 4302 (package
3f3dfd84 4303 (name "sbcl-cl-syntax-annot")
2005104e
KCB
4304 (version "0.0.3")
4305 (source
4306 (origin
4307 (method git-fetch)
4308 (uri (git-reference
4309 (url "https://github.com/m2ym/cl-syntax.git")
4310 (commit "03f0c329bbd55b8622c37161e6278366525e2ccc")))
4311 (file-name (git-file-name name version))
4312 (sha256
4313 (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y"))))
4314 (build-system asdf-build-system/sbcl)
4315 (arguments
4316 '(#:asd-file "cl-syntax-annot.asd"
4317 #:asd-system-name "cl-syntax-annot"))
4318 (inputs
3f3dfd84
SB
4319 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
4320 ("sbcl-cl-annot" ,sbcl-cl-annot)))
2005104e
KCB
4321 (home-page "https://github.com/m2ym/cl-syntax")
4322 (synopsis "Reader Syntax Coventions for Common Lisp and SLIME")
4323 (description
4324 "CL-SYNTAX provides Reader Syntax Coventions for Common Lisp and
4325SLIME.")
4326 (license license:llgpl)))
4327
4328(define-public cl-syntax-annot
3f3dfd84 4329 (sbcl-package->cl-source-package sbcl-cl-syntax-annot))
a7b1ae38 4330
3f3dfd84 4331(define-public sbcl-cl-utilities
a7b1ae38
KCB
4332 (let ((commit "dce2d2f6387091ea90357a130fa6d13a6776884b")
4333 (revision "1"))
4334 (package
3f3dfd84 4335 (name "sbcl-cl-utilities")
a7b1ae38
KCB
4336 (version (git-version "0.0.0" revision commit))
4337 (source
4338 (origin
4339 (method url-fetch)
4340 (uri
4341 (string-append
4342 "https://gitlab.common-lisp.net/cl-utilities/cl-utilities/-/"
4343 "archive/" commit "/cl-utilities-" commit ".tar.gz"))
4344 (sha256
4345 (base32 "1r46v730yf96nk2vb24qmagv9x96xvd08abqwhf02ghgydv1a7z2"))))
4346 (build-system asdf-build-system/sbcl)
4347 (arguments
4348 '(#:asd-file "cl-utilities.asd"
4349 #:asd-system-name "cl-utilities"
4350 #:phases
4351 (modify-phases %standard-phases
4352 (add-after 'unpack 'fix-paths
4353 (lambda* (#:key inputs #:allow-other-keys)
4354 (substitute* "rotate-byte.lisp"
4355 (("in-package :cl-utilities)" all)
4356 "in-package :cl-utilities)\n\n#+sbcl\n(require :sb-rotate-byte)")))))))
4357 (home-page "http://common-lisp.net/project/cl-utilities")
4358 (synopsis "A collection of semi-standard utilities")
4359 (description
4360 "On Cliki.net <http://www.cliki.net/Common%20Lisp%20Utilities>, there
4361is a collection of Common Lisp Utilities, things that everybody writes since
4362they're not part of the official standard. There are some very useful things
4363there; the only problems are that they aren't implemented as well as you'd
4364like (some aren't implemented at all) and they aren't conveniently packaged
4365and maintained. It takes quite a bit of work to carefully implement utilities
4366for common use, commented and documented, with error checking placed
4367everywhere some dumb user might make a mistake.")
4368 (license license:public-domain))))
4369
4370(define-public cl-utilities
3f3dfd84 4371 (sbcl-package->cl-source-package sbcl-cl-utilities))
9e005948
KCB
4372
4373(define-public sbcl-map-set
4374 (let ((commit "7b4b545b68b8")
4375 (revision "1"))
4376 (package
4377 (name "sbcl-map-set")
4378 (version (git-version "0.0.0" revision commit))
4379 (source
4380 (origin
4381 (method url-fetch)
4382 (uri (string-append
4383 "https://bitbucket.org/tarballs_are_good/map-set/get/"
4384 commit ".tar.gz"))
4385 (sha256
4386 (base32 "1sx5j5qdsy5fklspfammwb16kjrhkggdavm922a9q86jm5l0b239"))))
4387 (build-system asdf-build-system/sbcl)
4388 (home-page "https://bitbucket.org/tarballs_are_good/map-set")
4389 (synopsis "Set-like data structure")
4390 (description
4391 "Implementation of a set-like data structure with constant time
4392addition, removal, and random selection.")
4393 (license license:bsd-3))))
4394
4395(define-public cl-map-set
4396 (sbcl-package->cl-source-package sbcl-map-set))
5a4b0f63
KCB
4397
4398(define-public sbcl-quri
4399 (let ((commit "76b75103f21ead092c9f715512fa82441ef61185")
4400 (revision "1"))
4401 (package
4402 (name "sbcl-quri")
4403 (version (git-version "0.1.0" revision commit))
4404 (source
4405 (origin
4406 (method git-fetch)
4407 (uri (git-reference
4408 (url "https://github.com/fukamachi/quri.git")
4409 (commit commit)))
4410 (file-name (git-file-name name version))
4411 (sha256
4412 (base32 "1ccbxsgzdibmzq33mmbmmz9vwl6l03xh6nbpsh1hkdvdcl7q0a60"))))
4413 (build-system asdf-build-system/sbcl)
4414 (arguments
4415 ;; Tests fail with: Component QURI-ASD::QURI-TEST not found,
4416 ;; required by #<SYSTEM "quri">. Why?
4417 '(#:tests? #f))
4418 (native-inputs `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4419 ("sbcl-prove" ,sbcl-prove)))
4420 (inputs `(("sbcl-babel" ,sbcl-babel)
4421 ("sbcl-split-sequence" ,sbcl-split-sequence)
3f3dfd84 4422 ("sbcl-cl-utilities" ,sbcl-cl-utilities)
5a4b0f63
KCB
4423 ("sbcl-alexandria" ,sbcl-alexandria)))
4424 (home-page "https://github.com/fukamachi/quri")
4425 (synopsis "Yet another URI library for Common Lisp")
4426 (description
4427 "QURI (pronounced \"Q-ree\") is yet another URI library for Common
4428Lisp. It is intended to be a replacement of PURI.")
4429 (license license:bsd-3))))
4430
4431(define-public cl-quri
4432 (sbcl-package->cl-source-package sbcl-quri))
33a58556
KCB
4433
4434(define-public sbcl-myway
4435 (let ((commit "286230082a11f879c18b93f17ca571c5f676bfb7")
4436 (revision "1"))
4437 (package
4438 (name "sbcl-myway")
4439 (version (git-version "0.1.0" revision commit))
4440 (source
4441 (origin
4442 (method git-fetch)
4443 (uri (git-reference
4444 (url "https://github.com/fukamachi/myway.git")
4445 (commit commit)))
a97fc9cd 4446 (file-name (git-file-name "myway" version))
33a58556
KCB
4447 (sha256
4448 (base32 "0briia9bk3lbr0frnx39d1qg6i38dm4j6z9w3yga3d40k6df4a90"))))
4449 (build-system asdf-build-system/sbcl)
4450 (arguments
4451 ;; Tests fail with: Component MYWAY-ASD::MYWAY-TEST not found, required
4452 ;; by #<SYSTEM "myway">. Why?
4453 '(#:tests? #f))
4454 (native-inputs
4455 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4456 ("sbcl-prove" ,sbcl-prove)))
4457 (inputs
4458 `(("sbcl-cl-ppcre" ,sbcl-cl-ppcre)
4459 ("sbcl-quri" ,sbcl-quri)
4460 ("sbcl-map-set" ,sbcl-map-set)))
4461 (home-page "https://github.com/fukamachi/myway")
4462 (synopsis "Sinatra-compatible URL routing library for Common Lisp")
4463 (description "My Way is a Sinatra-compatible URL routing library.")
4464 (license license:llgpl))))
4465
4466(define-public cl-myway
4467 (sbcl-package->cl-source-package sbcl-myway))
b45acc34
KCB
4468
4469(define-public sbcl-xsubseq
4470 (let ((commit "5ce430b3da5cda3a73b9cf5cee4df2843034422b")
4471 (revision "1"))
4472 (package
4473 (name "sbcl-xsubseq")
4474 (version (git-version "0.0.1" revision commit))
4475 (source
4476 (origin
4477 (method git-fetch)
4478 (uri (git-reference
4479 (url "https://github.com/fukamachi/xsubseq")
4480 (commit commit)))
4481 (file-name (git-file-name name version))
4482 (sha256
4483 (base32 "1xz79q0p2mclf3sqjiwf6izdpb6xrsr350bv4mlmdlm6rg5r99px"))))
4484 (build-system asdf-build-system/sbcl)
4485 (arguments
4486 ;; Tests fail with: Component XSUBSEQ-ASD::XSUBSEQ-TEST not found,
4487 ;; required by #<SYSTEM "xsubseq">. Why?
4488 '(#:tests? #f))
4489 (native-inputs
4490 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4491 ("sbcl-prove" ,sbcl-prove)))
4492 (home-page "https://github.com/fukamachi/xsubseq")
4493 (synopsis "Efficient way to use \"subseq\"s in Common Lisp")
4494 (description
4495 "XSubseq provides functions to be able to handle \"subseq\"s more
4496effieiently.")
4497 (license license:bsd-2))))
4498
4499(define-public cl-xsubseq
4500 (sbcl-package->cl-source-package sbcl-xsubseq))
1f2dd0da
KCB
4501
4502(define-public sbcl-smart-buffer
4503 (let ((commit "09b9a9a0b3abaa37abe9a730f5aac2643dca4e62")
4504 (revision "1"))
4505 (package
4506 (name "sbcl-smart-buffer")
4507 (version (git-version "0.0.1" revision commit))
4508 (source
4509 (origin
4510 (method git-fetch)
4511 (uri (git-reference
4512 (url "https://github.com/fukamachi/smart-buffer")
4513 (commit commit)))
4514 (file-name (git-file-name name version))
4515 (sha256
4516 (base32 "0qz1zzxx0wm5ff7gpgsq550a59p0qj594zfmm2rglj97dahj54l7"))))
4517 (build-system asdf-build-system/sbcl)
4518 (arguments
4519 ;; Tests fail with: Component SMART-BUFFER-ASD::SMART-BUFFER-TEST not
4520 ;; found, required by #<SYSTEM "smart-buffer">. Why?
4521 `(#:tests? #f))
4522 (native-inputs
4523 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4524 ("sbcl-prove" ,sbcl-prove)))
4525 (inputs
4526 `(("sbcl-xsubseq" ,sbcl-xsubseq)
4527 ("sbcl-flexi-streams" ,sbcl-flexi-streams)))
4528 (home-page "https://github.com/fukamachi/smart-buffer")
4529 (synopsis "Smart octets buffer")
4530 (description
4531 "Smart-buffer provides an output buffer which changes the destination
4532depending on content size.")
4533 (license license:bsd-3))))
4534
4535(define-public cl-smart-buffer
4536 (sbcl-package->cl-source-package sbcl-smart-buffer))
d75d5dd5
KCB
4537
4538(define-public sbcl-fast-http
4539 (let ((commit "f9e7597191bae380503e20724fd493a24d024935")
4540 (revision "1"))
4541 (package
4542 (name "sbcl-fast-http")
4543 (version (git-version "0.2.0" revision commit))
4544 (source
4545 (origin
4546 (method git-fetch)
4547 (uri (git-reference
4548 (url "https://github.com/fukamachi/fast-http")
4549 (commit commit)))
4550 (file-name (git-file-name name version))
4551 (sha256
4552 (base32 "0qdmwv2zm0sizxdb8nnclgwl0nfjcbjaimbakavikijw7lr9b4jp"))))
4553 (build-system asdf-build-system/sbcl)
4554 (arguments
4555 ;; Tests fail with: Component FAST-HTTP-ASD::FAST-HTTP-TEST not found,
4556 ;; required by #<SYSTEM "fast-http">. Why?
4557 `(#:tests? #f))
4558 (native-inputs
4559 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4560 ("sbcl-prove" ,sbcl-prove)))
4561 (inputs
4562 `(("sbcl-alexandria" ,sbcl-alexandria)
4563 ("sbcl-proc-parse" ,sbcl-proc-parse)
4564 ("sbcl-xsubseq" ,sbcl-xsubseq)
4565 ("sbcl-smart-buffer" ,sbcl-smart-buffer)
3f3dfd84 4566 ("sbcl-cl-utilities" ,sbcl-cl-utilities)))
d75d5dd5
KCB
4567 (home-page "https://github.com/fukamachi/fast-http")
4568 (synopsis "HTTP request/response parser for Common Lisp")
4569 (description
4570 "@code{fast-http} is a HTTP request/response protocol parser for Common
4571Lisp.")
4572 ;; Author specified the MIT license
4573 (license license:expat))))
4574
4575(define-public cl-fast-http
4576 (sbcl-package->cl-source-package sbcl-fast-http))
6ae60f04
KCB
4577
4578(define-public sbcl-static-vectors
4579 (let ((commit "0681eac1f49370cde03e64b077251e8abf47d702")
4580 (revision "1"))
4581 (package
4582 (name "sbcl-static-vectors")
4583 (version (git-version "1.8.3" revision commit))
4584 (source
4585 (origin
4586 (method git-fetch)
4587 (uri (git-reference
4588 (url "https://github.com/sionescu/static-vectors.git")
4589 (commit commit)))
4590 (file-name (git-file-name name version))
4591 (sha256
4592 (base32 "138nlsq14hv8785ycjm6jw3i6ablhq8vcwys7q09y80arcgrg6r3"))))
4593 (native-inputs
4594 `(("sbcl-fiveam" ,sbcl-fiveam)))
4595 (inputs
4596 `(("sbcl-cffi-grovel" ,sbcl-cffi-grovel)
4597 ("sbcl-cffi" ,sbcl-cffi)))
4598 (build-system asdf-build-system/sbcl)
4599 (home-page "http://common-lisp.net/projects/iolib/")
4600 (synopsis "Allocate SIMPLE-ARRAYs in static memory")
4601 (description
4602 "With @code{static-vectors}, you can create vectors allocated in static
4603memory.")
4604 (license license:expat))))
4605
4606(define-public cl-static-vectors
4607 (sbcl-package->cl-source-package sbcl-static-vectors))
135984ef
KCB
4608
4609(define-public sbcl-marshal
4610 (let ((commit "eff1b15f2b0af2f26f71ad6a4dd5c4beab9299ec")
4611 (revision "1"))
4612 (package
4613 (name "sbcl-marshal")
4614 (version (git-version "1.3.0" revision commit))
4615 (source
4616 (origin
4617 (method git-fetch)
4618 (uri (git-reference
4619 (url "https://github.com/wlbr/cl-marshal.git")
4620 (commit commit)))
4621 (file-name (git-file-name name version))
4622 (sha256
4623 (base32 "08qs6fhk38xpkkjkpcj92mxx0lgy4ygrbbzrmnivdx281syr0gwh"))))
4624 (build-system asdf-build-system/sbcl)
4625 (home-page "https://github.com/wlbr/cl-marshal")
4626 (synopsis "Simple (de)serialization of Lisp datastructures")
4627 (description
4628 "Simple and fast marshalling of Lisp datastructures. Convert any object
4629into a string representation, put it on a stream an revive it from there.
4630Only minimal changes required to make your CLOS objects serializable.")
4631 (license license:expat))))
4632
4633(define-public cl-marshal
4634 (sbcl-package->cl-source-package sbcl-marshal))
e7dcdd9f
KCB
4635
4636(define-public sbcl-checkl
4637 (let ((commit "80328800d047fef9b6e32dfe6bdc98396aee3cc9")
4638 (revision "1"))
4639 (package
4640 (name "sbcl-checkl")
4641 (version (git-version "0.0.0" revision commit))
4642 (source
4643 (origin
4644 (method git-fetch)
4645 (uri (git-reference
4646 (url "https://github.com/rpav/CheckL.git")
4647 (commit commit)))
4648 (file-name (git-file-name name version))
4649 (sha256
4650 (base32 "0bpisihx1gay44xmyr1dmhlwh00j0zzi04rp9fy35i95l2r4xdlx"))))
4651 (build-system asdf-build-system/sbcl)
4652 (arguments
4653 ;; Error while trying to load definition for system checkl-test from
4654 ;; pathname [...]/checkl-test.asd: The function CHECKL:DEFINE-TEST-OP
4655 ;; is undefined.
4656 '(#:tests? #f))
4657 (native-inputs
4658 `(("sbcl-fiveam" ,sbcl-fiveam)))
4659 (inputs
4660 `(("sbcl-marshal" ,sbcl-marshal)))
4661 (home-page "https://github.com/rpav/CheckL/")
4662 (synopsis "Dynamic testing for Common Lisp")
4663 (description
4664 "CheckL lets you write tests dynamically, it checks resulting values
4665against the last run.")
4666 ;; The author specifies both LLGPL and "BSD", but the "BSD" license
4667 ;; isn't specified anywhere, so I don't know which kind. LLGPL is the
4668 ;; stronger of the two and so I think only listing this should suffice.
4669 (license license:llgpl))))
4670
4671(define-public cl-checkl
4672 (sbcl-package->cl-source-package sbcl-checkl))
4a290afb
KCB
4673
4674(define-public sbcl-fast-io
4675 (let ((commit "dc3a71db7e9b756a88781ae9c342fe9d4bbab51c")
4676 (revision "1"))
4677 (package
4678 (name "sbcl-fast-io")
4679 (version (git-version "1.0.0" revision commit))
4680 (source
4681 (origin
4682 (method git-fetch)
4683 (uri (git-reference
4684 (url "https://github.com/rpav/fast-io.git")
4685 (commit commit)))
4686 (file-name (git-file-name name version))
4687 (sha256
4688 (base32 "1jsp6xvi26ln6fdy5j5zi05xvan8jsqdhisv552dy6xg6ws8i1yq"))))
4689 (build-system asdf-build-system/sbcl)
4690 (arguments
4691 ;; Error while trying to load definition for system fast-io-test from
4692 ;; pathname [...]/fast-io-test.asd: The function CHECKL:DEFINE-TEST-OP
4693 ;; is undefined.
4694 '(#:tests? #f))
4695 (native-inputs
4696 `(("sbcl-fiveam" ,sbcl-fiveam)
4697 ("sbcl-checkl" ,sbcl-checkl)))
4698 (inputs
4699 `(("sbcl-alexandria" ,sbcl-alexandria)
4700 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)
4701 ("sbcl-static-vectors" ,sbcl-static-vectors)))
4702 (home-page "https://github.com/rpav/fast-io")
4703 (synopsis "Fast octet-vector/stream I/O for Common Lisp")
4704 (description
4705 "Fast-io is about improving performance to octet-vectors and octet
4706streams (though primarily the former, while wrapping the latter).")
4707 ;; Author specifies this as NewBSD which is an alias
4708 (license license:bsd-3))))
4709
4710(define-public cl-fast-io
4711 (sbcl-package->cl-source-package sbcl-fast-io))
0fecb86c
KCB
4712
4713(define-public sbcl-jonathan
4714 (let ((commit "1f448b4f7ac8265e56e1c02b32ce383e65316300")
4715 (revision "1"))
4716 (package
4717 (name "sbcl-jonathan")
4718 (version (git-version "0.1.0" revision commit))
4719 (source
4720 (origin
4721 (method git-fetch)
4722 (uri (git-reference
4723 (url "https://github.com/Rudolph-Miller/jonathan.git")
4724 (commit commit)))
4725 (file-name (git-file-name name version))
4726 (sha256
4727 (base32 "14x4iwz3mbag5jzzzr4sb6ai0m9r4q4kyypbq32jmsk2dx1hi807"))))
4728 (build-system asdf-build-system/sbcl)
4729 (arguments
4730 ;; Tests fail with: Component JONATHAN-ASD::JONATHAN-TEST not found,
4731 ;; required by #<SYSTEM "jonathan">. Why?
4732 `(#:tests? #f))
4733 (native-inputs
4734 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4735 ("sbcl-prove" ,sbcl-prove)))
4736 (inputs
3f3dfd84
SB
4737 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
4738 ("sbcl-cl-syntax-annot" ,sbcl-cl-syntax-annot)
0fecb86c
KCB
4739 ("sbcl-fast-io" ,sbcl-fast-io)
4740 ("sbcl-proc-parse" ,sbcl-proc-parse)
4741 ("sbcl-cl-ppcre" ,sbcl-cl-ppcre)))
4742 (home-page "http://rudolph-miller.github.io/jonathan/overview.html")
4743 (synopsis "JSON encoder and decoder")
4744 (description
4745 "High performance JSON encoder and decoder. Currently support: SBCL,
4746CCL.")
4747 ;; Author specifies the MIT license
4748 (license license:expat))))
4749
4750(define-public cl-jonathan
4751 (sbcl-package->cl-source-package sbcl-jonathan))
5ca7143f
KCB
4752
4753(define-public sbcl-http-body
4754 (let ((commit "dd01dc4f5842e3d29728552e5163acce8386eb73")
4755 (revision "1"))
4756 (package
4757 (name "sbcl-http-body")
4758 (version (git-version "0.1.0" revision commit))
4759 (source
4760 (origin
4761 (method git-fetch)
4762 (uri (git-reference
4763 (url "https://github.com/fukamachi/http-body")
4764 (commit commit)))
4765 (file-name (git-file-name name version))
4766 (sha256
4767 (base32 "1jd06snjvxcprhapgfq8sx0y5lrldkvhf206ix6d5a23dd6zcmr0"))))
4768 (build-system asdf-build-system/sbcl)
4769 (arguments
4770 ;; Tests fail with: Component HTTP-BODY-ASD::HTTP-BODY-TEST not
4771 ;; found, required by #<SYSTEM "http-body">. Why?
4772 `(#:tests? #f))
4773 (native-inputs
4774 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4775 ("sbcl-prove" ,sbcl-prove)))
4776 (inputs
4777 `(("sbcl-fast-http" ,sbcl-fast-http)
4778 ("sbcl-jonathan" ,sbcl-jonathan)
4779 ("sbcl-quri" ,sbcl-quri)))
4780 (home-page "https://github.com/fukamachi/http-body")
4781 (synopsis "HTTP POST data parser")
4782 (description
4783 "HTTP-Body parses HTTP POST data and returns POST parameters. It
4784supports application/x-www-form-urlencoded, application/json, and
4785multipart/form-data.")
4786 (license license:bsd-2))))
4787
4788(define-public cl-http-body
4789 (sbcl-package->cl-source-package sbcl-http-body))
a2c4a055
KCB
4790
4791(define-public sbcl-circular-streams
4792 (let ((commit "e770bade1919c5e8533dd2078c93c3d3bbeb38df")
4793 (revision "1"))
4794 (package
4795 (name "sbcl-circular-streams")
4796 (version (git-version "0.1.0" revision commit))
4797 (source
4798 (origin
4799 (method git-fetch)
4800 (uri (git-reference
4801 (url "https://github.com/fukamachi/circular-streams")
4802 (commit commit)))
4803 (file-name (git-file-name name version))
4804 (sha256
4805 (base32 "1wpw6d5cciyqcf92f7mvihak52pd5s47kk4qq6f0r2z2as68p5rs"))))
4806 (build-system asdf-build-system/sbcl)
4807 (arguments
4808 ;; The tests depend on cl-test-more which is now prove. Prove
4809 ;; tests aren't working for some reason.
4810 `(#:tests? #f))
4811 (inputs
4812 `(("sbcl-fast-io" ,sbcl-fast-io)
4813 ("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
4814 (home-page "https://github.com/fukamachi/circular-streams")
4815 (synopsis "Circularly readable streams for Common Lisp")
4816 (description
4817 "Circular-Streams allows you to read streams circularly by wrapping real
4818streams. Once you reach end-of-file of a stream, it's file position will be
4819reset to 0 and you're able to read it again.")
4820 (license license:llgpl))))
4821
4822(define-public cl-circular-streams
4823 (sbcl-package->cl-source-package sbcl-circular-streams))
d98d1485
KCB
4824
4825(define-public sbcl-lack-request
4826 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4827 (revision "1"))
4828 (package
4829 (name "sbcl-lack-request")
4830 (version (git-version "0.1.0" revision commit))
4831 (source
4832 (origin
4833 (method git-fetch)
4834 (uri (git-reference
4835 (url "https://github.com/fukamachi/lack.git")
4836 (commit commit)))
4837 (sha256
4838 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4839 (build-system asdf-build-system/sbcl)
4840 (arguments
4841 '(#:asd-file "lack-request.asd"
4842 #:asd-system-name "lack-request"
4843 #:test-asd-file "t-lack-request.asd"
4844 ;; XXX: Component :CLACK-TEST not found
4845 #:tests? #f))
4846 (native-inputs
4847 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4848 ("sbcl-prove" ,sbcl-prove)))
4849 (inputs
4850 `(("sbcl-quri" ,sbcl-quri)
4851 ("sbcl-http-body" ,sbcl-http-body)
4852 ("sbcl-circular-streams" ,sbcl-circular-streams)))
4853 (home-page "https://github.com/fukamachi/lack")
4854 (synopsis "Lack, the core of Clack")
4855 (description
4856 "Lack is a Common Lisp library which allows web applications to be
4857constructed of modular components. It was originally a part of Clack, however
4858it's going to be rewritten as an individual project since Clack v2 with
4859performance and simplicity in mind.")
4860 (license license:llgpl))))
4861
4862(define-public cl-lack-request
4863 (sbcl-package->cl-source-package sbcl-lack-request))
ffc1d945
KCB
4864
4865(define-public sbcl-local-time
4866 (let ((commit "beac054eef428552b63d4ae7820c32ffef9a3015")
4867 (revision "1"))
4868 (package
4869 (name "sbcl-local-time")
4870 (version (git-version "1.0.6" revision commit))
4871 (source
4872 (origin
4873 (method git-fetch)
4874 (uri (git-reference
4875 (url "https://github.com/dlowe-net/local-time.git")
4876 (commit commit)))
4877 (file-name (git-file-name name version))
4878 (sha256
4879 (base32 "0xhkmgxh41dg2wwlsp0h2l41jp144xn4gpxhh0lna6kh0560w2cc"))))
4880 (build-system asdf-build-system/sbcl)
4881 (arguments
4882 ;; TODO: Component :STEFIL not found, required by #<SYSTEM
4883 ;; "local-time/test">
4884 '(#:tests? #f))
4885 (native-inputs
4886 `(("stefil" ,sbcl-hu.dwim.stefil)))
4887 (inputs
4888 `(("sbcl-cl-fad" ,sbcl-cl-fad)))
4889 (home-page "https://common-lisp.net/project/local-time/")
4890 (synopsis "Time manipulation library for Common Lisp")
4891 (description
4892 "The LOCAL-TIME library is a Common Lisp library for the manipulation of
4893dates and times. It is based almost entirely upon Erik Naggum's paper \"The
4894Long Painful History of Time\".")
4895 (license license:expat))))
4896
4897(define-public cl-local-time
4898 (sbcl-package->cl-source-package sbcl-local-time))
fb383668
KCB
4899
4900(define-public sbcl-lack-response
4901 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4902 (revision "1"))
4903 (package
4904 (name "sbcl-lack-response")
4905 (version (git-version "0.1.0" revision commit))
4906 (source
4907 (origin
4908 (method git-fetch)
4909 (uri (git-reference
4910 (url "https://github.com/fukamachi/lack.git")
4911 (commit commit)))
4912 (file-name (git-file-name name version))
4913 (sha256
4914 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4915 (build-system asdf-build-system/sbcl)
4916 (arguments
4917 '(#:asd-file "lack-response.asd"
4918 #:asd-system-name "lack-response"
4919 ;; XXX: no tests for lack-response.
4920 #:tests? #f))
4921 (native-inputs
4922 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
4923 ("sbcl-prove" ,sbcl-prove)))
4924 (inputs
4925 `(("sbcl-quri" ,sbcl-quri)
4926 ("sbcl-http-body" ,sbcl-http-body)
4927 ("sbcl-circular-streams" ,sbcl-circular-streams)
4928 ("sbcl-local-time" ,sbcl-local-time)))
4929 (home-page "https://github.com/fukamachi/lack")
4930 (synopsis "Lack, the core of Clack")
4931 (description
4932 "Lack is a Common Lisp library which allows web applications to be
4933constructed of modular components. It was originally a part of Clack, however
4934it's going to be rewritten as an individual project since Clack v2 with
4935performance and simplicity in mind.")
4936 (license license:llgpl))))
4937
4938(define-public cl-lack-response
4939 (sbcl-package->cl-source-package sbcl-lack-response))
3583ba04
KCB
4940
4941(define-public sbcl-lack-component
4942 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4943 (revision "1"))
4944 (package
4945 (name "sbcl-lack-component")
4946 (version (git-version "0.0.0" revision commit))
4947 (source
4948 (origin
4949 (method git-fetch)
4950 (uri (git-reference
4951 (url "https://github.com/fukamachi/lack.git")
4952 (commit commit)))
4953 (sha256
4954 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4955 (build-system asdf-build-system/sbcl)
4956 (arguments
4957 '(#:asd-file "lack-component.asd"
4958 #:asd-system-name "lack-component"
4959 #:test-asd-file "t-lack-component.asd"
4960 ;; XXX: Component :LACK-TEST not found
4961 #:tests? #f))
4962 (native-inputs
4963 `(("prove-asdf" ,sbcl-prove-asdf)))
4964 (home-page "https://github.com/fukamachi/lack")
4965 (synopsis "Lack, the core of Clack")
4966 (description
4967 "Lack is a Common Lisp library which allows web applications to be
4968constructed of modular components. It was originally a part of Clack, however
4969it's going to be rewritten as an individual project since Clack v2 with
4970performance and simplicity in mind.")
4971 (license license:llgpl))))
4972
4973(define-public cl-lack-component
4974 (sbcl-package->cl-source-package sbcl-lack-component))
08295e6f
KCB
4975
4976(define-public sbcl-lack-util
4977 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
4978 (revision "1"))
4979 (package
4980 (name "sbcl-lack-util")
4981 (version (git-version "0.1.0" revision commit))
4982 (source
4983 (origin
4984 (method git-fetch)
4985 (uri (git-reference
4986 (url "https://github.com/fukamachi/lack.git")
4987 (commit commit)))
4988 (sha256
4989 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
4990 (build-system asdf-build-system/sbcl)
4991 (arguments
4992 '(#:asd-file "lack-util.asd"
4993 #:asd-system-name "lack-util"
4994 #:test-asd-file "t-lack-util.asd"
4995 ;; XXX: Component :LACK-TEST not found
4996 #:tests? #f))
4997 (native-inputs
4998 `(("prove-asdf" ,sbcl-prove-asdf)))
4999 (inputs
5000 `(("sbcl-ironclad" ,sbcl-ironclad)))
5001 (home-page "https://github.com/fukamachi/lack")
5002 (synopsis "Lack, the core of Clack")
5003 (description
5004 "Lack is a Common Lisp library which allows web applications to be
5005constructed of modular components. It was originally a part of Clack, however
5006it's going to be rewritten as an individual project since Clack v2 with
5007performance and simplicity in mind.")
5008 (license license:llgpl))))
5009
5010(define-public cl-lack-util
5011 (sbcl-package->cl-source-package sbcl-lack-util))
d3da4b37
KCB
5012
5013(define-public sbcl-lack-middleware-backtrace
5014 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5015 (revision "1"))
5016 (package
5017 (name "sbcl-lack-middleware-backtrace")
5018 (version (git-version "0.1.0" revision commit))
5019 (source
5020 (origin
5021 (method git-fetch)
5022 (uri (git-reference
5023 (url "https://github.com/fukamachi/lack.git")
5024 (commit commit)))
5025 (sha256
5026 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5027 (build-system asdf-build-system/sbcl)
5028 (arguments
5029 '(#:asd-file "lack-middleware-backtrace.asd"
5030 #:asd-system-name "lack-middleware-backtrace"
5031 #:test-asd-file "t-lack-middleware-backtrace.asd"
5032 ;; XXX: Component :LACK not found
5033 #:tests? #f))
5034 (native-inputs
5035 `(("prove-asdf" ,sbcl-prove-asdf)))
5036 (home-page "https://github.com/fukamachi/lack")
5037 (synopsis "Lack, the core of Clack")
5038 (description
5039 "Lack is a Common Lisp library which allows web applications to be
5040constructed of modular components. It was originally a part of Clack, however
5041it's going to be rewritten as an individual project since Clack v2 with
5042performance and simplicity in mind.")
5043 (license license:llgpl))))
5044
5045(define-public cl-lack-middleware-backtrace
5046 (sbcl-package->cl-source-package sbcl-lack-middleware-backtrace))
ac99157f
KCB
5047
5048(define-public sbcl-trivial-mimes
5049 (let ((commit "303f8ac0aa6ca0bc139aa3c34822e623c3723fab")
5050 (revision "1"))
5051 (package
5052 (name "sbcl-trivial-mimes")
5053 (version (git-version "1.1.0" revision commit))
5054 (source
5055 (origin
5056 (method git-fetch)
5057 (uri (git-reference
5058 (url "https://github.com/Shinmera/trivial-mimes.git")
5059 (commit commit)))
5060 (file-name (git-file-name name version))
5061 (sha256
5062 (base32 "17jxgl47r695bvsb7wi3n2ws5rp1zzgvw0zii8cy5ggw4b4ayv6m"))))
5063 (build-system asdf-build-system/sbcl)
5064 (arguments
5065 '(#:phases
5066 (modify-phases %standard-phases
5067 (add-after
5068 'unpack 'fix-paths
5069 (lambda* (#:key inputs #:allow-other-keys)
5070 (let ((anchor "#p\"/etc/mime.types\""))
5071 (substitute* "mime-types.lisp"
5072 ((anchor all)
5073 (string-append
5074 anchor "\n"
5075 "(asdf:system-relative-pathname :trivial-mimes \"../../share/common-lisp/sbcl-source/trivial-mimes/mime.types\")")))))))))
5076 (native-inputs
5077 `(("stefil" ,sbcl-hu.dwim.stefil)))
5078 (inputs
5079 `(("sbcl-cl-fad" ,sbcl-cl-fad)))
5080 (home-page "http://shinmera.github.io/trivial-mimes/")
5081 (synopsis "Tiny Common Lisp library to detect mime types in files")
5082 (description
5083 "This is a teensy library that provides some functions to determine the
5084mime-type of a file.")
5085 (license license:artistic2.0))))
5086
5087(define-public cl-trivial-mimes
5088 (sbcl-package->cl-source-package sbcl-trivial-mimes))
dba50058
KCB
5089
5090(define-public sbcl-lack-middleware-static
5091 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5092 (revision "1"))
5093 (package
5094 (name "sbcl-lack-middleware-static")
5095 (version (git-version "0.1.0" revision commit))
5096 (source
5097 (origin
5098 (method git-fetch)
5099 (uri (git-reference
5100 (url "https://github.com/fukamachi/lack.git")
5101 (commit commit)))
5102 (sha256
5103 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5104 (build-system asdf-build-system/sbcl)
5105 (arguments
5106 '(#:asd-file "lack-middleware-static.asd"
5107 #:asd-system-name "lack-middleware-static"
5108 #:test-asd-file "t-lack-middleware-static.asd"
5109 ;; XXX: Component :LACK not found
5110 #:tests? #f))
5111 (native-inputs
5112 `(("prove-asdf" ,sbcl-prove-asdf)))
5113 (inputs
5114 `(("sbcl-ironclad" ,sbcl-ironclad)
5115 ("sbcl-trivial-mimes" ,sbcl-trivial-mimes)
5116 ("sbcl-local-time" ,sbcl-local-time)))
5117 (home-page "https://github.com/fukamachi/lack")
5118 (synopsis "Lack, the core of Clack")
5119 (description
5120 "Lack is a Common Lisp library which allows web applications to be
5121constructed of modular components. It was originally a part of Clack, however
5122it's going to be rewritten as an individual project since Clack v2 with
5123performance and simplicity in mind.")
5124 (license license:llgpl))))
5125
5126(define-public cl-lack-middleware-static
5127 (sbcl-package->cl-source-package sbcl-lack-middleware-static))
77a5b9fe
KCB
5128
5129(define-public sbcl-lack
5130 (let ((commit "abff8efeb0c3a848e6bb0022f2b8b7fa3a1bc88b")
5131 (revision "1"))
5132 (package
5133 (name "sbcl-lack")
5134 (version (git-version "0.1.0" revision commit))
5135 (source
5136 (origin
5137 (method git-fetch)
5138 (uri (git-reference
5139 (url "https://github.com/fukamachi/lack.git")
5140 (commit commit)))
5141 (sha256
5142 (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
5143 (build-system asdf-build-system/sbcl)
5144 (arguments
5145 '(#:test-asd-file "t-lack.asd"
5146 ;; XXX: Component :CLACK not found
5147 #:tests? #f))
5148 (native-inputs
5149 `(("prove-asdf" ,sbcl-prove-asdf)))
5150 (inputs
5151 `(("sbcl-lack-component" ,sbcl-lack-component)
5152 ("sbcl-lack-util" ,sbcl-lack-util)))
5153 (home-page "https://github.com/fukamachi/lack")
5154 (synopsis "Lack, the core of Clack")
5155 (description
5156 "Lack is a Common Lisp library which allows web applications to be
5157constructed of modular components. It was originally a part of Clack, however
5158it's going to be rewritten as an individual project since Clack v2 with
5159performance and simplicity in mind.")
5160 (license license:llgpl))))
5161
5162(define-public cl-lack
5163 (sbcl-package->cl-source-package sbcl-lack))
7e2404a5
KCB
5164
5165(define-public sbcl-ningle
5166 (let ((commit "50bd4f09b5a03a7249bd4d78265d6451563b25ad")
5167 (revision "1"))
5168 (package
5169 (name "sbcl-ningle")
5170 (version (git-version "0.3.0" revision commit))
5171 (source
5172 (origin
5173 (method git-fetch)
5174 (uri (git-reference
5175 (url "https://github.com/fukamachi/ningle.git")
5176 (commit commit)))
5177 (file-name (git-file-name name version))
5178 (sha256
5179 (base32 "1bsl8cnxhacb8p92z9n89vhk1ikmij5zavk0m2zvmj7iqm79jzgw"))))
5180 (build-system asdf-build-system/sbcl)
5181 (arguments
5182 ;; TODO: pull in clack-test
5183 '(#:tests? #f
5184 #:phases
5185 (modify-phases %standard-phases
5186 (delete 'cleanup-files)
5187 (delete 'cleanup)
5188 (add-before 'cleanup 'combine-fasls
5189 (lambda* (#:key outputs #:allow-other-keys)
5190 (let* ((out (assoc-ref outputs "out"))
5191 (lib (string-append out "/lib/sbcl"))
5192 (ningle-path (string-append lib "/ningle"))
5193 (fasl-files (find-files out "\\.fasl$")))
5194 (mkdir-p ningle-path)
5195 (let ((fasl-path (lambda (name)
5196 (string-append ningle-path
5197 "/"
5198 (basename name)
5199 "--system.fasl"))))
5200 (for-each (lambda (file)
5201 (rename-file file
5202 (fasl-path
5203 (basename file ".fasl"))))
5204 fasl-files))
5205 fasl-files)
5206 #t)))))
5207 (native-inputs
5208 `(("sbcl-prove-asdf" ,sbcl-prove-asdf)
5209 ("sbcl-prove" ,sbcl-prove)))
5210 (inputs
5211 `(("sbcl-cl-syntax" ,sbcl-cl-syntax)
5212 ("sbcl-cl-syntax-annot" ,sbcl-cl-syntax-annot)
5213 ("sbcl-myway" ,sbcl-myway)
5214 ("sbcl-lack-request" ,sbcl-lack-request)
5215 ("sbcl-lack-response" ,sbcl-lack-response)
5216 ("sbcl-lack-component" ,sbcl-lack-component)
5217 ("sbcl-alexandria" ,sbcl-alexandria)
5218 ("sbcl-babel" ,sbcl-babel)))
5219 (home-page "http://8arrow.org/ningle/")
5220 (synopsis "Super micro framework for Common Lisp")
5221 (description
5222 "Ningle is a lightweight web application framework for Common Lisp.")
5223 (license license:llgpl))))
5224
5225(define-public cl-ningle
5226 (sbcl-package->cl-source-package sbcl-ningle))
d3715a30
KCB
5227
5228(define-public sbcl-clack
5229 (let ((commit "e3e032843bb1220ab96263c411aa7f2feb4746e0")
5230 (revision "1"))
5231 (package
5232 (name "sbcl-clack")
5233 (version (git-version "2.0.0" revision commit))
5234 (source
5235 (origin
5236 (method git-fetch)
5237 (uri (git-reference
5238 (url "https://github.com/fukamachi/clack.git")
5239 (commit commit)))
5240 (file-name (git-file-name name version))
5241 (sha256
5242 (base32 "1ymzs6qyrwhlj6cgqsnpyn6g5cbp7a3s1vgxwna20y2q7y4iacy0"))))
5243 (build-system asdf-build-system/sbcl)
5244 (inputs
5245 `(("sbcl-lack" ,sbcl-lack)
5246 ("sbcl-lack-middleware-backtrace" ,sbcl-lack-middleware-backtrace)
5247 ("sbcl-bordeaux-threads" ,sbcl-bordeaux-threads)))
5248 (home-page "https://github.com/fukamachi/clack")
5249 (synopsis "Web Application Environment for Common Lisp")
5250 (description
5251 "Clack is a web application environment for Common Lisp inspired by
5252Python's WSGI and Ruby's Rack.")
5253 (license license:llgpl))))
5254
5255(define-public cl-clack
5256 (sbcl-package->cl-source-package sbcl-clack))
b8b1e4d9 5257
5258(define-public sbcl-log4cl
5259 (let ((commit "611e094458504b938d49de904eab141285328c7c")
5260 (revision "1"))
5261 (package
5262 (name "sbcl-log4cl")
5263 (build-system asdf-build-system/sbcl)
5264 (version "1.1.2")
5265 (source
5266 (origin
5267 (method git-fetch)
5268 (uri (git-reference
5269 (url "https://github.com/sharplispers/log4cl")
5270 (commit commit)))
5271 (file-name (git-file-name name version))
5272 (sha256
5273 (base32
5274 "08jly0s0g26b56hhpfizxsb4j0yvbh946sd205gr42dkzv8l7dsc"))))
5275 ;; FIXME: tests require stefil, sbcl-hu.dwim.stefil wont work
5276 (arguments
5277 `(#:tests? #f))
5278 (inputs `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
5279 (synopsis "Common Lisp logging framework, modeled after Log4J")
5280 (home-page "https://github.com/7max/log4cl")
5281 (description "This is a Common Lisp logging framework that can log at
5282various levels and mix text with expressions.")
5283 (license license:asl2.0))))
5284
5285(define-public cl-log4cl
5286 (sbcl-package->cl-source-package sbcl-log4cl))
5287
5288(define-public ecl-log4cl
5289 (sbcl-package->ecl-package sbcl-log4cl))
bdd30bf0
PN
5290
5291(define-public sbcl-find-port
5292 (let ((commit "00c96a25af93a0f8681d34ec548861f2d7485478")
5293 (revision "1"))
5294 (package
5295 (name "sbcl-find-port")
5296 (build-system asdf-build-system/sbcl)
5297 (version "0.1")
5298 (home-page "https://github.com/eudoxia0/find-port")
5299 (source
5300 (origin
5301 (method git-fetch)
5302 (uri (git-reference
5303 (url home-page)
5304 (commit commit)))
5305 (file-name (git-file-name name version))
5306 (sha256
5307 (base32
5308 "0d6dzbb45jh0rx90wgs6v020k2xa87mvzas3mvfzvivjvqqlpryq"))))
5309 (native-inputs
5310 `(("fiveam" ,sbcl-fiveam)))
5311 (inputs
5312 `(("sbcl-usocket" ,sbcl-usocket)))
5313 (synopsis "Find open ports programmatically in Common Lisp")
5314 (description "This is a small Common Lisp library that finds an open
5315port within a range.")
5316 (license license:expat))))
5317
5318(define-public cl-find-port
5319 (sbcl-package->cl-source-package sbcl-find-port))
5320
5321(define-public ecl-find-port
5322 (sbcl-package->ecl-package sbcl-find-port))
a0c3a2e3
GLV
5323
5324(define-public txr
5325 (package
5326 (name "txr")
66d14663 5327 (version "223")
a0c3a2e3
GLV
5328 (source
5329 (origin
5330 (method url-fetch)
5331 (uri (string-append "http://www.kylheku.com/cgit/txr/snapshot/txr-"
5332 version
5333 ".tar.bz2"))
5334 (patches (search-patches "txr-shell.patch"))
5335 (sha256
5336 (base32
66d14663 5337 "0109q8idqggba3kx58dpm5ccfpdrki68npkcxm18p5ga24611fcv"))))
a0c3a2e3
GLV
5338 (build-system gnu-build-system)
5339 (arguments
5340 '(#:configure-flags '("cc=gcc")
5341 #:phases (modify-phases %standard-phases
5342 (add-after 'configure 'fix-tests
5343 (lambda _
5344 (substitute* "tests/017/realpath.tl"
5345 (("/usr/bin") "/"))
5346 (substitute* "tests/017/realpath.expected"
5347 (("/usr/bin") "/"))
5348 #t))
5349 (replace 'check
5350 (lambda _
66d14663 5351 (invoke "make" "tests"))))))
a0c3a2e3
GLV
5352 (native-inputs
5353 `(("bison" ,bison)
5354 ("flex" ,flex)))
5355 (inputs
5356 `(("libffi" ,libffi)))
5357 (synopsis "General-purpose, multi-paradigm programming language")
5358 (description
5359 "TXR is a general-purpose, multi-paradigm programming language. It
5360comprises two languages integrated into a single tool: a text scanning and
5361extraction language referred to as the TXR Pattern Language (sometimes just
5362\"TXR\"), and a general-purpose dialect of Lisp called TXR Lisp. TXR can be
5363used for everything from \"one liner\" data transformation tasks at the
5364command line, to data scanning and extracting scripts, to full application
5365development in a wide-range of areas.")
5366 (home-page "https://nongnu.org/txr/")
5367 (license license:bsd-2)))
9f8311ad
KCB
5368
5369(define-public sbcl-clunit
5370 (let ((commit "6f6d72873f0e1207f037470105969384f8380628")
5371 (revision "1"))
5372 (package
5373 (name "sbcl-clunit")
5374 (version (git-version "0.2.3" revision commit))
5375 (source
5376 (origin
5377 (method git-fetch)
5378 (uri (git-reference
5379 (url "https://github.com/tgutu/clunit.git")
5380 (commit commit)))
5381 (file-name (git-file-name name version))
5382 (sha256
5383 (base32
5384 "1idf2xnqzlhi8rbrqmzpmb3i1l6pbdzhhajkmhwbp6qjkmxa4h85"))))
5385 (build-system asdf-build-system/sbcl)
5386 (synopsis "CLUnit is a Common Lisp unit testing framework")
5387 (description
5388 "CLUnit is a Common Lisp unit testing framework. It is designed
5389to be easy to use so that you can quickly start testing. CLUnit
5390provides a rich set of features aimed at improving your unit testing
5391experience.")
5392 (home-page "http://tgutu.github.io/clunit/")
5393 ;; MIT License
5394 (license license:expat))))
5395
5396(define-public cl-clunit
5397 (sbcl-package->cl-source-package sbcl-clunit))
5398
5399(define-public ecl-clunit
5400 (sbcl-package->ecl-package sbcl-clunit))
20b96ced
KCB
5401
5402(define-public sbcl-py4cl
5403 (let ((commit "4c8a2b0814fd311f978964f825ce012290f60136")
5404 (revision "1"))
5405 (package
5406 (name "sbcl-py4cl")
5407 (version (git-version "0.0.0" revision commit))
5408 (source
5409 (origin
5410 (method git-fetch)
5411 (uri (git-reference
5412 (url "https://github.com/bendudson/py4cl.git")
5413 (commit commit)))
5414 (file-name (git-file-name name version))
5415 (sha256
5416 (base32
5417 "15mk7qdqjkj56gdnbyrdyz6r7m1h26ldvn6ch96pmvg5vmr1m45r"))
5418 (modules '((guix build utils)))))
5419 (build-system asdf-build-system/sbcl)
5420 (native-inputs
5421 `(("sbcl-clunit" ,sbcl-clunit)))
5422 (inputs
5423 `(("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
5424 (propagated-inputs
5425 ;; This package doesn't do anything without python available
5426 `(("python" ,python)
5427 ;; For multi-dimensional array support
5428 ("python-numpy" ,python-numpy)))
5429 (arguments
5430 '(#:phases
5431 (modify-phases %standard-phases
5432 (add-after 'unpack 'replace-*base-directory*-var
5433 (lambda* (#:key outputs #:allow-other-keys)
5434 ;; In the ASD, the author makes an attempt to
5435 ;; programatically determine the location of the
5436 ;; source-code so lisp can call into "py4cl.py". We can
5437 ;; hard-code this since we know where this file will
5438 ;; reside.
5439 (substitute* "src/callpython.lisp"
5440 (("py4cl/config:\\*base-directory\\*")
5441 (string-append
5442 "\""
5443 (assoc-ref outputs "out")
5444 "/share/common-lisp/sbcl-source/py4cl/"
5445 "\""))))))))
5446 (synopsis "Call python from Common Lisp")
5447 (description
5448 "Py4CL is a bridge between Common Lisp and Python, which enables Common
5449Lisp to interact with Python code. It uses streams to communicate with a
5450separate python process, the approach taken by cl4py. This is different to
5451the CFFI approach used by burgled-batteries, but has the same goal.")
5452 (home-page "https://github.com/bendudson/py4cl")
5453 ;; MIT License
5454 (license license:expat))))
5455
5456(define-public cl-py4cl
5457 (sbcl-package->cl-source-package sbcl-py4cl))
5458
5459(define-public ecl-py4cl
5460 (sbcl-package->ecl-package sbcl-py4cl))
ab84ea9e
KCB
5461
5462(define-public sbcl-parse-declarations
5463 (package
5464 (name "sbcl-parse-declarations")
5465 (version "1.0.0")
5466 (source
5467 (origin
5468 (method url-fetch)
5469 (uri (string-append
5470 "http://beta.quicklisp.org/archive/parse-declarations/"
5471 "2010-10-06/parse-declarations-20101006-darcs.tgz"))
5472 (sha256
5473 (base32
5474 "0r85b0jfacd28kr65kw9c13dx4i6id1dpmby68zjy63mqbnyawrd"))))
5475 (build-system asdf-build-system/sbcl)
5476 (arguments
5477 `(#:asd-file "parse-declarations-1.0.asd"
5478 #:asd-system-name "parse-declarations-1.0"))
5479 (home-page "https://common-lisp.net/project/parse-declarations/")
5480 (synopsis "Parse, filter, and build declarations")
5481 (description
5482 "Parse-Declarations is a Common Lisp library to help writing
5483macros which establish bindings. To be semantically correct, such
5484macros must take user declarations into account, as these may affect
5485the bindings they establish. Yet the ANSI standard of Common Lisp does
5486not provide any operators to work with declarations in a convenient,
5487high-level way. This library provides such operators.")
5488 ;; MIT License
5489 (license license:expat)))
5490
5491(define-public cl-parse-declarations
5492 (sbcl-package->cl-source-package sbcl-parse-declarations))
5493
5494(define-public ecl-parse-declarations
5495 (sbcl-package->ecl-package sbcl-parse-declarations))
2ddc55c6
KCB
5496
5497(define-public sbcl-cl-quickcheck
5498 (let ((commit "807b2792a30c883a2fbecea8e7db355b50ba662f")
5499 (revision "1"))
5500 (package
5501 (name "sbcl-cl-quickcheck")
5502 (version (git-version "0.0.4" revision commit))
5503 (source
5504 (origin
5505 (method git-fetch)
5506 (uri (git-reference
5507 (url "https://github.com/mcandre/cl-quickcheck.git")
5508 (commit commit)))
5509 (file-name (git-file-name name version))
5510 (sha256
5511 (base32
5512 "165lhypq5xkcys6hvzb3jq7ywnmqvzaflda29qk2cbs3ggas4767"))))
5513 (build-system asdf-build-system/sbcl)
5514 (synopsis
5515 "Common Lisp port of the QuickCheck unit test framework")
5516 (description
5517 "Common Lisp port of the QuickCheck unit test framework")
5518 (home-page "https://github.com/mcandre/cl-quickcheck")
5519 ;; MIT
5520 (license license:expat))))
5521
5522(define-public cl-cl-quickcheck
5523 (sbcl-package->cl-source-package sbcl-cl-quickcheck))
5524
5525(define-public ecl-cl-quickcheck
5526 (sbcl-package->ecl-package sbcl-cl-quickcheck))
245b19ca
KCB
5527
5528(define-public sbcl-burgled-batteries3
5529 (let ((commit "9c0f6667e1a71ddf77e21793a0bea524710fef6e")
5530 (revision "1"))
5531 (package
5532 (name "sbcl-burgled-batteries3")
5533 (version (git-version "0.0.0" revision commit))
5534 (source
5535 (origin
5536 (method git-fetch)
5537 (uri (git-reference
5538 (url "https://github.com/snmsts/burgled-batteries3.git")
5539 (commit commit)))
5540 (file-name (git-file-name name version))
5541 (sha256
5542 (base32
5543 "0b726kz2xxcg5l930gz035rsdvhxrzmp05iwfwympnb4z4ammicb"))))
5544 (build-system asdf-build-system/sbcl)
5545 (arguments
5546 '(#:tests? #f
5547 #:phases
5548 (modify-phases %standard-phases
5549 (add-after 'unpack 'set-*cpython-include-dir*-var
5550 (lambda* (#:key inputs #:allow-other-keys)
5551 (substitute* "grovel-include-dir.lisp"
5552 (("\\(defparameter \\*cpython-include-dir\\* \\(detect-python\\)\\)")
5553 (string-append
5554 "(defparameter *cpython-include-dir* \""
5555 (assoc-ref inputs "python")
5556 "/include/python3.7m"
5557 "\")")))
5558 (substitute* "ffi-interface.lisp"
5559 (("\\*cpython-lib\\*")
5560 (format #f "'(\"~a/lib/libpython3.so\")"
5561 (assoc-ref inputs "python"))))
5562 #t)))))
5563 (native-inputs
5564 `(("python" ,python)
5565 ("sbcl-cl-fad" ,sbcl-cl-fad)
5566 ("sbcl-lift" ,sbcl-lift)
5567 ("sbcl-cl-quickcheck" ,sbcl-cl-quickcheck)))
5568 (inputs
5569 `(("sbcl-cffi" ,sbcl-cffi)
5570 ("sbcl-cffi-grovel" ,sbcl-cffi-grovel)
5571 ("sbcl-alexandria" , sbcl-alexandria)
5572 ("sbcl-parse-declarations-1.0" ,sbcl-parse-declarations)
5573 ("sbcl-trivial-garbage" ,sbcl-trivial-garbage)))
5574 (synopsis "Bridge between Python and Lisp (FFI bindings, etc.)")
5575 (description
5576 "This package provides a shim between Python3 (specifically, the
5577CPython implementation of Python) and Common Lisp.")
5578 (home-page "https://github.com/snmsts/burgled-batteries3")
5579 ;; MIT
5580 (license license:expat))))
5581
5582(define-public cl-burgled-batteries3
5583 (sbcl-package->cl-source-package sbcl-burgled-batteries3))
5584
5585(define-public ecl-burgled-batteries3
5586 (sbcl-package->ecl-package sbcl-burgled-batteries3))
98b9409c
KCB
5587
5588(define-public sbcl-metabang-bind
5589 (let ((commit "c93b7f7e1c18c954c2283efd6a7fdab36746ab5e")
5590 (revision "1"))
5591 (package
5592 (name "sbcl-metabang-bind")
5593 (version (git-version "0.8.0" revision commit))
5594 (source
5595 (origin
5596 (method git-fetch)
5597 (uri (git-reference
5598 (url "https://github.com/gwkkwg/metabang-bind.git")
5599 (commit commit)))
5600 (file-name (git-file-name name version))
5601 (sha256
5602 (base32
5603 "0hd0kr91795v77akpbcyqiss9p0p7ypa9dznrllincnmgvsxlmf0"))))
5604 (build-system asdf-build-system/sbcl)
5605 (native-inputs
5606 `(("sbcl-lift" ,sbcl-lift)))
5607 (synopsis "Macro that generalizes @code{multiple-value-bind} etc.")
5608 (description
5609 "Bind extends the idea of of let and destructing to provide a uniform
5610syntax for all your accessor needs. It combines @code{let},
5611@code{destructuring-bind}, @code{with-slots}, @code{with-accessors}, structure
5612editing, property or association-lists, and @code{multiple-value-bind} and a
5613whole lot more into a single form.")
5614 (home-page "https://common-lisp.net/project/metabang-bind/")
5615 ;; MIT License
5616 (license license:expat))))
5617
5618(define-public cl-metabang-bind
5619 (sbcl-package->cl-source-package sbcl-metabang-bind))
5620
5621(define-public ecl-metabang-bind
5622 (sbcl-package->ecl-package sbcl-metabang-bind))
31263ec2
KCB
5623
5624(define-public sbcl-fare-utils
5625 (let ((commit "66e9c6f1499140bc00ccc22febf2aa528cbb5724")
5626 (revision "1"))
5627 (package
5628 (name "sbcl-fare-utils")
5629 (version (git-version "1.0.0.5" revision commit))
5630 (source
5631 (origin
5632 (method git-fetch)
5633 (uri
5634 (git-reference
5635 (url
5636 "https://gitlab.common-lisp.net/frideau/fare-utils.git")
5637 (commit commit)))
5638 (file-name (git-file-name name version))
5639 (sha256
5640 (base32
5641 "01wsr1aap3jdzhn4hrqjbhsjx6qci9dbd3gh4gayv1p49rbg8aqr"))))
5642 (build-system asdf-build-system/sbcl)
5643 (arguments
5644 `(#:test-asd-file "test/fare-utils-test.asd"))
5645 (native-inputs
5646 `(("sbcl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
5647 (synopsis "Collection of utilities and data structures")
5648 (description
5649 "fare-utils is a small collection of utilities. It contains a lot of
5650basic everyday functions and macros.")
5651 (home-page "https://gitlab.common-lisp.net/frideau/fare-utils")
5652 ;; MIT License
5653 (license license:expat))))
5654
5655(define-public cl-fare-utils
5656 (sbcl-package->cl-source-package sbcl-fare-utils))
5657
5658(define-public ecl-fare-utils
5659 (sbcl-package->ecl-package sbcl-fare-utils))
d2a93264 5660
c5ab5320
KCB
5661(define-public sbcl-trivial-utf-8
5662 (let ((commit "4d427cfbb1c452436a0efb71c3205c9da67f718f")
5663 (revision "1"))
5664 (package
5665 (name "sbcl-trivial-utf-8")
5666 (version (git-version "0.0.0" revision commit))
5667 (source
5668 (origin
5669 (method git-fetch)
5670 (uri
5671 (git-reference
5672 (url (string-append "https://gitlab.common-lisp.net/"
5673 "trivial-utf-8/trivial-utf-8.git"))
5674 (commit commit)))
5675 (file-name (git-file-name name version))
5676 (sha256
5677 (base32
5678 "1jz27gz8gvqdmvp3k9bxschs6d5b3qgk94qp2bj6nv1d0jc3m1l1"))))
5679 (arguments
5680 ;; Guix incorrectly assumes the "8" is part of the version
5681 ;; number and lobs it off.
5682 `(#:asd-file "trivial-utf-8.asd"
5683 #:asd-system-name "trivial-utf-8"))
5684 (build-system asdf-build-system/sbcl)
5685 (synopsis "UTF-8 input/output library")
5686 (description
5687 "The Babel library solves a similar problem while understanding more
5688encodings. Trivial UTF-8 was written before Babel existed, but for new
5689projects you might be better off going with Babel. The one plus that Trivial
5690UTF-8 has is that it doesn't depend on any other libraries.")
5691 (home-page "https://common-lisp.net/project/trivial-utf-8/")
5692 (license license:bsd-3))))
5693
5694(define-public cl-trivial-utf-8
5695 (sbcl-package->cl-source-package sbcl-trivial-utf-8))
5696
5697(define-public ecl-trivial-utf-8
5698 (sbcl-package->ecl-package sbcl-trivial-utf-8))
5699
d2a93264
PN
5700(define-public sbcl-idna
5701 (package
5702 (name "sbcl-idna")
5703 (build-system asdf-build-system/sbcl)
5704 (version "0.2.2")
5705 (home-page "https://github.com/antifuchs/idna")
5706 (source
5707 (origin
5708 (method git-fetch)
5709 (uri (git-reference
5710 (url home-page)
5711 (commit version)))
5712 (file-name (git-file-name name version))
5713 (sha256
5714 (base32
5715 "00nbr3mffxhlq14gg9d16pa6691s4qh35inyw76v906s77khm5a2"))))
5716 (inputs
5717 `(("split-sequence" ,sbcl-split-sequence)))
5718 (synopsis "IDNA string encoding and decoding routines for Common Lisp")
5719 (description "This Common Lisp library provides string encoding and
5720decoding routines for IDNA, the International Domain Names in Applications.")
5721 (license license:expat)))
5722
5723(define-public cl-idna
5724 (sbcl-package->cl-source-package sbcl-idna))
5725
5726(define-public ecl-idna
5727 (sbcl-package->ecl-package sbcl-idna))
ccba380a
PN
5728
5729(define-public sbcl-swap-bytes
5730 (package
5731 (name "sbcl-swap-bytes")
5732 (build-system asdf-build-system/sbcl)
5733 (version "1.1")
5734 (home-page "https://github.com/sionescu/swap-bytes")
5735 (source
5736 (origin
5737 (method git-fetch)
5738 (uri (git-reference
5739 (url home-page)
5740 (commit (string-append "v" version))))
5741 (file-name (git-file-name name version))
5742 (sha256
5743 (base32
5744 "1qysbv0jngdfkv53y874qjhcxc4qi8ixaqq6j8bzxh5z0931wv55"))))
5745 (inputs
5746 `(("trivial-features" ,sbcl-trivial-features)))
5747 (native-inputs
5748 `(("fiveam" ,sbcl-fiveam)))
5749 (arguments
5750 ;; TODO: Tests fail, why?
5751 `(#:tests? #f))
5752 (synopsis "Efficient endianness conversion for Common Lisp")
5753 (description "This Common Lisp library provides optimized byte-swapping
5754primitives. The library can change endianness of unsigned integers of length
57551/2/4/8. Very useful in implementing various network protocols and file
5756formats.")
5757 (license license:expat)))
5758
5759(define-public cl-swap-bytes
5760 (sbcl-package->cl-source-package sbcl-swap-bytes))
5761
5762(define-public ecl-swap-bytes
5763 (sbcl-package->ecl-package sbcl-swap-bytes))
69c68b47
PN
5764
5765(define-public sbcl-iolib.asdf
5766 ;; Latest release is from June 2017.
5767 (let ((commit "81e20614c0d27f9605bf9766214e236fd31b99b4")
5768 (revision "1"))
5769 (package
5770 (name "sbcl-iolib.asdf")
5771 (build-system asdf-build-system/sbcl)
5772 (version "0.8.3")
5773 (home-page "https://github.com/sionescu/iolib")
5774 (source
5775 (origin
5776 (method git-fetch)
5777 (uri (git-reference
5778 (url home-page)
5779 (commit commit)))
5780 (file-name (git-file-name name version))
5781 (sha256
5782 (base32
5783 "1j81r0wm7nfbwl991f26s4npcy7kybzybd3m47rbxy31h0cfcmdm"))))
5784 (inputs
5785 `(("alexandria" ,sbcl-alexandria)))
5786 (arguments
5787 '(#:asd-file "iolib.asdf.asd"))
5788 (synopsis "ASDF component classes for IOLib, a Common Lisp I/O library")
5789 (description "IOlib is to be a better and more modern I/O library than
5790the standard Common Lisp library. It contains a socket library, a DNS
5791resolver, an I/O multiplexer(which supports @code{select(2)}, @code{epoll(4)}
5792and @code{kqueue(2)}), a pathname library and file-system utilities.")
5793 (license license:expat))))
63158bf6
PN
5794
5795(define-public sbcl-iolib.conf
5796 (package
5797 (inherit sbcl-iolib.asdf)
5798 (name "sbcl-iolib.conf")
5799 (inputs
5800 `(("iolib.asdf" ,sbcl-iolib.asdf)))
5801 (arguments
5802 '(#:asd-file "iolib.conf.asd"))
5803 (synopsis "Compile-time configuration for IOLib, a Common Lisp I/O library")))
213937fb
PN
5804
5805(define-public sbcl-iolib.common-lisp
5806 (package
5807 (inherit sbcl-iolib.asdf)
5808 (name "sbcl-iolib.common-lisp")
5809 (inputs
5810 `(("iolib.asdf" ,sbcl-iolib.asdf)
5811 ("iolib.conf" ,sbcl-iolib.conf)))
5812 (arguments
5813 '(#:asd-file "iolib.common-lisp.asd"))
5814 (synopsis "Slightly modified Common Lisp for IOLib, a Common Lisp I/O library")))
5dffca33
PN
5815
5816(define-public sbcl-iolib.base
5817 (package
5818 (inherit sbcl-iolib.asdf)
5819 (name "sbcl-iolib.base")
5820 (inputs
5821 `(("iolib.asdf" ,sbcl-iolib.asdf)
5822 ("iolib.conf" ,sbcl-iolib.conf)
5823 ("iolib.common-lisp" ,sbcl-iolib.common-lisp)
5824 ("split-sequence" ,sbcl-split-sequence)))
5825 (arguments
5826 '(#:asd-file "iolib.base.asd"))
5827 (synopsis "Base package for IOLib, a Common Lisp I/O library")))
216dd6f6
PN
5828
5829(define-public sbcl-iolib.grovel
5830 (package
5831 (inherit sbcl-iolib.asdf)
5832 (name "sbcl-iolib.grovel")
5833 (inputs
5834 `(("iolib.asdf" ,sbcl-iolib.asdf)
5835 ("iolib.conf" ,sbcl-iolib.conf)
5836 ("iolib.base", sbcl-iolib.base)
5837 ("cffi", sbcl-cffi)))
5838 (arguments
5839 '(#:asd-file "iolib.grovel.asd"
5840 #:phases
5841 (modify-phases %standard-phases
5842 (add-after 'install 'install-header
5843 (lambda* (#:key outputs #:allow-other-keys)
5844 ;; This header is required by sbcl-iolib.
5845 (install-file "src/grovel/grovel-common.h"
5846 (string-append (assoc-ref outputs "out")
5847 "/lib/sbcl"))
5848 #t)))))
5849 (synopsis "CFFI Groveller for IOLib, a Common Lisp I/O library")))
ef656e11
PN
5850
5851(define-public sbcl-iolib
5852 (package
5853 (inherit sbcl-iolib.asdf)
5854 (name "sbcl-iolib")
5855 (inputs
5856 `(("iolib.asdf" ,sbcl-iolib.asdf)
5857 ("iolib.conf" ,sbcl-iolib.conf)
5858 ("iolib.grovel" ,sbcl-iolib.grovel)
1d8d87dd
PN
5859 ("iolib.base" ,sbcl-iolib.base)
5860 ("bordeaux-threads" ,sbcl-bordeaux-threads)
5861 ("idna" ,sbcl-idna)
5862 ("swap-bytes" ,sbcl-swap-bytes)
5863 ("libfixposix" ,libfixposix)
5864 ("cffi" ,sbcl-cffi)))
ef656e11
PN
5865 (native-inputs
5866 `(("fiveam" ,sbcl-fiveam)))
5867 (arguments
5868 '(#:asd-file "iolib.asd"
5869 #:asd-system-name "iolib"
5870 #:test-asd-file "iolib.tests.asd"
5871 #:phases
5872 (modify-phases %standard-phases
5873 (add-after 'unpack 'fix-paths
5874 (lambda* (#:key inputs #:allow-other-keys)
5875 (substitute* "src/syscalls/ffi-functions-unix.lisp"
5876 (("\\(:default \"libfixposix\"\\)")
5877 (string-append
5878 "(:default \""
5879 (assoc-ref inputs "libfixposix") "/lib/libfixposix\")")))
5880 ;; Socket tests need Internet access, disable them.
5881 (substitute* "iolib.tests.asd"
5882 (("\\(:file \"sockets\" :depends-on \\(\"pkgdcl\" \"defsuites\"\\)\\)")
5883 "")))))))
5884 (synopsis "Common Lisp I/O library")))
a3531660
PN
5885
5886(define sbcl-iolib+multiplex
5887 (package
5888 (inherit sbcl-iolib)
5889 (name "sbcl-iolib+multiplex")
5890 (arguments
5891 (substitute-keyword-arguments (package-arguments sbcl-iolib)
5892 ((#:asd-system-name _) "iolib/multiplex")))))
5b686054
PN
5893
5894(define sbcl-iolib+syscalls
5895 (package
5896 (inherit sbcl-iolib)
5897 (name "sbcl-iolib+syscalls")
5898 (arguments
5899 (substitute-keyword-arguments (package-arguments sbcl-iolib)
5900 ((#:asd-system-name _) "iolib/syscalls")))))
28f3e3b1
PN
5901
5902(define sbcl-iolib+streams
5903 (package
5904 (inherit sbcl-iolib)
5905 (name "sbcl-iolib+streams")
5906 (arguments
5907 (substitute-keyword-arguments (package-arguments sbcl-iolib)
5908 ((#:asd-system-name _) "iolib/streams")))))
9f641dd7
PN
5909
5910(define sbcl-iolib+sockets
5911 (package
5912 (inherit sbcl-iolib)
5913 (name "sbcl-iolib+sockets")
5914 (arguments
5915 (substitute-keyword-arguments (package-arguments sbcl-iolib)
5916 ((#:asd-system-name _) "iolib/sockets")))))
6ac69aae
PN
5917
5918(define-public sbcl-ieee-floats
5919 (let ((commit "566b51a005e81ff618554b9b2f0b795d3b29398d")
5920 (revision "1"))
5921 (package
5922 (name "sbcl-ieee-floats")
5923 (build-system asdf-build-system/sbcl)
5924 (version (git-version "20170924" revision commit))
5925 (home-page "https://github.com/marijnh/ieee-floats/")
5926 (source
5927 (origin
5928 (method git-fetch)
5929 (uri (git-reference
5930 (url home-page)
5931 (commit commit)))
5932 (file-name (git-file-name name version))
5933 (sha256
5934 (base32
5935 "1xyj49j9x3lc84cv3dhbf9ja34ywjk1c46dklx425fxw9mkwm83m"))))
5936 (native-inputs
5937 `(("fiveam" ,sbcl-fiveam)))
5938 (synopsis "IEEE 754 binary representation for floats in Common Lisp")
5939 (description "This is a Common Lisp library that allows to convert
5940floating point values to IEEE 754 binary representation.")
5941 (license license:bsd-3))))
63015205
PN
5942
5943(define sbcl-closure-common
5944 (let ((commit "e3c5f5f454b72b01b89115e581c3c52a7e201e5c")
5945 (revision "1"))
5946 (package
5947 (name "sbcl-closure-common")
5948 (build-system asdf-build-system/sbcl)
5949 (version (git-version "20101006" revision commit))
c51db1dd 5950 (home-page "https://common-lisp.net/project/cxml/")
63015205
PN
5951 (source
5952 (origin
5953 (method git-fetch)
5954 (uri (git-reference
c51db1dd 5955 (url "https://github.com/sharplispers/closure-common")
63015205
PN
5956 (commit commit)))
5957 (file-name (git-file-name name version))
5958 (sha256
5959 (base32
5960 "0k5r2qxn122pxi301ijir3nayi9sg4d7yiy276l36qmzwhp4mg5n"))))
5961 (inputs
5962 `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)
5963 ("babel" ,sbcl-babel)))
5964 (synopsis "Support Common Lisp library for CXML")
5965 (description "Closure-common is an internal helper library. The name
5966Closure is a reference to the web browser it was originally written for.")
5967 ;; TODO: License?
5968 (license #f))))
167fec29 5969
075e3220
PN
5970(define-public sbcl-cxml+xml
5971 (let ((commit "00b22bf4c4cf11c993d5866fae284f95ab18e6bf")
5972 (revision "1"))
5973 (package
5974 (name "sbcl-cxml+xml")
5975 (build-system asdf-build-system/sbcl)
5976 (version (git-version "0.0.0" revision commit))
5977 (home-page "https://common-lisp.net/project/cxml/")
5978 (source
5979 (origin
5980 (method git-fetch)
5981 (uri (git-reference
5982 (url "https://github.com/sharplispers/cxml")
5983 (commit commit)))
5984 (file-name (git-file-name name version))
5985 (sha256
5986 (base32
5987 "13kif7rf3gqdycsk9zq0d7y0g9y81krkl0z87k0p2fkbjfgrph37"))))
5988 (inputs
5989 `(("closure-common" ,sbcl-closure-common)
5990 ("puri" ,sbcl-puri)
5991 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
5992 (arguments
5993 `(#:asd-file "cxml.asd"
5994 #:asd-system-name "cxml/xml"))
5995 (synopsis "Common Lisp XML parser")
5996 (description "CXML implements a namespace-aware, validating XML 1.0
5997parser as well as the DOM Level 2 Core interfaces. Two parser interfaces are
5998offered, one SAX-like, the other similar to StAX.")
5999 (license license:llgpl))))
6000
53270eb9
PN
6001(define sbcl-cxml+dom
6002 (package
6003 (inherit sbcl-cxml+xml)
6004 (name "sbcl-cxml+dom")
6005 (inputs
6006 `(("closure-common" ,sbcl-closure-common)
6007 ("puri" ,sbcl-puri)
6008 ("cxml+xml" ,sbcl-cxml+xml)))
6009 (arguments
6010 `(#:asd-file "cxml.asd"
6011 #:asd-system-name "cxml/dom"))))
6012
d22b47aa
PN
6013(define sbcl-cxml+klacks
6014 (package
6015 (inherit sbcl-cxml+xml)
6016 (name "sbcl-cxml+klacks")
6017 (inputs
6018 `(("closure-common" ,sbcl-closure-common)
6019 ("puri" ,sbcl-puri)
6020 ("cxml+xml" ,sbcl-cxml+xml)))
6021 (arguments
6022 `(#:asd-file "cxml.asd"
6023 #:asd-system-name "cxml/klacks"))))
6024
9a08c0a5
PN
6025(define sbcl-cxml+test
6026 (package
6027 (inherit sbcl-cxml+xml)
6028 (name "sbcl-cxml+test")
6029 (inputs
6030 `(("closure-common" ,sbcl-closure-common)
6031 ("puri" ,sbcl-puri)
6032 ("cxml+xml" ,sbcl-cxml+xml)))
6033 (arguments
6034 `(#:asd-file "cxml.asd"
6035 #:asd-system-name "cxml/test"))))
6036
4f541387
PN
6037(define-public sbcl-cxml
6038 (package
6039 (inherit sbcl-cxml+xml)
6040 (name "sbcl-cxml")
6041 (inputs
6042 `(("closure-common" ,sbcl-closure-common)
6043 ("puri" ,sbcl-puri)
6044 ("trivial-gray-streams" ,sbcl-trivial-gray-streams)
6045 ("cxml+dom" ,sbcl-cxml+dom)
6046 ("cxml+klacks" ,sbcl-cxml+klacks)
6047 ("cxml+test" ,sbcl-cxml+test)))
6048 (arguments
6049 `(#:asd-file "cxml.asd"
6050 #:asd-system-name "cxml"
6051 #:phases
6052 (modify-phases %standard-phases
6053 (add-after 'build 'install-dtd
6054 (lambda* (#:key outputs #:allow-other-keys)
6055 (install-file "catalog.dtd"
6056 (string-append
6057 (assoc-ref outputs "out")
6058 "/lib/" (%lisp-type)))))
6059 (add-after 'create-asd 'remove-component
6060 ;; XXX: The original .asd has no components, but our build system
6061 ;; creates an entry nonetheless. We need to remove it for the
6062 ;; generated .asd to load properly. See trivia.trivial for a
6063 ;; similar problem.
6064 (lambda* (#:key outputs #:allow-other-keys)
6065 (let* ((out (assoc-ref outputs "out"))
6066 (asd (string-append out "/lib/sbcl/cxml.asd")))
6067 (substitute* asd
6068 ((" :components
6069")
6070 ""))
6071 (substitute* asd
6072 ((" *\\(\\(:compiled-file \"cxml--system\"\\)\\)")
6073 ""))))))))))
6074
167fec29
PN
6075(define-public sbcl-cl-reexport
6076 (let ((commit "312f3661bbe187b5f28536cd7ec2956e91366c3b")
6077 (revision "1"))
6078 (package
6079 (name "sbcl-cl-reexport")
6080 (build-system asdf-build-system/sbcl)
6081 (version (git-version "0.1" revision commit))
6082 (home-page "https://github.com/takagi/cl-reexport")
6083 (source
6084 (origin
6085 (method git-fetch)
6086 (uri (git-reference
6087 (url home-page)
6088 (commit commit)))
6089 (file-name (git-file-name name version))
6090 (sha256
6091 (base32
6092 "1cwpn1m3wrl0fl9plznn7p464db646gnfc8zkyk97dyxski2aq0x"))))
6093 (inputs
6094 `(("alexandria" ,sbcl-alexandria)))
6095 (arguments
6096 ;; TODO: Tests fail because cl-test-more is missing, but I can't find it online.
6097 `(#:tests? #f))
6098 (synopsis "HTTP cookie manager for Common Lisp")
6099 (description "cl-cookie is a Common Lisp library featuring parsing of
6100cookie headers, cookie creation, cookie jar creation and more.")
6101 (license license:llgpl))))
536dcafb
PN
6102
6103(define-public sbcl-cl-cookie
6104 (let ((commit "cea55aed8b9ad25fafd13defbcb9fe8f41b29546")
6105 (revision "1"))
6106 (package
6107 (name "sbcl-cl-cookie")
6108 (build-system asdf-build-system/sbcl)
6109 (version (git-version "0.9.10" revision commit))
6110 (home-page "https://github.com/fukamachi/cl-cookie")
6111 (source
6112 (origin
6113 (method git-fetch)
6114 (uri (git-reference
6115 (url home-page)
6116 (commit commit)))
6117 (file-name (git-file-name name version))
6118 (sha256
6119 (base32
6120 "090g7z75h98zvc1ldx0vh4jn4086dhjm2w30jcwkq553qmyxwl8h"))))
6121 (inputs
6122 `(("proc-parse" ,sbcl-proc-parse)
6123 ("alexandria" ,sbcl-alexandria)
6124 ("quri" ,sbcl-quri)
6125 ("cl-ppcre" ,sbcl-cl-ppcre)
6126 ("local-time" ,sbcl-local-time)))
6127 (native-inputs
6128 `(("prove-asdf" ,sbcl-prove-asdf)
6129 ("prove" ,sbcl-prove)))
6130 (arguments
6131 ;; TODO: Tests fail because cl-cookie depends on cl-cookie-test.
6132 `(#:tests? #f))
6133 (synopsis "HTTP cookie manager for Common Lisp")
6134 (description "cl-cookie is a Common Lisp library featuring parsing of
6135cookie headers, cookie creation, cookie jar creation and more.")
6136 (license license:bsd-2))))
fc3f1492
PN
6137
6138(define-public sbcl-dexador
6139 (let ((commit "a2714d126cc94bc7a9a6e1e3c08de455b3a66378")
6140 (revision "1"))
6141 (package
6142 (name "sbcl-dexador")
6143 (build-system asdf-build-system/sbcl)
6144 (version (git-version "0.9.10" revision commit))
6145 (home-page "https://github.com/fukamachi/dexador")
6146 (source
6147 (origin
6148 (method git-fetch)
6149 (uri (git-reference
6150 (url home-page)
6151 (commit commit)))
6152 (file-name (git-file-name name version))
6153 (sha256
6154 (base32
6155 "0nbqgn4v3l2z6m1k1bdxfnqpfrk84nxdmz7csz11zzcfs4flkv79"))))
6156 (inputs
6157 `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)
6158 ("babel" ,sbcl-babel)
6159 ("usocket" ,sbcl-usocket)
6160 ("fast-http" ,sbcl-fast-http)
6161 ("quri" ,sbcl-quri)
6162 ("fast-io" ,sbcl-fast-io)
6163 ("chunga" ,sbcl-chunga)
6164 ("cl-ppcre" ,sbcl-cl-ppcre)
6165 ("cl-cookie" ,sbcl-cl-cookie)
6166 ("trivial-mimes" ,sbcl-trivial-mimes)
6167 ("chipz" ,sbcl-chipz)
6168 ("cl-base64" ,sbcl-cl-base64)
6169 ("cl-reexport" ,sbcl-cl-reexport)
6170 ("cl+ssl" ,sbcl-cl+ssl)
6171 ("bordeaux-threads" ,sbcl-bordeaux-threads)
6172 ("alexandria" ,sbcl-alexandria)))
6173 (native-inputs
6174 `(("prove" ,sbcl-prove)
6175 ("prove-asdf" ,sbcl-prove-asdf)
6176 ("lack-request" ,sbcl-lack-request)
6177 ("clack" ,sbcl-clack)
6178 ("babel" ,sbcl-babel)
6179 ("alexandria" ,sbcl-alexandria)
6180 ("quri" ,sbcl-quri)
6181 ("cl-ppcre" ,sbcl-cl-ppcre)
6182 ("local-time" ,sbcl-local-time)))
6183 (arguments
6184 ;; TODO: Circular dependency: tests depend on clack-test which depends on dexador.
6185 `(#:tests? #f
6186 #:phases
6187 (modify-phases %standard-phases
6188 (add-after 'unpack 'fix-permissions
6189 (lambda _ (make-file-writable "t/data/test.gz") #t)))))
6190 (synopsis "Yet another HTTP client for Common Lisp")
6191 (description "Dexador is yet another HTTP client for Common Lisp with
6192neat APIs and connection-pooling. It is meant to supersede Drakma.")
6193 (license license:expat))))
e3750dc7
PN
6194
6195(define-public sbcl-lisp-namespace
6196 (let ((commit "28107cafe34e4c1c67490fde60c7f92dc610b2e0")
6197 (revision "1"))
6198 (package
6199 (name "sbcl-lisp-namespace")
6200 (build-system asdf-build-system/sbcl)
6201 (version (git-version "0.1" revision commit))
6202 (home-page "https://github.com/guicho271828/lisp-namespace")
6203 (source
6204 (origin
6205 (method git-fetch)
6206 (uri (git-reference
6207 (url home-page)
6208 (commit commit)))
6209 (file-name (git-file-name name version))
6210 (sha256
6211 (base32
6212 "1jw2wykp06z2afb9nm1lgfzll5cjlj36pnknjx614057zkkxq4iy"))))
6213 (inputs
6214 `(("alexandria" ,sbcl-alexandria)))
6215 (native-inputs
6216 `(("fiveam" ,sbcl-fiveam)))
6217 (arguments
6218 `(#:test-asd-file "lisp-namespace.test.asd"
6219 ;; XXX: Component LISP-NAMESPACE-ASD::LISP-NAMESPACE.TEST not found
6220 #:tests? #f))
6221 (synopsis "LISP-N, or extensible namespaces in Common Lisp")
6222 (description "Common Lisp already has major 2 namespaces, function
6223namespace and value namespace (or variable namespace), but there are actually
6224more — e.g., class namespace.
6225This library offers macros to deal with symbols from any namespace.")
6226 (license license:llgpl))))
9526af92
PN
6227
6228(define-public sbcl-trivial-cltl2
6229 (let ((commit "8eec8407df833e8f27df8a388bc10913f16d9e83")
6230 (revision "1"))
6231 (package
6232 (name "sbcl-trivial-cltl2")
6233 (build-system asdf-build-system/sbcl)
6234 (version (git-version "0.1.1" revision commit))
6235 (home-page "https://github.com/Zulu-Inuoe/trivial-cltl2")
6236 (source
6237 (origin
6238 (method git-fetch)
6239 (uri (git-reference
6240 (url home-page)
6241 (commit commit)))
6242 (file-name (git-file-name name version))
6243 (sha256
6244 (base32
6245 "1dyyxz17vqv8hlfwq287gl8xxbvcnq798ajb7p5jdjz91wqf4bgk"))))
6246 (synopsis "Simple CLtL2 compatibility layer for Common Lisp")
6247 (description "This library is a portable compatibility layer around
6248\"Common Lisp the Language, 2nd
6249Edition\" (@url{https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node102.html})
6250and it exports symbols from implementation-specific packages.")
6251 (license license:llgpl))))
f4a7653e
PN
6252
6253(define-public sbcl-introspect-environment
6254 (let ((commit "fff42f8f8fd0d99db5ad6c5812e53de7d660020b")
6255 (revision "1"))
6256 (package
6257 (name "sbcl-introspect-environment")
6258 (build-system asdf-build-system/sbcl)
6259 (version (git-version "0.1" revision commit))
6260 (home-page "https://github.com/Bike/introspect-environment")
6261 (source
6262 (origin
6263 (method git-fetch)
6264 (uri (git-reference
6265 (url home-page)
6266 (commit commit)))
6267 (file-name (git-file-name name version))
6268 (sha256
6269 (base32
6270 "1i305n0wfmpac63ni4i3vixnnkl8daw5ncxy0k3dv92krgx6qzhp"))))
6271 (native-inputs
6272 `(("fiveam" ,sbcl-fiveam)))
6273 (synopsis "Common Lisp environment introspection portability layer")
6274 (description "This library is a small interface to portable but
6275nonstandard introspection of Common Lisp environments. It is intended to
6276allow a bit more compile-time introspection of environments in Common Lisp.
6277
6278Quite a bit of information is available at the time a macro or compiler-macro
6279runs; inlining info, type declarations, that sort of thing. This information
6280is all standard - any Common Lisp program can @code{(declare (integer x))} and
6281such.
6282
6283This info ought to be accessible through the standard @code{&environment}
6284parameters, but it is not. Several implementations keep the information for
6285their own purposes but do not make it available to user programs, because
6286there is no standard mechanism to do so.
6287
6288This library uses implementation-specific hooks to make information available
6289to users. This is currently supported on SBCL, CCL, and CMUCL. Other
6290implementations have implementations of the functions that do as much as they
6291can and/or provide reasonable defaults.")
6292 (license license:wtfpl2))))
b0c1007d
PN
6293
6294(define-public sbcl-type-i
6295 (let ((commit "dea233f45f94064105ec09f0767de338f67dcbe2")
6296 (revision "1"))
6297 (package
6298 (name "sbcl-type-i")
6299 (build-system asdf-build-system/sbcl)
6300 (version (git-version "0.1" revision commit))
6301 (home-page "https://github.com/guicho271828/type-i")
6302 (source
6303 (origin
6304 (method git-fetch)
6305 (uri (git-reference
6306 (url home-page)
6307 (commit commit)))
6308 (file-name (git-file-name name version))
6309 (sha256
6310 (base32
6311 "039g5pbrhh65s0bhr9314gmd2nwc2y5lp2377c5qrc2lxky89qs3"))))
6312 (inputs
6313 `(("alexandria" ,sbcl-alexandria)
6314 ("introspect-environment" ,sbcl-introspect-environment)
6315 ("trivia.trivial" ,sbcl-trivia.trivial)))
6316 (native-inputs
6317 `(("fiveam" ,sbcl-fiveam)))
6318 (arguments
6319 `(#:test-asd-file "type-i.test.asd"))
6320 (synopsis "Type inference utility on unary predicates for Common Lisp")
6321 (description "This library tries to provide a way to detect what kind of
6322type the given predicate is trying to check. This is different from inferring
6323the return type of a function.")
6324 (license license:llgpl))))
f1eb7961
PN
6325
6326(define-public sbcl-optima
6327 (let ((commit "373b245b928c1a5cce91a6cb5bfe5dd77eb36195")
6328 (revision "1"))
6329 (package
6330 (name "sbcl-optima")
6331 (build-system asdf-build-system/sbcl)
6332 (version (git-version "0.1" revision commit))
6333 (home-page "https://github.com/m2ym/optima")
6334 (source
6335 (origin
6336 (method git-fetch)
6337 (uri (git-reference
6338 (url home-page)
6339 (commit commit)))
6340 (file-name (git-file-name name version))
6341 (sha256
6342 (base32
6343 "1yw4ymq7ms89342kkvb3aqxgv0w38m9kd8ikdqxxzyybnkjhndal"))))
6344 (inputs
6345 `(("alexandria" ,sbcl-alexandria)
6346 ("closer-mop" ,sbcl-closer-mop)))
6347 (native-inputs
6348 `(("eos" ,sbcl-eos)))
6349 (arguments
6350 ;; XXX: Circular dependencies: tests depend on optima.ppcre which depends on optima.
6351 `(#:tests? #f
6352 #:test-asd-file "optima.test.asd"))
6353 (synopsis "Optimized pattern matching library for Common Lisp")
6354 (description "Optima is a fast pattern matching library which uses
6355optimizing techniques widely used in the functional programming world.")
6356 (license license:expat))))
41c42e16
PN
6357
6358(define-public sbcl-fare-quasiquote
6359 (package
6360 (name "sbcl-fare-quasiquote")
6361 (build-system asdf-build-system/sbcl)
6362 (version "20171130")
6363 (home-page "http://common-lisp.net/project/fare-quasiquote")
6364 (source
6365 (origin
6366 (method url-fetch)
6367 (uri (string-append "http://beta.quicklisp.org/archive/fare-quasiquote/"
6368 (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
6369 "/fare-quasiquote-"
6370 version
6371 "-git.tgz"))
6372 (sha256
6373 (base32
6374 "00brmh7ndsi0c97nibi8cy10j3l4gmkyrfrr5jr5lzkfb7ngyfqa"))))
6375 (inputs
6376 `(("fare-utils" ,sbcl-fare-utils)))
6377 (arguments
6378 ;; XXX: Circular dependencies: Tests depend on subsystems, which depend on the main systems.
6379 `(#:tests? #f
6380 #:phases
6381 (modify-phases %standard-phases
6382 ;; XXX: Require 1.0.0 version of fare-utils, and we package some
6383 ;; commits after 1.0.0.5, but ASDF fails to read the
6384 ;; "-REVISION-COMMIT" part generated by Guix.
6385 (add-after 'unpack 'patch-requirement
6386 (lambda _
6387 (substitute* "fare-quasiquote.asd"
6388 (("\\(:version \"fare-utils\" \"1.0.0\"\\)") "\"fare-utils\"")))))))
6389 (synopsis "Pattern-matching friendly implementation of quasiquote for Common Lisp")
6390 (description "The main purpose of this n+2nd reimplementation of
6391quasiquote is enable matching of quasiquoted patterns, using Optima or
6392Trivia.")
6393 (license license:expat)))
b7231496
PN
6394
6395(define-public sbcl-fare-quasiquote-readtable
6396 (package
6397 (inherit sbcl-fare-quasiquote)
6398 (name "sbcl-fare-quasiquote-readtable")
6399 (inputs
6400 `(("fare-quasiquote" ,sbcl-fare-quasiquote)
6401 ("named-readtables" ,sbcl-named-readtables)))
6402 (description "The main purpose of this n+2nd reimplementation of
6403quasiquote is enable matching of quasiquoted patterns, using Optima or
6404Trivia.
6405
6406This packages uses fare-quasiquote with named-readtable.")))
5163929e
PN
6407
6408(define-public sbcl-trivia.level0
6409 (let ((commit "902e0c65602bbfe96ae82e679330b3771ddc7603")
6410 (revision "1"))
6411 (package
6412 (name "sbcl-trivia.level0")
6413 (build-system asdf-build-system/sbcl)
6414 (version (git-version "0.0.0" revision commit))
6415 (home-page "https://github.com/guicho271828/trivia")
6416 (source
6417 (origin
6418 (method git-fetch)
6419 (uri (git-reference
6420 (url home-page)
6421 (commit commit)))
6422 (file-name (git-file-name name version))
6423 (sha256
6424 (base32
6425 "11qbab30qqnfy9mx3x9fvgcw1jbvh1qn2cqv3p8xdn2m8981jvhr"))))
6426 (inputs
6427 `(("alexandria" ,sbcl-alexandria)))
6428 (synopsis "Pattern matching in Common Lisp")
6429 (description "Trivia is a pattern matching compiler that is compatible
6430with Optima, another pattern matching library for Common Lisp. It is meant to
6431be faster and more extensible than Optima.")
6432 (license license:llgpl))))
e4e84e3d
PN
6433
6434(define-public sbcl-trivia.level1
6435 (package
6436 (inherit sbcl-trivia.level0)
6437 (name "sbcl-trivia.level1")
6438 (inputs
6439 `(("trivia.level0" ,sbcl-trivia.level0)))
6440 (description "Trivia is a pattern matching compiler that is compatible
6441with Optima, another pattern matching library for Common Lisp. It is meant to
6442be faster and more extensible than Optima.
6443
6444This system contains the core patterns of Trivia.")))
49df8a0a
PN
6445
6446(define-public sbcl-trivia.level2
6447 (package
6448 (inherit sbcl-trivia.level0)
6449 (name "sbcl-trivia.level2")
6450 (inputs
6451 `(("trivia.level1" ,sbcl-trivia.level1)
6452 ("lisp-namespace" ,sbcl-lisp-namespace)
6453 ("trivial-cltl2" ,sbcl-trivial-cltl2)
6454 ("closer-mop" ,sbcl-closer-mop)))
6455 (description "Trivia is a pattern matching compiler that is compatible
6456with Optima, another pattern matching library for Common Lisp. It is meant to
6457be faster and more extensible than Optima.
6458
6459This system contains a non-optimized pattern matcher compatible with Optima,
6460with extensible optimizer interface.")))
02a8324b
PN
6461
6462(define-public sbcl-trivia.trivial
6463 (package
6464 (inherit sbcl-trivia.level0)
6465 (name "sbcl-trivia.trivial")
6466 (inputs
6467 `(("trivia.level2" ,sbcl-trivia.level2)))
6468 (arguments
6469 `(#:phases
6470 (modify-phases %standard-phases
6471 (replace 'create-asd-file
6472 (lambda* (#:key outputs inputs #:allow-other-keys)
6473 (let* ((out (assoc-ref outputs "out"))
57f815cb 6474 (lib (string-append out "/lib/" (%lisp-type)))
02a8324b
PN
6475 (level2 (assoc-ref inputs "trivia.level2")))
6476 (mkdir-p lib)
6477 (install-file "trivia.trivial.asd" lib)
6478 ;; XXX: This .asd does not have any component and the build
6479 ;; system fails to work in this case. We should update the
6480 ;; build system to handle component-less .asd.
6481 ;; TODO: How do we append to file in Guile? It seems that
6482 ;; (open-file ... "a") gets a "Permission denied".
6483 (substitute* (string-append lib "/trivia.trivial.asd")
6484 (("\"\\)")
6485 (string-append "\")
6486
6487(progn (asdf/source-registry:ensure-source-registry)
6488 (setf (gethash
6489 \"trivia.level2\"
6490 asdf/source-registry:*source-registry*)
6491 #p\""
6492 level2
6493 "/share/common-lisp/sbcl-bundle-systems/trivia.level2.asd\"))")))))))))
6494 (description "Trivia is a pattern matching compiler that is compatible
6495with Optima, another pattern matching library for Common Lisp. It is meant to
6496be faster and more extensible than Optima.
6497
6498This system contains the base level system of Trivia with a trivial optimizer.")))
9d450c6d
PN
6499
6500(define-public sbcl-trivia.balland2006
6501 (package
6502 (inherit sbcl-trivia.level0)
6503 (name "sbcl-trivia.balland2006")
6504 (inputs
6505 `(("trivia.trivial" ,sbcl-trivia.trivial)
6506 ("iterate" ,sbcl-iterate)
6507 ("type-i" ,sbcl-type-i)
6508 ("alexandria" ,sbcl-alexandria)))
6509 (arguments
6510 ;; Tests are done in trivia itself.
6511 `(#:tests? #f))
6512 (description "Trivia is a pattern matching compiler that is compatible
6513with Optima, another pattern matching library for Common Lisp. It is meant to
6514be faster and more extensible than Optima.
6515
6516This system contains the base level system of Trivia with a trivial optimizer.")))
3706c0a4
PN
6517
6518(define-public sbcl-trivia.ppcre
6519 (package
6520 (inherit sbcl-trivia.level0)
6521 (name "sbcl-trivia.ppcre")
6522 (inputs
6523 `(("trivia.trivial" ,sbcl-trivia.trivial)
6524 ("cl-ppcre" ,sbcl-cl-ppcre)))
6525 (description "Trivia is a pattern matching compiler that is compatible
6526with Optima, another pattern matching library for Common Lisp. It is meant to
6527be faster and more extensible than Optima.
6528
6529This system contains the PPCRE extention.")))
9b5e5eaf
PN
6530
6531(define-public sbcl-trivia.quasiquote
6532 (package
6533 (inherit sbcl-trivia.level0)
6534 (name "sbcl-trivia.quasiquote")
6535 (inputs
6536 `(("trivia.trivial" ,sbcl-trivia.trivial)
6537 ("fare-quasiquote" ,sbcl-fare-quasiquote)
6538 ("fare-quasiquote-readtable" ,sbcl-fare-quasiquote-readtable)))
6539 (description "Trivia is a pattern matching compiler that is compatible
6540with Optima, another pattern matching library for Common Lisp. It is meant to
6541be faster and more extensible than Optima.
6542
6543This system contains the fare-quasiquote extension.")))
9d4e4226
PN
6544
6545(define-public sbcl-trivia.cffi
6546 (package
6547 (inherit sbcl-trivia.level0)
6548 (name "sbcl-trivia.cffi")
6549 (inputs
6550 `(("cffi" ,sbcl-cffi)
6551 ("trivia.trivial" ,sbcl-trivia.trivial)))
6552 (description "Trivia is a pattern matching compiler that is compatible
6553with Optima, another pattern matching library for Common Lisp. It is meant to
6554be faster and more extensible than Optima.
6555
6556This system contains the CFFI foreign slot access extension.")))
87850c05
PN
6557
6558(define-public sbcl-trivia
6559 (package
6560 (inherit sbcl-trivia.level0)
6561 (name "sbcl-trivia")
6562 (inputs
6563 `(("trivia.balland2006" ,sbcl-trivia.balland2006)))
6564 (native-inputs
6565 `(("fiveam" ,sbcl-fiveam)
6566 ("trivia.ppcre" ,sbcl-trivia.ppcre)
6567 ("trivia.quasiquote" ,sbcl-trivia.quasiquote)
6568 ("trivia.cffi" ,sbcl-trivia.cffi)
6569 ("optima" ,sbcl-optima)))
6570 (arguments
000faac0
PN
6571 `(#:test-asd-file "trivia.test.asd"
6572 #:phases
6573 (modify-phases %standard-phases
6574 (add-after 'create-asd 'remove-component
6575 ;; XXX: The original .asd has no components, but our build system
6576 ;; creates an entry nonetheless. We need to remove it for the
6577 ;; generated .asd to load properly. See trivia.trivial for a
6578 ;; similar problem.
6579 (lambda* (#:key outputs #:allow-other-keys)
6580 (let* ((out (assoc-ref outputs "out"))
6581 (asd (string-append out "/lib/" (%lisp-type) "/trivia.asd")))
6582 (substitute* asd
6583 ((" :components
6584")
6585 ""))
6586 (substitute* asd
6587 ((" *\\(\\(:compiled-file \"trivia--system\"\\)\\)")
6588 ""))))))))
87850c05
PN
6589 (description "Trivia is a pattern matching compiler that is compatible
6590with Optima, another pattern matching library for Common Lisp. It is meant to
6591be faster and more extensible than Optima.")))
e4ce0097
PN
6592
6593(define-public sbcl-mk-string-metrics
6594 (package
6595 (name "sbcl-mk-string-metrics")
6596 (version "0.1.2")
6597 (home-page "https://github.com/cbaggers/mk-string-metrics/")
6598 (source (origin
6599 (method git-fetch)
6600 (uri (git-reference
6601 (url home-page)
6602 (commit version)))
6603 (sha256
6604 (base32 "0bg0bv2mfd4k0g3x72x563hvmrx18xavaffr6xk5rh4if5j7kcf6"))
6605 (file-name (git-file-name name version))))
6606 (build-system asdf-build-system/sbcl)
6607 (synopsis "Calculate various string metrics efficiently in Common Lisp")
6608 (description "This library implements efficient algorithms that calculate
6609various string metrics in Common Lisp:
6610
6611@itemize
6612@item Damerau-Levenshtein distance
6613@item Hamming distance
6614@item Jaccard similarity coefficient
6615@item Jaro distance
6616@item Jaro-Winkler distance
6617@item Levenshtein distance
6618@item Normalized Damerau-Levenshtein distance
6619@item Normalized Levenshtein distance
6620@item Overlap coefficient
6621@end itemize\n")
6622 (license license:x11)))
6ba457cc
PN
6623
6624(define-public sbcl-cl-str
6625 (let ((commit "3d5ec86e3a0199e5973aacde951086dfd754b5e5"))
6626 (package
6627 (name "sbcl-cl-str")
6628 (version (git-version "0.8" "1" commit))
6629 (home-page "https://github.com/vindarel/cl-str")
6630 (source (origin
6631 (method git-fetch)
6632 (uri (git-reference
6633 (url home-page)
6634 (commit commit)))
6635 (sha256
6636 (base32 "0szzzbygw9h985yxz909vvqrp69pmpcpahn7hn350lnyjislk9ga"))
6637 (file-name (git-file-name name version))))
6638 (build-system asdf-build-system/sbcl)
6639 (inputs
6640 `(("cl-ppcre" ,sbcl-cl-ppcre)
6641 ("cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)))
6642 (native-inputs
6643 `(("prove" ,sbcl-prove)
6644 ("prove-asdf" ,sbcl-prove-asdf)))
6645 (arguments
6646 `(#:asd-file "str.asd"
6647 #:asd-system-name "str"
6648 #:test-asd-file "str.test.asd"))
6649 (synopsis "Modern, consistent and terse Common Lisp string manipulation library")
6650 (description "A modern and consistent Common Lisp string manipulation
6651library that focuses on modernity, simplicity and discoverability:
6652@code{(str:trim s)} instead of @code{(string-trim '(#\\Space ...) s)}), or
6653@code{str:concat strings} instead of an unusual format construct; one
6654discoverable library instead of many; consistency and composability, where
6655@code{s} is always the last argument, which makes it easier to feed pipes and
6656arrows.")
6657 (license license:expat))))