summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/dictionaries.scm8
-rw-r--r--gnu/packages/emacs-xyz.scm33
-rw-r--r--gnu/packages/guile-xyz.scm6
-rw-r--r--gnu/packages/language.scm6
-rw-r--r--gnu/packages/mail.scm30
-rw-r--r--gnu/packages/xorg.scm13
-rw-r--r--guix/build/emacs-build-system.scm81
7 files changed, 73 insertions, 104 deletions
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index 06b5c4362c..9f493d91ad 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -272,12 +272,12 @@ and a Python library.")
curl "/bin:"
fribidi "/bin:"
rlwrap "/bin")))))))
+ (add-after 'unpack 'emacs-make-autoloads
+ (assoc-ref emacs:%standard-phases 'make-autoloads))
(add-after 'install 'emacs-install
(assoc-ref emacs:%standard-phases 'install))
- (add-after 'emacs-install 'emacs-make-autoloads
- (assoc-ref emacs:%standard-phases 'make-autoloads))
- (add-after 'emacs-make-autoloads 'emacs-autoloads-compilation
- (assoc-ref emacs:%standard-phases 'enable-autoloads-compilation)))
+ (add-after 'emacs-install 'emacs-build
+ (assoc-ref emacs:%standard-phases 'build)))
#:make-flags (list (string-append "PREFIX=" %output)
"NETWORK_ACCESS=no test")
#:imported-modules (,@%gnu-build-system-modules
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 9cb2dec98c..fc3c9e00be 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -567,8 +567,7 @@ API key.")
(search-input-file inputs "bin/guile"))))))
(add-after 'make-autoloads 'patch-autoloads
(lambda _
- (substitute* (string-append (elpa-directory #$output)
- "/geiser-guile-autoloads.el")
+ (substitute* "geiser-guile-autoloads.el"
;; Activating implementations fails when Geiser is not yet
;; loaded, so let's defer that until it is.
(("\\(geiser-activate-implementation .*\\)" all)
@@ -637,8 +636,7 @@ using geiser.")
(search-input-file inputs "bin/gosh")))))
(add-after 'make-autoloads 'patch-autoloads
(lambda _
- (substitute* (string-append (elpa-directory #$output)
- "/geiser-gauche-autoloads.el")
+ (substitute* "geiser-gauche-autoloads.el"
;; Activating implementations fails when Geiser is not yet
;; loaded, so let's defer that until it is.
(("\\(geiser-activate-implementation .*\\)" all)
@@ -683,8 +681,7 @@ a generic Scheme interaction mode for the GNU Emacs editor.")
(search-input-file inputs "bin/racket"))))))
(add-after 'make-autoloads 'patch-autoloads
(lambda _
- (substitute* (string-append (elpa-directory #$output)
- "/geiser-racket-autoloads.el")
+ (substitute* "geiser-racket-autoloads.el"
;; Activating implementations fails when Geiser is not yet
;; loaded, so let's defer that until it is.
(("\\(geiser-activate-implementation .*\\)" all)
@@ -722,9 +719,7 @@ a generic Scheme interaction mode for the GNU Emacs editor.")
(modify-phases %standard-phases
(add-after 'make-autoloads 'patch-autoloads
(lambda* (#:key outputs #:allow-other-keys)
- (substitute* (string-append
- (elpa-directory (assoc-ref outputs "out"))
- "/geiser-chez-autoloads.el")
+ (substitute* "geiser-chez-autoloads.el"
;; Activating implementations fails when Geiser is not yet
;; loaded, so let's defer that until it is.
;; See <https://gitlab.com/emacs-geiser/chez/-/issues/7>.
@@ -1512,13 +1507,11 @@ on stdout instead of using a socket as the Emacsclient does.")
emacs:%default-include)))))
(add-after 'unpack 'emacs-add-install-to-native-load-path
(assoc-ref emacs:%standard-phases 'add-install-to-native-load-path))
- (add-after 'install 'make-autoloads
+ (add-after 'unpack 'make-autoloads
(assoc-ref emacs:%standard-phases 'make-autoloads))
- (add-after 'make-autoloads 'enable-autoloads-compilation
- (assoc-ref emacs:%standard-phases 'enable-autoloads-compilation))
- (add-after 'enable-autoloads-compilation 'patch-el-files
+ (add-after 'unpack 'patch-el-files
(assoc-ref emacs:%standard-phases 'patch-el-files))
- (add-after 'patch-el-files 'emacs-build
+ (add-after 'install 'emacs-build
(assoc-ref emacs:%standard-phases 'build))
(add-after 'emacs-build 'validate-compiled-autoloads
(assoc-ref emacs:%standard-phases 'validate-compiled-autoloads)))))
@@ -3831,6 +3824,8 @@ defined in RFC 2425 and RFC 2426 to/from The Insidious Big Brother Database
(emacs-substitute-sexps "eweouz.el"
("eweouz-helper-dirs"
`(list ,(string-append #$output "/libexec/eweouz"))))))
+ (add-after 'enter-lisp-dir 'emacs-make-autoloads
+ (assoc-ref emacs:%standard-phases 'make-autoloads))
(add-after 'emacs-patch-variables 'emacs-expand-load-path
(assoc-ref emacs:%standard-phases 'expand-load-path))
(add-after 'emacs-expand-load-path 'emacs-add-install-to-native-load-path
@@ -3838,9 +3833,7 @@ defined in RFC 2425 and RFC 2426 to/from The Insidious Big Brother Database
(add-after 'emacs-add-install-to-native-load-path 'emacs-install
(assoc-ref emacs:%standard-phases 'install))
(add-after 'emacs-install 'emacs-build
- (assoc-ref emacs:%standard-phases 'build))
- (add-after 'emacs-install 'emacs-make-autoloads
- (assoc-ref emacs:%standard-phases 'make-autoloads)))))
+ (assoc-ref emacs:%standard-phases 'build)))))
(native-inputs
(list autoconf
automake
@@ -5476,6 +5469,8 @@ during idle time, while Emacs is doing nothing else.")
;; upgrading" that pdf-tools tries to perform.
(emacs-substitute-variables "pdf-tools.el"
("pdf-tools-handle-upgrades" '()))))
+ (add-after 'enter-lisp-dir 'emacs-make-autoloads
+ (assoc-ref emacs:%standard-phases 'make-autoloads))
(add-after 'emacs-patch-variables 'emacs-expand-load-path
(assoc-ref emacs:%standard-phases 'expand-load-path))
(add-after 'emacs-expand-load-path 'emacs-add-install-to-native-load-path
@@ -5483,9 +5478,7 @@ during idle time, while Emacs is doing nothing else.")
(add-after 'emacs-add-install-to-native-load-path 'emacs-install
(assoc-ref emacs:%standard-phases 'install))
(add-after 'emacs-install 'emacs-build
- (assoc-ref emacs:%standard-phases 'build))
- (add-after 'emacs-install 'emacs-make-autoloads
- (assoc-ref emacs:%standard-phases 'make-autoloads)))))
+ (assoc-ref emacs:%standard-phases 'build)))))
(native-inputs
(list autoconf automake emacs-minimal pkg-config))
(inputs
diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index b36b4aa233..6bafc5814f 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -2248,12 +2248,12 @@ user which package sets would they like to install from it.")
(invoke "guild" "compile" "-L" module-dir
file "-o" go)))
(find-files module-dir "\\.scm$")))))
+ (add-after 'unpack 'make-autoloads
+ (assoc-ref emacs:%standard-phases 'make-autoloads))
(add-after 'install 'install-emacs-files
(assoc-ref emacs:%standard-phases 'install))
(add-after 'install-emacs-files 'compile-emacs-files
- (assoc-ref emacs:%standard-phases 'build))
- (add-after 'compile-emacs-files 'make-autoloads
- (assoc-ref emacs:%standard-phases 'make-autoloads)))))
+ (assoc-ref emacs:%standard-phases 'build)))))
(home-page "https://www.draketo.de/english/wisp")
(inputs
(list guile-3.0))
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index db78425ec9..0b562bcde9 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -1003,15 +1003,15 @@ and manipulation.")
"convert2skk/skk2list")
(find-files "filters" "\\.rb$"))))))
;; Install and make autoloads for skk-xml.el.
+ (add-after 'unpack 'make-autoloads
+ (assoc-ref emacs:%standard-phases
+ 'make-autoloads))
(add-after 'install 'install-emacs-files
(assoc-ref emacs:%standard-phases
'install))
(add-after 'install-emacs-files 'compile-emacs-files
(assoc-ref emacs:%standard-phases
'build))
- (add-after 'compile-emacs-files 'make-autoloads
- (assoc-ref emacs:%standard-phases
- 'make-autoloads))
(add-after 'install 'install-docs
(lambda* (#:key outputs #:allow-other-keys)
(let ((doc (string-append (assoc-ref outputs "out")
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 4466e5e6d9..8ca8f86b99 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1168,17 +1168,17 @@ repository and Maildir/IMAP as LOCAL repository.")
"0xazygwdc328m5l31rxjazq9giv2xrygp2p2q455lf3jhdxwq1km"))))
(build-system gnu-build-system)
(arguments
- (let ((elisp-dir #~(string-append #$output "/share/emacs/site-lisp"))
- (icon-dir #~(string-append #$output "/share/mew")))
+ (let ((icon-dir #~(string-append #$output "/share/mew")))
(list
#:modules '((guix build gnu-build-system)
(guix build utils)
+ ((guix build emacs-build-system) #:prefix emacs:)
(guix build emacs-utils))
- #:imported-modules `(,@%gnu-build-system-modules
- (guix build emacs-utils))
+ #:imported-modules %emacs-build-system-modules
#:tests? #f
#:configure-flags
- #~(list (string-append "--with-elispdir=" #$elisp-dir)
+ #~(list (string-append "--with-elispdir="
+ (emacs:elpa-directory #$output))
(string-append "--with-etcdir=" #$icon-dir))
#:phases
#~(modify-phases %standard-phases
@@ -1189,9 +1189,15 @@ repository and Maildir/IMAP as LOCAL repository.")
`(progn
(add-to-list 'image-load-path 'mew-icon-directory)
,#$icon-dir)))))
- (add-after 'install 'generate-autoloads
+ (add-after 'unpack 'generate-autoloads
(lambda _
- (emacs-generate-autoloads "mew" #$elisp-dir)))))))
+ (emacs-generate-autoloads "mew" "elisp")
+ (substitute* "elisp/mew-autoloads.el"
+ ((";; no-byte-compile.*") ""))
+ ;; Add generated autoloads to Makefile, so they get compiled
+ (substitute* "elisp/Makefile"
+ (("OBJS =") "OBJS = mew-autoloads.elc")
+ (("SRCS =") "SRCS = mew-autoloads.el"))))))))
(native-inputs
(list emacs))
(propagated-inputs
@@ -4746,14 +4752,12 @@ ex-like commands on it.")
(for-each (lambda (file)
(install-file file (string-append out "/bin")))
(list "mailfilter.crm" "mailreaver.crm" "mailtrainer.crm")))))
- (add-after 'install 'install-emacs-mode
- (assoc-ref emacs:%standard-phases 'install))
;; Run phases from the emacs build system.
- (add-after 'install-emacs-mode 'make-autoloads
+ (add-after 'unpack 'make-autoloads
(assoc-ref emacs:%standard-phases 'make-autoloads))
- (add-after 'make-autoloads 'enable-autoloads-compilation
- (assoc-ref emacs:%standard-phases 'enable-autoloads-compilation))
- (add-after 'enable-autoloads-compilation 'emacs-build
+ (add-after 'install 'install-emacs-mode
+ (assoc-ref emacs:%standard-phases 'install))
+ (add-after 'install-emacs-mode 'emacs-build
(assoc-ref emacs:%standard-phases 'build))
(add-after 'emacs-build 'validate-compiled-autoloads
(assoc-ref emacs:%standard-phases 'validate-compiled-autoloads)))))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index b7279d0633..c003754930 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -6293,7 +6293,6 @@ X11 servers, Windows, or macOS.")
(guix build emacs-utils))
#:configure-flags
(list "--with-anthy-utf8"
- (string-append "--with-lispdir=" %output "/share/emacs")
;; Set proper runpath
(string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
"CFLAGS=-O2 -g -fcommon")
@@ -6307,21 +6306,11 @@ X11 servers, Windows, or macOS.")
("uim-el-agent" (string-append out "/bin/uim-el-agent"))
("uim-el-helper-agent" (string-append out "/bin/uim-el-helper-agent"))))
#t))
- ;; Fix installation path by renaming share/emacs/uim-el to
- ;; share/emacs/site-lisp
- (add-after 'install 'fix-install-path
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((share-emacs (string-append (assoc-ref outputs "out")
- "/share/emacs")))
- (rename-file (string-append share-emacs "/uim-el")
- (string-append share-emacs "/site-lisp")))
- #t))
- ;; Generate emacs autoloads for uim.el
(add-after 'fix-install-path 'make-autoloads
(lambda* (#:key outputs #:allow-other-keys)
(emacs-generate-autoloads
,name (string-append (assoc-ref outputs "out")
- "/share/emacs/site-lisp"))
+ "/share/emacs/site-lisp/uim-el"))
#t)))))
(home-page "https://github.com/uim/uim")
(synopsis "Multilingual input method framework")
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index 3808b60445..aa083c6409 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -132,29 +132,25 @@ environment variable\n" source-directory))
(parameterize ((%emacs emacs))
(emacs-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
-store in '.el' files."
+(define* (patch-el-files #:key inputs outputs #:allow-other-keys)
+ "Substitute the absolute \"/bin/\" and \"/sbin\" directories with the right
+locations in the store in '.el' files."
- (let* ((out (assoc-ref outputs "out"))
- (elpa-name-ver (store-directory->elpa-name-version out))
- (el-dir (string-append out %install-dir "/" elpa-name-ver))
- (el-files (find-files (getcwd) "\\.el$")))
- (define (substitute-program-names)
- (substitute* el-files
- (("\"/bin/([^.]\\S*)\"" _ cmd-name)
- (let ((cmd (which cmd-name)))
- (unless cmd
- (error "patch-el-files: unable to locate " cmd-name))
- (string-append "\"" cmd "\"")))))
+ (define substitute-program-names
+ (let ((el-files (find-files (getcwd) "\\.el$")))
+ (lambda ()
+ (substitute* el-files
+ (("\"/(s?bin/[^.]\\S*)\"" _ cmd)
+ (let ((cmd (search-input-file inputs cmd)))
+ (unless cmd
+ (error "patch-el-files: unable to locate " (basename cmd)))
+ (string-append "\"" cmd "\"")))))))
- (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))
- (with-fluids ((%default-port-encoding "ISO-8859-1"))
- (substitute-program-names))))
- #t))
+ (unless (false-if-exception (substitute-program-names))
+ ;; Some old '.el' files (e.g., tex-buf.el in AUCTeX) are still
+ ;; ISO-8859-1-encoded.
+ (with-fluids ((%default-port-encoding "ISO-8859-1"))
+ (substitute-program-names))))
(define (find-root-library-file name)
(let loop ((parts (string-split
@@ -224,10 +220,8 @@ store in '.el' files."
(emacs-batch-edit-file (string-append name ".el")
%write-pkg-file-form)))
- (let* ((out (assoc-ref outputs "out"))
- (elpa-name-ver (store-directory->elpa-name-version out)))
- (with-directory-excursion (elpa-directory out)
- (and=> (find-root-library-file elpa-name-ver) write-pkg-file))))
+ (let ((name (store-directory->elpa-name-version (assoc-ref outputs "out"))))
+ (and=> (find-root-library-file name) write-pkg-file)))
(define* (check #:key tests? (test-command '("make" "check"))
(parallel-tests? #t) #:allow-other-keys)
@@ -306,24 +300,15 @@ parallel. PARALLEL-TESTS? is ignored when using a non-make TEST-COMMAND."
info-files)))
#t))
-(define* (make-autoloads #:key outputs inputs #:allow-other-keys)
+(define* (make-autoloads #:key outputs #:allow-other-keys)
"Generate the autoloads file."
- (let* ((emacs (search-input-file inputs "/bin/emacs"))
- (out (assoc-ref outputs "out"))
- (elpa-name-ver (store-directory->elpa-name-version out))
- (elpa-name (package-name->name+version elpa-name-ver))
- (el-dir (elpa-directory out)))
- (parameterize ((%emacs emacs))
- (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
-autoload files."
- (let* ((out (assoc-ref outputs "out"))
- (autoloads (find-files out "-autoloads.el$")))
- (substitute* autoloads
- ((";; no-byte-compile.*") ""))
- #t))
+ (emacs-generate-autoloads
+ (package-name->name+version (store-directory->elpa-name-version
+ (assoc-ref outputs "out")))
+ (getcwd))
+ ;; Ensure that autoloads can be byte-compiled.
+ (substitute* (find-files "." "-autoloads\\.el$")
+ ((";; no-byte-compile.*") "")))
(define* (validate-compiled-autoloads #:key outputs #:allow-other-keys)
"Verify whether the byte compiled autoloads load fine."
@@ -358,7 +343,11 @@ for libraries following the ELPA convention."
(define %standard-phases
(modify-phases gnu:%standard-phases
(replace 'unpack unpack)
+ (add-after 'unpack 'ensure-package-description
+ ensure-package-description)
(add-after 'unpack 'expand-load-path expand-load-path)
+ (add-after 'unpack 'patch-el-files patch-el-files)
+ (add-after 'expand-load-path 'make-autoloads make-autoloads)
(add-after 'expand-load-path 'add-install-to-native-load-path
add-install-to-native-load-path)
(delete 'bootstrap)
@@ -366,14 +355,8 @@ for libraries following the ELPA convention."
(delete 'build)
(replace 'check check)
(replace 'install install)
- (add-after 'install 'make-autoloads make-autoloads)
- (add-after 'make-autoloads 'enable-autoloads-compilation
- enable-autoloads-compilation)
- (add-after 'enable-autoloads-compilation 'patch-el-files patch-el-files)
- (add-after 'patch-el-files 'ensure-package-description
- ensure-package-description)
;; The .el files are byte compiled directly in the store.
- (add-after 'ensure-package-description 'build build)
+ (add-after 'install 'build build)
(add-after 'build 'validate-compiled-autoloads validate-compiled-autoloads)
(add-after 'validate-compiled-autoloads 'move-doc move-doc)))