Subject: Re: [bug#36467] [PATCH v3] gnu: Add some Common Lisp libraries

From: Guillaume Le Vaillant <[email-masked]>
Date: Mon, 16 Sep 2019 16:11:45 +0200

Pierre Neidhardt skribis:

> Hi Guillaume,
>
> thanks for the big patchset, looking very good overall!
>
> A few general nits:
>
> - You didn't define any "ecl-" package.  Could you define them for all the
>   packages (unless they are known to be broken with ECL)?
>   I know some packages lack the ecl- definition, this should be fixed :p
>
> - 6 commit messages lack a period on the first line.
>   If you use Emacs, you might find this yasnippet useful:
>   guix/etc/snippets/text-mode/guix-commit-message-add-package
>
> fprog:
>   - Description should start with a capital, or here maybe with @code{fprog}.
>
> cambl:
>   - is spelled in all-caps ("CAMBL") according to the README.
>
> cl-containers:
>   - synopsis: "Container library ..."
>
>   - I'm realizing the sbcl-lift does not have the right version number, which
>     should be (git-version "1.7.1" ...).  Can you update this?
>
> bst:
>   - 1.1 is out ;)
>
> cl-octet-streams:
>   - Description should start with a capital, or here maybe with @code{cl-octet-streams}.
>
> cl-lzlib
>   - License seems to be GPL-3, not GPL-3+, but since this is your library, the
>     decision is all yours ;)
>
> Thanks a lot for this great contribution to "Common Lisp on Guix" :)

Hi,

Here's the updated patch set (I think I didn't forget anything).

However some "ecl-" packages can't be built
right now because of a dependency that fails to build
(/gnu/store/sjyr2l309ldnfg9db718y585b3c13g51-ecl-hu.dwim.asdf-0.0.0-1.170b0e4.drv,
which apparently tries to load an SBCL-specific package).

>From a3f1e0a871758e9fd00388b0e604d82a1faa5b79 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 16 Sep 2019 13:47:46 +0200
Subject: [PATCH 01/13] gnu: Add series.

* gnu/packages/lisp.scm (sbcl-series, cl-series, ecl-series): New variables.
---
 gnu/packages/lisp.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 0c8ad1e2fa..37a0893d2f 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -6934,3 +6934,41 @@ 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))
-- 
2.23.0

>From e298df4b1b8f5f10e1ec7c05efdb083fd5d4d557 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 16 Sep 2019 13:54:30 +0200
Subject: [PATCH 02/13] gnu: Add periods.

* gnu/packages/lisp.scm (sbcl-periods, cl-periods, ecl-periods): New variables.
---
 gnu/packages/lisp.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 37a0893d2f..362da8f646 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -6972,3 +6972,36 @@ programming style and the efficiency of an iterative programming style.")
 
 (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))
-- 
2.23.0

>From c3f8369d21916eece5f69197c482be1e4a4f285d Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 16 Sep 2019 14:40:27 +0200
Subject: [PATCH 03/13] gnu: Add periods-series.

* gnu/packages/lisp.scm (sbcl-periods-series, cl-periods-series,
  ecl-periods-series): New variables.
---
 gnu/packages/lisp.scm | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 362da8f646..d88a18e358 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7005,3 +7005,23 @@ discontiguous ranges of time.")
 
 (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))
-- 
2.23.0

>From dc4232786b61da7b9c1e545a63dabe2770f5cf75 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 1 Jul 2019 20:16:38 +0200
Subject: [PATCH 04/13] gnu: Add metatilities-base.

* gnu/packages/lisp.scm (sbcl-metatilities-base, cl-metatilities-base,
  ecl-metatilities-base): New variables.
---
 gnu/packages/lisp.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index d88a18e358..b820f489e6 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7025,3 +7025,35 @@ providing functions compatible with the series Common Lisp library.")))
 
 (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))
-- 
2.23.0

>From 3272a8a144cb790c4e7042b8070f73185242abbd Mon Sep 17 00:00:00 2001
From: Guillaume Le Vaillant <[email-masked]>
Date: Mon, 16 Sep 2019 14:46:37 +0200
Subject: [PATCH 05/13] gnu: sbcl-lift: Fix version number.

* gnu/packages/lisp.scm (sbcl-lift)[version]: Set to 1.7.1 instead of 0.0.0.
---
 gnu/packages/lisp.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index b820f489e6..f076798e7a 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -2485,7 +2485,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)
