gnu: freeipmi: Update to 1.4.10.
[jackhill/guix/guix.git] / gnu / packages / gnupg.scm
index fa44d1f..333e883 100644 (file)
@@ -1,8 +1,9 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages gnupg)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pth)
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
-  #:use-module ((gnu packages compression) #:prefix guix:)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages tls)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python))
 
 (define-public libgpg-error
   (package
     (name "libgpg-error")
-    (version "1.18")
+    (version "1.19")
     (source
      (origin
       (method url-fetch)
@@ -47,7 +50,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "0408v19h3h0q6w61g51hgbdg6cyw81nyzkh70qfprvsc3pkddwcz"))))
+        "12wpqhjlsw4iaanifbqm2kich6c7x7lm8a7zhy6x5ifm6c9hw4jk"))))
     (build-system gnu-build-system)
     (home-page "http://gnupg.org")
     (synopsis "Library of error values for GnuPG components")
 for all GnuPG components.  Among these are GPG, GPGSM, GPGME,
 GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry, SmartCard
 Daemon and possibly more in the future.")
-    (license lgpl2.0+)))
+    (license license:lgpl2.0+)))
 
 (define-public libgcrypt
   (package
     (name "libgcrypt")
-    (version "1.6.2")
+    (version "1.6.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0k2wi34qhp5hq71w1ab3kw1gfsx7xff79bvynqkxp35kls94826y"))))
+               "0pq2nwfqgggrsh8rk84659d80vfnlkbphwqjwahccd5fjdxr3d21"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error-host" ,libgpg-error)))
@@ -90,7 +93,7 @@ Daemon and possibly more in the future.")
 standard cryptographic building blocks such as symmetric ciphers, hash
 algorithms, public key algorithms, large integer functions and random number
 generation.")
-    (license lgpl2.0+)))
+    (license license:lgpl2.0+)))
 
 (define-public libgcrypt-1.5
   (package (inherit libgcrypt)
@@ -107,7 +110,7 @@ generation.")
 (define-public libassuan
   (package
     (name "libassuan")
-    (version "2.2.0")
+    (version "2.2.1")
     (source
      (origin
       (method url-fetch)
@@ -115,7 +118,7 @@ generation.")
                           version ".tar.bz2"))
       (sha256
        (base32
-        "1ikf9whfi7rg71qa610ynyv12qrw20zkn7zxgvvr9dp41gbqxxbx"))))
+        "1pp2kl5gc2vja41g3wk03h1hgh7gxy6pj354fb5n4lrlg6xqb4ll"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error" ,libgpg-error) ("pth" ,pth)))
@@ -127,12 +130,12 @@ generation.")
 protocol.  This protocol is used for IPC between most newer
 GnuPG components.  Both, server and client side functions are
 provided.")
-    (license lgpl2.0+)))
+    (license license:lgpl2.0+)))
 
 (define-public libksba
   (package
     (name "libksba")
-    (version "1.3.2")
+    (version "1.3.3")
     (source
      (origin
       (method url-fetch)
@@ -141,7 +144,7 @@ provided.")
             version ".tar.bz2"))
       (sha256
        (base32
-        "01l4hvcknk9nb4bvyb6aqaid19jg0wv3ik54j1b89hnzamwm75gb"))))
+        "11kp3h9l3b8ikydkcdkwgx45r662zi30m26ra5llyhfh6kz5yzqc"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libgpg-error" ,libgpg-error)))
@@ -160,38 +163,66 @@ provided.")
      "KSBA (pronounced Kasbah) is a library to make X.509 certificates
 as well as the CMS easily accessible by other applications.  Both
 specifications are building blocks of S/MIME and TLS.")
