gnu: podofo: Fix detection of freetype.
[jackhill/guix/guix.git] / gnu / packages / mail.scm
index 8424d8c..33076c1 100644 (file)
@@ -1,9 +1,11 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +48,7 @@
   #:use-module (gnu packages databases)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openssl)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
        ("readline" ,readline-6.2)
 
        ("linux-pam" ,linux-pam)
-       ("libtool" ,libtool)
+       ("libltdl" ,libltdl)
        ("gdbm" ,gdbm)))
     (home-page "http://www.gnu.org/software/mailutils/")
     (synopsis "Utilities and library for reading and serving mail")
@@ -281,6 +284,7 @@ and corrections.  It is based on a Bayesian filter.")
               (method url-fetch)
               (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
                                   "archive/v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
                 "00k84qagph3xnxss6rkxm61x07ngz8fvffx4z9jyw5baf3cdd32p"))))
@@ -302,18 +306,22 @@ repository and Maildir/IMAP as LOCAL repository.")
 (define-public mu
   (package
     (name "mu")
-    (version "0.9.9.5")
+    (version "0.9.11")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://mu0.googlecode.com/files/mu-"
+              (uri (string-append "https://github.com/djcb/mu/archive/v"
                                   version ".tar.gz"))
+              (file-name (string-append "mu-" version ".tar.gz"))
               (sha256
                (base32
-                "1hwkliyb8fjrz5sw9fcisssig0jkdxzhccw0ld0l9a10q1l9mqhp"))))
+                "01n1lzq4pfsm5pn932p948d1z55yqc7kkm1ifjxjchb3k8lr66fh"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("glib" ,glib "bin")             ; for gtester
+       ("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
        ("texinfo" ,texinfo)))
     ;; TODO: Add webkit and gtk to build the mug GUI.
     (inputs
@@ -324,14 +332,18 @@ repository and Maildir/IMAP as LOCAL repository.")
        ("gmime" ,gmime)
        ("tzdata" ,tzdata)))             ;for mu/test/test-mu-query.c
     (arguments
-     '(#:phases (alist-cons-before
-                 'check 'check-tz-setup
-                 (lambda* (#:key inputs #:allow-other-keys)
-                   ;; For mu/test/test-mu-query.c
-                   (setenv "TZDIR"
-                           (string-append (assoc-ref inputs "tzdata")
-                                          "/share/zoneinfo")))
-                 %standard-phases)))
+     '(#:phases (alist-cons-after
+                 'unpack 'autoreconf
+                 (lambda _
+                   (zero? (system* "autoreconf" "-vi")))
+                 (alist-cons-before
+                   'check 'check-tz-setup
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     ;; For mu/test/test-mu-query.c
+                     (setenv "TZDIR"
+                             (string-append (assoc-ref inputs "tzdata")
+                                            "/share/zoneinfo")))
+                   %standard-phases))))
     (home-page "http://www.djcbsoftware.nl/code/mu/")
     (synopsis "Quickly find emails")
     (description
@@ -414,12 +426,13 @@ useful features.")
              (method url-fetch)
              (uri (string-append "https://github.com/dinhviethoa/" name
                    "/archive/" version ".tar.gz"))
+             (file-name (string-append name "-" version ".tar.gz"))
              (sha256
                (base32 "05qyqx2c1ppb1jnrs3m52i60f9xlxfxdmb9dnwg4vqjv8kwv2qkr"))))
     (build-system gnu-build-system)
     (native-inputs `(("autoconf" ,(autoconf-wrapper))
                      ("automake" ,automake)
-                     ("libtool" ,libtool "bin")
+                     ("libtool" ,libtool)
                      ("pkg-config" ,pkg-config)))
     (propagated-inputs
      ;; 'libetpan-config --libs' returns '-lssl -lcrypto -lsasl2', so these
@@ -430,14 +443,11 @@ useful features.")
      `(("curl" ,curl)
        ("expat" ,expat)))
     (arguments
-      '(#:phases (alist-cons-before
-                  'configure 'autogen
+      '(#:phases (alist-cons-after
+                  'unpack 'autogen
                   (lambda _
-                    (system* "./autogen.sh")) ;; Note: this fails because the
-                         ;; generated configure script uses /bin/sh. It is
-                         ;; replaced in the configure phase by the correct
-                         ;; value. TODO: replace the configure phase by the
-                         ;; autogen phase and have the SHELL variable be replaced
+                    (setenv "NOCONFIGURE" "true")
+                    (zero? (system* "sh" "autogen.sh")))
                   %standard-phases)
         #:configure-flags
         '("--disable-static" "--disable-db")))
