diff options
Diffstat (limited to 'gnu/packages/lisp.scm')
-rw-r--r-- | gnu/packages/lisp.scm | 2533 |
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)) |