summary refs log tree commit diff
diff options
context:
space:
mode:
authorGuillaume Le Vaillant <glv@posteo.net>2024-01-11 16:49:24 +0100
committerGuillaume Le Vaillant <glv@posteo.net>2024-01-11 16:49:24 +0100
commit24f000a49a00b8dd3e9f51e08f0ef5567edf04aa (patch)
tree84fd0d601378b3a29979d6ef53c536e59b4b4847
parent3dd8bf94a9d1a2eddb6eda9da7d4a3d422b9dfe9 (diff)
parentf122f2bead538617d3bd43a05fa6f2def5e03c05 (diff)
downloadguix-24f000a49a00b8dd3e9f51e08f0ef5567edf04aa.tar.gz
Merge branch 'lisp-team'
Change-Id: I4ec6ad695392c76c389224255477819fa686eecb
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/lisp-xyz.scm232
-rw-r--r--gnu/packages/lisp.scm9
-rw-r--r--gnu/packages/patches/sbcl-fix-ppc64-build.patch27
-rw-r--r--gnu/packages/patches/sbcl-fix-riscv-build.patch19
5 files changed, 167 insertions, 124 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 0fcac73d4c..f1bdfc73e9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -20,7 +20,7 @@
 # Copyright © 2018, 2019, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@gmail.com>
 # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
 # Copyright © 2018, 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
-# Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
+# Copyright © 2019, 2020, 2021, 2022, 2044 Guillaume Le Vaillant <glv@posteo.net>
 # Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
 # Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
 # Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
@@ -2007,6 +2007,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/sbcl-burgled-batteries3-fix-signals.patch	\
   %D%/packages/patches/sbcl-clml-fix-types.patch		\
   %D%/packages/patches/sbcl-eazy-gnuplot-skip-path-check.patch	\
+  %D%/packages/patches/sbcl-fix-ppc64-build.patch		\
+  %D%/packages/patches/sbcl-fix-riscv-build.patch		\
   %D%/packages/patches/sbcl-png-fix-sbcl-compatibility.patch	\
   %D%/packages/patches/scalapack-gcc-10-compilation.patch	\
   %D%/packages/patches/scheme48-tests.patch			\
diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 5b9613fc05..e63364f54b 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 ;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
-;;; Copyright © 2019-2023 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019-2024 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
 ;;; Copyright © 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
 ;;; Copyright © 2020 Dimakis Dimakakos <me@bendersteed.tech>
