Subject: [PATCH 1/3] gnu: notmuch: Add separate 'emacs' output.

From: Xinglu Chen <[email-masked]>
Date: Mon, 16 Aug 2021 16:12:19 +0200

* gnu/packages/mail.scm (notmuch)[outputs]: Add ‘emacs’ output
[arguments]<#:modules>: Add (guix build emacs-utils).
<#:phases>{configure}: Use the ‘emacs’ output.
{make-autoloads}: Modify the default ‘make-autoloads’ phase to use the ‘emacs’
output.
---
 gnu/packages/mail.scm | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index ccf44b7cf3..bbc616f6f5 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -1337,7 +1337,8 @@ invoking @command{notifymuch} from the post-new hook.")
     (arguments
      `(#:modules ((guix build gnu-build-system)
                   ((guix build emacs-build-system) #:prefix emacs:)
-                  (guix build utils))
+                  (guix build utils)
+                  (guix build emacs-utils))
        #:imported-modules (,@%gnu-build-system-modules
                            (guix build emacs-build-system)
                            (guix build emacs-utils))
@@ -1355,7 +1356,8 @@ invoking @command{notifymuch} from the post-new hook.")
                       (setenv "CONFIG_SHELL" (which "sh"))
 
                       (let* ((out (assoc-ref outputs "out"))
-                             (elisp (emacs:elpa-directory out)))
+                             (emacs (assoc-ref outputs "emacs"))
+                             (elisp (emacs:elpa-directory emacs)))
                         (invoke "./configure"
                                 (string-append "--prefix=" out)
                                 (string-append "--emacslispdir=" elisp)
@@ -1373,7 +1375,14 @@ invoking @command{notifymuch} from the post-new hook.")
                       (substitute* (find-files "test" "\\.sh$")
                         (("/bin/sh") (which "sh")))))
                   (add-after 'install 'make-autoloads
-                    (assoc-ref emacs:%standard-phases 'make-autoloads)))))
+                    (lambda* (#:key outputs inputs #:allow-other-keys)
+                      (let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
+                             (out (assoc-ref outputs "emacs"))
+                             (elpa-name-ver ((@@ (guix build emacs-build-system)
+                                                 store-directory->elpa-name-version) out))
+                             (elpa-name (package-name->name+version elpa-name-ver))
+                             (el-dir (emacs:elpa-directory out)))
+                        (emacs-generate-autoloads elpa-name el-dir)))))))
     (native-inputs
      `(("bash-completion" ,bash-completion)
        ("emacs" ,emacs-no-x)    ; -minimal lacks libxml, needed for some tests
@@ -1394,6 +1403,7 @@ invoking @command{notifymuch} from the post-new hook.")
        ("talloc" ,talloc)
        ("xapian" ,xapian)
        ("zlib" ,zlib)))
+    (outputs '("out" "emacs"))
     (home-page "https://notmuchmail.org/")
     (synopsis "Thread-based email index, search, and tagging")
     (description
-- 
2.32.0