gnu: neomutt: Fix home page.
[jackhill/guix/guix.git] / gnu / packages / mail.scm
index de57748..168e626 100644 (file)
@@ -22,7 +22,7 @@
 ;;; Copyright © 2016, 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
-;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017, 2018 Rene Saavedra <pacoon@protonmail.com>
 ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
@@ -405,7 +405,7 @@ operating systems.")
 (define-public neomutt
   (package
     (name "neomutt")
-    (version "20191102")
+    (version "20191207")
     (source
      (origin
        (method git-fetch)
@@ -414,7 +414,7 @@ operating systems.")
              (commit version)))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0x5f9zbvxsxg5y2ir4xq4xw1q2snaxkidhdyhcxw5ljw3qqwhlyq"))))
+        (base32 "147yjpqnsbfy01fhsflxlixk0985r91a6bjmqq3cwmf7gka3sihm"))))
     (build-system gnu-build-system)
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
@@ -489,7 +489,7 @@ operating systems.")
                (apply invoke bash
                       (string-append (getcwd) "/configure")
                       flags)))))))
-    (home-page "https://www.neomutt.org/")
+    (home-page "https://neomutt.org/")
     (synopsis "Command-line mail reader based on Mutt")
     (description
      "NeoMutt is a command-line mail reader which is based on mutt.
@@ -499,7 +499,7 @@ It adds a large amount of new and improved features to mutt.")
 (define-public gmime
   (package
     (name "gmime")
-    (version "3.2.4")
+    (version "3.2.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/gmime/"
@@ -507,7 +507,7 @@ It adds a large amount of new and improved features to mutt.")
                                   "/gmime-" version ".tar.xz"))
               (sha256
                (base32
-                "096hh4g6z343kncw9svcrzv05d41n4v2q5k9jsm6gc40w30ag7i4"))))
+                "0ndsg1z1kq4w4caascydvialpyn4rfbjdn7xclzbzhw53x85cxgv"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
@@ -768,6 +768,63 @@ messages you need; in addition, it allows you to view messages, extract
 attachments, create new maildirs, and so on.")
     (license gpl3+)))
 