@@ -168,29 +168,30 @@
   (sbcl-package->ecl-package sbcl-alexandria-plus))
 
 (define-public sbcl-alexandria
-  (package
-   (name "sbcl-alexandria")
-   (version "1.4")
-   (source
-    (origin
-     (method git-fetch)
-     (uri (git-reference
-           (url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
-           (commit (string-append "v" version))))
-     (sha256
-      (base32
-       "0r1adhvf98h0104vq14q7y99h0hsa8wqwqw92h7ghrjxmsvz2z6l"))
-     (file-name (git-file-name name version))))
-   (build-system asdf-build-system/sbcl)
-   (native-inputs
-    (list sbcl-rt))
-   (synopsis "Collection of portable utilities for Common Lisp")
-   (description
-    "Alexandria is a collection of portable utilities.  It does not contain
+  (let ((commit "009b7e532071d9777bdbd63b82d776555da95916")
+        (revision "0"))
+    (package
+      (name "sbcl-alexandria")
+      (version (git-version "1.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://gitlab.common-lisp.net/alexandria/alexandria.git")
+               (commit commit)))
+         (file-name (git-file-name "cl-alexandria" version))
+         (sha256
+          (base32 "0pdj779j3nwzn8f1661vf00rrjrbks1xgiq0rvwjw6qyxsfqfnl9"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       (list sbcl-rt))
+      (synopsis "Collection of portable utilities for Common Lisp")
+      (description
+       "Alexandria is a collection of portable utilities.  It does not contain
 conceptual extensions to Common Lisp.  It is conservative in scope, and
 portable between implementations.")
-   (home-page "https://common-lisp.net/project/alexandria/")
-   (license license:public-domain)))
+      (home-page "https://common-lisp.net/project/alexandria/")
+      (license license:public-domain))))
 
 (define-public cl-alexandria
   (sbcl-package->cl-source-package sbcl-alexandria))
@@ -1280,14 +1281,14 @@ timeouts.")
 (define-public sbcl-bordeaux-threads
   (package
     (name "sbcl-bordeaux-threads")
-    (version "0.9.2")
+    (version "0.9.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
                     (url "https://github.com/sionescu/bordeaux-threads")
                     (commit (string-append "v" version))))
               (sha256
-               (base32 "0d9sd7pm91yhln95z8nclhn6n4l5b2cp3pxpggpmpv7rsq84ssmh"))
+               (base32 "0pp3w5hsph47sqagr4j2pbg3ddb29jx93zg8kvxsp2c4flp0qz0f"))
               (file-name (git-file-name "cl-bordeaux-threads" version))))
     (inputs (list sbcl-alexandria
                   sbcl-global-vars
@@ -1299,16 +1300,6 @@ timeouts.")
      (list
        #:phases
        #~(modify-phases %standard-phases
-           (add-after 'unpack 'silence-deprecation-warning
-             (lambda _
-               ;; The deprecation warning for APIv1 makes the build of some
-               ;; of the dependents of bordeaux-threads fail because they
-               ;; interpret it as an error instead of a simple indication.
-               ;; Let's silence this warning for now.
-               (substitute* (cons* "apiv1/default-implementations.lisp"
-                                   (find-files "apiv1" "impl-.*\\.lisp"))
-                 (("\\(warn \"Bordeaux-Threads APIv1 is deprecated\\. Please migrate to APIv2\\.\"\\)")
-                  ""))))
            (add-after 'unpack 'adjust-test-sleep
              (lambda _
                ;; 0.001 is too short for some slower machines.
@@ -1360,35 +1351,37 @@ thin compatibility layer for gray streams.")
   (sbcl-package->ecl-package sbcl-trivial-gray-streams))
 
 (define-public sbcl-flexi-streams
-  (package
-    (name "sbcl-flexi-streams")
-    (version "1.0.19")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/edicl/flexi-streams")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name "flexi-streams" version))
-       (sha256
-        (base32 "0v7lh4nrldzczd4mwylvmxfdxk7wfsli24iv1axd6mkb833llr70"))))
-    (build-system asdf-build-system/sbcl)
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'make-git-checkout-writable
-           (lambda _
-             (for-each make-file-writable (find-files "."))
-             #t)))))
-    (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams)))
-    (synopsis "Implementation of virtual bivalent streams for Common Lisp")
-    (description "Flexi-streams is an implementation of \"virtual\" bivalent
+  (let ((commit "74a1027311371a57258eba1bc908e050f5702277")
+        (revision "0"))
+    (package
+      (name "sbcl-flexi-streams")
+      (version (git-version "1.0.19" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/edicl/flexi-streams")
+               (commit commit)))
+         (file-name (git-file-name "cl-flexi-streams" version))
+         (sha256
+          (base32 "04azqvz11s8dngy49bjl19hrfn0ip1b7m0szm4hlppq364msil7b"))))
+      (build-system asdf-build-system/sbcl)
+      (arguments
+       (list #:phases
+             #~(modify-phases %standard-phases
+                 (add-after 'unpack 'make-git-checkout-writable
+                   (lambda _
+                     (for-each make-file-writable (find-files ".")))))))
+      (inputs
+       (list sbcl-trivial-gray-streams))
+      (synopsis "Implementation of virtual bivalent streams for Common Lisp")
+      (description "Flexi-streams is an implementation of \"virtual\" bivalent
 streams that can be layered atop real binary or bivalent streams and that can
 be used to read and write character data in various single- or multi-octet
 encodings which can be changed on the fly.  It also supplies in-memory binary
 streams which are similar to string streams.")
-    (home-page "http://weitz.de/flexi-streams/")
-    (license license:bsd-3)))
+      (home-page "http://weitz.de/flexi-streams/")
+      (license license:bsd-3))))
 
 (define-public cl-flexi-streams
   (sbcl-package->cl-source-package sbcl-flexi-streams))
