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.scm904
1 files changed, 844 insertions, 60 deletions
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 0c8ad1e2fa..2bdebed04e 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -217,7 +217,8 @@ interface to the Tk widget system.")
("libgc" ,libgc)
("libffi" ,libffi)))
(arguments
- '(#:tests? #t
+ '(#:configure-flags '("--without-rt")
+ #:tests? #t
#:parallel-tests? #f
#:phases
(modify-phases %standard-phases
@@ -327,14 +328,14 @@ an interpreter, a compiler, a debugger, and much more.")
(define-public sbcl
(package
(name "sbcl")
- (version "1.5.6")
+ (version "1.5.7")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
version "-source.tar.bz2"))
(sha256
- (base32 "10z43dc29p7s8dl3jixklhmzqfp7gcm3fccjdfd36qqhyfxqxx3a"))
+ (base32 "11cl839512898shxcgjmnn1178pwc8vcfaypmzxm1wzkwasjyx2l"))
(modules '((guix build utils)))
(snippet
;; Add sbcl-bundle-systems to 'default-system-source-registry'.
@@ -700,10 +701,10 @@ libraries for Machine Learning, Neural Nets and statistical estimation.")
(define-public sbcl-alexandria
(let ((revision "1")
- (commit "926a066611b7b11cb71e26c827a271e500888c30"))
+ (commit "3b849bc0116ea70f215ee6b2fbf354e862aaa9dd"))
(package
(name "sbcl-alexandria")
- (version (string-append "0.0.0-" revision "." (string-take commit 7)))
+ (version (git-version "1.0.0" revision commit))
(source
(origin
(method git-fetch)
@@ -712,9 +713,11 @@ libraries for Machine Learning, Neural Nets and statistical estimation.")
(commit commit)))
(sha256
(base32
- "18yncicdkh294j05rhgm23gzi36y9qy6vrfba8vg69jrxjp1hx8l"))
- (file-name (string-append "alexandria-" version "-checkout"))))
+ "04amwvx2vl691f0plcfbqqwxgib9zimih7jrn5zl7mbwvrxy022b"))
+ (file-name (git-file-name name version))))
(build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("rt" ,sbcl-rt)))
(synopsis "Collection of portable utilities for Common Lisp")
(description
"Alexandria is a collection of portable utilities. It does not contain
@@ -1703,26 +1706,23 @@ consistent across multiple Common Lisp implementations.")
(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
+ (package
+ (name "sbcl-hu.dwim.asdf")
+ (version "20190521")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://beta.quicklisp.org/archive/hu.dwim.asdf/"
+ "2019-05-21/hu.dwim.asdf-" version "-darcs.tgz"))
+ (sha256
+ (base32
+ "0rsbv71vyszy8w35yjwb5h6zcmknjq223hkzir79y72qdsc6sabn"))))
+ (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))))
+ (license license:public-domain)))
(define-public cl-hu.dwim.asdf
(sbcl-package->cl-source-package sbcl-hu.dwim.asdf))
@@ -2327,42 +2327,27 @@ writing code that contains string literals that contain code themselves.")
(define-public ecl-pythonic-string-reader
(sbcl-package->ecl-package sbcl-pythonic-string-reader))
-(define-public sbcl-slime-swank
+;; SLIME does not have a ASDF system definition to build all of Swank. As a
+;; result, the asdf-build-system/sbcl will produce an almost empty package.
+;; Some work was done to fix this at
+;; https://github.com/sionescu/slime/tree/swank-asdf but it was never merged
+;; and is now lagging behind. Building SBCL fasls might not be worth the
+;; hassle, so let's just ship the source then.
+(define-public cl-slime-swank
(package
- (name "sbcl-slime-swank")
- (version "2.22")
+ (name "cl-slime-swank")
+ (version "2.24")
(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")))
+ (url "https://github.com/slime/slime/")
+ (commit (string-append "v" version))))
(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"))
+ "0js24x42m7b5iymb4rxz501dff19vav5pywnzv50b673rbkaaqvh"))))
+ (build-system asdf-build-system/source)
(home-page "https://github.com/slime/slime")
(synopsis "Common Lisp Swank server")
(description
@@ -2371,6 +2356,9 @@ 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-slime-swank
+ (deprecated-package "sbcl-slime-swank" cl-slime-swank))
+
(define-public sbcl-mgl-pax
(let ((commit "818448418d6b9de74620f606f5b23033c6082769"))
(package
@@ -2395,7 +2383,7 @@ processes that doesn't run under Emacs. Lisp processes created by
("ironclad" ,sbcl-ironclad)
("named-readtables" ,sbcl-named-readtables)
("pythonic-string-reader" ,sbcl-pythonic-string-reader)
- ("swank" ,sbcl-slime-swank)))
+ ("swank" ,cl-slime-swank)))
(synopsis "Exploratory programming environment and documentation generator")
(description
"PAX provides an extremely poor man's Explorable Programming
@@ -2485,7 +2473,7 @@ new fiends in addition to old friends like @command{aif} and
(let ((commit "7d49a66c62759535624037826891152223d4206c"))
(package
(name "sbcl-lift")
- (version (git-version "0.0.0" "1" commit))
+ (version (git-version "1.7.1" "1" commit))
(source
(origin
(method git-fetch)
@@ -6400,7 +6388,7 @@ the return type of a function.")
(package
(name "sbcl-optima")
(build-system asdf-build-system/sbcl)
- (version (git-version "0.1" revision commit))
+ (version (git-version "1.0" revision commit))
(home-page "https://github.com/m2ym/optima")
(source
(origin
@@ -6463,6 +6451,29 @@ quasiquote is enable matching of quasiquoted patterns, using Optima or
Trivia.")
(license license:expat)))
+(define-public cl-fare-quasiquote
+ (sbcl-package->cl-source-package sbcl-fare-quasiquote))
+
+(define-public sbcl-fare-quasiquote-optima
+ (package
+ (inherit sbcl-fare-quasiquote)
+ (name "sbcl-fare-quasiquote-optima")
+ (inputs
+ `(("optima" ,sbcl-optima)
+ ("fare-quasiquote" ,sbcl-fare-quasiquote)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-requirement
+ (lambda _
+ (substitute* "fare-quasiquote-optima.asd"
+ (("\\(:version \"optima\" \"1\\.0\"\\)")
+ "\"optima\""))
+ #t)))))))
+
+(define-public cl-fare-quasiquote-optima
+ (sbcl-package->cl-source-package sbcl-fare-quasiquote-optima))
+
(define-public sbcl-fare-quasiquote-readtable
(package
(inherit sbcl-fare-quasiquote)
@@ -6474,7 +6485,23 @@ Trivia.")
quasiquote is enable matching of quasiquoted patterns, using Optima or
Trivia.
-This packages uses fare-quasiquote with named-readtable.")))
+This package uses fare-quasiquote with named-readtable.")))
+
+(define-public cl-fare-quasiquote-readtable
+ (sbcl-package->cl-source-package sbcl-fare-quasiquote-readtable))
+
+;; TODO: Add support for component-less system in asdf-build-system/sbcl.
+(define-public cl-fare-quasiquote-extras
+ (package
+ (inherit cl-fare-quasiquote)
+ (name "cl-fare-quasiquote-extras")
+ (build-system asdf-build-system/source)
+ (propagated-inputs
+ `(("fare-quasiquote" ,cl-fare-quasiquote)
+ ("fare-quasiquote-optima" ,cl-fare-quasiquote-optima)
+ ("fare-quasiquote-readtable" ,cl-fare-quasiquote-readtable)))
+ (description "This library combines @code{fare-quasiquote-readtable} and
+@code{fare-quasiquote-optima}.")))
(define-public sbcl-trivia.level0
(let ((commit "902e0c65602bbfe96ae82e679330b3771ddc7603")
@@ -6597,7 +6624,7 @@ This system contains the base level system of Trivia with a trivial optimizer.")
with Optima, another pattern matching library for Common Lisp. It is meant to
be faster and more extensible than Optima.
-This system contains the PPCRE extention.")))
+This system contains the PPCRE extension.")))
(define-public sbcl-trivia.quasiquote
(package
@@ -6833,7 +6860,7 @@ Emacs.
In the Common LISP Object System (CLOS), a similar kind of extensibility is
possible using the flexible multi-method dispatch mechanism. It may even seem
-that the concept of hooks does not provide any benefits over the possibilites
+that the concept of hooks does not provide any benefits over the possibilities
of CLOS. However, there are some differences:
@itemize
@@ -6934,3 +6961,760 @@ classes and cyclic data structures are supported.")
(define-public ecl-cl-prevalence
(sbcl-package->ecl-package sbcl-cl-prevalence))
+
+(define-public sbcl-series
+ (let ((commit "da9061b336119d1e5214aff9117171d494d5a58a")
+ (revision "1"))
+ (package
+ (name "sbcl-series")
+ (version (git-version "2.2.11" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "git://git.code.sf.net/p/series/series")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "07hk2lhfx42zk018pxqvn4gs77vd4n4g8m4xxbqaxgca76mifwfw"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ ;; Disable the tests, they are apparently buggy and I didn't find
+ ;; a simple way to make them run and pass.
+ '(#:tests? #f))
+ (synopsis "Series data structure for Common Lisp")
+ (description
+ "This Common Lisp library provides a series data structure much like
+a sequence, with similar kinds of operations. The difference is that in many
+situations, operations on series may be composed functionally and yet execute
+iteratively, without the need to construct intermediate series values
+explicitly. In this manner, series provide both the clarity of a functional
+programming style and the efficiency of an iterative programming style.")
+ (home-page "http://series.sourceforge.net/")
+ (license license:expat))))
+
+(define-public cl-series
+ (sbcl-package->cl-source-package sbcl-series))
+
+(define-public ecl-series
+ (sbcl-package->ecl-package sbcl-series))
+
+(define-public sbcl-periods
+ (let ((commit "983d4a57325db3c8def942f163133cec5391ec28")
+ (revision "1"))
+ (package
+ (name "sbcl-periods")
+ (version (git-version "0.0.2" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jwiegley/periods.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0z30jr3lxz3cmi019fsl4lgcgwf0yqpn95v9zkkkwgymdrkd4lga"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("local-time" ,sbcl-local-time)))
+ (synopsis "Common Lisp library for manipulating date/time objects")
+ (description
+ "Periods is a Common Lisp library providing a set of utilities for
+manipulating times, distances between times, and both contiguous and
+discontiguous ranges of time.")
+ (home-page "https://github.com/jwiegley/periods")
+ (license license:bsd-3))))
+
+(define-public cl-periods
+ (sbcl-package->cl-source-package sbcl-periods))
+
+(define-public ecl-periods
+ (sbcl-package->ecl-package sbcl-periods))
+
+(define-public sbcl-periods-series
+ (package
+ (inherit sbcl-periods)
+ (name "sbcl-periods-series")
+ (inputs
+ `(("periods" ,sbcl-periods)
+ ("series" ,sbcl-series)))
+ (arguments
+ '(#:asd-file "periods-series.asd"
+ #:asd-system-name "periods-series"))
+ (description
+ "Periods-series is an extension of the periods Common Lisp library
+providing functions compatible with the series Common Lisp library.")))
+
+(define-public cl-periods-series
+ (sbcl-package->cl-source-package sbcl-periods-series))
+
+(define-public ecl-periods-series
+ (sbcl-package->ecl-package sbcl-periods-series))
+
+(define-public sbcl-metatilities-base
+ (let ((commit "6eaa9e3ff0939a93a92109dd0fcd218de85417d5")
+ (revision "1"))
+ (package
+ (name "sbcl-metatilities-base")
+ (version (git-version "0.6.6" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gwkkwg/metatilities-base.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0xpa86pdzlnf4v5g64j3ifaplx71sx2ha8b7vvakswi652679ma0"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("lift" ,sbcl-lift)))
+ (synopsis "Core of the metatilities Common Lisp library")
+ (description
+ "Metatilities-base is the core of the metatilities Common Lisp library
+which implements a set of utilities.")
+ (home-page "https://common-lisp.net/project/metatilities-base/")
+ (license license:expat))))
+
+(define-public cl-metatilities-base
+ (sbcl-package->cl-source-package sbcl-metatilities-base))
+
+(define-public ecl-metatilities-base
+ (sbcl-package->ecl-package sbcl-metatilities-base))
+
+(define-public sbcl-cl-containers
+ (let ((commit "810927e19d933bcf38ffeb7a23ce521efc432d45")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-containers")
+ (version (git-version "0.12.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/gwkkwg/cl-containers.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1s9faxw7svhbjpkhfrz2qxgjm3cvyjb8wpyb4m8dx4i5g7vvprkv"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("lift" ,sbcl-lift)))
+ (inputs
+ `(("metatilities-base" ,sbcl-metatilities-base)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'relax-version-checks
+ (lambda _
+ (substitute* "cl-containers.asd"
+ (("\\(:version \"metatilities-base\" \"0\\.6\\.6\"\\)")
+ "\"metatilities-base\""))
+ (substitute* "cl-containers-test.asd"
+ (("\\(:version \"lift\" \"1\\.7\\.0\"\\)")
+ "\"lift\""))
+ #t)))))
+ (synopsis "Container library for Common Lisp")
+ (description
+ "Common Lisp ships with a set of powerful built in data structures
+including the venerable list, full featured arrays, and hash-tables.
+CL-containers enhances and builds on these structures by adding containers
+that are not available in native Lisp (for example: binary search trees,
+red-black trees, sparse arrays and so on), and by providing a standard
+interface so that they are simpler to use and so that changing design
+decisions becomes significantly easier.")
+ (home-page "https://common-lisp.net/project/cl-containers/")
+ (license license:expat))))
+
+(define-public cl-containers
+ (sbcl-package->cl-source-package sbcl-cl-containers))
+
+(define-public ecl-cl-containers
+ (sbcl-package->ecl-package sbcl-cl-containers))
+
+(define-public sbcl-xlunit
+ (let ((commit "3805d34b1d8dc77f7e0ee527a2490194292dd0fc")
+ (revision "1"))
+ (package
+ (name "sbcl-xlunit")
+ (version (git-version "0.6.3" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://git.kpe.io/xlunit.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0argfmp9nghs4sihyj3f8ch9qfib2b7ll07v5m9ziajgzsfl5xw3"))))
+ (build-system asdf-build-system/sbcl)
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-tests
+ (lambda _
+ (substitute* "xlunit.asd"
+ ((" :force t") ""))
+ #t)))))
+ (synopsis "Unit testing package for Common Lisp")
+ (description
+ "The XLUnit package is a toolkit for building test suites. It is based
+on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
+ (home-page "http://quickdocs.org/xlunit/")
+ (license license:bsd-3))))
+
+(define-public cl-xlunit
+ (sbcl-package->cl-source-package sbcl-xlunit))
+
+(define-public ecl-xlunit
+ (sbcl-package->ecl-package sbcl-xlunit))
+
+(define-public sbcl-fprog
+ (let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
+ (revision "1"))
+ (package
+ (name "sbcl-fprog")
+ (version (git-version "1.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jwiegley/cambl.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "103mry04j2k9vznsxm7wcvccgxkil92cdrv52miwcmxl8daa4jiz"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Functional programming utilities for Common Lisp")
+ (description
+ "@code{fprog} is a Common Lisp library allowing iteration over
+immutable lists sharing identical sublists.")
+ (home-page "https://github.com/jwiegley/cambl")
+ (license license:bsd-3))))
+
+(define-public cl-fprog
+ (sbcl-package->cl-source-package sbcl-fprog))
+
+(define-public ecl-fprog
+ (sbcl-package->ecl-package sbcl-fprog))
+
+(define-public sbcl-cambl
+ (let ((commit "7016d1a98215f82605d1c158e7a16504ca1f4636")
+ (revision "1"))
+ (package
+ (inherit sbcl-fprog)
+ (name "sbcl-cambl")
+ (version (git-version "4.0.0" revision commit))
+ (native-inputs
+ `(("xlunit" ,sbcl-xlunit)))
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cl-containers" ,sbcl-cl-containers)
+ ("local-time" ,sbcl-local-time)
+ ("periods" ,sbcl-periods)
+ ("fprog" ,sbcl-fprog)))
+ (synopsis "Commoditized amounts and balances for Common Lisp")
+ (description
+ "CAMBL is a Common Lisp library providing a convenient facility for
+working with commoditized values. It does not allow compound units (and so is
+not suited for scientific operations) but does work rather nicely for the
+purpose of financial calculations."))))
+
+(define-public cl-cambl
+ (sbcl-package->cl-source-package sbcl-cambl))
+
+(define-public ecl-cambl
+ (sbcl-package->ecl-package sbcl-cambl))
+
+(define-public sbcl-cl-ledger
+ (let ((commit "08e0be41795e804cd36142e51756ad0b1caa377b")
+ (revision "1"))
+ (package
+ (name "sbcl-cl-ledger")
+ (version (git-version "4.0.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ledger/cl-ledger.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1via0qf6wjcyxnfbmfxjvms0ik9j8rqbifgpmnhrzvkhrq9pv8h1"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("cambl" ,sbcl-cambl)
+ ("cl-ppcre" ,sbcl-cl-ppcre)
+ ("local-time" ,sbcl-local-time)
+ ("periods-series" ,sbcl-periods-series)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-system-definition
+ (lambda _
+ (substitute* "cl-ledger.asd"
+ ((" :build-operation program-op") "")
+ ((" :build-pathname \"cl-ledger\"") "")
+ ((" :entry-point \"ledger::main\"") ""))
+ #t)))))
+ (synopsis "Common Lisp port of the Ledger accounting system")
+ (description
+ "CL-Ledger is a Common Lisp port of the Ledger double-entry accounting
+system.")
+ (home-page "https://github.com/ledger/cl-ledger")
+ (license license:bsd-3))))
+
+(define-public cl-ledger
+ (sbcl-package->cl-source-package sbcl-cl-ledger))
+
+(define-public ecl-cl-ledger
+ (sbcl-package->ecl-package sbcl-cl-ledger))
+
+(define-public sbcl-bst
+ (let ((commit "34f9c7e8e0a9f2c952fe310ab36cb630d5d9c15a")
+ (revision "1"))
+ (package
+ (name "sbcl-bst")
+ (version (git-version "1.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/glv2/bst.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1amxns7hvvh4arwbh8ciwfzplg127vh37dnbamv1m1kmmnmihfc8"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("fiveam" ,sbcl-fiveam)))
+ (synopsis "Binary search tree for Common Lisp")
+ (description
+ "BST is a Common Lisp library for working with binary search trees that
+can contain any kind of values.")
+ (home-page "https://github.com/glv2/bst")
+ (license license:gpl3))))
+
+(define-public cl-bst
+ (sbcl-package->cl-source-package sbcl-bst))
+
+(define-public ecl-bst
+ (sbcl-package->ecl-package sbcl-bst))
+
+(define-public sbcl-cl-octet-streams
+ (package
+ (name "sbcl-cl-octet-streams")
+ (version "1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/glv2/cl-octet-streams.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1d7mn6ydv0j2x4r7clpc9ijjwrnfpxmvhifv8n5j7jh7s744sf8d"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (inputs
+ `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
+ (synopsis "In-memory octet streams for Common Lisp")
+ (description
+ "CL-octet-streams is a library implementing in-memory octet
+streams for Common Lisp. It was inspired by the trivial-octet-streams and
+cl-plumbing libraries.")
+ (home-page "https://github.com/glv2/cl-octet-streams")
+ (license license:gpl3+)))
+
+(define-public cl-octet-streams
+ (sbcl-package->cl-source-package sbcl-cl-octet-streams))
+
+(define-public ecl-cl-octet-streams
+ (sbcl-package->ecl-package sbcl-cl-octet-streams))
+
+(define-public sbcl-lzlib
+ (let ((commit "0de1db7129fef9a58a059d35a2fa2ecfc5b47b47")
+ (revision "1"))
+ (package
+ (name "sbcl-lzlib")
+ (version (git-version "1.0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/glv2/cl-lzlib.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "12ny7vj52fgnd8hb8fc8mry92vq4c1x72x2350191m4476j95clz"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (inputs
+ `(("cffi" ,sbcl-cffi)
+ ("cl-octet-streams" ,sbcl-cl-octet-streams)
+ ("lzlib" ,lzlib)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/lzlib.lisp"
+ (("liblz\\.so")
+ (string-append (assoc-ref inputs "lzlib") "/lib/liblz.so")))
+ #t)))))
+ (synopsis "Common Lisp library for lzip (de)compression")
+ (description
+ "This Common Lisp library provides functions for lzip (LZMA)
+compression/decompression using bindings to the lzlib C library.")
+ (home-page "https://github.com/glv2/cl-lzlib")
+ (license license:gpl3+))))
+
+(define-public cl-lzlib
+ (sbcl-package->cl-source-package sbcl-lzlib))
+
+(define-public ecl-lzlib
+ (sbcl-package->ecl-package sbcl-lzlib))
+
+(define-public sbcl-chanl
+ (let ((commit "2362b57550c2c9238cc882d03553aaa1040b7340")
+ (revision "0"))
+ (package
+ (name "sbcl-chanl")
+ (version (git-version "0.4.1" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/zkat/chanl.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ag3wz7yrqwp0s5069wwda98z3rrqd25spg8sa8rdqghj084w28w"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (inputs
+ `(("bordeaux-threads" ,sbcl-bordeaux-threads)))
+ (synopsis "Portable channel-based concurrency for Common Lisp")
+ (description "Common Lisp library for channel-based concurrency. In
+a nutshell, you create various threads sequentially executing tasks you need
+done, and use channel objects to communicate and synchronize the state of these
+threads.")
+ (home-page "https://github.com/zkat/chanl")
+ (license (list license:expat license:bsd-3)))))
+
+(define-public cl-chanl
+ (sbcl-package->cl-source-package sbcl-chanl))
+
+(define-public ecl-chanl
+ (let ((base (sbcl-package->ecl-package sbcl-chanl)))
+ (package
+ (inherit base)
+ (arguments
+ (substitute-keyword-arguments (package-arguments base)
+ ;; The CHANL.ACTORS package uses the :ARGUMENTS option of
+ ;; DEFINE-METHOD-COMBINATION, which is not implemented in ECL yet
+ ;; (see https://gitlab.com/embeddable-common-lisp/ecl/issues/305).
+ ;; So let's disable it for now, as it allows compiling the library
+ ;; and using the rest of it.
+ ((#:phases phases '%standard-phases)
+ `(modify-phases ,phases
+ (add-after 'unpack 'disable-chanl-actors
+ (lambda _
+ (substitute* "chanl.asd"
+ (("\\(:file \"actors\"\\)") ""))
+ #t))))
+ ;; Disable the tests for now, as the SEND-SEQUENCE test seems to
+ ;; never end.
+ ((#:tests? _ #f) #f))))))
+
+(define-public sbcl-cl-store
+ (let ((commit "cd01f2610d3360dc01ab972bd9317407aaea7745")
+ (revision "0"))
+ (package
+ (name "sbcl-cl-store")
+ (version (git-version "0.8.11" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/skypher/cl-store.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "05b7kh5af2ax7vlmphpac4vbqr84j5ivppj96qzb64fxpjpqglm4"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("rt" ,sbcl-rt)))
+ (synopsis "Common Lisp library to serialize data")
+ (description
+ "CL-STORE is a portable serialization package which should give you the
+ability to store all Common Lisp data types into streams.")
+ (home-page "http://www.common-lisp.net/project/cl-store/")
+ (license license:expat))))
+
+(define-public cl-store
+ (sbcl-package->cl-source-package sbcl-cl-store))
+
+(define-public ecl-cl-store
+ (sbcl-package->ecl-package sbcl-cl-store))
+
+(define-public sbcl-cl-gobject-introspection
+ (let ((commit "7b703e2384945ea0ac39d9b766de434a08d81560")
+ (revision "0"))
+ (package
+ (name "sbcl-cl-gobject-introspection")
+ (version (git-version "0.3" revision commit))
+ (home-page "https://github.com/andy128k/cl-gobject-introspection")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1zcqd2qj14f6b38vys8gr89s6cijsp9r8j43xa8lynilwva7bwyh"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("cffi" ,sbcl-cffi)
+ ("iterate" ,sbcl-iterate)
+ ("trivial-garbage" ,sbcl-trivial-garbage)
+ ("glib" ,glib)
+ ("gobject-introspection" ,gobject-introspection)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (arguments
+ ;; TODO: Tests fail, see
+ ;; https://github.com/andy128k/cl-gobject-introspection/issues/70.
+ '(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-after (quote unpack) (quote fix-paths)
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "src/init.lisp"
+ (("libgobject-2\\.0\\.so")
+ (string-append (assoc-ref inputs "glib") "/lib/libgobject-2.0.so"))
+ (("libgirepository-1\\.0\\.so")
+ (string-append (assoc-ref inputs "gobject-introspection")
+ "/lib/libgirepository-1.0.so")))
+ #t)))))
+ (synopsis "Common Lisp bindings to GObject Introspection")
+ (description
+ "This library is a bridge between Common Lisp and GObject
+Introspection, which enables Common Lisp programs to access the full interface
+of C+GObject libraries without the need of writing dedicated bindings.")
+ (license (list license:bsd-3
+ ;; Tests are under a different license.
+ license:llgpl)))))
+
+(define-public cl-gobject-introspection
+ (sbcl-package->cl-source-package sbcl-cl-gobject-introspection))
+
+(define-public sbcl-string-case
+ (let ((commit "718c761e33749e297cd2809c7ba3ade1985c49f7")
+ (revision "0"))
+ (package
+ (name "sbcl-string-case")
+ (version (git-version "0.0.2" revision commit))
+ (home-page "https://github.com/pkhuong/string-case")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1n5i3yh0h5s636rcnwn7jwqy3rjflikra04lymimhpcshhjsk0md"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Efficient string= case in Common Lisp")
+ (description
+ "@code{string-case} is a Common Lisp macro that generates specialised decision
+trees to dispatch on string equality.")
+ (license license:bsd-3))))
+
+(define-public cl-string-case
+ (sbcl-package->cl-source-package sbcl-string-case))
+
+(define-public ecl-string-case
+ (sbcl-package->ecl-package sbcl-string-case))
+
+(define-public sbcl-global-vars
+ (let ((commit "c749f32c9b606a1457daa47d59630708ac0c266e")
+ (revision "0"))
+ (package
+ (name "sbcl-global-vars")
+ (version (git-version "1.0.0" revision commit))
+ (home-page "https://github.com/lmj/global-vars")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "06m3xc8l3pgsapl8fvsi9wf6y46zs75cp9zn7zh6dc65v4s5wz3d"))))
+ (build-system asdf-build-system/sbcl)
+ (synopsis "Efficient global variables in Common Lisp")
+ (description
+ "In Common Lisp, a special variable that is never dynamically bound
+typically serves as a stand-in for a global variable. The @code{global-vars}
+library provides true global variables that are implemented by some compilers.
+An attempt to rebind a global variable properly results in a compiler error.
+That is, a global variable cannot be dynamically bound.
+
+Global variables therefore allow us to communicate an intended usage that
+differs from special variables. Global variables are also more efficient than
+special variables, especially in the presence of threads.")
+ (license license:expat))))
+
+(define-public cl-global-vars
+ (sbcl-package->cl-source-package sbcl-global-vars))
+
+(define-public ecl-global-vars
+ (sbcl-package->ecl-package sbcl-global-vars))
+
+(define-public sbcl-trivial-file-size
+ (let ((commit "1c1d672a01a446ba0391dbb4ffc40be3b0476f23")
+ (revision "0"))
+ (package
+ (name "sbcl-trivial-file-size")
+ (version (git-version "0.0.0" revision commit))
+ (home-page "https://github.com/ruricolist/trivial-file-size")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "17pp86c9zs4y7i1sh7q9gbfw9iqv6655k7fz8qbj9ly1ypgxp4qs"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (synopsis "Size of a file in bytes in Common Lisp")
+ (description
+ "The canonical way to determine the size of a file in bytes, using Common Lisp,
+is to open the file with an element type of (unsigned-byte 8) and then
+calculate the length of the stream. This is less than ideal. In most cases
+it is better to get the size of the file from its metadata, using a system
+call.
+
+This library exports a single function, file-size-in-octets. It returns the
+size of a file in bytes, using system calls when possible.")
+ (license license:expat))))
+
+(define-public cl-trivial-file-size
+ (sbcl-package->cl-source-package sbcl-trivial-file-size))
+
+(define-public ecl-trivial-file-size
+ (sbcl-package->ecl-package sbcl-trivial-file-size))
+
+(define-public sbcl-trivial-macroexpand-all
+ (let ((commit "933270ac7107477de1bc92c1fd641fe646a7a8a9")
+ (revision "0"))
+ (package
+ (name "sbcl-trivial-macroexpand-all")
+ (version (git-version "0.0.0" revision commit))
+ (home-page "https://github.com/cbaggers/trivial-macroexpand-all")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "191hnn4b5j4i3crydmlzbm231kj0h7l8zj6mzj69r1npbzkas4bd"))))
+ (build-system asdf-build-system/sbcl)
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)))
+ (synopsis "Portable macroexpand-all for Common Lisp")
+ (description
+ "This library provides a macroexpand-all function that calls the
+implementation specific equivalent.")
+ (license license:unlicense))))
+
+(define-public cl-trivial-macroexpand-all
+ (sbcl-package->cl-source-package sbcl-trivial-macroexpand-all))
+
+(define-public ecl-trivial-macroexpand-all
+ (sbcl-package->ecl-package sbcl-trivial-macroexpand-all))
+
+(define-public sbcl-serapeum
+ (let ((commit "65837f8a0d65b36369ec8d000fff5c29a395b5fe")
+ (revision "0"))
+ (package
+ (name "sbcl-serapeum")
+ (version (git-version "0.0.0" revision commit))
+ (home-page "https://github.com/ruricolist/serapeum")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url home-page)
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0clwf81r2lvk1rbfvk91s9zmbkas9imf57ilqclw12mxaxlfsnbw"))))
+ (build-system asdf-build-system/sbcl)
+ (inputs
+ `(("alexandria" ,sbcl-alexandria)
+ ("trivia" ,sbcl-trivia)
+ ("trivia.quasiquote" ,sbcl-trivia.quasiquote)
+ ("split-sequence" ,sbcl-split-sequence)
+ ("string-case" ,sbcl-string-case)
+ ("parse-number" ,sbcl-parse-number)
+ ("trivial-garbage" ,sbcl-trivial-garbage)
+ ("bordeaux-threads" ,sbcl-bordeaux-threads)
+ ("named-readtables" ,sbcl-named-readtables)
+ ("fare-quasiquote-extras" ,cl-fare-quasiquote-extras)
+ ("parse-declarations-1.0" ,sbcl-parse-declarations)
+ ("global-vars" ,sbcl-global-vars)
+ ("trivial-file-size" ,sbcl-trivial-file-size)
+ ("trivial-macroexpand-all" ,sbcl-trivial-macroexpand-all)))
+ (native-inputs
+ `(("fiveam" ,sbcl-fiveam)
+ ("local-time" ,sbcl-local-time)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'disable-failing-tests
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "serapeum.asd"
+ ;; Guix does not have Quicklisp, and probably never will.
+ (("\\(:file \"quicklisp\"\\)") ""))
+ #t)))))
+ (synopsis "Common Lisp utility library beyond Alexandria")
+ (description
+ "Serapeum is a conservative library of Common Lisp utilities. It is a
+supplement, not a competitor, to Alexandria.")
+ (license license:expat))))
+
+(define-public cl-serapeum
+ (sbcl-package->cl-source-package sbcl-serapeum))