+(define mumimu
+  ;; This is a fork of mu for use in Mumi that stores message bug IDs in its
+  ;; database.  It also renames the library to "mumimu" to avoid confusion.
+  (let ((commit "ad30b5e9c85f0465aeeeac461d8c32d95775d450")
+        (revision "1"))
+    (package
+      (inherit mu)
+      (name "mumimu")
+      ;; TODO The version here used to be (package-version guile-email), but
+      ;; that code caused problems
+      (version (git-version "0.2.2" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.elephly.net/software/mumimu.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1y8r8csvkyxncgpi469dir4n4sga4z9xdzc18qh5s8bk29qj689n"))))
+      (arguments
+       (substitute-keyword-arguments (package-arguments mu)
+         ((#:tests? anything '())
+          #f)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (replace 'patch-configure
+               (lambda _
+                 (delete-file "autogen.sh")
+                 (substitute* "configure.ac"
+                   ;; Use latest Guile
+                   (("guile-2.0") "guile-2.2"))
+                 (substitute* '("guile/Makefile.am"
+                                "guile/mu/Makefile.am")
+                   (("share/guile/site/2.0/") "share/guile/site/2.2/"))
+                 #t))
+             (replace 'fix-ffi
+               (lambda* (#:key outputs #:allow-other-keys)
+                 (substitute* "guile/mumimu.scm"
+                   (("\"libguile-mu\"")
+                    (format #f "\"~a/lib/libguile-mumimu\""
+                            (assoc-ref outputs "out"))))
+                 #t))
+             (delete 'install-emacs-autoloads)))
+         ((#:configure-flags flags)
+          '("--disable-gtk"
+            "--disable-webkit"
+            "--disable-mu4e"))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("autoconf" ,autoconf)
+         ("automake" ,automake)
+         ("libtool" ,libtool)
+         ("glib" ,glib "bin")
+         ("tzdata" ,tzdata-for-tests)
+         ("texinfo" ,texinfo))))))
+
 (define-public alot
   (package
     (name "alot")
@@ -1157,14 +1214,14 @@ which can add many functionalities to the base client.")
 (define-public msmtp
   (package
     (name "msmtp")
-    (version "1.8.6")
+    (version "1.8.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/msmtp/releases/"
                            "/msmtp-" version ".tar.xz"))
        (sha256
-        (base32 "1qa260xrm0fzlwxpjvgvq39m4dfkskjlyb7m4y2vlr8c8d3z29b6"))))
+        (base32 "1waiiksa57byb7gvx1zmh6srvl6r8rvwqklk0slb3iaf4kfbqlws"))))
     (build-system gnu-build-system)
     (inputs
      `(("libsecret" ,libsecret)
@@ -1203,21 +1260,25 @@ delivery.")
 (define-public exim
   (package
     (name "exim")
-    (version "4.92.3")
+    (version "4.93.0.4")
     (source
      (origin
        (method url-fetch)
-       (uri (list (string-append "https://ftp.exim.org/pub/exim/exim4/exim-"
-                                 version ".tar.bz2")
-                  (string-append "https://ftp.exim.org/pub/exim/exim4/old/exim-"
-                                 version ".tar.bz2")))
+       (uri (let ((file-name (string-append "exim-" version ".tar.xz")))
+              (list (string-append "https://ftp.exim.org/pub/exim/exim4/"
+                                   file-name)
+                    ;; ‘Fix’ releases (exim-x.y.z.f) are kept separately.
+                    (string-append "https://ftp.exim.org/pub/exim/exim4/fixes/"
+                                   file-name)
+                    ;; After a new non-fix release, the old one is moved here.
+                    (string-append "https://ftp.exim.org/pub/exim/exim4/old/"
+                                   file-name))))
        (sha256
-        (base32
-         "0d0h0j9pl3yf089sc59ia60m3dqnkb3qh1qaz6vxfg2ja2mnm5i9"))))
+        (base32 "01g4sfycv13glnmfrapwhjbdw6z1z7w5bwjldxjmglwfw5p3czak"))))
     (build-system gnu-build-system)
     (inputs
      `(("bdb" ,bdb-5.3) ; ‘#error Version 6 and later BDB API is not supported’
-       ("gnutls" ,gnutls)
+       ("gnutls" ,gnutls/dane)
        ("gzip" ,gzip)
        ("bzip2" ,bzip2)
        ("xz" ,xz)
@@ -1227,7 +1288,8 @@ delivery.")
        ("libxaw" ,libxaw)))
     (native-inputs
      `(("pcre" ,pcre "bin")
-       ("perl" ,perl)))
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
     (arguments
      '(#:phases
        (modify-phases %standard-phases
@@ -1256,9 +1318,11 @@ delivery.")
                  (("(COMPRESS_COMMAND=).*" all var)
                   (string-append var gzip "/bin/gzip\n"))
                  (("(ZCAT_COMMAND=).*" all var)
-                  (string-append var gzip "/bin/zcat\n")))
-               ;; This file has hardcoded names for tools despite the zcat
-               ;; configuration above.
+                  (string-append var gzip "/bin/zcat\n"))
+                 (("# (USE_GNUTLS(|_PC)=.*)" all line)
+                  (string-append line "\n")))
+               ;; This file has hard-coded relative file names for tools despite
+               ;; the zcat configuration above.
                (substitute* '("src/exigrep.src")
                  (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
                  (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
@@ -1274,9 +1338,19 @@ delivery.")
              (let ((bash (assoc-ref inputs "bash")))
                (substitute* '("scripts/Configure-eximon")
                  (("#!/bin/sh") (string-append "#!" bash "/bin/sh"))))
-             #t)))
-       #:make-flags '("INSTALL_ARG=-no_chown")
-       ;; No 'check' target.
+             #t))
+         (add-before 'build 'build-reproducibly
+           (lambda _
+             ;; The ‘compilation number’ is incremented for every build from the
+             ;; same source tree.  It appears to vary over different (parallel?)
+             ;; builds.  Make it a ‘constant number’ instead.
+             (substitute* "src/version.c"
+               (("#include \"cnumber.h\"") "1")))))
+       #:make-flags
+       (list "CC=gcc"
+             "INSTALL_ARG=-no_chown")
+       ;; No 'check' target.  There is a test suite in test/, which assumes that
+       ;; certain build options were (not) used and that it can freely ‘sudo’.
        #:tests? #f))
     (home-page "https://www.exim.org/")
     (synopsis
@@ -1292,7 +1366,7 @@ facilities for checking incoming mail.")
 (define-public dovecot
   (package
     (name "dovecot")
-    (version "2.3.8")
+    (version "2.3.9.2")
     (source
      (origin
        (method url-fetch)
@@ -1300,7 +1374,7 @@ facilities for checking incoming mail.")
                            (version-major+minor version) "/"
                            "dovecot-" version ".tar.gz"))
        (sha256
-        (base32 "0jdng27hqqagjy6v7ymd0xflbv5dbc1rhh450nk39ar6pw1qsxy5"))))
+        (base32 "1yc6hi4hqg4hcc4495sf4m5f1lnargphi6dawj43if21vncgp127"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1631,14 +1705,14 @@ header.")
 (define-public perl-email-sender
   (package
     (name "perl-email-sender")
-    (version "1.300033")
+    (version "1.300034")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
                            "Email-Sender-" version ".tar.gz"))
        (sha256
-        (base32 "1flbnzyng4g0h1aksbsip1qa6sawgfihvblspqc0xsis8g9vcza7"))))
+        (base32 "14aj9kqa9dr2bdhzn2qvjj2mffj8wjb5397z8qw7qg057fk3ib05"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)))
@@ -2078,18 +2152,17 @@ converts them to maildir format directories.")
 (define-public mpop
   (package
     (name "mpop")
-    (version "1.4.6")
+    (version "1.4.7")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "https://marlam.de/mpop/releases/"
                            "mpop-" version ".tar.xz"))
        (sha256
-        (base32 "0q4ifzvl1gcndvqqqk7n9mc599r4s2knxjc7alflwb366fql58gv"))))
+        (base32 "0c6n5afn9pr4p7gxkv462lysrw52w9fhvavzm99c78dcp9dj5xnk"))))
     (build-system gnu-build-system)
     (inputs
-     `(("gnutls" ,gnutls)
-       ("libidn" ,libidn)))
+     `(("gnutls" ,gnutls)))
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (home-page "https://marlam.de/mpop/")
@@ -2098,9 +2171,9 @@ converts them to maildir format directories.")
 fetchmail replacement.
 
 mpop supports multiple accounts, header based mail filtering, delivery
-to mbox files, maildir folders or a Mail Delivery Agent (MDA),
-TLS/SSL, several authentication methods, Internationalized Domain
-Names (IDN) and SOCKS proxies.")
+to mbox files, maildir folders or an @acronym{MDA, Mail Delivery Agent},
+TLS/SSL, several authentication methods, @acronym{IDN, Internationalized Domain
+Names} and SOCKS proxies.")
     (license gpl3+)))
 
 (define-public mhonarc
@@ -2805,15 +2878,14 @@ killed threads.")
 (define-public pan
   (package
     (name "pan")
-    (version "0.145")
+    (version "0.146")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://pan.rebelbase.com/download/releases/"
                            version "/source/" name "-" version ".tar.bz2"))
        (sha256
-        (base32
-         "1b4wamv33hprghcjk903bpvnd233yxyrm18qnh13alc8h1553nk8"))))
+        (base32 "17agd27sn4a7nahvkpg0w39kv74njgdrrygs74bbvpaj8rk2hb55"))))
     (arguments
      `(#:configure-flags '("--with-gtk3" "--with-gtkspell" "--with-gnutls"
                            "--enable-libnotify" "--enable-manual"
@@ -2953,12 +3025,24 @@ replacement for the @code{urlview} program.")
                 (modules '((guix build utils)))
                 (snippet
                  '(begin
-                    ;; Install .go files to $prefix/lib instead of
-                    ;; $prefix/share.
                     (substitute* "Makefile.am"
+                      ;; Install .go files to $prefix/lib instead of
+                      ;; $prefix/share.
                       (("^godir[[:space:]]*=.*")
                        "godir = \
-$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
+$(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")
+
+                      ;; Install assets.
+                      (("^assetsdir.*" _)
+                       "\
+assetsdir    = $(pkgdatadir)/assets
+assetscssdir = $(assetsdir)/css
+assetsimgdir = $(assetsdir)/img
+assetsjsdir  = $(assetsdir)/js
+
+assetscss_DATA = $(wildcard assets/css/*)
+assetsimg_DATA = $(wildcard assets/img/*)
+assetsjs_DATA  = $(wildcard assets/js/*)\n"))
                     #t))))
       (build-system gnu-build-system)
       (arguments
@@ -2969,6 +3053,8 @@ $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
          #:imported-modules ((guix build guile-build-system)
                              ,@%gnu-build-system-modules)
 
+         #:configure-flags '("--localstatedir=/var")
+
          #:phases
          (modify-phases %standard-phases
            (add-after 'install 'wrap-executable
@@ -2991,7 +3077,9 @@ $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n"))
          ("guile-fibers" ,guile-fibers)
          ("guile-json" ,guile-json-1)
          ("guile-syntax-highlight" ,guile-syntax-highlight)
-         ("guile" ,guile-2.2)))
+         ("gnutls" ,gnutls)         ;needed to talk to https://debbugs.gnu.org
+         ("guile" ,guile-2.2)
+         ("mumimu" ,mumimu)))   ;'mumimu' executable recorded in (mumi config)
       (native-inputs
        `(("autoconf" ,autoconf)
          ("automake" ,automake)