-- 
2.23.0

>From 9a071a220da512dd008a9d106070b879a396c918 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 16 Sep 2019 14:57:53 +0200
Subject: [PATCH 06/13] gnu: Add cl-containers.

* gnu/packages/lisp.scm (sbcl-cl-containers, cl-containers, ecl-containers):
  New variables.
---
 gnu/packages/lisp.scm | 51 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index f076798e7a..40dba3b16c 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7057,3 +7057,54 @@ which implements a set of utilities.")
 
 (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))
-- 
2.23.0

>From 74e4747cbeae69a08e5e7b02669bc7adeb2abeb0 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 16 Sep 2019 15:03:55 +0200
Subject: [PATCH 07/13] gnu: Add xlunit.

* gnu/packages/lisp.scm (sbcl-xlunit, cl-xlunit, ecl-xlunit): New variables.
---
 gnu/packages/lisp.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 40dba3b16c..23204fafe8 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7108,3 +7108,41 @@ decisions becomes significantly easier.")
 
 (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))
-- 
2.23.0

>From 09d1056ddad21dc4e543e3b80664e4477500fa76 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 16 Sep 2019 15:10:03 +0200
Subject: [PATCH 08/13] gnu: Add fprog.

* gnu/packages/lisp.scm (sbcl-fprog, cl-fprog, ecl-fprog): New variables.
---
 gnu/packages/lisp.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 23204fafe8..6f7667f77d 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7146,3 +7146,33 @@ on the XPTest package by Craig Brozensky and the JUnit package by Kent Beck.")
 
 (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))
-- 
2.23.0

>From 70a55fbf061a8a73d23379d4875d73c617e0ba6f Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 16 Sep 2019 15:13:53 +0200
Subject: [PATCH 09/13] gnu: Add cambl.

* gnu/packages/lisp.scm (sbcl-cambl, cl-cambl, ecl-cambl): New variables.
---
 gnu/packages/lisp.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 6f7667f77d..8cd27c8d54 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7176,3 +7176,31 @@ immutable lists sharing identical sublists.")
 
 (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))
-- 
2.23.0

>From 3487c979ed67601bb84c06c3f92f7f17e41392fb Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Thu, 8 Aug 2019 15:54:46 +0200
Subject: [PATCH 10/13] gnu: Add cl-ledger.

* gnu/packages/lisp.scm (sbcl-cl-ledger, cl-ledger, ecl-cl-ledger): New
  variables.
---
 gnu/packages/lisp.scm | 45 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 8cd27c8d54..6a5e8da664 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7204,3 +7204,48 @@ purpose of financial calculations."))))
 
 (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))
-- 
2.23.0

>From 70bc05a476205bbe1cb267b9df43b84acbcca76e Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Thu, 8 Aug 2019 16:00:15 +0200
Subject: [PATCH 11/13] gnu: Add bst.

* gnu/packages/lisp.scm (sbcl-bst, cl-bst, ecl-bst): New variables.
---
 gnu/packages/lisp.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 6a5e8da664..205a6120be 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7249,3 +7249,36 @@ system.")
 
 (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))
-- 
2.23.0

>From 6677d5a172356a15fa2139cf2b34b2f6f8962cf4 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 16 Sep 2019 15:32:41 +0200
Subject: [PATCH 12/13] gnu: Add cl-octet-streams.

* gnu/packages/lisp.scm (sbcl-cl-octet-streams, cl-octet-streams,
  ecl-cl-octet-streams): New variables.
---
 gnu/packages/lisp.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 205a6120be..63381a8cea 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7282,3 +7282,36 @@ can contain any kind of values.")
 
 (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))
-- 
2.23.0

>From 8a0ee3aba33e319b78e6cd3c550ed7f279642262 Mon Sep 17 00:00:00 2001
From: Guillaume LE VAILLANT <[email-masked]>
Date: Mon, 1 Jul 2019 23:23:22 +0200
Subject: [PATCH 13/13] gnu: Add cl-lzlib.

* gnu/packages/lisp.scm (sbcl-lzlib, cl-lzlib, ecl-lzlib): New variables.
---
 gnu/packages/lisp.scm | 45 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 63381a8cea..94ef3731e0 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -7315,3 +7315,48 @@ cl-plumbing libraries.")
 
 (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))
-- 
2.23.0