aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/lisp.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/lisp.scm')
-rw-r--r--gnu/packages/lisp.scm2533
1 files changed, 2416 insertions, 117 deletions
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 720ac070cc..5e8b6fdd3d 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -8,6 +8,9 @@
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
+;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
+;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,42 +31,45 @@
#:use-module (gnu packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
- #:use-module (gnu packages readline)
- #:use-module (gnu packages texinfo)
- #:use-module (gnu packages tex)
- #:use-module (gnu packages m4)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix hg-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system ant)
#:use-module (guix build-system asdf)
#:use-module (guix build-system trivial)
+ #:use-module (gnu packages admin)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bdw-gc)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages ed)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages gcc)
+ #:use-module (gnu packages gettext)
+ #:use-module (gnu packages gl)
+ #:use-module (gnu packages glib)
+ #:use-module (gnu packages m4)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
- #:use-module (gnu packages bdw-gc)
- #:use-module (gnu packages libffi)
#:use-module (gnu packages libffcall)
- #:use-module (gnu packages readline)
- #:use-module (gnu packages sdl)
+ #:use-module (gnu packages libffi)
#:use-module (gnu packages libsigsegv)
#:use-module (gnu packages linux)
- #:use-module (gnu packages admin)
- #:use-module (gnu packages ed)
- #:use-module (gnu packages gl)
- #:use-module (gnu packages gcc)
- #:use-module (gnu packages glib)
- #:use-module (gnu packages gettext)
- #:use-module (gnu packages m4)
+ #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages readline)
+ #:use-module (gnu packages sdl)
+ #:use-module (gnu packages tex)
+ #:use-module (gnu packages texinfo)
#:use-module (gnu packages version-control)
#:use-module (gnu packages xorg)
+ #:use-module (gnu packages databases)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages webkit)
#:use-module (ice-9 match)
- #:use-module (srfi srfi-1))
+ #:use-module (srfi srfi-19))
(define (asdf-substitutions lisp)
;; Prepend XDG_DATA_DIRS/LISP-bundle-systems to ASDF's
@@ -163,8 +169,7 @@
(native-inputs
`(("gcc" ,gcc-4.9)
("m4" ,m4)
- ("texinfo" ,texinfo)
- ("texlive" ,texlive)))
+ ("texinfo" ,texinfo)))
(home-page "https://www.gnu.org/software/gcl/")
(synopsis "A Common Lisp implementation")
(description "GCL is an implementation of the Common Lisp language. It
@@ -254,28 +259,31 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
(define-public clisp
(package
(name "clisp")
- (version "2.49-60")
+ (version "2.49-92")
(source
(origin
- (method hg-fetch)
- (uri (hg-reference
- (url "http://hg.code.sf.net/p/clisp/clisp")
- (changeset "clisp_2_49_60-2017-06-25")))
- (file-name (string-append name "-" version "-checkout"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/gnu-clisp/clisp")
+ (commit "clisp-2.49.92-2018-02-18")))
+ (file-name (git-file-name name version))
(sha256
- (base32 "0qjv3z274rbdmb941hy03hl63f4z7bmci234f8dyz4skgfr82d3i"))
- (patches (search-patches "clisp-glibc-2.26.patch"
- "clisp-remove-failing-test.patch"))))
+ (base32 "0k2dmgl0miz3767iks4p0mvp6xw0ysyxhjpklyh11j010rmh6hqb"))
+ (patches (search-patches "clisp-remove-failing-test.patch"))))
(build-system gnu-build-system)
(inputs `(("libffcall" ,libffcall)
("ncurses" ,ncurses)
("readline" ,readline)
("libsigsegv" ,libsigsegv)))
(arguments
- '(#:configure-flags '("--enable-portability"
- "--with-dynamic-ffi"
- "--with-dynamic-modules"
- "--with-module=rawsock")
+ `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"
+ (or (%current-system)
+ (%current-target-system)))
+ '("CFLAGS=-falign-functions=4")
+ '())
+ "--with-dynamic-ffi"
+ "--with-dynamic-modules"
+ "--with-module=rawsock")
#:build #f
#:phases
(modify-phases %standard-phases
@@ -286,6 +294,10 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
;; many places where our automatic patching misses them. Therefore
;; we do the following, in this early (post-unpack) phase, to solve
;; the problem from its root.
+ (substitute* '("src/clisp-link.in"
+ "src/unix.d"
+ "src/makemake.in")
+ (("/bin/sh") (which "sh")))
(substitute* (find-files "." "configure|Makefile")
(("/bin/sh") "sh"))
(substitute* '("src/clisp-link.in")
@@ -293,7 +305,7 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
#t)))
;; Makefiles seem to have race conditions.
#:parallel-build? #f))
- (home-page "http://www.clisp.org/")
+ (home-page "https://clisp.sourceforge.io/")
(synopsis "A Common Lisp implementation")
(description
"GNU CLISP is an implementation of ANSI Common Lisp. Common Lisp is a
@@ -304,14 +316,14 @@ an interpreter, a compiler, a debugger, and much more.")
(define-public sbcl
(package
(name "sbcl")
- (version "1.4.4")
+ (version "1.4.13")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
version "-source.tar.bz2"))
(sha256
- (base32 "1k6v5b8qv7vyxvh8asx6phf2hbapx5pp5p5j47hgnq123fwnh4fa"))
+ (base32 "120rnnz8367lk7ljqlf8xidm4b0d738xqsib4kq0q5ms5r7fzgvm"))
(modules '((guix build utils)))
(snippet
;; Add sbcl-bundle-systems to 'default-system-source-registry'.
@@ -321,16 +333,29 @@ an interpreter, a compiler, a debugger, and much more.")
#t))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
- ;; Bootstrap with CLISP.
(native-inputs
- `(("clisp" ,clisp)
+ ;; From INSTALL:
+ ;; Supported build hosts are:
+ ;; SBCL
+ ;; CMUCL
+ ;; CCL (formerly known as OpenMCL)
+ ;; ABCL (recent versions only)
+ ;; CLISP (only some versions: 2.44.1 is OK, 2.47 is not)
+ ;; XCL
+ ;; CCL seems ideal then, but it unfortunately only builds reliably
+ ;; on some architectures.
+ `(,@(match (%current-system)
+ ((or "x86_64-linux" "i686-linux")
+ `(("ccl" ,ccl)))
+ (_
+ `(("clisp" ,clisp))))
("which" ,which)
("inetutils" ,inetutils) ;for hostname(1)
("ed" ,ed)
- ("texlive" ,texlive)
+ ("texlive" ,(texlive-union (list texlive-tex-texinfo)))
("texinfo" ,texinfo)))
(arguments
- '(#:modules ((guix build gnu-build-system)
+ `(#:modules ((guix build gnu-build-system)
(guix build utils)
(srfi srfi-1))
#:phases
@@ -382,20 +407,28 @@ an interpreter, a compiler, a debugger, and much more.")
(string-append "#+nil ;disabled by Guix\n" all))
(("\\(deftest grent\\.[12]" all)
(string-append "#+nil ;disabled by Guix\n" all))))))
+ ;; FIXME: the texlive-union insists on regenerating fonts. It stores
+ ;; them in HOME, so it needs to be writeable.
+ (add-before 'build 'set-HOME
+ (lambda _ (setenv "HOME" "/tmp") #t))
(replace 'build
(lambda* (#:key outputs #:allow-other-keys)
(setenv "CC" "gcc")
- (zero? (system* "sh" "make.sh" "clisp"
- (string-append "--prefix="
- (assoc-ref outputs "out"))))))
+ (invoke "sh" "make.sh" ,@(match (%current-system)
+ ((or "x86_64-linux" "i686-linux")
+ `("ccl"))
+ (_
+ `("clisp")))
+ (string-append "--prefix="
+ (assoc-ref outputs "out")))))
(replace 'install
(lambda _
- (zero? (system* "sh" "install.sh"))))
+ (invoke "sh" "install.sh")))
(add-after 'build 'build-doc
(lambda _
(with-directory-excursion "doc/manual"
- (and (zero? (system* "make" "info"))
- (zero? (system* "make" "dist"))))))
+ (and (invoke "make" "info")
+ (invoke "make" "dist")))))
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -519,8 +552,13 @@ statistical profiler, a code coverage tool, and many other extensions.")
(install-file kernel libdir)
(install-file heap libdir)
- (let ((dirs '("lib" "library" "examples" "contrib"
- "tools" "objc-bridge")))
+ (let ((dirs '("lib" "library" "examples" "tools" "objc-bridge"
+ ,@(match (%current-system)
+ ("x86_64-linux"
+ '("x86-headers64"))
+ ("i686-linux"
+ '("x86-headers"))
+ (_ '())))))
(for-each copy-recursively
dirs
(map (cut string-append libdir <>) dirs)))
@@ -531,13 +569,12 @@ statistical profiler, a code coverage tool, and many other extensions.")
(display
(string-append
"#!" bash "/bin/sh\n"
- "CCL_DEFAULT_DIRECTORY=" libdir "\n"
- "export CCL_DEFAULT_DIRECTORY\n"
- "exec " libdir kernel "\n"))))
+ "export CCL_DEFAULT_DIRECTORY=" libdir "\n"
+ "exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
(chmod wrapper #o755))
#t)))))
(supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
- (home-page "http://ccl.clozure.com/")
+ (home-page "https://ccl.clozure.com/")
(synopsis "Common Lisp implementation")
(description "Clozure CL (often called CCL for short) is a Common Lisp
implementation featuring fast compilation speed, native threads, a precise,
@@ -548,56 +585,6 @@ interface.")
(license (list license:lgpl2.1
license:clarified-artistic)))) ;TRIVIAL-LDAP package
-(define-public femtolisp
- (let ((commit "68c5b1225572ecf2c52baf62f928063e5a30511b")
- (revision "1"))
- (package
- (name "femtolisp")
- (version (string-append "0.0.0-" revision "." (string-take commit 7)))
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/JeffBezanson/femtolisp.git")
- (commit commit)))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "04rnwllxnl86zw8c6pwxznn49bvkvh0f1lfliy085vjzvlq3rgja"))))
- ;; See "utils.h" for supported systems. Upstream bug:
- ;; https://github.com/JeffBezanson/femtolisp/issues/25
- (supported-systems
- (fold delete %supported-systems
- '("armhf-linux" "mips64el-linux" "aarch64-linux")))
- (build-system gnu-build-system)
- (arguments
- `(#:make-flags '("CC=gcc" "release")
- #:test-target "test"
- #:phases
- (modify-phases %standard-phases
- (delete 'configure) ; No configure script
- (replace 'install ; Makefile has no 'install phase
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (install-file "flisp" bin)
- #t)))
- ;; The flisp binary is now available, run bootstrap to
- ;; generate flisp.boot and afterwards runs make test.
- (add-after 'install 'bootstrap-gen-and-test
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (and
- (zero? (system* "./bootstrap.sh"))
- (install-file "flisp.boot" bin))))))))
- (synopsis "Scheme-like lisp implementation")
- (description
- "@code{femtolisp} is a scheme-like lisp implementation with a
-simple, elegant Scheme dialect. It is a lisp-1 with lexical scope.
-The core is 12 builtin special forms and 33 builtin functions.")
- (home-page "https://github.com/JeffBezanson/femtolisp")
- (license license:bsd-3))))
-
(define-public lush2
(package
(name "lush2")
@@ -1009,8 +996,8 @@ productive, customizable lisp based systems.")
;; we expose the union of these as `sbcl-slynk'. The following variable
;; describes the base module.
(define sbcl-slynk-boot0
- (let ((revision "1")
- (commit "5706cd45d484a4f25795abe8e643509d31968aa2"))
+ (let ((revision "2")
+ (commit "cbf84c36c4eca8b032e3fd16177a7bc02df3ec4c"))
(package
(name "sbcl-slynk-boot0")
(version (string-append "1.0.0-beta-" revision "." (string-take commit 7)))
@@ -1022,7 +1009,7 @@ productive, customizable lisp based systems.")
(url "https://github.com/joaotavora/sly.git")
(commit commit)))
(sha256
- (base32 "0h4gg3sndl2bf6jdnx9nrf14p9hhi43hagrl0f4v4l11hczl8w81"))
+ (base32 "13dyhsravn591p7g6is01mp2ynzjnnj7pwgi57r6xqmd4611y9vh"))
(file-name (string-append "slynk-" version "-checkout"))
(modules '((guix build utils)
(ice-9 ftw)))
@@ -1033,14 +1020,19 @@ productive, customizable lisp based systems.")
(substitute* "slynk/slynk.asd"
(("\\.\\./contrib")
"contrib")
- (("\\(defsystem :slynk-util")
- "(defsystem :slynk-util :depends-on (:slynk)"))
+ (("\\(defsystem :slynk/util")
+ "(defsystem :slynk/util :depends-on (:slynk)")
+ ((":depends-on \\(:slynk :slynk/util\\)")
+ ":depends-on (:slynk :slynk-util)"))
(substitute* "contrib/slynk-trace-dialog.lisp"
(("\\(slynk::reset-inspector\\)") ; Causes problems on load
"nil"))
(substitute* "contrib/slynk-profiler.lisp"
(("slynk:to-line")
"slynk-pprint-to-line"))
+ (substitute* "contrib/slynk-fancy-inspector.lisp"
+ (("slynk/util") "slynk-util")
+ ((":compile-toplevel :load-toplevel") ""))
(rename-file "contrib" "slynk/contrib")
;; Move slynk's contents into the base directory for easier
;; access
@@ -1080,15 +1072,20 @@ multiple inspectors with independent history.")
(arguments
(substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
((#:asd-file _ "") "slynk.asd")
- ((#:asd-system-name _ #f) #f)))))
+ ((#:asd-system-name _ #f) "slynk/arglists")))))
(define ecl-slynk-arglists
(sbcl-package->ecl-package sbcl-slynk-arglists))
(define sbcl-slynk-util
(package
- (inherit sbcl-slynk-arglists)
- (name "sbcl-slynk-util")))
+ (inherit sbcl-slynk-boot0)
+ (name "sbcl-slynk-util")
+ (inputs `(("slynk" ,sbcl-slynk-boot0)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-boot0)
+ ((#:asd-file _ "") "slynk.asd")
+ ((#:asd-system-name _ #f) "slynk/util")))))
(define ecl-slynk-util
(sbcl-package->ecl-package sbcl-slynk-util))
@@ -1098,7 +1095,10 @@ multiple inspectors with independent history.")
(inherit sbcl-slynk-arglists)
(name "sbcl-slynk-fancy-inspector")
(inputs `(("slynk-util" ,sbcl-slynk-util)
- ,@(package-inputs sbcl-slynk-arglists)))))
+ ,@(package-inputs sbcl-slynk-arglists)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
+ ((#:asd-system-name _ #f) "slynk/fancy-inspector")))))
(define ecl-slynk-fancy-inspector
(sbcl-package->ecl-package sbcl-slynk-fancy-inspector))
@@ -1106,15 +1106,21 @@ multiple inspectors with independent history.")
(define sbcl-slynk-package-fu
(package
(inherit sbcl-slynk-arglists)
- (name "sbcl-slynk-package-fu")))
+ (name "sbcl-slynk-package-fu")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
+ ((#:asd-system-name _ #f) "slynk/package-fu")))))
(define ecl-slynk-package-fu
(sbcl-package->ecl-package sbcl-slynk-package-fu))
(define sbcl-slynk-mrepl
(package
- (inherit sbcl-slynk-arglists)
- (name "sbcl-slynk-mrepl")))
+ (inherit sbcl-slynk-fancy-inspector)
+ (name "sbcl-slynk-mrepl")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
+ ((#:asd-system-name _ #f) "slynk/mrepl")))))
(define ecl-slynk-mrepl
(sbcl-package->ecl-package sbcl-slynk-mrepl))
@@ -1122,7 +1128,10 @@ multiple inspectors with independent history.")
(define sbcl-slynk-trace-dialog
(package
(inherit sbcl-slynk-arglists)
- (name "sbcl-slynk-trace-dialog")))
+ (name "sbcl-slynk-trace-dialog")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
+ ((#:asd-system-name _ #f) "slynk/trace-dialog")))))
(define ecl-slynk-trace-dialog
(sbcl-package->ecl-package sbcl-slynk-trace-dialog))
@@ -1130,7 +1139,10 @@ multiple inspectors with independent history.")
(define sbcl-slynk-profiler
(package
(inherit sbcl-slynk-arglists)
- (name "sbcl-slynk-profiler")))
+ (name "sbcl-slynk-profiler")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
+ ((#:asd-system-name _ #f) "slynk/profiler")))))
(define ecl-slynk-profiler
(sbcl-package->ecl-package sbcl-slynk-profiler))
@@ -1138,7 +1150,10 @@ multiple inspectors with independent history.")
(define sbcl-slynk-stickers
(package
(inherit sbcl-slynk-arglists)
- (name "sbcl-slynk-stickers")))
+ (name "sbcl-slynk-stickers")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
+ ((#:asd-system-name _ #f) "slynk/stickers")))))
(define ecl-slynk-stickers
(sbcl-package->ecl-package sbcl-slynk-stickers))
@@ -1146,7 +1161,10 @@ multiple inspectors with independent history.")
(define sbcl-slynk-indentation
(package
(inherit sbcl-slynk-arglists)
- (name "sbcl-slynk-indentation")))
+ (name "sbcl-slynk-indentation")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
+ ((#:asd-system-name _ #f) "slynk/indentation")))))
(define ecl-slynk-indentation
(sbcl-package->ecl-package sbcl-slynk-indentation))
@@ -1154,7 +1172,10 @@ multiple inspectors with independent history.")
(define sbcl-slynk-retro
(package
(inherit sbcl-slynk-arglists)
- (name "sbcl-slynk-retro")))
+ (name "sbcl-slynk-retro")
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-slynk-arglists)
+ ((#:asd-system-name _ #f) "slynk/retro")))))
(define ecl-slynk-retro
(sbcl-package->ecl-package sbcl-slynk-retro))
@@ -1442,3 +1463,2281 @@ compressor. It works on data produced by @code{parse-js} to generate a
`(("sbcl" ,sbcl)
("sbcl-cl-uglify-js" ,sbcl-cl-uglify-js)))
(synopsis "JavaScript compressor")))
+
+(define-public confusion-mdl
+ (let* ((commit "12a055581fc262225272df43287dae48281900f5"))
+ (package
+ (name "confusion-mdl")
+ (version "0.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url (string-append "https://gitlab.com/emacsomancer/" name))
+ (commit commit)))
+ (sha256
+ (base32
+ "1zi8kflzvwqg97ha1sa5xjisbjs5z1mvbpa772vfxiv5ksnpxp0d"))
+ (file-name (git-file-name name version))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; there are no tests
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda* (#:key (make-flags '()) #:allow-other-keys)
+ (apply invoke "make" "CC=gcc" make-flags)))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (install-file "mdli" bin)
+ #t))))))
+ (native-inputs
+ `(("perl" ,perl)))
+ (inputs
+ `(("libgc" ,libgc)))
+ (synopsis "Interpreter for the MIT Design Language (MDL)")
+ (description "MDL (the MIT Design Language) is a descendant of Lisp. It
+was originally developed in 1971 on the PDP-10 computer under the Incompatible
+Timesharing System (ITS) to provide high level language support for the
+Dynamic Modeling Group at MIT's Project MAC. Infocom built the original
+PDP-10 Zork in MDL and their later ZIL (Zork Implementation Language) was
+based on a subset of MDL. Confusion is a MDL interpreter that works just well
+enough to play the original mainframe Zork all the way through.")
+ (home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
+ (license license:gpl3+))))
+
+(define-public sbcl-cl-strings
+ (let ((revision "1")
+ (commit "c5c5cbafbf3e6181d03c354d66e41a4f063f00ae"))
+ (package
+ (name "sbcl-cl-strings")
+ (version (git-version "0.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/diogoalexandrefranco/cl-strings")
+ (commit commit)))
+ (sha256
+ (base32
+ "00754mfaqallj480lwd346nkfb6ra8pa8xcxcylf4baqn604zlmv"))
+ (file-name (string-append "cl-strings-" version "-checkout"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
+ (description
+ "@command{cl-strings} is a small, portable, dependency-free set of
+utilities that make it even easier to manipulate text in Common Lisp. It has
+100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")
+ (home-page "https://github.com/diogoalexandrefranco/cl-strings")
+ (license license:expat))))
+
+(define-public cl-strings
+ (sbcl-package->cl-source-package sbcl-cl-strings))
+
+(define-public ecl-cl-strings
+ (sbcl-package->ecl-package sbcl-cl-strings))
+
+(define-public sbcl-trivial-features
+ (package
+ (name "sbcl-trivial-features")
+ (version "0.8")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/trivial-features/trivial-features/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32 "0db1awn6jyhcfhyfvpjvfziprmq85cigf19mwbvaprhblydsag3c"))
+ (file-name (string-append "trivial-features-" version ".tar.gz"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments '(#:tests? #f))
+ (home-page "http://cliki.net/trivial-features")
+ (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp")
+ (description "Trivial-features ensures that @code{*FEATURES*} is
+consistent across multiple Common Lisp implementations.")
+ (license license:expat)))
+
+(define-public cl-trivial-features
+ (sbcl-package->cl-source-package sbcl-trivial-features))
+
+(define-public ecl-trivial-features
+ (sbcl-package->ecl-package sbcl-trivial-features))
+
+(define-public sbcl-hu.dwim.asdf
+ (let ((commit "170b0e4fdde3df0bc537327e7600575daac9e141"))
+ (package
+ (name "sbcl-hu.dwim.asdf")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/nixeagle/hu.dwim.asdf")
+ (commit commit)))
+ (sha256
+ (base32 "10ax7p8y6vjqxzcq125p62kf68zi455a65ysgk0kl1f2v839c33v"))
+ (file-name (git-file-name "hu.dwim.asdf" version))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.asdf")
+ (synopsis "Extensions to ASDF")
+ (description "Various ASDF extensions such as attached test and
+documentation system, explicit development support, etc.")
+ (license license:public-domain))))
+
+(define-public cl-hu.dwim.asdf
+ (sbcl-package->cl-source-package sbcl-hu.dwim.asdf))
+
+(define-public ecl-hu.dwim.asdf
+ (sbcl-package->ecl-package sbcl-hu.dwim.asdf))
+
+(define-public sbcl-hu.dwim.stefil
+ (let ((commit "ab6d1aa8995878a1b66d745dfd0ba021090bbcf9"))
+ (package
+ (name "sbcl-hu.dwim.stefil")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://gitlab.common-lisp.net/xcvb/hu.dwim.stefil.git")
+ (commit commit)))
+ (sha256
+ (base32 "1d8yccw65zj3zh46cbi3x6nmn1dwdb76s9d0av035077mvyirqqp"))
+ (file-name (git-file-name "hu.dwim.stefil" version))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("asdf:cl-hu.dwim.asdf" ,sbcl-hu.dwim.asdf)))
+ (inputs
+ `(("sbcl-alexandria" ,sbcl-alexandria)))
+ (home-page "https://hub.darcs.net/hu.dwim/hu.dwim.stefil")
+ (synopsis "Simple test framework")
+ (description "Stefil is a simple test framework for Common Lisp,
+with a focus on interactive development.")
+ (license license:public-domain))))
+
+(define-public cl-hu.dwim.stefil
+ (sbcl-package->cl-source-package sbcl-hu.dwim.stefil))
+
+(define-public ecl-hu.dwim.stefil
+ (sbcl-package->ecl-package sbcl-hu.dwim.stefil))
+
+(define-public sbcl-babel
+ (package
+ (name "sbcl-babel")
+ (version "0.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/cl-babel/babel/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32 "189kgbmslh36xx0d2i1g6a7mcvjryvjzkdlnhilqy5xs7hkyqirq"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil)))
+ (inputs
+ `(("sbcl-alexandria" ,sbcl-alexandria)
+ ("sbcl-trivial-features" ,sbcl-trivial-features)))
+ (home-page "https://common-lisp.net/project/babel/")
+ (synopsis "Charset encoding and decoding library")
+ (description "Babel is a charset encoding and decoding library, not unlike
+GNU libiconv, but completely written in Common Lisp.")
+ (license license:expat)))
+
+(define-public cl-babel
+ (sbcl-package->cl-source-package sbcl-babel))
+
+(define-public ecl-babel
+ (sbcl-package->ecl-package sbcl-babel))
+
+(define-public sbcl-cl-yacc
+ (package
+ (name "sbcl-cl-yacc")
+ (version "0.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jech/cl-yacc")
+ (commit (string-append "cl-yacc-" version))))
+ (sha256
+ (base32
+ "16946pzf8vvadnyfayvj8rbh4zjzw90h0azz2qk1mxrvhh5wklib"))
+ (file-name (string-append "cl-yacc-" version "-checkout"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:asd-file "yacc.asd"
+ #:asd-system-name "yacc"))
+ (synopsis "LALR(1) parser generator for Common Lisp, similar in spirit to Yacc")
+ (description
+ "CL-Yacc is a LALR(1) parser generator for Common Lisp, similar in spirit
+to AT&T Yacc, Berkeley Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm.
+
+CL-Yacc uses the algorithm due to Aho and Ullman, which is the one also used
+by AT&T Yacc, Berkeley Yacc and Zebu. It does not use the faster algorithm due
+to DeRemer and Pennello, which is used by Bison and lalr.scm (not lalr.cl).")
+ (home-page "https://www.irif.fr/~jch//software/cl-yacc/")
+ (license license:expat)))
+
+(define-public cl-yacc
+ (sbcl-package->cl-source-package sbcl-cl-yacc))
+
+(define-public ecl-cl-yacc
+ (sbcl-package->ecl-package sbcl-cl-yacc))
+
+(define-public sbcl-jpl-util
+ (let ((commit "0311ed374e19a49d43318064d729fe3abd9a3b62"))
+ (package
+ (name "sbcl-jpl-util")
+ (version "20151005")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ ;; Quicklisp uses this fork.
+ (url "https://github.com/hawkir/cl-jpl-util")
+ (commit commit)))
+ (file-name
+ (git-file-name "jpl-util" version))
+ (sha256
+ (base32
+ "0nc0rk9n8grkg3045xsw34whmcmddn2sfrxki4268g7kpgz0d2yz"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Collection of Common Lisp utility functions and macros")
+ (description
+ "@command{cl-jpl-util} is a collection of Common Lisp utility functions
+and macros, primarily for software projects written in CL by the author.")
+ (home-page "https://www.thoughtcrime.us/software/cl-jpl-util/")
+ (license license:isc))))
+
+(define-public cl-jpl-util
+ (sbcl-package->cl-source-package sbcl-jpl-util))
+
+(define-public ecl-jpl-util
+ (sbcl-package->ecl-package sbcl-jpl-util))
+
+(define-public sbcl-jpl-queues
+ (package
+ (name "sbcl-jpl-queues")
+ (version "0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://www.thoughtcrime.us/software/jpl-queues/jpl-queues-"
+ version
+ ".tar.gz"))
+ (sha256
+ (base32
+ "1wvvv7j117h9a42qaj1g4fh4mji28xqs7s60rn6d11gk9jl76h96"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("jpl-util" ,sbcl-jpl-util)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)))
+ (arguments
+ ;; Tests seem to be broken.
+ `(#:tests? #f))
+ (synopsis "Common Lisp library implementing a few different kinds of queues")
+ (description
+ "A Common Lisp library implementing a few different kinds of queues:
+
+@itemize
+@item Bounded and unbounded FIFO queues.
+@item Lossy bounded FIFO queues that drop elements when full.
+@item Unbounded random-order queues that use less memory than unbounded FIFO queues.
+@end itemize
+
+Additionally, a synchronization wrapper is provided to make any queue
+conforming to the @command{jpl-queues} API thread-safe for lightweight
+multithreading applications. (See Calispel for a more sophisticated CL
+multithreaded message-passing library with timeouts and alternation among
+several blockable channels.)")
+ (home-page "https://www.thoughtcrime.us/software/jpl-queues/")
+ (license license:isc)))
+
+(define-public cl-jpl-queues
+ (sbcl-package->cl-source-package sbcl-jpl-queues))
+
+(define-public ecl-jpl-queues
+ (sbcl-package->ecl-package sbcl-jpl-queues))
+
+(define-public sbcl-eos
+ (let ((commit "b0faca83781ead9a588661e37bd47f90362ccd94"))
+ (package
+ (name "sbcl-eos")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/adlai/Eos")
+ (commit commit)))
+ (sha256
+ (base32
+ "1bq8cfg087iyxmxi1mwgx5cfgy3b8ydrf81xljcis8qbgb2vszph"))
+ (file-name (git-file-name "eos" version))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Unit Testing for Common Lisp")
+ (description
+ "Eos was a unit testing library for Common Lisp.
+It began as a fork of FiveAM; however, FiveAM development has continued, while
+that of Eos has not. Thus, Eos is now deprecated in favor of FiveAM.")
+ (home-page "https://github.com/adlai/Eos")
+ (license license:expat))))
+
+(define-public cl-eos
+ (sbcl-package->cl-source-package sbcl-eos))
+
+(define-public ecl-eos
+ (sbcl-package->ecl-package sbcl-eos))
+
+(define-public sbcl-esrap
+ (let ((commit "133be8b05c2aae48696fe5b739eea2fa573fa48d"))
+ (package
+ (name "sbcl-esrap")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/nikodemus/esrap")
+ (commit commit)))
+ (sha256
+ (base32
+ "02d5clihsdryhf7pix8c5di2571fdsffh75d40fkzhws90r5mksl"))
+ (file-name (git-file-name "esrap" version))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("eos" ,sbcl-eos))) ;For testing only.
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)))
+ (synopsis "Common Lisp packrat parser")
+ (description
+ "A packrat parser for Common Lisp.
+In addition to regular Packrat / Parsing Grammar / TDPL features ESRAP supports:
+
+@itemize
+@item dynamic redefinition of nonterminals
+@item inline grammars
+@item semantic predicates
+@item introspective facilities (describing grammars, tracing, setting breaks)
+@end itemize\n")
+ (home-page "https://nikodemus.github.io/esrap/")
+ (license license:expat))))
+
+(define-public cl-esrap
+ (sbcl-package->cl-source-package sbcl-esrap))
+
+(define-public ecl-esrap
+ (sbcl-package->ecl-package sbcl-esrap))
+
+(define-public sbcl-split-sequence
+ (package
+ (name "sbcl-split-sequence")
+ (version "1.4.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sharplispers/split-sequence")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "0c3zp6b7fmmp93sfhq112ind4zkld49ycw68z409xpnz3gc0wpf0"))
+ (file-name (git-file-name "split-sequence" version))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ ;; TODO: Tests seem to be broken.
+ ;; https://github.com/sharplispers/split-sequence/issues/8
+ `(#:tests? #f))
+ (synopsis "Member of the Common Lisp Utilities family of programs")
+ (description
+ "Splits sequence into a list of subsequences delimited by objects
+satisfying the test.")
+ (home-page "https://cliki.net/split-sequence")
+ (license license:expat)))
+
+(define-public cl-split-sequence
+ (sbcl-package->cl-source-package sbcl-split-sequence))
+
+(define-public ecl-split-sequence
+ (sbcl-package->ecl-package sbcl-split-sequence))
+
+(define-public sbcl-html-encode
+ (package
+ (name "sbcl-html-encode")
+ (version "1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://beta.quicklisp.org/archive/html-encode/2010-10-06/html-encode-"
+ version ".tgz"))
+ (sha256
+ (base32
+ "06mf8wn95yf5swhmzk4vp0xr4ylfl33dgfknkabbkd8n6jns8gcf"))
+ (file-name (string-append "colorize" version "-checkout"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Common Lisp library for encoding text in various web-savvy encodings")
+ (description
+ "A library for encoding text in various web-savvy encodings.")
+ (home-page "http://quickdocs.org/html-encode/")
+ (license license:expat)))
+
+(define-public cl-html-encode
+ (sbcl-package->cl-source-package sbcl-html-encode))
+
+(define-public ecl-html-encode
+ (sbcl-package->ecl-package sbcl-html-encode))
+
+(define-public sbcl-colorize
+ (let ((commit "ea676b584e0899cec82f21a9e6871172fe3c0eb5"))
+ (package
+ (name "sbcl-colorize")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kingcons/colorize")
+ (commit commit)))
+ (sha256
+ (base32
+ "1pdg4kiaczmr3ivffhirp7m3lbr1q27rn7dhaay0vwghmi31zcw9"))
+ (file-name (git-file-name "colorize" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("split-sequence" ,sbcl-split-sequence)
+ ("html-encode" ,sbcl-html-encode)))
+ (synopsis "Common Lisp for syntax highlighting")
+ (description
+ "@command{colorize} is a Lisp library for syntax highlighting
+supporting the following languages: Common Lisp, Emacs Lisp, Scheme, Clojure,
+C, C++, Java, Python, Erlang, Haskell, Objective-C, Diff, Webkit.")
+ (home-page "https://github.com/kingcons/colorize")
+ ;; TODO: Missing license?
+ (license license:expat))))
+
+(define-public cl-colorize
+ (sbcl-package->cl-source-package sbcl-colorize))
+
+(define-public ecl-colorize
+ (sbcl-package->ecl-package sbcl-colorize))
+
+(define-public sbcl-3bmd
+ (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
+ (package
+ (name "sbcl-3bmd")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/3b/3bmd")
+ (commit commit)))
+ (sha256
+ (base32
+ "1rgv3gi7wf963ikmmpk132wgn0icddf226gq3bmcnk1fr3v9gf2f"))
+ (file-name (git-file-name "3bmd" version))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ ;; FIXME: We need to specify the name because the build-system thinks
+ ;; "3" is a version marker.
+ `(#:asd-system-name "3bmd"))
+ (inputs
+ `(("esrap" ,sbcl-esrap)
+ ("split-sequence" ,sbcl-split-sequence)))
+ (synopsis "Markdown processor in Command Lisp using esrap parser")
+ (description
+ "Common Lisp Markdown -> HTML converter, using @command{esrap} for
+parsing, and grammar based on @command{peg-markdown}.")
+ (home-page "https://github.com/3b/3bmd")
+ (license license:expat))))
+
+(define-public cl-3bmd
+ (sbcl-package->cl-source-package sbcl-3bmd))
+
+(define-public ecl-3bmd
+ (sbcl-package->ecl-package sbcl-3bmd))
+
+(define-public sbcl-3bmd-ext-code-blocks
+ (let ((commit "192ea13435b605a96ef607df51317056914cabbd"))
+ (package
+ (inherit sbcl-3bmd)
+ (name "sbcl-3bmd-ext-code-blocks")
+ (arguments
+ `(#:asd-system-name "3bmd-ext-code-blocks"
+ #:asd-file "3bmd-ext-code-blocks.asd"))
+ (inputs
+ `(("3bmd" ,sbcl-3bmd)
+ ("colorize" ,sbcl-colorize)))
+ (synopsis "3bmd extension which adds support for GitHub-style fenced
+code blocks")
+ (description
+ "3bmd extension which adds support for GitHub-style fenced code blocks,
+with @command{colorize} support."))))
+
+(define-public cl-3bmd-ext-code-blocks
+ (sbcl-package->cl-source-package sbcl-3bmd-ext-code-blocks))
+
+(define-public ecl-3bmd-ext-code-blocks
+ (sbcl-package->ecl-package sbcl-3bmd-ext-code-blocks))
+
+(define-public sbcl-cl-fad
+ (package
+ (name "sbcl-cl-fad")
+ (version "0.7.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/edicl/cl-fad/")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "1l1qmk9z57q84bz5r04sxsksggsnd7dgkxlybzh9imz6ma7sm52m"))
+ (file-name (string-append "cl-fad" version "-checkout"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
+ (synopsis "Portable pathname library for Common Lisp")
+ (description
+ "CL-FAD (for \"Files and Directories\") is a thin layer atop Common
+Lisp's standard pathname functions. It is intended to provide some
+unification between current CL implementations on Windows, OS X, Linux, and
+Unix. Most of the code was written by Peter Seibel for his book Practical
+Common Lisp.")
+ (home-page "https://edicl.github.io/cl-fad/")
+ (license license:bsd-2)))
+
+(define-public cl-fad
+ (sbcl-package->cl-source-package sbcl-cl-fad))
+
+(define-public ecl-cl-fad
+ (sbcl-package->ecl-package sbcl-cl-fad))
+
+(define-public sbcl-rt
+ (package
+ (name "sbcl-rt")
+ (version "1990.12.19")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://beta.quicklisp.org/archive/rt/2010-10-06/rt-"
+ "20101006-git" ".tgz"))
+ (sha256
+ (base32
+ "1jncar0xwkqk8yrc2dln389ivvgzs7ijdhhs3zpfyi5d21f0qa1v"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "MIT Regression Tester")
+ (description
+ "RT provides a framework for writing regression test suites.")
+ (home-page "https://github.com/sharplispers/nibbles")
+ (license license:unlicense)))
+
+(define-public cl-rt
+ (sbcl-package->cl-source-package sbcl-rt))
+
+(define-public ecl-rt
+ (sbcl-package->ecl-package sbcl-rt))
+
+(define-public sbcl-nibbles
+ (package
+ (name "sbcl-nibbles")
+ (version "0.14")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sharplispers/nibbles/")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "1v7qfgpvdr6nz7v63dj69d26dis0kff3rd8xamr1llfdvza2pm8f"))
+ (file-name (git-file-name "nibbles" version))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ ;; Tests only.
+ `(("rt" ,sbcl-rt)))
+ (synopsis "Common Lisp library for accessing octet-addressed blocks of data")
+ (description
+ "When dealing with network protocols and file formats, it's common to
+have to read or write 16-, 32-, or 64-bit datatypes in signed or unsigned
+flavors. Common Lisp sort of supports this by specifying :element-type for
+streams, but that facility is underspecified and there's nothing similar for
+read/write from octet vectors. What most people wind up doing is rolling their
+own small facility for their particular needs and calling it a day.
+
+This library attempts to be comprehensive and centralize such
+facilities. Functions to read 16-, 32-, and 64-bit quantities from octet
+vectors in signed or unsigned flavors are provided; these functions are also
+SETFable. Since it's sometimes desirable to read/write directly from streams,
+functions for doing so are also provided. On some implementations,
+reading/writing IEEE singles/doubles (i.e. single-float and double-float) will
+also be supported.")
+ (home-page "https://github.com/sharplispers/nibbles")
+ (license license:bsd-3)))
+
+(define-public cl-nibbles
+ (sbcl-package->cl-source-package sbcl-nibbles))
+
+(define-public ecl-nibbles
+ (sbcl-package->ecl-package sbcl-nibbles))
+
+(define-public sbcl-ironclad
+ (package
+ (name "sbcl-ironclad")
+ (version "0.42")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sharplispers/ironclad/")
+ (commit (string-append "v" version))))
+ (sha256
+ (base32
+ "1wjcb9vpybxjrmch7f7s78a5abxmnknbd4fl49dl5lz8a3fc8vf0"))
+ (file-name (string-append "ironblad" version "-checkout"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ ;; Tests only.
+ `(("rt" ,sbcl-rt)))
+ (inputs
+ `(("flexi-streams" ,sbcl-flexi-streams)
+ ("nibbles" ,sbcl-nibbles)))
+ (synopsis "Cryptographic toolkit written in Common Lisp")
+ (description
+ "Ironclad is a cryptography library written entirely in Common Lisp.
+It includes support for several popular ciphers, digests, MACs and public key
+cryptography algorithms. For several implementations that support Gray
+streams, support is included for convenient stream wrappers.")
+ (home-page "https://github.com/sharplispers/ironclad")
+ (license license:bsd-3)))
+
+(define-public cl-ironclad
+ (sbcl-package->cl-source-package sbcl-ironclad))
+
+(define-public ecl-ironclad
+ (sbcl-package->ecl-package sbcl-ironclad))
+
+(define-public sbcl-named-readtables
+ (let ((commit "4dfb89fa1af6b305b6492b8af042f5190c11e9fc")
+ (revision "1"))
+ (package
+ (name "sbcl-named-readtables")
+ (version (string-append "0.9-" revision "." (string-take commit 7)))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/melisgl/named-readtables.git")
+ (commit commit)))
+ (sha256
+ (base32 "083kgh5462iqbb4px6kq8s7sggvpvkm36hx4qi9rnaw53b6ilqkk"))
+ (file-name (git-file-name "named-readtables" version))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ ;; Tests seem to be broken.
+ `(#:tests? #f))
+ (home-page "https://github.com/melisgl/named-readtables/")
+ (synopsis "Library that creates a namespace for named readtables")
+ (description "Named readtables is a library that creates a namespace for
+named readtables, which is akin to package namespacing in Common Lisp.")
+ (license license:bsd-3))))
+
+(define-public cl-named-readtables
+ (sbcl-package->cl-source-package sbcl-named-readtables))
+
+(define-public ecl-named-readtables
+ (sbcl-package->ecl-package sbcl-named-readtables))
+
+(define-public sbcl-pythonic-string-reader
+ (let ((commit "47a70ba1e32362e03dad6ef8e6f36180b560f86a"))
+ (package
+ (name "sbcl-pythonic-string-reader")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/smithzvk/pythonic-string-reader/")
+ (commit commit)))
+ (sha256
+ (base32 "1b5iryqw8xsh36swckmz8rrngmc39k92si33fgy5pml3n9l5rq3j"))
+ (file-name (git-file-name "pythonic-string-reader" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("named-readtables" ,sbcl-named-readtables)))
+ (home-page "https://github.com/smithzvk/pythonic-string-reader")
+ (synopsis "Read table modification inspired by Python's three quote strings")
+ (description "This piece of code sets up some reader macros that make it
+simpler to input string literals which contain backslashes and double quotes
+This is very useful for writing complicated docstrings and, as it turns out,
+writing code that contains string literals that contain code themselves.")
+ (license license:bsd-3))))
+
+(define-public cl-pythonic-string-reader
+ (sbcl-package->cl-source-package sbcl-pythonic-string-reader))
+
+(define-public ecl-pythonic-string-reader
+ (sbcl-package->ecl-package sbcl-pythonic-string-reader))
+
+(define-public sbcl-slime-swank
+ (package
+ (name "sbcl-slime-swank")
+ (version "2.22")
+ (source
+ (origin
+ (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ ;; (url "https://github.com/slime/slime/")
+ ;; (commit "841f61467c03dea9f38ff9d5af0e21a8aa29e8f7")
+ ;; REVIEW: Do we need sionescu's patch to package SWANK?
+ (url "https://github.com/sionescu/slime/")
+ ;; (commit "swank-asdf")
+ (commit "2f7c3fcb3ac7d50d844d5c6ca0e89b52a45e1d3a")))
+ (sha256
+ (base32
+ ;; "065bc4y6iskazdfwlhgcjlzg9bi2hyjbhmyjw3461506pgkj08vi"
+ "0pkmg94wn4ii1zhlrncn44mdc5i6c5v0i9gbldx4dwl2yy7ibz5c"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (substitute* "contrib/swank-listener-hooks.lisp"
+ ((":compile-toplevel :load-toplevel ") ""))
+ (substitute* "contrib/swank-presentations.lisp"
+ ((":compile-toplevel :load-toplevel ") ""))
+ (substitute* "swank.asd"
+ ((":file \"packages\".*" all)
+ (string-append all "(:file \"swank-loader-asdf\")\n")))
+ (substitute* "swank-loader-asdf.lisp"
+ ((":common-lisp" all) (string-append all " #:asdf")))
+ #t))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:asd-file "swank.asd"
+ #:asd-system-name "swank"))
+ (home-page "https://github.com/slime/slime")
+ (synopsis "Common Lisp Swank server")
+ (description
+ "This is only useful if you want to start a Swank server in a Lisp
+processes that doesn't run under Emacs. Lisp processes created by
+@command{M-x slime} automatically start the server.")
+ (license (list license:gpl2+ license:public-domain))))
+
+(define-public sbcl-mgl-pax
+ (let ((commit "818448418d6b9de74620f606f5b23033c6082769"))
+ (package
+ (name "sbcl-mgl-pax")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/melisgl/mgl-pax")
+ (commit commit)))
+ (sha256
+ (base32
+ "1p97zfkh130bdxqqxwaw2j9psv58751wakx7czbfpq410lg7dd7i"))
+ (file-name (git-file-name "mgl-pax" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("3bmd" ,sbcl-3bmd)
+ ("3bmd-ext-code-blocks" ,sbcl-3bmd-ext-code-blocks)
+ ("babel" ,sbcl-babel)
+ ("cl-fad" ,sbcl-cl-fad)
+ ("ironclad" ,sbcl-ironclad)
+ ("named-readtables" ,sbcl-named-readtables)
+ ("pythonic-string-reader" ,sbcl-pythonic-string-reader)
+ ("swank" ,sbcl-slime-swank)))
+ (synopsis "Exploratory programming environment and documentation generator")
+ (description
+ "PAX provides an extremely poor man's Explorable Programming
+environment. Narrative primarily lives in so called sections that mix markdown
+docstrings with references to functions, variables, etc, all of which should
+probably have their own docstrings.
+
+The primary focus is on making code easily explorable by using SLIME's
+@command{M-.} (@command{slime-edit-definition}). See how to enable some
+fanciness in Emacs Integration. Generating documentation from sections and all
+the referenced items in Markdown or HTML format is also implemented.
+
+With the simplistic tools provided, one may accomplish similar effects as with
+Literate Programming, but documentation is generated from code, not vice versa
+and there is no support for chunking yet. Code is first, code must look
+pretty, documentation is code.")
+ (home-page "http://quotenil.com/")
+ (license license:expat))))
+
+(define-public cl-mgl-pax
+ (sbcl-package->cl-source-package sbcl-mgl-pax))
+
+(define-public ecl-mgl-pax
+ (sbcl-package->ecl-package sbcl-mgl-pax))
+
+(define-public sbcl-lisp-unit
+ (let ((commit "89653a232626b67400bf9a941f9b367da38d3815"))
+ (package
+ (name "sbcl-lisp-unit")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/OdonataResearchLLC/lisp-unit")
+ (commit commit)))
+ (sha256
+ (base32
+ "0p6gdmgr7p383nvd66c9y9fp2bjk4jx1lpa5p09g43hr9y9pp9ry"))
+ (file-name (git-file-name "lisp-unit" version))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Common Lisp Test framework inspired by JUnit to be simple of use")
+ (description
+ "@command{lisp-unit} is a Common Lisp library that supports unit
+testing. It is an extension of the library written by Chris Riesbeck.")
+ (home-page "https://github.com/OdonataResearchLLC/lisp-unit")
+ (license license:expat))))
+
+(define-public cl-lisp-unit
+ (sbcl-package->cl-source-package sbcl-lisp-unit))
+
+(define-public ecl-lisp-unit
+ (sbcl-package->ecl-package sbcl-lisp-unit))
+
+(define-public sbcl-anaphora
+ (package
+ (name "sbcl-anaphora")
+ (version "0.9.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tokenrove/anaphora")
+ (commit version)))
+ (sha256
+ (base32
+ "19wfrk3asimznkli0x2rfy637hwpdgqyvwj3vhq9x7vjvyf5vv6x"))
+ (file-name (git-file-name "anaphora" version))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("rt" ,sbcl-rt)))
+ (synopsis "The anaphoric macro collection from Hell")
+ (description
+ "Anaphora is the anaphoric macro collection from Hell: it includes many
+new fiends in addition to old friends like @command{aif} and
+@command{awhen}.")
+ (home-page "https://github.com/tokenrove/anaphora")
+ (license license:public-domain)))
+
+(define-public cl-anaphora
+ (sbcl-package->cl-source-package sbcl-anaphora))
+
+(define-public ecl-anaphora
+ (sbcl-package->ecl-package sbcl-anaphora))
+
+(define-public sbcl-lift
+ (let ((commit "7d49a66c62759535624037826891152223d4206c"))
+ (package
+ (name "sbcl-lift")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gwkkwg/lift")
+ (commit commit)))
+ (sha256
+ (base32
+ "127v5avpz1i4m0lkaxqrq8hrl69rdazqaxf6s8awf0nd7wj2g4dp"))
+ (file-name (git-file-name "lift" version))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Don't keep the bundled website
+ `(begin
+ (delete-file-recursively "website")
+ #t))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ ;; The tests require a debugger, but we run with the debugger disabled.
+ '(#:tests? #f))
+ (synopsis "LIsp Framework for Testing")
+ (description
+ "The LIsp Framework for Testing (LIFT) is a unit and system test tool for LISP.
+Though inspired by SUnit and JUnit, it's built with Lisp in mind. In LIFT,
+testcases are organized into hierarchical testsuites each of which can have
+its own fixture. When run, a testcase can succeed, fail, or error. LIFT
+supports randomized testing, benchmarking, profiling, and reporting.")
+ (home-page "https://github.com/gwkkwg/lift")
+ (license license:expat))))
+
+(define-public cl-lift
+ (sbcl-package->cl-source-package sbcl-lift))
+
+(define-public ecl-lift
+ (sbcl-package->ecl-package sbcl-lift))
+
+(define-public sbcl-let-plus
+ (let ((commit "5f14af61d501ecead02ec6b5a5c810efc0c9fdbb"))
+ (package
+ (name "sbcl-let-plus")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/sharplispers/let-plus")
+ (commit commit)))
+ (sha256
+ (base32
+ "0i050ca2iys9f5mb7dgqgqdxfnc3b0rnjdwv95sqd490vkiwrsaj"))
+ (file-name (git-file-name "let-plus" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("anaphora" ,sbcl-anaphora)))
+ (native-inputs
+ `(("lift" ,sbcl-lift)))
+ (synopsis "Destructuring extension of let*")
+ (description
+ "This library implements the let+ macro, which is a dectructuring
+extension of let*. It features:
+
+@itemize
+@item Clean, consistent syntax and small implementation (less than 300 LOC,
+not counting tests)
+@item Placeholder macros allow editor hints and syntax highlighting
+@item @command{&ign} for ignored values (in forms where that makes sense)
+@item Very easy to extend
+@end itemize\n")
+ (home-page "https://github.com/sharplispers/let-plus")
+ (license license:boost1.0))))
+
+(define-public cl-let-plus
+ (sbcl-package->cl-source-package sbcl-let-plus))
+
+(define-public ecl-let-plus
+ (sbcl-package->ecl-package sbcl-let-plus))
+
+(define-public sbcl-cl-colors
+ (let ((commit "827410584553f5c717eec6182343b7605f707f75"))
+ (package
+ (name "sbcl-cl-colors")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/tpapp/cl-colors")
+ (commit commit)))
+ (sha256
+ (base32
+ "0l446lday4hybsm9bq3jli97fvv8jb1d33abg79vbylpwjmf3y9a"))
+ (file-name (git-file-name "cl-colors" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("let-plus" ,sbcl-let-plus)))
+ (synopsis "Simple color library for Common Lisp")
+ (description
+ "This is a very simple color library for Common Lisp, providing
+
+@itemize
+@item Types for representing colors in HSV and RGB spaces.
+@item Simple conversion functions between the above types (and also
+hexadecimal representation for RGB).
+@item Some predefined colors (currently X11 color names – of course the
+library does not depend on X11).Because color in your terminal is nice.
+@end itemize
+
+This library is no longer supported by its author.")
+ (home-page "https://github.com/tpapp/cl-colors")
+ (license license:boost1.0))))
+
+(define-public cl-colors
+ (sbcl-package->cl-source-package sbcl-cl-colors))
+
+(define-public ecl-cl-colors
+ (sbcl-package->ecl-package sbcl-cl-colors))
+
+(define-public sbcl-cl-ansi-text
+ (let ((commit "53badf7878f27f22f2d4a2a43e6df458e43acbe9"))
+ (package
+ (name "sbcl-cl-ansi-text")
+ (version (git-version "1.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pnathan/cl-ansi-text")
+ (commit commit)))
+ (sha256
+ (base32
+ "11i27n0dbz5lmygiw65zzr8lx0rac6b6yysqranphn31wls6ja3v"))
+ (file-name (git-file-name "cl-ansi-text" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-colors" ,sbcl-cl-colors)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (synopsis "ANSI terminal color implementation for Common Lisp")
+ (description
+ "@command{cl-ansi-text} provides utilities which enable printing to an
+ANSI terminal with colored text. It provides the macro @command{with-color}
+which causes everything printed in the body to be displayed with the provided
+color. It further provides functions which will print the argument with the
+named color.")
+ (home-page "https://github.com/pnathan/cl-ansi-text")
+ ;; REVIEW: The actual license is LLGPL. Should we add it to Guix?
+ (license license:lgpl3+))))
+
+(define-public cl-ansi-text
+ (sbcl-package->cl-source-package sbcl-cl-ansi-text))
+
+(define-public ecl-cl-ansi-text
+ (sbcl-package->ecl-package sbcl-cl-ansi-text))
+
+(define-public sbcl-prove-asdf
+ (let ((commit "4f9122bd393e63c5c70c1fba23070622317cfaa0"))
+ (package
+ (name "sbcl-prove-asdf")
+ (version (git-version "1.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fukamachi/prove")
+ (commit commit)))
+ (sha256
+ (base32
+ "07sbfw459z8bbjvx1qlmfa8qk2mvbjnnzi2mi0x72blaj8bkl4vc"))
+ (file-name (git-file-name "prove" version))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(#:asd-file "prove-asdf.asd"))
+ (synopsis "Test requirement for the Common Lisp 'prove' library")
+ (description
+ "Test requirement for the Common Lisp @command{prove} library.")
+ (home-page "https://github.com/fukamachi/prove")
+ (license license:expat))))
+
+(define-public cl-prove-asdf
+ (sbcl-package->cl-source-package sbcl-prove-asdf))
+
+(define-public ecl-prove-asdf
+ (sbcl-package->ecl-package sbcl-prove-asdf))
+
+(define-public sbcl-prove
+ (package
+ (inherit sbcl-prove-asdf)
+ (name "sbcl-prove")
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("cl-ansi-text" ,sbcl-cl-ansi-text)))
+ (native-inputs
+ `(("prove-asdf" ,sbcl-prove-asdf)))
+ (arguments
+ `(#:asd-file "prove.asd"))
+ (synopsis "Yet another unit testing framework for Common Lisp")
+ (description
+ "This project was originally called @command{cl-test-more}.
+@command{prove} is yet another unit testing framework for Common Lisp. The
+advantages of @command{prove} are:
+
+@itemize
+@item Various simple functions for testing and informative error messages
+@item ASDF integration
+@item Extensible test reporters
+@item Colorizes the report if it's available (note for SLIME)
+@item Reports test durations
+@end itemize\n")))
+
+(define-public cl-prove
+ (sbcl-package->cl-source-package sbcl-prove))
+
+(define-public ecl-prove
+ (sbcl-package->ecl-package sbcl-prove))
+
+(define-public sbcl-proc-parse
+ (let ((commit "ac3636834d561bdc2686c956dbd82494537285fd"))
+ (package
+ (name "sbcl-proc-parse")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/fukamachi/proc-parse")
+ (commit commit)))
+ (sha256
+ (base32
+ "06rnl0h4cx6xv2wj3jczmmcxqn2703inmmvg1s4npbghmijsybfh"))
+ (file-name (git-file-name "proc-parse" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("babel" ,sbcl-babel)))
+ (native-inputs
+ `(("prove" ,sbcl-prove)
+ ("prove-asdf" ,sbcl-prove-asdf)))
+ (arguments
+ ;; TODO: Tests don't find "proc-parse-test", why?
+ `(#:tests? #f))
+ (synopsis "Procedural vector parser")
+ (description
+ "This is a string/octets parser library for Common Lisp with speed and
+readability in mind. Unlike other libraries, the code is not a
+pattern-matching-like, but a char-by-char procedural parser.")
+ (home-page "https://github.com/fukamachi/proc-parse")
+ (license license:bsd-2))))
+
+(define-public cl-proc-parse
+ (sbcl-package->cl-source-package sbcl-proc-parse))
+
+(define-public ecl-proc-parse
+ (sbcl-package->ecl-package sbcl-proc-parse))
+
+(define-public sbcl-parse-float
+ (let ((commit "2aae569f2a4b2eb3bfb5401a959425dcf151b09c"))
+ (package
+ (name "sbcl-parse-float")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/soemraws/parse-float")
+ (commit commit)))
+ (sha256
+ (base32
+ "08xw8cchhmqcc0byng69m3f5a2izc9y2290jzz2k0qrbibp1fdk7"))
+ (file-name (git-file-name "proc-parse" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("babel" ,sbcl-babel)))
+ (native-inputs
+ `(("prove" ,sbcl-prove)
+ ("prove-asdf" ,sbcl-prove-asdf)))
+ (arguments
+ ;; TODO: Tests don't find "proc-parse-test", why?
+ `(#:tests? #f))
+ (synopsis "Parse a floating point value from a string in Common Lisp")
+ (description
+ "This package exports the following function to parse floating-point
+values from a string in Common Lisp.")
+ (home-page "https://github.com/soemraws/parse-float")
+ (license license:public-domain))))
+
+(define-public cl-parse-float
+ (sbcl-package->cl-source-package sbcl-parse-float))
+
+(define-public ecl-parse-float
+ (sbcl-package->ecl-package sbcl-parse-float))
+
+(define-public sbcl-ascii-strings
+ (let ((revision "1")
+ (changeset "5048480a61243e6f1b02884012c8f25cdbee6d97"))
+ (package
+ (name "sbcl-ascii-strings")
+ (version (string-append "0-" revision "." (string-take changeset 7)))
+ (source
+ (origin
+ (method hg-fetch)
+ (uri (hg-reference
+ (url "https://bitbucket.org/vityok/cl-string-match/")
+ (changeset changeset)))
+ (sha256
+ (base32
+ "01wn5qx562w43ssy92xlfgv79w7p0nv0wbl76mpmba131n9ziq2y"))
+ (file-name (git-file-name "cl-string-match" version))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("babel" ,sbcl-babel)))
+ (arguments
+ `(#:asd-file "ascii-strings.asd"))
+ (synopsis "Operations on ASCII strings")
+ (description
+ "Operations on ASCII strings. Essentially this can be any kind of
+single-byte encoded strings.")
+ (home-page "https://bitbucket.org/vityok/cl-string-match/")
+ (license license:bsd-3))))
+
+(define-public cl-ascii-strings
+ (sbcl-package->cl-source-package sbcl-ascii-strings))
+
+(define-public ecl-ascii-strings
+ (sbcl-package->ecl-package sbcl-ascii-strings))
+
+(define-public sbcl-simple-scanf
+ (package
+ (inherit sbcl-ascii-strings)
+ (name "sbcl-simple-scanf")
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("iterate" ,sbcl-iterate)
+ ("proc-parse" ,sbcl-proc-parse)
+ ("parse-float" ,sbcl-parse-float)))
+ (arguments
+ `(#:asd-file "simple-scanf.asd"))
+ (synopsis "Simple scanf-like functionality implementation")
+ (description
+ "A simple scanf-like functionality implementation.")))
+
+(define-public cl-simple-scanf
+ (sbcl-package->cl-source-package sbcl-simple-scanf))
+
+(define-public ecl-simple-scanf
+ (sbcl-package->ecl-package sbcl-simple-scanf))
+
+(define-public sbcl-cl-string-match
+ (package
+ (inherit sbcl-ascii-strings)
+ (name "sbcl-cl-string-match")
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("ascii-strings" ,sbcl-ascii-strings)
+ ("yacc" ,sbcl-cl-yacc)
+ ("jpl-util" ,sbcl-jpl-util)
+ ("jpl-queues" ,sbcl-jpl-queues)
+ ("mgl-pax" ,sbcl-mgl-pax)
+ ("iterate" ,sbcl-iterate)))
+ ;; TODO: Tests are not evaluated properly.
+ (native-inputs
+ ;; For testing:
+ `(("lisp-unit" ,sbcl-lisp-unit)
+ ("simple-scanf" ,sbcl-simple-scanf)))
+ (arguments
+ `(#:tests? #f
+ #:asd-file "cl-string-match.asd"))
+ (synopsis "Portable, dependency-free set of utilities to manipulate strings in Common Lisp")
+ (description
+ "@command{cl-strings} is a small, portable, dependency-free set of
+utilities that make it even easier to manipulate text in Common Lisp. It has
+100% test coverage and works at least on sbcl, ecl, ccl, abcl and clisp.")))
+
+(define-public cl-string-match
+ (sbcl-package->cl-source-package sbcl-cl-string-match))
+
+(define-public ecl-cl-string-match
+ (sbcl-package->ecl-package sbcl-cl-string-match))
+
+(define-public sbcl-ptester
+ (package
+ (name "sbcl-ptester")
+ (version "20160929")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://beta.quicklisp.org/archive/ptester/"
+ (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
+ "/ptester-"
+ version
+ "-git.tgz"))
+ (sha256
+ (base32
+ "04rlq1zljhxc65pm31bah3sq3as24l0sdivz440s79qlnnyh13hz"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "http://quickdocs.org/ptester/")
+ (synopsis "Portable test harness package")
+ (description
+ "@command{ptester} is a portable testing framework based on Franz's
+tester module.")
+ (license license:lgpl3+)))
+
+(define-public cl-ptester
+ (sbcl-package->cl-source-package sbcl-ptester))
+
+(define-public ecl-ptester
+ (sbcl-package->ecl-package sbcl-ptester))
+
+(define-public sbcl-puri
+ (package
+ (name "sbcl-puri")
+ (version "20180228")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://beta.quicklisp.org/archive/puri/"
+ (date->string (string->date version "~Y~m~d") "~Y-~m-~d")
+ "/puri-"
+ version
+ "-git.tgz"))
+ (sha256
+ (base32
+ "1s4r5adrjy5asry45xbcbklxhdjydvf6n55z897nvyw33bigrnbz"))))
+ (build-system asdf-build-system/sbcl)
+ ;; REVIEW: Webiste down?
+ (native-inputs
+ `(("ptester" ,sbcl-ptester)))
+ (home-page "http://files.kpe.io/puri/")
+ (synopsis "Portable URI Library")
+ (description
+ "This is portable Universal Resource Identifier library for Common Lisp
+programs. It parses URI according to the RFC 2396 specification")
+ (license license:lgpl3+)))
+
+(define-public cl-puri
+ (sbcl-package->cl-source-package sbcl-puri))
+
+(define-public ecl-puri
+ (sbcl-package->ecl-package sbcl-puri))
+
+(define-public sbcl-queues
+ (let ((commit "47d4da65e9ea20953b74aeeab7e89a831b66bc94"))
+ (package
+ (name "sbcl-queues")
+ (version (git-version "0.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/oconnore/queues")
+ (commit commit)))
+ (file-name (git-file-name "queues" version))
+ (sha256
+ (base32
+ "0wdhfnzi4v6d97pggzj2aw55si94w4327br94jrmyvwf351wqjvv"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/oconnore/queues")
+ (synopsis "Common Lisp queue library")
+ (description
+ "This is a simple queue library for Common Lisp with features such as
+non-consing thread safe queues and fibonacci priority queues.")
+ (license license:expat))))
+
+(define-public cl-queues
+ (sbcl-package->cl-source-package sbcl-queues))
+
+(define-public ecl-queues
+ (sbcl-package->ecl-package sbcl-queues))
+
+(define-public sbcl-queues.simple-queue
+ (package
+ (inherit sbcl-queues)
+ (name "sbcl-queues.simple-queue")
+ (inputs
+ `(("sbcl-queues" ,sbcl-queues)))
+ (arguments
+ `(#:asd-file "queues.simple-queue.asd"))
+ (synopsis "Simple queue implementation")
+ (description
+ "This is a simple queue library for Common Lisp with features such as
+non-consing thread safe queues and fibonacci priority queues.")
+ (license license:expat)))
+
+(define-public cl-queues.simple-queue
+ (sbcl-package->cl-source-package sbcl-queues.simple-queue))
+
+(define-public ecl-queues.simple-queue
+ (sbcl-package->ecl-package sbcl-queues.simple-queue))
+
+(define-public sbcl-queues.simple-cqueue
+ (package
+ (inherit sbcl-queues)
+ (name "sbcl-queues.simple-cqueue")
+ (inputs
+ `(("sbcl-queues" ,sbcl-queues)
+ ("sbcl-queues.simple-queue" ,sbcl-queues.simple-queue)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)))
+ (arguments
+ `(#:asd-file "queues.simple-cqueue.asd"))
+ (synopsis "Thread safe queue implementation")
+ (description
+ "This is a simple queue library for Common Lisp with features such as
+non-consing thread safe queues and fibonacci priority queues.")
+ (license license:expat)))
+
+(define-public cl-queues.simple-cqueue
+ (sbcl-package->cl-source-package sbcl-queues.simple-cqueue))
+
+(define-public ecl-queues.simple-cqueue
+ (sbcl-package->ecl-package sbcl-queues.simple-cqueue))
+
+(define-public sbcl-queues.priority-queue
+ (package
+ (inherit sbcl-queues)
+ (name "sbcl-queues.priority-queue")
+ (inputs
+ `(("sbcl-queues" ,sbcl-queues)))
+ (arguments
+ `(#:asd-file "queues.priority-queue.asd"))
+ (synopsis "Priority queue (Fibonacci) implementation")
+ (description
+ "This is a simple queue library for Common Lisp with features such as
+non-consing thread safe queues and fibonacci priority queues.")
+ (license license:expat)))
+
+(define-public cl-queues.priority-queue
+ (sbcl-package->cl-source-package sbcl-queues.priority-queue))
+
+(define-public ecl-queues.priority-queue
+ (sbcl-package->ecl-package sbcl-queues.priority-queue))
+
+(define-public sbcl-queues.priority-cqueue
+ (package
+ (inherit sbcl-queues)
+ (name "sbcl-queues.priority-cqueue")
+ (inputs
+ `(("sbcl-queues" ,sbcl-queues)
+ ("sbcl-queues.priority-queue" ,sbcl-queues.priority-queue)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)))
+ (arguments
+ `(#:asd-file "queues.priority-cqueue.asd"))
+ (synopsis "Thread safe fibonacci priority queue implementation")
+ (description
+ "This is a simple queue library for Common Lisp with features such as
+non-consing thread safe queues and fibonacci priority queues.")
+ (license license:expat)))
+
+(define-public cl-queues.priority-cqueue
+ (sbcl-package->cl-source-package sbcl-queues.priority-cqueue))
+
+(define-public ecl-queues.priority-cqueue
+ (sbcl-package->ecl-package sbcl-queues.priority-cqueue))
+
+(define sbcl-cffi-bootstrap
+ (package
+ (name "sbcl-cffi-bootstrap")
+ (version "0.19.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/cffi/cffi/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32 "07bc3c1fbfx17wgrvx6bh9byilfzfwv5n597cfdllm0vzwvbmiyk"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("libffi" ,libffi)
+ ("alexandria" ,sbcl-alexandria)
+ ("babel" ,sbcl-babel)
+ ("trivial-features" ,sbcl-trivial-features)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "libffi/libffi.lisp"
+ (("libffi.so.6" all) (string-append
+ (assoc-ref inputs "libffi")
+ "/lib/" all)))
+ (substitute* "toolchain/c-toolchain.lisp"
+ (("\"cc\"") (format #f "~S" (which "gcc")))))))
+ #:asd-system-name "cffi"
+ #:tests? #f))
+ (home-page "https://common-lisp.net/project/cffi/")
+ (synopsis "Common Foreign Function Interface for Common Lisp")
+ (description "The Common Foreign Function Interface (CFFI)
+purports to be a portable foreign function interface for Common Lisp.
+The CFFI library is composed of a Lisp-implementation-specific backend
+in the CFFI-SYS package, and a portable frontend in the CFFI
+package.")
+ (license license:expat)))
+
+(define-public sbcl-cffi-toolchain
+ (package
+ (inherit sbcl-cffi-bootstrap)
+ (name "sbcl-cffi-toolchain")
+ (inputs
+ `(("libffi" ,libffi)
+ ("sbcl-cffi" ,sbcl-cffi-bootstrap)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-cffi-bootstrap)
+ ((#:asd-system-name _) #f)
+ ((#:tests? _) #t)))))
+
+(define-public sbcl-cffi-libffi
+ (package
+ (inherit sbcl-cffi-toolchain)
+ (name "sbcl-cffi-libffi")
+ (inputs
+ `(("cffi" ,sbcl-cffi-bootstrap)
+ ("cffi-grovel" ,sbcl-cffi-grovel)
+ ("trivial-features" ,sbcl-trivial-features)
+ ("libffi" ,libffi)))))
+
+(define-public sbcl-cffi-grovel
+ (package
+ (inherit sbcl-cffi-toolchain)
+ (name "sbcl-cffi-grovel")
+ (inputs
+ `(("libffi" ,libffi)
+ ("cffi" ,sbcl-cffi-bootstrap)
+ ("cffi-toolchain" ,sbcl-cffi-toolchain)
+ ("alexandria" ,sbcl-alexandria)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments sbcl-cffi-toolchain)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'build 'install-headers
+ (lambda* (#:key outputs #:allow-other-keys)
+ (install-file "grovel/common.h"
+ (string-append
+ (assoc-ref outputs "out")
+ "/include/grovel"))))))))))
+
+(define-public sbcl-cffi
+ (package
+ (inherit sbcl-cffi-toolchain)
+ (name "sbcl-cffi")
+ (inputs (package-inputs sbcl-cffi-bootstrap))
+ (native-inputs
+ `(("cffi-grovel" ,sbcl-cffi-grovel)
+ ("cffi-libffi" ,sbcl-cffi-libffi)
+ ("rt" ,sbcl-rt)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ,@(package-native-inputs sbcl-cffi-bootstrap)))))
+
+(define-public sbcl-cl-sqlite
+ (let ((commit "c738e66d4266ef63a1debc4ef4a1b871a068c112"))
+ (package
+ (name "sbcl-cl-sqlite")
+ (version (git-version "0.2" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dmitryvk/cl-sqlite")
+ (commit commit)))
+ (file-name (git-file-name "cl-sqlite" version))
+ (sha256
+ (base32
+ "1ng45k1hdb84sqjryrfx93g66bsbybmpy301wd0fdybnc5jzr36q"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("iterate" ,sbcl-iterate)
+ ("cffi" ,sbcl-cffi)
+ ("sqlite" ,sqlite)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)))
+ (arguments
+ `(#:tests? #f ; Upstream seems to have issues with tests: https://github.com/dmitryvk/cl-sqlite/issues/7
+ #:asd-file "sqlite.asd"
+ #:asd-system-name "sqlite"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "sqlite-ffi.lisp"
+ (("libsqlite3" all) (string-append
+ (assoc-ref inputs "sqlite")"/lib/" all))))))))
+ (home-page "https://common-lisp.net/project/cl-sqlite/")
+ (synopsis "Common Lisp binding for SQLite")
+ (description
+ "The @command{cl-sqlite} package is an interface to the SQLite embedded
+relational database engine.")
+ (license license:public-domain))))
+
+(define-public sbcl-parenscript
+ (let ((commit "061d8e286c81c3f45c84fb2b11ee7d83f590a8f8"))
+ (package
+ (name "sbcl-parenscript")
+ (version (git-version "2.6" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.common-lisp.net/parenscript/parenscript")
+ (commit commit)))
+ (file-name (git-file-name "parenscript" version))
+ (sha256
+ (base32
+ "1kbhgsjbikc73m5cwdp4d4fdafyqcr1b7b630qjrziql0nh6mi3k"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cl-ppcre" ,sbcl-cl-ppcre)
+ ("anaphora" ,sbcl-anaphora)
+ ("named-readtables" ,sbcl-named-readtables)))
+ (home-page "https://common-lisp.net/project/parenscript/")
+ (synopsis "Translator from a subset of Common Lisp to JavaScript")
+ (description
+ "Parenscript is a translator from an extended subset of Common Lisp to
+JavaScript. Parenscript code can run almost identically on both the
+browser (as JavaScript) and server (as Common Lisp).
+
+Parenscript code is treated the same way as Common Lisp code, making the full
+power of Lisp macros available for JavaScript. This provides a web
+development environment that is unmatched in its ability to reduce code
+duplication and provide advanced meta-programming facilities to web
+developers.
+
+At the same time, Parenscript is different from almost all other \"language
+X\" to JavaScript translators in that it imposes almost no overhead:
+
+@itemize
+@item No run-time dependencies: Any piece of Parenscript code is runnable
+as-is. There are no JavaScript files to include.
+@item Native types: Parenscript works entirely with native JavaScript data
+types. There are no new types introduced, and object prototypes are not
+touched.
+@item Native calling convention: Any JavaScript code can be called without the
+need for bindings. Likewise, Parenscript can be used to make efficient,
+self-contained JavaScript libraries.
+@item Readable code: Parenscript generates concise, formatted, idiomatic
+JavaScript code. Identifier names are preserved. This enables seamless
+debugging in tools like Firebug.
+@item Efficiency: Parenscript introduces minimal overhead for advanced Common
+Lisp features. The generated code is almost as fast as hand-written
+JavaScript.
+@end itemize\n")
+ (license license:bsd-3))))
+
+(define-public cl-parenscript
+ (sbcl-package->cl-source-package sbcl-parenscript))
+
+(define-public ecl-parenscript
+ (sbcl-package->ecl-package sbcl-parenscript))
+
+(define-public sbcl-cl-json
+ (let ((commit "6dfebb9540bfc3cc33582d0c03c9ec27cb913e79"))
+ (package
+ (name "sbcl-cl-json")
+ (version (git-version "0.5" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/hankhero/cl-json")
+ (commit commit)))
+ (file-name (git-file-name "cl-json" version))
+ (sha256
+ (base32
+ "0fx3m3x3s5ji950yzpazz4s0img3l6b3d6l3jrfjv0lr702496lh"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (home-page "https://github.com/hankhero/cl-json")
+ (synopsis "JSON encoder and decoder for Common-Lisp")
+ (description
+ "@command{cl-json} provides an encoder of Lisp objects to JSON format
+and a corresponding decoder of JSON data to Lisp objects. Both the encoder
+and the decoder are highly customizable; at the same time, the default
+settings ensure a very simple mode of operation, similar to that provided by
+@command{yason} or @command{st-json}.")
+ (license license:expat))))
+
+(define-public cl-json
+ (sbcl-package->cl-source-package sbcl-cl-json))
+
+(define-public ecl-cl-json
+ (sbcl-package->ecl-package sbcl-cl-json))
+
+(define-public sbcl-unix-opts
+ (package
+ (name "sbcl-unix-opts")
+ (version "0.1.7")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/libre-man/unix-opts")
+ (commit version)))
+ (file-name (git-file-name "unix-opts" version))
+ (sha256
+ (base32
+ "08djdi1ard09fijb7w9bdmhmwd98b1hzmcnjw9fqjiqa0g3b44rr"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/hankhero/cl-json")
+ (synopsis "Unix-style command line options parser")
+ (description
+ "This is a minimalistic parser of command line options. The main
+advantage of the library is the ability to concisely define command line
+options once and then use this definition for parsing and extraction of
+command line arguments, as well as printing description of command line
+options (you get --help for free). This way you don't need to repeat
+yourself. Also, @command{unix-opts} doesn't depend on anything and allows to
+precisely control behavior of the parser via Common Lisp restarts.")
+ (license license:expat)))
+
+(define-public cl-unix-opts
+ (sbcl-package->cl-source-package sbcl-unix-opts))
+
+(define-public ecl-unix-opts
+ (sbcl-package->ecl-package sbcl-unix-opts))
+
+(define-public sbcl-trivial-garbage
+ (package
+ (name "sbcl-trivial-garbage")
+ (version "0.21")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/trivial-garbage/trivial-garbage/archive/v"
+ version ".tar.gz"))
+ (sha256
+ (base32 "0b244nlszkrqawsnp568clnx32xmvjmbbagbz7625w9n0yq7396y"))
+ (file-name (string-append "trivial-garbage-" version ".tar.gz"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("rt" ,sbcl-rt)))
+ (home-page "https://common-lisp.net/project/trivial-garbage/")
+ (synopsis "Portable GC-related APIs for Common Lisp")
+ (description "@command{trivial-garbage} provides a portable API to
+finalizers, weak hash-tables and weak pointers on all major implementations of
+the Common Lisp programming language.")
+ (license license:public-domain)))
+
+(define-public cl-trivial-garbage
+ (sbcl-package->cl-source-package sbcl-trivial-garbage))
+
+(define-public ecl-trivial-garbage
+ (sbcl-package->ecl-package sbcl-trivial-garbage))
+
+(define-public sbcl-closer-mop
+ (let ((commit "fac29ce90e3a46e1fc6cf182190e193526fa9dbc"))
+ (package
+ (name "sbcl-closer-mop")
+ (version (git-version "1.0.0" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pcostanza/closer-mop")
+ (commit commit)))
+ (sha256
+ (base32 "0hvh77y869h8fg9di5snyg85fxq6fdh9gj1igmx1g6j6j5x915dl"))
+ (file-name (git-file-name "closer-mop" version ))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/pcostanza/closer-mop")
+ (synopsis "Rectifies absent or incorrect CLOS MOP features")
+ (description "Closer to MOP is a compatibility layer that rectifies many
+of the absent or incorrect CLOS MOP features across a broad range of Common
+Lisp implementations.")
+ (license license:expat))))
+
+(define-public cl-closer-mop
+ (sbcl-package->cl-source-package sbcl-closer-mop))
+
+(define-public ecl-closer-mop
+ (sbcl-package->ecl-package sbcl-closer-mop))
+
+(define sbcl-cl-cffi-gtk-boot0
+ (let ((commit "29443c5aaca975709df8025c4649366d882033cb"))
+ (package
+ (name "sbcl-cl-cffi-gtk-boot0")
+ (version (git-version "0.11.2" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Ferada/cl-cffi-gtk/")
+ (commit commit)))
+ (file-name (git-file-name "cl-cffi-gtk" version))
+ (sha256
+ (base32
+ "0f6s92sf8xyzh1yksqx8bsy1sv0zmy0c13j3b8bavaba5hlxpxah"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("iterate" ,sbcl-iterate)
+ ("cffi" ,sbcl-cffi)
+ ("trivial-features" ,sbcl-trivial-features)))
+ (home-page "https://github.com/Ferada/cl-cffi-gtk/")
+ (synopsis "Common Lisp binding for GTK+3")
+ (description
+ "@command{cl-cffi-gtk} is a Lisp binding to GTK+ 3 (GIMP Toolkit) which
+is a library for creating graphical user interfaces.")
+ (license license:lgpl3))))
+
+(define-public sbcl-cl-cffi-gtk-glib
+ (package
+ (inherit sbcl-cl-cffi-gtk-boot0)
+ (name "sbcl-cl-cffi-gtk-glib")
+ (inputs
+ `(("glib" ,glib)
+ ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
+ (arguments
+ `(#:asd-file "glib/cl-cffi-gtk-glib.asd"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "glib/glib.init.lisp"
+ (("libglib|libgthread" all) (string-append
+ (assoc-ref inputs "glib") "/lib/" all))))))))))
+
+(define-public sbcl-cl-cffi-gtk-gobject
+ (package
+ (inherit sbcl-cl-cffi-gtk-boot0)
+ (name "sbcl-cl-cffi-gtk-gobject")
+ (inputs
+ `(("glib" ,glib)
+ ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
+ ("trivial-garbage" ,sbcl-trivial-garbage)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("closer-mop" ,sbcl-closer-mop)
+ ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
+ (arguments
+ `(#:asd-file "gobject/cl-cffi-gtk-gobject.asd"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "gobject/gobject.init.lisp"
+ (("libgobject" all) (string-append
+ (assoc-ref inputs "glib") "/lib/" all))))))))))
+
+(define-public sbcl-cl-cffi-gtk-gio
+ (package
+ (inherit sbcl-cl-cffi-gtk-boot0)
+ (name "sbcl-cl-cffi-gtk-gio")
+ (inputs
+ `(("glib" ,glib)
+ ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
+ ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
+ ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
+ (arguments
+ `(#:asd-file "gio/cl-cffi-gtk-gio.asd"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "gio/gio.init.lisp"
+ (("libgio" all)
+ (string-append
+ (assoc-ref inputs "glib") "/lib/" all))))))))))
+
+(define-public sbcl-cl-cffi-gtk-cairo
+ (package
+ (inherit sbcl-cl-cffi-gtk-boot0)
+ (name "sbcl-cl-cffi-gtk-cairo")
+ (inputs
+ `(("cairo" ,cairo)
+ ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
+ ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
+ (arguments
+ `(#:asd-file "cairo/cl-cffi-gtk-cairo.asd"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "cairo/cairo.init.lisp"
+ (("libcairo" all)
+ (string-append
+ (assoc-ref inputs "cairo") "/lib/" all))))))))))
+
+(define-public sbcl-cl-cffi-gtk-pango
+ (package
+ (inherit sbcl-cl-cffi-gtk-boot0)
+ (name "sbcl-cl-cffi-gtk-pango")
+ (inputs
+ `(("pango" ,pango)
+ ("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
+ ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
+ ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
+ ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
+ (arguments
+ `(#:asd-file "pango/cl-cffi-gtk-pango.asd"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "pango/pango.init.lisp"
+ (("libpango" all)
+ (string-append
+ (assoc-ref inputs "pango") "/lib/" all))))))))))
+
+(define-public sbcl-cl-cffi-gtk-gdk-pixbuf
+ (package
+ (inherit sbcl-cl-cffi-gtk-boot0)
+ (name "sbcl-cl-cffi-gtk-gdk-pixbuf")
+ (inputs
+ `(("gdk-pixbuf" ,gdk-pixbuf)
+ ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
+ ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
+ (arguments
+ `(#:asd-file "gdk-pixbuf/cl-cffi-gtk-gdk-pixbuf.asd"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "gdk-pixbuf/gdk-pixbuf.init.lisp"
+ (("libgdk_pixbuf" all)
+ (string-append
+ (assoc-ref inputs "gdk-pixbuf") "/lib/" all))))))))))
+
+(define-public sbcl-cl-cffi-gtk-gdk
+ (package
+ (inherit sbcl-cl-cffi-gtk-boot0)
+ (name "sbcl-cl-cffi-gtk-gdk")
+ (inputs
+ `(("gtk" ,gtk+)
+ ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
+ ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
+ ("cl-cffi-gtk-gdk-pixbuf" ,sbcl-cl-cffi-gtk-gdk-pixbuf)
+ ("cl-cffi-gtk-cairo" ,sbcl-cl-cffi-gtk-cairo)
+ ("cl-cffi-gtk-pango" ,sbcl-cl-cffi-gtk-pango)
+ ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
+ (arguments
+ `(#:asd-file "gdk/cl-cffi-gtk-gdk.asd"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "gdk/gdk.init.lisp"
+ (("libgdk" all)
+ (string-append
+ (assoc-ref inputs "gtk") "/lib/" all)))
+ (substitute* "gdk/gdk.package.lisp"
+ (("libgtk" all)
+ (string-append
+ (assoc-ref inputs "gtk") "/lib/" all))))))))))
+
+(define-public sbcl-cl-cffi-gtk
+ (package
+ (inherit sbcl-cl-cffi-gtk-boot0)
+ (name "sbcl-cl-cffi-gtk")
+ (inputs
+ `(("cl-cffi-gtk-glib" ,sbcl-cl-cffi-gtk-glib)
+ ("cl-cffi-gtk-gobject" ,sbcl-cl-cffi-gtk-gobject)
+ ("cl-cffi-gtk-gio" ,sbcl-cl-cffi-gtk-gio)
+ ("cl-cffi-gtk-gdk" ,sbcl-cl-cffi-gtk-gdk)
+ ,@(package-inputs sbcl-cl-cffi-gtk-boot0)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (arguments
+ `(#:asd-file "gtk/cl-cffi-gtk.asd"
+ #:test-asd-file "test/cl-cffi-gtk-test.asd"
+ ;; TODO: Tests fail with memory fault.
+ ;; See https://github.com/Ferada/cl-cffi-gtk/issues/24.
+ #:tests? #f))))
+
+(define-public sbcl-cl-webkit
+ (let ((commit "cd2a9008e0c152e54755e8a7f07b050fe36bab31"))
+ (package
+ (name "sbcl-cl-webkit")
+ (version (git-version "2.4" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jmercouris/cl-webkit")
+ (commit commit)))
+ (file-name (git-file-name "cl-webkit" version))
+ (sha256
+ (base32
+ "0f5lyn9i7xrn3g1bddga377mcbawkbxydijpg389q4n04gqj0vwf"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cffi" ,sbcl-cffi)
+ ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
+ ("webkitgtk" ,webkitgtk)))
+ (arguments
+ `(#:asd-file "webkit2/cl-webkit2.asd"
+ #:asd-system-name "cl-webkit2"
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "webkit2/webkit2.init.lisp"
+ (("libwebkit2gtk" all)
+ (string-append
+ (assoc-ref inputs "webkitgtk") "/lib/" all))))))))
+ (home-page "https://github.com/jmercouris/cl-webkit")
+ (synopsis "Binding to WebKitGTK+ for Common Lisp")
+ (description
+ "@command{cl-webkit} is a binding to WebKitGTK+ for Common Lisp,
+currently targeting WebKit version 2. The WebKitGTK+ library adds web
+browsing capabilities to an application, leveraging the full power of the
+WebKit browsing engine.")
+ (license license:expat))))
+
+(define-public sbcl-lparallel
+ (package
+ (name "sbcl-lparallel")
+ (version "2.8.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lmj/lparallel/")
+ (commit (string-append "lparallel-" version))))
+ (file-name (git-file-name "lparallel" version))
+ (sha256
+ (base32
+ "0g0aylrbbrqsz0ahmwhvnk4cmc2931fllbpcfgzsprwnqqd7vwq9"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("trivial-garbage" ,sbcl-trivial-garbage)))
+ (home-page "https://lparallel.org/")
+ (synopsis "Parallelism for Common Lisp")
+ (description
+ "@command{lparallel} is a library for parallel programming in Common
+Lisp, featuring:
+
+@itemize
+@item a simple model of task submission with receiving queue,
+@item constructs for expressing fine-grained parallelism,
+@item asynchronous condition handling across thread boundaries,
+@item parallel versions of map, reduce, sort, remove, and many others,
+@item promises, futures, and delayed evaluation constructs,
+@item computation trees for parallelizing interconnected tasks,
+@item bounded and unbounded FIFO queues,
+@item high and low priority tasks,
+@item task killing by category,
+@item integrated timeouts.
+@end itemize\n")
+ (license license:expat)))
+
+(define-public cl-lparallel
+ (sbcl-package->cl-source-package sbcl-lparallel))
+
+(define-public ecl-lparallel
+ (sbcl-package->ecl-package sbcl-lparallel))
+
+(define-public sbcl-cl-markup
+ (let ((commit "e0eb7debf4bdff98d1f49d0f811321a6a637b390"))
+ (package
+ (name "sbcl-cl-markup")
+ (version (git-version "0.1" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/arielnetworks/cl-markup/")
+ (commit commit)))
+ (file-name (git-file-name "cl-markup" version))
+ (sha256
+ (base32
+ "10l6k45971dl13fkdmva7zc6i453lmq9j4xax2ci6pjzlc6xjhp7"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/arielnetworks/cl-markup/")
+ (synopsis "Markup generation library for Common Lisp")
+ (description
+ "A modern markup generation library for Common Lisp that features:
+
+@itemize
+@item Fast (even faster through compiling the code)
+@item Safety
+@item Support for multiple document types (markup, xml, html, html5, xhtml)
+@item Output with doctype
+@item Direct output to stream
+@end itemize\n")
+ (license license:lgpl3+))))
+
+(define-public cl-markup
+ (sbcl-package->cl-source-package sbcl-cl-markup))
+
+(define-public ecl-cl-markup
+ (sbcl-package->ecl-package sbcl-cl-markup))
+
+(define-public sbcl-cl-css
+ (let ((commit "8fe654c8f0cf95b300718101cce4feb517f78e2f"))
+ (package
+ (name "sbcl-cl-css")
+ (version (git-version "0.1" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/inaimathi/cl-css/")
+ (commit commit)))
+ (file-name (git-file-name "cl-css" version))
+ (sha256
+ (base32
+ "1lc42zi2sw11fl2589sc19nr5sd2p0wy7wgvgwaggxa5f3ajhsmd"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://github.com/inaimathi/cl-css/")
+ (synopsis "Non-validating, inline CSS generator for Common Lisp")
+ (description
+ "This is a dead-simple, non validating, inline CSS generator for Common
+Lisp. Its goals are axiomatic syntax, simple implementation to support
+portability, and boilerplate reduction in CSS.")
+ (license license:expat))))
+
+(define-public cl-css
+ (sbcl-package->cl-source-package sbcl-cl-css))
+
+(define-public ecl-cl-markup
+ (sbcl-package->ecl-package sbcl-cl-css))
+
+(define-public sbcl-portable-threads
+ (let ((commit "c0e61a1faeb0583c80fd3f20b16cc4c555226920"))
+ (package
+ (name "sbcl-portable-threads")
+ (version (git-version "2.3" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/binghe/portable-threads/")
+ (commit commit)))
+ (file-name (git-file-name "portable-threads" version))
+ (sha256
+ (base32
+ "03fmxyarc0xf4kavwkfa0a2spkyfrz6hbgbi9y4q7ny5aykdyfaq"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ `(;; Tests seem broken.
+ #:tests? #f))
+ (home-page "https://github.com/binghe/portable-threads")
+ (synopsis "Portable threads (and scheduled and periodic functions) API for Common Lisp")
+ (description
+ "Portable Threads (and Scheduled and Periodic Functions) API for Common
+Lisp (from GBBopen project).")
+ (license license:asl2.0))))
+
+(define-public cl-portable-threads
+ (sbcl-package->cl-source-package sbcl-portable-threads))
+
+(define-public ecl-portable-threada
+ (sbcl-package->ecl-package sbcl-portable-threads))
+
+(define-public sbcl-usocket-boot0
+ ;; usocket's test rely on usocket-server which depends on usocket itself.
+ ;; We break this cyclic dependency with -boot0 that packages usocket.
+ (let ((commit "86e7efbfe50101931edf4b67cdcfa7e221ecfde9"))
+ (package
+ (name "sbcl-usocket-boot0")
+ (version (git-version "0.7.1" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/usocket/usocket/")
+ (commit commit)))
+ (file-name (git-file-name "usocket" version))
+ (sha256
+ (base32
+ "1lk6ipakrib7kdgzw44hrgmls9akp5pz4h35yynw0k5zwmmq6374"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("split-sequence" ,sbcl-split-sequence)))
+ (arguments
+ `(#:tests? #f
+ #:asd-system-name "usocket"))
+ (home-page "https://common-lisp.net/project/usocket/")
+ (synopsis "Universal socket library for Common Lisp (server side)")
+ (description
+ "This library strives to provide a portable TCP/IP and UDP/IP socket
+interface for as many Common Lisp implementations as possible, while keeping
+the abstraction and portability layer as thin as possible.")
+ (license license:expat))))
+
+(define-public sbcl-usocket-server
+ (package
+ (inherit sbcl-usocket-boot0)
+ (name "sbcl-usocket-server")
+ (inputs
+ `(("usocket" ,sbcl-usocket-boot0)
+ ("portable-threads" ,sbcl-portable-threads)))
+ (arguments
+ '(#:asd-system-name "usocket-server"))
+ (synopsis "Universal socket library for Common Lisp (server side)")))
+
+(define-public cl-usocket-server
+ (sbcl-package->cl-source-package sbcl-usocket-server))
+
+(define-public ecl-socket-server
+ (sbcl-package->ecl-package sbcl-usocket-server))
+
+(define-public sbcl-usocket
+ (package
+ (inherit sbcl-usocket-boot0)
+ (name "sbcl-usocket")
+ (arguments
+ ;; FIXME: Tests need network access?
+ `(#:tests? #f))
+ (native-inputs
+ ;; Testing only.
+ `(("usocket-server" ,sbcl-usocket-server)
+ ("rt" ,sbcl-rt)))))
+
+(define-public cl-usocket
+ (sbcl-package->cl-source-package sbcl-usocket))
+
+(define-public ecl-socket
+ (sbcl-package->ecl-package sbcl-usocket))
+
+(define-public sbcl-s-xml
+ (package
+ (name "sbcl-s-xml")
+ (version "3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://common-lisp.net/project/s-xml/s-xml.tgz")
+ (sha256
+ (base32
+ "061qcr0dzshsa38s5ma4ay924cwak2nq9gy59dw6v9p0qb58nzjf"))))
+ (build-system asdf-build-system/sbcl)
+ (home-page "https://common-lisp.net/project/s-xml/")
+ (synopsis "Simple XML parser implemented in Common Lisp")
+ (description
+ "S-XML is a simple XML parser implemented in Common Lisp. This XML
+parser implementation has the following features:
+
+@itemize
+@item It works (handling many common XML usages).
+@item It is very small (the core is about 700 lines of code, including
+comments and whitespace).
+@item It has a core API that is simple, efficient and pure functional, much
+like that from SSAX (see also http://ssax.sourceforge.net).
+@item It supports different DOM models: an XSML-based one, an LXML-based one
+and a classic xml-element struct based one.
+@item It is reasonably time and space efficient (internally avoiding garbage
+generatation as much as possible).
+@item It does support CDATA.
+@item It should support the same character sets as your Common Lisp
+implementation.
+@item It does support XML name spaces.
+@end itemize
+
+This XML parser implementation has the following limitations:
+
+@itemize
+@item It does not support any special tags (like processing instructions).
+@item It is not validating, even skips DTD's all together.
+@end itemize\n")
+ (license license:lgpl3+)))
+
+(define-public cl-s-xml
+ (sbcl-package->cl-source-package sbcl-s-xml))
+
+(define-public ecl-s-xml
+ (sbcl-package->ecl-package sbcl-s-xml))
+
+(define-public sbcl-s-xml-rpc
+ (package
+ (name "sbcl-s-xml-rpc")
+ (version "7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri "https://common-lisp.net/project/s-xml-rpc/s-xml-rpc.tgz")
+ (sha256
+ (base32
+ "02z7k163d51v0pzk8mn1xb6h5s6x64gjqkslhwm3a5x26k2gfs11"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("s-xml" ,sbcl-s-xml)))
+ (home-page "https://common-lisp.net/project/s-xml-rpc/")
+ (synopsis "Implementation of XML-RPC in Common Lisp for both client and server")
+ (description
+ "S-XML-RPC is an implementation of XML-RPC in Common Lisp for both
+client and server.")
+ (license license:lgpl3+)))
+
+(define-public cl-s-xml-rpc
+ (sbcl-package->cl-source-package sbcl-s-xml-rpc))
+
+(define-public ecl-s-xml-rpc
+ (sbcl-package->ecl-package sbcl-s-xml-rpc))