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