Toggle quote (155 lines)
> On 2021-09-04 11:42, Xinglu Chen wrote:
>
>> * gnu/packages/mail.scm (notmuch)[arguments]: Remove Emacs-related stuff.
>> * gnu/packages/emacs-xyz.scm (emacs-consult-notmuch)[propagated-inputs]: Add
>> ‘emacs-notmuch’.
>> (emacs-counsel-notmuch)[propagated-inputs]: Use ‘emacs-notmuch’ instead of
>> ‘notmuch’.
>> (emacs-helm-notmuch): Likewise.
>> (emacs-notmuch-maildir): Likewise.
>> ---
>> gnu/packages/emacs-xyz.scm | 8 +++---
>> gnu/packages/mail.scm | 52 +++++++++++++++++++++++---------------
>> 2 files changed, 37 insertions(+), 23 deletions(-)
>>
>> diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
>> index 030809f5ac..67ba8bf523 100644
>> --- a/gnu/packages/emacs-xyz.scm
>> +++ b/gnu/packages/emacs-xyz.scm
>> @@ -8304,7 +8304,7 @@ list of candidates.")
>> (build-system emacs-build-system)
>> (propagated-inputs
>> `(("emacs-consult" ,emacs-consult)
>> - ("notmuch" ,notmuch)))
>> + ("emacs-notmuch" ,emacs-notmuch)))
>> (home-page "https://codeberg.org/jao/consult-notmuch")
>> (synopsis "Search and preview Notmuch emails using Consult")
>> (description
>> @@ -9490,6 +9490,8 @@ queries using counsel.")
>> `(("emacs-counsel" ,emacs-counsel)
>> ("notmuch" ,notmuch)
>> ("emacs-s" ,emacs-s)))
>> + (propagated-inputs
>> + `(("emacs-notmuch" ,emacs-notmuch)))
>> (home-page "https://github.com/fuxialexander/counsel-notmuch")
>> (synopsis "Search emails in Notmuch asynchronously with Ivy")
>> (description
>> @@ -23952,7 +23954,7 @@ workspaces with a LSP-compliant server running.")
>> (build-system emacs-build-system)
>> (propagated-inputs
>> `(("emacs-helm" ,emacs-helm)
>> - ("notmuch" ,notmuch)))
>> + ("emacs-notmuch" ,emacs-notmuch)))
>> (synopsis "Search emails with Emacs Notmuch and Helm")
>> (description
>> "This package can be used to search emails in Emacs, searching result
>> @@ -23975,7 +23977,7 @@ real search.")
>> "0pmikf1djkr07067nkgmdcxyn7l7ibswx6qlnai8v1v51f9h1g9q"))))
>> (build-system emacs-build-system)
>> (propagated-inputs
>> - `(("notmuch" ,notmuch)))
>> + `(("emacs-notmuch" ,emacs-notmuch)))
>> (home-page "https://git.sr.ht/~tarsius/notmuch-maildir")
>> (synopsis "Visualize maildirs as a tree")
>> (description
>> diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
>> index 173982cb12..729e47cb95 100644
>> --- a/gnu/packages/mail.scm
>> +++ b/gnu/packages/mail.scm
>> @@ -167,6 +167,7 @@
>> #:use-module (guix build-system gnu)
>> #:use-module (guix build-system go)
>> #:use-module (guix build-system guile)
>> + #:use-module (guix build-system emacs)
>> #:use-module (guix build-system meson)
>> #:use-module (guix build-system perl)
>> #:use-module (guix build-system python)
>> @@ -1342,31 +1343,18 @@ invoking @command{notifymuch} from the post-new hook.")
>> "1myylb19hj5nb1vriqng252vfjwwkgbi3gxj93pi2q1fzyw7w2lf"))))
>> (build-system gnu-build-system)
>> (arguments
>> - `(#:modules ((guix build gnu-build-system)
>> - ((guix build emacs-build-system) #:prefix emacs:)
>> - (guix build utils))
>> - #:imported-modules (,@%gnu-build-system-modules
>> - (guix build emacs-build-system)
>> - (guix build emacs-utils))
>> - #:make-flags
>> + `(#:make-flags
>> (list "V=1" ; verbose test output
>> "NOTMUCH_TEST_TIMEOUT=1h") ; don't fail on slow machines
>> #:phases (modify-phases %standard-phases
>> - (add-after 'unpack 'patch-notmuch-lib.el
>> - (lambda _
>> - (substitute* "emacs/notmuch-lib.el"
>> - (("/bin/sh") (which "sh")))))
>> (replace 'configure
>> (lambda* (#:key outputs #:allow-other-keys)
>> (setenv "CC" ,(cc-for-target))
>> (setenv "CONFIG_SHELL" (which "sh"))
>> -
>> - (let* ((out (assoc-ref outputs "out"))
>> - (elisp (emacs:elpa-directory out)))
>> + (let* ((out (assoc-ref outputs "out")))
>> (invoke "./configure"
>> (string-append "--prefix=" out)
>> - (string-append "--emacslispdir=" elisp)
>> - (string-append "--emacsetcdir=" elisp)))))
>> + "--without-emacs"))))
>> (add-before 'check 'disable-failing-tests
>> ;; FIXME: Investigate why these tests are failing,
>> ;; and try removing this for notmuch versions > 0.31.
>> @@ -1378,12 +1366,9 @@ invoking @command{notifymuch} from the post-new hook.")
>> (setenv "TEST_CC" ,(cc-for-target))
>> ;; Patch various inline shell invocations.
>> (substitute* (find-files "test" "\\.sh$")
>> - (("/bin/sh") (which "sh")))))
>> - (add-after 'install 'make-autoloads
>> - (assoc-ref emacs:%standard-phases 'make-autoloads)))))
>> + (("/bin/sh") (which "sh"))))))))
>> (native-inputs
>> `(("bash-completion" ,bash-completion)
>> - ("emacs" ,emacs-no-x) ; -minimal lacks libxml, needed for some tests
>> ("pkg-config" ,pkg-config)
>> ("python" ,python)
>> ("python-docutils" ,python-docutils)
>> @@ -1391,6 +1376,7 @@ invoking @command{notifymuch} from the post-new hook.")
>> ("texinfo" ,texinfo)
>>
>> ;; The following are required for tests only.
>> + ("emacs" ,emacs-no-x) ; -minimal lacks libxml, needed for some tests
>> ("which" ,which)
>> ("dtach" ,dtach)
>> ("gnupg" ,gnupg)
>> @@ -1409,6 +1395,32 @@ invoking @command{notifymuch} from the post-new hook.")
>> ing, and tagging large collections of email messages.")
>> (license license:gpl3+)))
>>
>> +(define-public emacs-notmuch
>> + (package
>> + (inherit notmuch)
>> + (name "emacs-notmuch")
>> + (build-system emacs-build-system)
>> + (native-inputs '())
>> + (inputs
>> + `(("notmuch" ,notmuch)))
>> + (arguments
>> + `(#:exclude (cons* "make-deps.el" "rstdoc.el" %default-exclude)
>> + #:phases
>> + (modify-phases %standard-phases
>> + (add-after 'unpack 'chdir
>> + (lambda _
>> + (chdir "emacs")))
>> + (add-after 'chdir 'patch-paths
>> + (lambda* (#:key inputs #:allow-other-keys)
>> + (let ((notmuch (assoc-ref inputs "notmuch")))
>> + (substitute* "notmuch-lib.el"
>> + (("\"notmuch\"")
>> + (string-append "\"" notmuch "/bin/notmuch\"")))))))))
>
> Not sure if we need to hardcode the path to notmuch binary (some people
> can use guix for managing emacs packages, but not system), but I think
> it's a rare case and this default is reasonable and easily fixable by
> simple `(setq notmuch-command "notmuch")` in the cases, when notmuch
> itslef provided by other package manager.