@@ -529,4 +539,89 @@ an SMTP server (for example at a free mail provider) which takes care of further
 delivery.")
     (license gpl3+)))
 
+(define-public exim
+  (package
+    (name "exim")
+    (version "4.85")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "ftp://ftp.exim.org/pub/exim/exim4/exim-" version ".tar.bz2"))
+       (sha256
+        (base32 "195a3ll5ck9viazf9pvgcyc0sziln5g0ggmlm6ax002lphmiy88k"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("bdb" ,bdb)
+       ("gnutls" ,gnutls)
+       ("gzip" ,gzip)
+       ("bzip2" ,bzip2)
+       ("xz" ,xz)
+       ("pcre" ,pcre)
+       ("perl" ,perl)
+       ("libxt" ,libxt)
+       ("libxaw" ,libxaw)))
+    (native-inputs
+     `(("perl" ,perl)))
+    (arguments
+     '(#:phases
+       (alist-replace
+        'configure
+        ;; We'd use #:make-flags but the top-level Makefile calls others
+        ;; recursively, so just set all variables this way.
+        (lambda* (#:key outputs inputs #:allow-other-keys)
+          (substitute* '("Makefile" "OS/Makefile-Default")
+            (("(RM_COMMAND=).*" all var)
+             (string-append var "rm\n")))
+          (copy-file "src/EDITME" "Local/Makefile")
+          (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
+          (let ((out (assoc-ref outputs "out"))
+                (gzip (assoc-ref inputs "gzip"))
+                (bzip2 (assoc-ref inputs "bzip2"))
+                (xz (assoc-ref inputs "xz")))
+            (substitute* '("Local/Makefile")
+              (("(BIN_DIRECTORY=).*" all var)
+               (string-append var out "/bin\n"))
+              (("(CONFIGURE_FILE=).*" all var)
+               (string-append var out "/etc/exim.conf\n"))
+              (("(EXIM_USER=).*" all var)
+               (string-append var "nobody\n"))
+              (("(FIXED_NEVER_USERS=).*" all var)
+               (string-append var "\n"))  ;XXX no root in build environment
+              (("(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.
+            (substitute* '("src/exigrep.src")
+              (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
+              (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
+              (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
+              (("'lzma'") (string-append "'" xz "/bin/lzma'")))))
+        (alist-cons-before
+         'build 'fix-sh-paths
+         (lambda* (#:key inputs #:allow-other-keys)
+           (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
+             (("SHELL=/bin/sh") "SHELL=sh"))
+           (substitute* '("scripts/Configure-config.h")
+             (("\\| /bin/sh") "| sh"))
+           (let ((bash (assoc-ref inputs "bash")))
+             (substitute* '("scripts/Configure-eximon")
+               (("#!/bin/sh") (string-append "#!" bash "/bin/sh")))))
+         %standard-phases))
+       #:make-flags '("INSTALL_ARG=-no_chown")
+       ;; No 'check' target.
+       #:tests? #f))
+    (home-page "http://www.exim.org/")
+    (synopsis
+     "Message Transfer Agent (MTA) developed at the University of Cambridge")
+    (description
+     "Exim is a message transfer agent (MTA) developed at the University of
+Cambridge for use on Unix systems connected to the Internet.  In style it is
+similar to Smail 3, but its facilities are more general.  There is a great
+deal of flexibility in the way mail can be routed, and there are extensive
+facilities for checking incoming mail.")
+    (license gpl2+)))
+
 ;;; mail.scm ends here