summary refs log tree commit diff
path: root/gnu/packages/mail.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/mail.scm')
-rw-r--r--gnu/packages/mail.scm113
1 files changed, 73 insertions, 40 deletions
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index bfa4528b14..69211ed9b2 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -32,7 +32,7 @@
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2020 Justus Winter <justus@sequoia-pgp.org>
 ;;; Copyright © 2020 Eric Brown <ecbrown@ericcbrown.com>
-;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020, 2021 Alexey Abramov <levenson@mmer.org>
 ;;; Copyright © 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
@@ -168,6 +168,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)
@@ -261,18 +262,16 @@ example, modify the message headers or body, or encrypt or sign the message.")
 (define-public mailutils
   (package
     (name "mailutils")
-    (version "3.10")
+    (version "3.13")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/mailutils/mailutils-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "17smrxjdgbbzbzakik30vj46q4iib85ksqhb82jr4vjp57akszh9"))
+               "1iwl82d6aa2acsdxbqh1s5xx44sg83b4yxqik408m1s9rcfrf86r"))
              (patches
-              ;; Fixes https://issues.guix.gnu.org/43088.
-              (search-patches "mailutils-fix-uninitialized-variable.patch"
-                              "mailutils-variable-lookup.patch"))))
+              (search-patches "mailutils-variable-lookup.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -296,8 +295,9 @@ example, modify the message headers or body, or encrypt or sign the message.")
              ;; The 'pipeact.at' tests generate a shell script; make
              ;; sure it uses the right shell.
              (substitute* '("sieve/tests/testsuite"
-                            "mh/tests/testsuite")
-               (("#! /bin/sh")
+                            "mh/tests/testsuite"
+                            "libmailutils/tests/lock.at")
+               (("#! ?/bin/sh")
                 (string-append "#!" (which "sh"))))
 
              (substitute* "mh/tests/testsuite"
@@ -329,8 +329,9 @@ example, modify the message headers or body, or encrypt or sign the message.")
                  (format port "Path: ~a/Mail-for-tests~%"
                          (getcwd))))
 
-             #t)))
-       ;; TODO: Add `--with-sql'.
+             (substitute* "imap4d/tests/testclient.c"
+               (("\"/bin/sh\"")
+                (string-append "\"" (which "sh") "\""))))))
        #:configure-flags
        (list "--sysconfdir=/etc"
 
@@ -342,16 +343,20 @@ example, modify the message headers or body, or encrypt or sign the message.")
                                            (package-inputs this-package))
                                (("guile" guile)
                                 (version-major+minor
-                                 (package-version guile))))))
-
-       #:parallel-tests? #f))
+                                 (package-version guile))))))))
     (native-inputs
-     `(("perl" ,perl)                           ;for 'gylwrap'
+     ;; Regeneration of the build system is triggered by touching the
+     ;; 'libmailutils/tests/lock.at' file.
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("gettext" ,gettext-minimal)
+       ("libtool" ,libtool)
+       ("m4" ,m4)
+       ("perl" ,perl)                           ;for 'gylwrap'
        ("texinfo" ,texinfo)
        ("dejagnu" ,dejagnu)))
     (inputs
-     `(("m4" ,m4)
-       ("guile" ,guile-3.0)
+     `(("guile" ,guile-3.0)
        ("gsasl" ,gsasl)
        ("gnutls" ,gnutls)
        ("ncurses" ,ncurses)
@@ -359,7 +364,6 @@ example, modify the message headers or body, or encrypt or sign the message.")
        ("linux-pam" ,linux-pam)
        ("libltdl" ,libltdl)
        ("gdbm" ,gdbm)
-
        ;; Required for SEARCH CHARSET.
        ("libiconv" ,libiconv)
        ("libunistring" ,libunistring)))
@@ -370,7 +374,24 @@ example, modify the message headers or body, or encrypt or sign the message.")
 processing electronic mail.  It contains both utilities and server daemons
 and all operate in a protocol-agnostic way.  The underlying libraries are
 also available, simplifying the addition of mail capabilities to new
-software.")
+software.  GNU Mailutils provides the following commands:
+@itemize @command
+@item dotlock
+@item decodemail
+@item frm
+@item from
+@item guimb
+@item mail
+@item mailutils
+@item mailutils-config
+@item messages
+@item mimeview
+@item movemail
+@item popauth
+@item putmail
+@item readmsg
+@item sieve
+@end itemize")
     (license
      ;; Libraries are under LGPLv3+, and programs under GPLv3+.
      (list license:gpl3+ license:lgpl3+))))
@@ -1342,31 +1363,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" "gcc")
+                      (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.
@@ -1375,21 +1383,20 @@ invoking @command{notifymuch} from the post-new hook.")
                         (("\\$NOTMUCH_GMIME_X509_CERT_VALIDITY") "0"))))
                   (add-before 'check 'prepare-test-environment
                     (lambda _
-                      (setenv "TEST_CC" "gcc")
+                      (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)
        ("sphinx" ,python-sphinx)
+       ("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)
@@ -1408,6 +1415,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\"")))))))))
+    (synopsis "Run Notmuch within Emacs")
+    (description
+     "This package provides an Emacs-based interface to the Notmuch mail
+system.")))
+
 (define-public notmuch-addrlookup-c
   (package
     (name "notmuch-addrlookup-c")