@@ -4843,27 +4836,29 @@ precisely controls the behavior of the parser via Common Lisp restarts.")
   (sbcl-package->ecl-package sbcl-unix-opts))
 
 (define-public sbcl-trivial-garbage
-  (package
-    (name "sbcl-trivial-garbage")
-    (version "0.21")
-    (source
-     (origin
-       (method git-fetch)
-       (uri (git-reference
-             (url "https://github.com/trivial-garbage/trivial-garbage")
-             (commit (string-append "v" version))))
-       (file-name (git-file-name "trivial-garbage" version))
-       (sha256
-        (base32 "0122jicfg7pca1wxw8zak1n92h5friqy60988ns0ysksj3fphw9n"))))
-    (build-system asdf-build-system/sbcl)
-    (native-inputs
-     (list 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
+  (let ((commit "3474f6414b73d4e3aa2d5c53080f4247a34f6380")
+        (revision "0"))
+    (package
+      (name "sbcl-trivial-garbage")
+      (version (git-version "0.21" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/trivial-garbage/trivial-garbage")
+               (commit commit)))
+         (file-name (git-file-name "cl-trivial-garbage" version))
+         (sha256
+          (base32 "0rfwxvwg0kpcaa0hsi035yrkfdfks4bq8d9azmrww2f0rmv9g6sd"))))
+      (build-system asdf-build-system/sbcl)
+      (native-inputs
+       (list 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)))
+      (license license:public-domain))))
 
 (define-public cl-trivial-garbage
   (sbcl-package->cl-source-package sbcl-trivial-garbage))
@@ -5108,39 +5103,40 @@ WebKit browsing engine.")
   (sbcl-package->ecl-package sbcl-cl-webkit))
 
 (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)))
