[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
04/33: build-system: emacs: Use subdirectories again.
From: |
guix-commits |
Subject: |
04/33: build-system: emacs: Use subdirectories again. |
Date: |
Sat, 1 May 2021 14:37:47 -0400 (EDT) |
leoprikler pushed a commit to branch master
in repository guix.
commit 79cfe30f3eb10bd3dbf7aa0f6e873c945d7d0ea5
Author: Leo Prikler <leo.prikler@student.tugraz.at>
AuthorDate: Sat Apr 17 19:06:19 2021 +0200
build-system: emacs: Use subdirectories again.
With this, Emacs libraries are installed in the ELPA_NAME-VERSION
subdirectory
of site-lisp and potential subdirectories should no longer collide.
* guix/build/emacs-build-system.scm (add-source-to-load-path): Rename to...
(expand-load-path): ... this. Also expand lone subdirectories of site-lisp.
(%standard-phases): Adjust accordingly.
(elpa-directory): New variable. Export it publicly for use in other build
systems.
(build, patch-el-files, make-autoloads): Use ELPA name and version to
construct subdirectories of %install-dir.
(install): Install in subdirectory.
---
guix/build/emacs-build-system.scm | 70 +++++++++++++++++++++++++--------------
1 file changed, 45 insertions(+), 25 deletions(-)
diff --git a/guix/build/emacs-build-system.scm
b/guix/build/emacs-build-system.scm
index 26ea59b..ae0f2e5 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -26,13 +26,16 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
+ #:use-module (ice-9 format)
+ #:use-module (ice-9 ftw)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 regex)
#:use-module (ice-9 match)
#:export (%standard-phases
%default-include
%default-exclude
- emacs-build))
+ emacs-build
+ elpa-directory))
;; Commentary:
;;
@@ -73,33 +76,43 @@ archive, a directory, or an Emacs Lisp file."
#t)
(gnu:unpack #:source source)))
-(define* (add-source-to-load-path #:key dummy #:allow-other-keys)
- "Augment the EMACSLOADPATH environment variable with the source directory."
+(define* (expand-load-path #:key (prepend-source? #t) #:allow-other-keys)
+ "Expand EMACSLOADPATH, so that inputs, whose code resides in subdirectories,
+are properly found.
+If @var{prepend-source?} is @code{#t} (the default), also add the current
+directory to EMACSLOADPATH in front of any other directories."
(let* ((source-directory (getcwd))
(emacs-load-path (string-split (getenv "EMACSLOADPATH") #\:))
- ;; XXX: Make sure the Emacs core libraries appear at the end of
- ;; EMACSLOADPATH, to avoid shadowing any other libraries depended
- ;; upon.
- (emacs-load-path-non-core (filter (cut string-contains <>
- "/share/emacs/site-lisp")
- emacs-load-path))
+ (emacs-load-path*
+ (map
+ (lambda (dir)
+ (match (scandir dir (negate (cute member <> '("." ".."))))
+ ((sub) (string-append dir "/" sub))
+ (_ dir)))
+ emacs-load-path))
(emacs-load-path-value (string-append
- (string-join (cons source-directory
- emacs-load-path-non-core)
- ":")
+ (string-join
+ (if prepend-source?
+ (cons source-directory emacs-load-path*)
+ emacs-load-path*)
+ ":")
":")))
(setenv "EMACSLOADPATH" emacs-load-path-value)
- (format #t "source directory ~s prepended to the `EMACSLOADPATH' \
-environment variable\n" source-directory)))
+ (when prepend-source?
+ (format #t "source directory ~s prepended to the `EMACSLOADPATH' \
+environment variable\n" source-directory))
+ (let ((diff (lset-difference string=? emacs-load-path* emacs-load-path)))
+ (unless (null? diff)
+ (format #t "expanded load paths for ~{~a~^, ~}\n"
+ (map basename diff))))))
(define* (build #:key outputs inputs #:allow-other-keys)
"Compile .el files."
(let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
- (out (assoc-ref outputs "out"))
- (site-lisp (string-append out %install-dir)))
+ (out (assoc-ref outputs "out")))
(setenv "SHELL" "sh")
(parameterize ((%emacs emacs))
- (emacs-byte-compile-directory site-lisp))))
+ (emacs-byte-compile-directory (elpa-directory out)))))
(define* (patch-el-files #:key outputs #:allow-other-keys)
"Substitute the absolute \"/bin/\" directory with the right location in the
@@ -116,7 +129,8 @@ store in '.el' files."
#:binary #t))
(let* ((out (assoc-ref outputs "out"))
- (site-lisp (string-append out %install-dir))
+ (elpa-name-ver (store-directory->elpa-name-version out))
+ (el-dir (string-append out %install-dir "/" elpa-name-ver))
;; (ice-9 regex) uses libc's regexp routines, which cannot deal with
;; strings containing NULs. Filter out such files. TODO: Remove
;; this workaround when <https://bugs.gnu.org/30116> is fixed.
@@ -130,7 +144,7 @@ store in '.el' files."
(error "patch-el-files: unable to locate " cmd-name))
(string-append "\"" cmd "\"")))))
- (with-directory-excursion site-lisp
+ (with-directory-excursion el-dir
;; Some old '.el' files (e.g., tex-buf.el in AUCTeX) are still
;; ISO-8859-1-encoded.
(unless (false-if-exception (substitute-program-names))
@@ -181,14 +195,14 @@ parallel. PARALLEL-TESTS? is ignored when using a
non-make TEST-COMMAND."
(not (any (cut match-stripped-file "excluded" <>) exclude)))))
(let* ((out (assoc-ref outputs "out"))
- (site-lisp (string-append out %install-dir))
+ (el-dir (elpa-directory out))
(files-to-install (find-files source install-file?)))
(cond
((not (null? files-to-install))
(for-each
(lambda (file)
(let* ((stripped-file (string-drop file (string-length source)))
- (target-file (string-append site-lisp stripped-file)))
+ (target-file (string-append el-dir stripped-file)))
(format #t "`~a' -> `~a'~%" file target-file)
(install-file file (dirname target-file))))
files-to-install)
@@ -219,11 +233,11 @@ parallel. PARALLEL-TESTS? is ignored when using a
non-make TEST-COMMAND."
"Generate the autoloads file."
(let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
(out (assoc-ref outputs "out"))
- (site-lisp (string-append out %install-dir))
(elpa-name-ver (store-directory->elpa-name-version out))
- (elpa-name (package-name->name+version elpa-name-ver)))
+ (elpa-name (package-name->name+version elpa-name-ver))
+ (el-dir (elpa-directory out)))
(parameterize ((%emacs emacs))
- (emacs-generate-autoloads elpa-name site-lisp))))
+ (emacs-generate-autoloads elpa-name el-dir))))
(define* (enable-autoloads-compilation #:key outputs #:allow-other-keys)
"Remove the NO-BYTE-COMPILATION local variable embedded in the generated
@@ -258,10 +272,16 @@ second hyphen. This corresponds to 'name-version' as
used in ELPA packages."
strip-store-file-name)
store-dir))
+(define (elpa-directory store-dir)
+ "Given the store directory STORE-DIR return the absolute install directory
+for libraries following the ELPA convention."
+ (string-append store-dir %install-dir "/"
+ (store-directory->elpa-name-version store-dir)))
+
(define %standard-phases
(modify-phases gnu:%standard-phases
(replace 'unpack unpack)
- (add-after 'unpack 'add-source-to-load-path add-source-to-load-path)
+ (add-after 'unpack 'expand-load-path expand-load-path)
(delete 'bootstrap)
(delete 'configure)
(delete 'build)
- 03/33: gnu: emacs: Add coreutils and gzip to PATH., (continued)
- 03/33: gnu: emacs: Add coreutils and gzip to PATH., guix-commits, 2021/05/01
- 12/33: gnu: emacs-pdf-tools: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 05/33: gnu: emacs-libgit: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 17/33: gnu: emacs-edbi: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 06/33: gnu: emacs-guix: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 08/33: gnu: Add emacs-telega-contrib., guix-commits, 2021/05/01
- 30/33: gnu: emacs-w3m: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 13/33: gnu: emacs-shroud: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 15/33: gnu: emacs-sly-stepper: Remove generated sources., guix-commits, 2021/05/01
- 02/33: gnu: emacs: Wrap EMACSLOADPATH., guix-commits, 2021/05/01
- 04/33: build-system: emacs: Use subdirectories again.,
guix-commits <=
- 09/33: gnu: emacs-emacsql: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 16/33: gnu: emacs-org-contrib: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 22/33: gnu: emacs-realgud: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 19/33: gnu: emacs-vterm: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 20/33: gnu: notmuch: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 25/33: gnu: emacs-guix: Update to 0.5.2-4.8ce6d21., guix-commits, 2021/05/01
- 23/33: gnu: emacs-geiser: Update to 0.13., guix-commits, 2021/05/01
- 29/33: gnu: emacs-dvc: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 33/33: gnu: emacs-julia-snail: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01
- 10/33: gnu: emacs-howm: Adjust to changes in emacs-build-system., guix-commits, 2021/05/01