diff options
-rw-r--r-- | gnu/packages/dictionaries.scm | 8 | ||||
-rw-r--r-- | gnu/packages/emacs-xyz.scm | 33 | ||||
-rw-r--r-- | gnu/packages/guile-xyz.scm | 6 | ||||
-rw-r--r-- | gnu/packages/language.scm | 6 | ||||
-rw-r--r-- | gnu/packages/mail.scm | 30 | ||||
-rw-r--r-- | gnu/packages/xorg.scm | 13 | ||||
-rw-r--r-- | guix/build/emacs-build-system.scm | 81 |
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))) |