-    (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-dependency
-           ;; lparallel loads a SBCL specific system in its asd file. This is
-           ;; not carried over into the fasl which is generated. In order for
-           ;; it to be carried over, it needs to be listed as a dependency.
-           (lambda _
-             (substitute* "lparallel.asd"
-               ((":depends-on \\(:alexandria" all)
-                (string-append all " #+sbcl :sb-cltl2"))))))))
-    (home-page "https://lparallel.org/")
-    (synopsis "Parallelism for Common Lisp")
-    (description
-     "@command{lparallel} is a library for parallel programming in Common
+  (let ((commit "80fc2952a074776abd343d6b5d3ab157f0e1df7a")
+        (revision "1"))
+    (package
+      (name "sbcl-lparallel")
+      (version (git-version "2.8.4" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/sharplispers/lparallel/")
+               (commit commit)))
+         (file-name (git-file-name "cl-lparallel" version))
+         (sha256
+          (base32 "0nv2dx8cl25g68icqhw95yr5mygm86lcjzmzijql51na1p60g6y9"))))
+      (build-system asdf-build-system/sbcl)
+      (inputs
+       (list sbcl-alexandria
+             sbcl-bordeaux-threads
+             sbcl-trivial-garbage))
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-dependency
+             ;; lparallel loads a SBCL specific system in its asd file. This is
+             ;; not carried over into the fasl which is generated. In order for
+             ;; it to be carried over, it needs to be listed as a dependency.
+             (lambda _
+               (substitute* "lparallel.asd"
+                 ((":depends-on \\(:alexandria" all)
+                  (string-append all " #+sbcl :sb-cltl2"))))))))
+      (home-page "https://lparallel.org/")
+      (synopsis "Parallelism for Common Lisp")
+      (description
+       "@command{lparallel} is a library for parallel programming in Common
 Lisp, featuring:
 
 @itemize
@@ -5155,17 +5151,13 @@ Lisp, featuring:
 @item task killing by category,
 @item integrated timeouts.
 @end itemize\n")
-    (license license:expat)))
+      (license license:expat))))
 
 (define-public cl-lparallel
   (sbcl-package->cl-source-package sbcl-lparallel))
 
 (define-public ecl-lparallel
-  (package
-    (inherit (sbcl-package->ecl-package sbcl-lparallel))
-    (arguments
-     ;; TODO: Find why the tests get stuck forever; disable them for now.
-     `(#:tests? #f))))
+  (sbcl-package->ecl-package sbcl-lparallel))
 
 (define-public sbcl-cl-markup
   (let ((commit "e0eb7debf4bdff98d1f49d0f811321a6a637b390"))
@@ -16368,8 +16360,8 @@ directly.")
   (sbcl-package->ecl-package sbcl-custom-hash-table))
 
 (define-public sbcl-concurrent-hash-tables
-  (let ((commit "1b9f0b5da54fece4f42296e1bdacfcec0c370a5a")
-        (revision "0"))
+  (let ((commit "6ad539b8970ff94b1e1369b59065ed7d0660904c")
+        (revision "1"))
     (package
       (name "sbcl-concurrent-hash-tables")
       (version (git-version "0.0.0" revision commit))
@@ -16381,7 +16373,7 @@ directly.")
                (commit commit)))
          (file-name (git-file-name "cl-concurrent-hash-tables" version))
          (sha256
-          (base32 "03g24ycr1ngzg8bv10iwp1bmnldz5bxbfdqrzhfxhicpibh49r96"))))
+          (base32 "0wgbv3wl33rlfbywmjag0gk7igzfksmib30r8cbnd5n47ic09iip"))))
       (build-system asdf-build-system/sbcl)
       (inputs
        (list sbcl-atomics sbcl-bordeaux-threads))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index e89e02e1e4..4f89779d8d 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -14,7 +14,7 @@
 ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com>
 ;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com>
-;;; Copyright © 2019-2023 Guillaume Le Vaillant <glv@posteo.net>
+;;; Copyright © 2019-2024 Guillaume Le Vaillant <glv@posteo.net>
 ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
 ;;; Copyright © 2021, 2023 Sharlatan Hellseher <sharlatanus@gmail.com>
@@ -439,14 +439,17 @@ an interpreter, a compiler, a debugger, and much more.")
 (define-public sbcl
   (package
     (name "sbcl")
-    (version "2.3.7")
+    (version "2.4.0")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
                            version "-source.tar.bz2"))
        (sha256
-        (base32 "1xwr1pnwd3xj375ainlad7mm479rk2mrks8dc6d92cash3xl90b9"))
+        (base32 "0xhpdnsg8idzxkn20iw8gd2rk470d7vc22vrp5clq9fj117vgn43"))
+       ;; TODO: Remove these patches when updating to sbcl > 2.4.0.
+       (patches (search-patches "sbcl-fix-ppc64-build.patch"
+                                "sbcl-fix-riscv-build.patch"))
        (modules '((guix build utils)))
        (snippet
         '(begin
diff --git a/gnu/packages/patches/sbcl-fix-ppc64-build.patch b/gnu/packages/patches/sbcl-fix-ppc64-build.patch
new file mode 100644
index 0000000000..a7d4d9a21e
--- /dev/null
+++ b/gnu/packages/patches/sbcl-fix-ppc64-build.patch
@@ -0,0 +1,27 @@
+commit 255f3ead060129aa097b62f10d054cdc4997a431
+Author: Douglas Katzman <dougk@google.com>
+Date:   Mon Jan 1 23:59:50 2024 -0500
+
+    Fix ppc64 failure-to-build (from a few weeks ago)
+    
+    Git rev 7354472bb5 caused NIL to get a bogus widetag.
+
+diff --git a/make-target-2-load.lisp b/make-target-2-load.lisp
+index 6571ec27d..daef942ea 100644
+--- a/make-target-2-load.lisp
++++ b/make-target-2-load.lisp
+@@ -339,7 +339,13 @@ Please check that all strings which were not recognizable to the compiler
+ 
+ 
+   (do-all-symbols (symbol)
+-    (sb-kernel:logior-header-bits symbol sb-vm::+symbol-initial-core+)
++    ;; Don't futz with the header of static symbols.
++    ;; Technically LOGIOR-HEADER-BITS can only be used on an OTHER-POINTER-LOWTAG
++    ;; objects, so modifying NIL should not ever work, but it's especially wrong
++    ;; on ppc64 where OTHER- and LIST- pointer lowtags are 10 bytes apart instead
++    ;; of 8, so this was making a random alteration to the header.
++    (unless (eq (heap-allocated-p symbol) :static)
++      (sb-kernel:logior-header-bits symbol sb-vm::+symbol-initial-core+))
+ 
+     ;; A symbol whose INFO slot underwent any kind of manipulation
+     ;; such that it now has neither properties nor globaldb info,
diff --git a/gnu/packages/patches/sbcl-fix-riscv-build.patch b/gnu/packages/patches/sbcl-fix-riscv-build.patch
new file mode 100644
index 0000000000..3e01ee6579
--- /dev/null
+++ b/gnu/packages/patches/sbcl-fix-riscv-build.patch
@@ -0,0 +1,19 @@
+commit b286d92af7468164c155c70d38213211b296fdfe
+Author: Douglas Katzman <dougk@google.com>
+Date:   Wed Jan 10 11:46:55 2024 -0500
+
+    Fix riscv build
+
+diff --git a/src/compiler/riscv/float.lisp b/src/compiler/riscv/float.lisp
+index ce46d24ac..a16380293 100644
+--- a/src/compiler/riscv/float.lisp
++++ b/src/compiler/riscv/float.lisp
+@@ -578,7 +578,7 @@
+   (:results (res :scs (double-reg)))
+   (:arg-types signed-num)
+   (:result-types double-float)
+-  (:translate make-double-float)
++  (:translate %make-double-float)
+   (:policy :fast-safe)
+   (:generator 2
+     (inst fmvx-> :double res bits)))