summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Neidhardt <mail@ambrevar.xyz>2019-08-25 12:28:28 +0200
committerPierre Neidhardt <mail@ambrevar.xyz>2019-08-25 12:28:28 +0200
commitd0480ca1a218361c449defbc653fe460f5f2f329 (patch)
tree3d4be4fea33eafed928ca2f40140a07bb7548648
parent3d76112769d2149e81b7cc774d859469d1f1909e (diff)
gnu: sbcl: Include source so that standard symbol definitions can be examined.
* gnu/packages/lisp.scm (sbcl)[arguments]: Add build-source phase to install source directories "src" and "contrib".
-rw-r--r--gnu/packages/lisp.scm17
1 files changed, 15 insertions, 2 deletions
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 1945a1bdd8..d32f4b19bd 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -423,8 +423,6 @@ an interpreter, a compiler, a debugger, and much more.")
;; them in HOME, so it needs to be writeable.
(add-before 'build 'set-HOME
(lambda _ (setenv "HOME" "/tmp") #t))
- ;; TODO: We need to install the source as well (`src/code' directory)
- ;; so that "go do definition" can work.
(replace 'build
(lambda* (#:key outputs #:allow-other-keys)
(setenv "CC" "gcc")
@@ -445,6 +443,21 @@ an interpreter, a compiler, a debugger, and much more.")
(with-directory-excursion "doc/manual"
(and (invoke "make" "info")
(invoke "make" "dist")))))
+ (add-after 'build 'build-source
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (rc (string-append out "/lib/sbcl/sbclrc"))
+ (source-dir (string-append out "/share/sbcl")))
+ (for-each (lambda (p)
+ (copy-recursively p (string-append source-dir "/" p)))
+ '("src" "contrib"))
+ (mkdir-p (dirname rc))
+ (with-output-to-file rc
+ (lambda ()
+ (display
+ (string-append "(sb-ext:set-sbcl-source-location \""
+ source-dir "\")") )))
+ #t)))
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))