-    (license gpl3+)))
+    (license license:gpl3+)))
+
+(define-public npth
+  (package
+    (name "npth")
+    (version "1.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append
+            "mirror://gnupg/npth/npth-"
+            version ".tar.bz2"))
+      (sha256
+       (base32
+        "12n0nvhw4fzwp0k7gjv3rc6pdml0qiinbbfiz4ilg6pl5kdxvnvd"))))
+    (build-system gnu-build-system)
+    (home-page "http://www.gnupg.org")
+    (synopsis "Non-preemptive thread library")
+    (description
+     "Npth is a library to provide the GNU Pth API and thus a non-preemptive
+threads implementation.
+
+In contrast to GNU Pth is is based on the system's standard threads
+implementation.  This allows the use of libraries which are not
+compatible to GNU Pth.")
+    (license (list license:lgpl3+ license:gpl2+)))) ; dual license
 
 (define-public gnupg
   (package
     (name "gnupg")
-    (version "2.0.26")
+    (version "2.1.9")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1q5qcl5panrvcvpwvz6nl9gayl5a6vwvfhgdcxqpmbl2qc6y6n3p"))))
+                "1dpp555glln6fldk72ad7lkrn8h3cr2bg714z5kfn2qrawx67dqw"))))
     (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (inputs
-     `(("bzip2" ,guix:bzip2)
+     `(("bzip2" ,bzip2)
        ("curl" ,curl)
+       ("gnutls" ,gnutls)
        ("libassuan" ,libassuan)
        ("libgcrypt" ,libgcrypt)
        ("libgpg-error" ,libgpg-error)
        ("libksba" ,libksba)
-       ("pth" ,pth)
+       ("npth" ,npth)
        ("openldap" ,openldap)
-       ("zlib" ,guix:zlib)
+       ("zlib" ,zlib)
        ("readline" ,readline)))
    (arguments
     `(#:phases
        (alist-cons-before
         'configure 'patch-config-files
         (lambda _
-          (substitute* "tests/openpgp/Makefile.in"
-            (("/bin/sh") (which "bash"))))
+          (substitute* "tests/openpgp/defs.inc"
+            (("/bin/pwd") (which "pwd"))))
        %standard-phases)))
     (home-page "http://gnupg.org/")
     (synopsis "GNU Privacy Guard")
@@ -202,21 +233,53 @@ features powerful key management and the ability to access public key
 servers.  It includes several libraries: libassuan (IPC between GnuPG
 components), libgpg-error (centralized GnuPG error values), and
 libskba (working with X.509 certificates and CMS data).")
-    (license gpl3+)))
+    (license license:gpl3+)))
+
+(define-public gnupg-2.0
+  (package (inherit gnupg)
+    (version "2.0.28")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
+                                  ".tar.bz2"))
+              (sha256
+               (base32
+                "0k2k399fnhfhhr4dvm8d6vs4ihq6gg06191lzfwikzaqmgj2w2ff"))))
+    (native-inputs '())
+    (inputs
+     `(("bzip2" ,bzip2)
+       ("curl" ,curl)
+       ("libassuan" ,libassuan)
+       ("libgcrypt" ,libgcrypt)
+       ("libgpg-error" ,libgpg-error)
+       ("libksba" ,libksba)
+       ("pth" ,pth)
+       ("openldap" ,openldap)
+       ("zlib" ,zlib)
+       ("readline" ,readline)))
+   (arguments
+    `(#:phases
+       (alist-cons-before
+        'configure 'patch-config-files
+        (lambda _
+          (substitute* "tests/openpgp/Makefile.in"
+            (("/bin/sh") (which "bash"))))
+       %standard-phases)))))
 
 (define-public gnupg-1
   (package (inherit gnupg)
-    (version "1.4.18")
+    (version "1.4.19")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
                                   ".tar.bz2"))
               (sha256
                (base32
-                "1233bppjvdpbbl425ii6l7xvgy0879ghhnmwrph5b6c4g3dgvddp"))))
+                "11pxx26sfilh0vswylh9mhiifw5yffw7nn733zknw3sb0jfk22bz"))))
+    (native-inputs '())
     (inputs
-     `(("zlib" ,guix:zlib)
-       ("bzip2" ,guix:bzip2)
+     `(("zlib" ,zlib)
+       ("bzip2" ,bzip2)
        ("curl" ,curl)
        ("readline" ,readline)
        ("libgpg-error" ,libgpg-error)))
@@ -231,7 +294,7 @@ libskba (working with X.509 certificates and CMS data).")
 (define-public gpgme
   (package
     (name "gpgme")
-    (version "1.5.3")
+    (version "1.5.5")
     (source
      (origin
       (method url-fetch)
@@ -239,13 +302,13 @@ libskba (working with X.509 certificates and CMS data).")
                           ".tar.bz2"))
       (sha256
        (base32
-        "1jgwmra6cf0i5x2prj92w77vl7hmj276qmmll3lwysbyn32l1c0d"))))
+        "01y28fkq52wwf4p470wscaxd2vgzl615irmafx3mj3380x8ksg8b"))))
     (build-system gnu-build-system)
     (propagated-inputs
      ;; Needs to be propagated because gpgme.h includes gpg-error.h.
      `(("libgpg-error" ,libgpg-error)))
     (inputs
-     `(("gnupg" ,gnupg)
+     `(("gnupg" ,gnupg-2.0)
        ("libassuan" ,libassuan)))
     (arguments '(#:make-flags '("GPG=gpg2")))
     (home-page "http://www.gnupg.org/related_software/gpgme/")
@@ -260,44 +323,77 @@ Because the direct use of GnuPG from an application can be a complicated
 programming task, it is suggested that all software should try to use GPGME
 instead.  This way bug fixes or improvements can be done at a central place
 and every application benefits from this.")
-    (license lgpl2.1+)))
+    (license license:lgpl2.1+)))
+
+(define-public python-gnupg
+  (package
+    (name "python-gnupg")
+    (version "0.3.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://pypi.python.org/packages/source/p/"
+                           "python-gnupg/python-gnupg-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1hg9gshk4b7raskj8mjadsjcv10axlx2z4xl4ag2f2bpi4f8chvq"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+                  (lambda* (#:key inputs #:allow-other-keys)
+                    (substitute* "test_gnupg.py"
+                      ;; Test keyrings are missing, so this test fails.
+                      (("'test_scan_keys'") "True")
+                      (("def test_scan_keys") "def disabled__scan_keys")
+                      ;; Unsure why this test fails.
+                      (("'test_search_keys'") "True")
+                      (("def test_search_keys") "def disabled__search_keys"))
+                    (setenv "GPGBINARY" "gpg")
+                    (setenv "USERNAME" "guixbuilder")
+                    ;; The doctests are extremely slow and sometimes time out,
+                    ;; so we disable them.
+                    (zero? (system* "python"
+                                    "test_gnupg.py" "--no-doctests")))))))
+    (native-inputs
+     `(("gnupg" ,gnupg-1)))
+    (home-page "http://packages.python.org/python-gnupg/index.html")
+    (synopsis "Wrapper for the GNU Privacy Guard")
+    (description
+      "This module allows easy access to GnuPG’s key management, encryption
+and signature functionality from Python programs.")
+    (license license:bsd-3)))
+
+(define-public python2-gnupg
+  (package-with-python2 python-gnupg))
 
 (define-public pius
   (package
    (name "pius")
-   (version "2.0.11")
+   (version "2.1.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://sourceforge/pgpius/pius/"
                                 version "/pius-"
                                 version ".tar.bz2"))
             (sha256 (base32
-                     "0pdbyqz6k0bm182cz81ss7yckmpms5qhrrw0wcr4a1srzcjyzf5f"))))
-   (build-system gnu-build-system)
-   (inputs `(("perl" ,perl)
-             ("python" ,python-2)           ; uses the Python 2 'print' syntax
-             ("gpg" ,gnupg)))
+                     "0ry3kc3x1qjmvb581ja2z2v32r1rl1g8rhfj7iqvs8nzq4ca512i"))))
+   (build-system python-build-system)
+   (inputs `(("perl" ,perl)                ;for 'pius-party-worksheet'
+             ("gpg" ,gnupg-2.0)))          ;2.1 fails to talk to gpg-agent 2.0
    (arguments
     `(#:tests? #f
+      #:python ,python-2                     ;uses the Python 2 'print' syntax
       #:phases
-       (alist-delete
-        'configure
-       (alist-delete
-        'build
-       (alist-replace
-        'install
-        (lambda* (#:key inputs outputs #:allow-other-keys)
-          (let* ((out (assoc-ref outputs "out"))
-                 (gpg (string-append (assoc-ref inputs "gpg")
-                                     "/bin/gpg2")))
-            (mkdir out)
-            (mkdir (string-append out "/bin"))
-            (for-each (lambda (file)
-                        (substitute* file
-                          (("/usr/bin/gpg") gpg))
-                        (copy-file file (string-append out "/bin/" file)))
-                      '("pius" "pius-keyring-mgr" "pius-party-worksheet"))))
-       %standard-phases)))))
+      (modify-phases %standard-phases
+        (add-before
+         'build 'set-gpg-file-name
+         (lambda* (#:key inputs outputs #:allow-other-keys)
+           (let* ((gpg (string-append (assoc-ref inputs "gpg")
+                                      "/bin/gpg2")))
+             (substitute* "libpius/constants.py"
+               (("/usr/bin/gpg") gpg))))))))
    (synopsis "Programs to simplify GnuPG key signing")
    (description
     "Pius (PGP Individual UID Signer) helps attendees of PGP keysigning
@@ -308,7 +404,7 @@ to the process.
 
 pius-keyring-mgr and pius-party-worksheet help organisers of
 PGP keysigning parties.")
-   (license gpl2)
+   (license license:gpl2)
    (home-page "http://www.phildev.net/pius/index.shtml")))
 
 (define-public signing-party
@@ -379,7 +475,7 @@ PGP keysigning parties.")
 including tools for signing keys, keyring analysis, and party preparation.
 
  * caff: CA - Fire and Forget signs and mails a key
+
  * pgp-clean: removes all non-self signatures from key
 
  * pgp-fixkey: removes broken packets from keys
@@ -408,23 +504,24 @@ including tools for signing keys, keyring analysis, and party preparation.
    ;; gpl2+ for almost all programs, except for keyanalyze: gpl2
    ;; and caff and gpgsigs: bsd-3, see
    ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright
-   (license gpl2)
+   (license license:gpl2)
    (home-page "http://pgp-tools.alioth.debian.org/")))
 
 (define-public pinentry
   (package
     (name "pinentry")
-    (version "0.9.0")
+    (version "0.9.5")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnupg/pinentry/pinentry-"
                                   version ".tar.bz2"))
               (sha256
                (base32
-                "1awhajq21hcjgqfxg9czaxg555gij4bba6axrwg8w6lfmc3ml14h"))))
+                "1338hj1h3sh34897120y30x12b64wyj3xjzzk5asm2hdzhxgsmva"))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)
+       ("libassuan" ,libassuan)
        ("gtk+" ,gtk+-2)
        ("glib" ,glib)))
     (native-inputs
@@ -434,7 +531,7 @@ including tools for signing keys, keyring analysis, and party preparation.
     (description
      "Pinentry provides a console and a GTK+ GUI that allows users to
 enter a passphrase when `gpg' or `gpg2' is run and needs it.")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public paperkey
   (package
@@ -466,4 +563,4 @@ for printing with paper and ink, which have amazingly long retention
 qualities.  To reconstruct a secret key, you re-enter those
 bytes (whether by hand, OCR, QR code, or the like) and paperkey can use
 them to transform your existing public key into a secret key.")
-    (license gpl2+)))
+    (license license:gpl2+)))