summaryrefslogtreecommitdiff
path: root/gnu/packages/lisp.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/lisp.scm')
-rw-r--r--gnu/packages/lisp.scm2005
1 files changed, 2004 insertions, 1 deletions
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 8b8b9229b5..89ccdb720a 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -31,6 +31,7 @@
#:use-module (guix packages)
#: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 asdf)
@@ -61,8 +62,12 @@
#: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-1)
+ #:use-module (srfi srfi-19))
(define (asdf-substitutions lisp)
;; Prepend XDG_DATA_DIRS/LISP-bundle-systems to ASDF's
@@ -1526,3 +1531,2001 @@ 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))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ ;; The tests require a debugger, but we run with the debugger disabled.
+ '(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ ;; Do this to ensure the 'reset-gzip-timestamps phase works.
+ (add-after 'unpack 'make-gzips-writeable
+ (lambda _
+ (for-each (lambda (file)
+ (chmod file #o755))
+ (find-files "." "\\.gz$")))))))
+ (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:x11-style))))
+
+(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")
+ ;; TODO: Missing license?
+ (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/atlas-engineer/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/atlas-engineer/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))