diff options
-rw-r--r-- | gnu/local.mk | 4 | ||||
-rw-r--r-- | gnu/packages/lisp-xyz.scm | 232 | ||||
-rw-r--r-- | gnu/packages/lisp.scm | 9 | ||||
-rw-r--r-- | gnu/packages/patches/sbcl-fix-ppc64-build.patch | 27 | ||||
-rw-r--r-- | gnu/packages/patches/sbcl-fix-riscv-build.patch | 19 |
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))) |