gnu: sbcl: Use system ASDF instead of bundled one.

* gnu/packages/lisp.scm (sbcl)[source]: Remove snippet.
  [native-inputs]: Add cl-asdf and sort the list.
  [arguments]: Add 'replace-asdf' phase.

Co-authored-by: Guillaume Le Vaillant <glv@posteo.net>
This commit is contained in:
Katherine Cox-Buday 2020-01-17 15:28:42 +01:00 committed by Guillaume Le Vaillant
parent d276ffcac9
commit 2f66c315b8
No known key found for this signature in database
GPG key ID: 6BE8208ADF21FE3F

View file

@ -364,14 +364,7 @@ (define-public sbcl
(uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
version "-source.tar.bz2"))
(sha256
(base32 "1krgd69cirp4ili2pfsh1a0mfvq722jbknlvmf17qhsxh1b94dlh"))
(modules '((guix build utils)))
(snippet
;; Add sbcl-bundle-systems to 'default-system-source-registry'.
`(begin
(substitute* "contrib/asdf/asdf.lisp"
,@(asdf-substitutions name))
#t))))
(base32 "1krgd69cirp4ili2pfsh1a0mfvq722jbknlvmf17qhsxh1b94dlh"))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
(native-inputs
@ -400,11 +393,12 @@ (define-public sbcl
`(("clisp" ,clisp)))
(_
`(("clisp" ,clisp))))
("which" ,which)
("inetutils" ,inetutils) ;for hostname(1)
("cl-asdf" ,cl-asdf)
("ed" ,ed)
("texlive" ,(texlive-union (list texlive-tex-texinfo)))
("inetutils" ,inetutils) ;for hostname(1)
("texinfo" ,texinfo)
("texlive" ,(texlive-union (list texlive-tex-texinfo)))
("which" ,which)
("zlib" ,zlib)))
(arguments
`(#:modules ((guix build gnu-build-system)
@ -413,6 +407,24 @@ (define-public sbcl
#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-after 'unpack 'replace-asdf
;; SBCL developers have not committed to keeping ASDF up to date
;; due to breaking changes [1]. Guix can handle this situation
;; easily, and it behooves us to have more control over what version
;; of ASDF we use to build software; therefore, replace the contrib
;; ASDF with the version packaged into Guix.
;; [1] - https://bugs.launchpad.net/sbcl/+bug/1823442
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((cl-asdf (assoc-ref inputs "cl-asdf"))
(guix-asdf (string-append
cl-asdf
"/share/common-lisp/source/asdf/asdf.lisp"))
(out (string-append (assoc-ref outputs "out")))
(contrib-asdf "contrib/asdf/asdf.lisp"))
(copy-file guix-asdf contrib-asdf)
(substitute* contrib-asdf
,@(asdf-substitutions name)))
#t))
(add-before 'build 'patch-unix-tool-paths
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
@ -512,8 +524,8 @@ (define (quoted-path input path)
new-doc/sbcl-dir)
(delete-file-recursively old-doc-dir)
#t))))
;; No 'check' target, though "make.sh" (build phase) runs tests.
#:tests? #f))
;; No 'check' target, though "make.sh" (build phase) runs tests.
#:tests? #f))
(native-search-paths
(list (search-path-specification
(variable "XDG_DATA_DIRS")