aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/patches/gnutls-skip-pkgconfig-test.patch24
-rw-r--r--gnu/packages/patches/gnutls-skip-trust-store-test.patch15
-rw-r--r--gnu/packages/tls.scm24
3 files changed, 63 insertions, 0 deletions
diff --git a/gnu/packages/patches/gnutls-skip-pkgconfig-test.patch b/gnu/packages/patches/gnutls-skip-pkgconfig-test.patch
new file mode 100644
index 0000000000..1fad7c14e3
--- /dev/null
+++ b/gnu/packages/patches/gnutls-skip-pkgconfig-test.patch
@@ -0,0 +1,24 @@
+FIXME: The static test fails with an error such as:
+
+/tmp/guix-build-gnutls-3.5.13.drv-0/ccOnGPmc.o: In function `main':
+c.29617.tmp.c:(.text+0x5): undefined reference to `gnutls_global_init'
+collect2: error: ld returned 1 exit status
+FAIL pkgconfig.sh (exit status: 1)
+
+diff --git a/tests/pkgconfig.sh b/tests/pkgconfig.sh
+index 6bd4e62f9..05aab8278 100755
+--- a/tests/pkgconfig.sh
++++ b/tests/pkgconfig.sh
+@@ -57,11 +57,7 @@ echo "Trying dynamic linking with:"
+ echo " * flags: $(${PKGCONFIG} --libs gnutls)"
+ echo " * common: ${COMMON}"
+ echo " * lib: ${CFLAGS}"
+-cc ${TMPFILE} -o ${TMPFILE_O} $(${PKGCONFIG} --libs gnutls) $(${PKGCONFIG} --cflags gnutls) ${COMMON}
+-
+-echo ""
+-echo "Trying static linking with $(${PKGCONFIG} --libs --static gnutls)"
+-cc ${TMPFILE} -o ${TMPFILE_O} $(${PKGCONFIG} --static --libs gnutls) $(${PKGCONFIG} --cflags gnutls) ${COMMON}
++gcc ${TMPFILE} -o ${TMPFILE_O} $(${PKGCONFIG} --libs gnutls) $(${PKGCONFIG} --cflags gnutls) ${COMMON}
+
+ rm -f ${TMPFILE} ${TMPFILE_O}
+
diff --git a/gnu/packages/patches/gnutls-skip-trust-store-test.patch b/gnu/packages/patches/gnutls-skip-trust-store-test.patch
new file mode 100644
index 0000000000..e0536712a5
--- /dev/null
+++ b/gnu/packages/patches/gnutls-skip-trust-store-test.patch
@@ -0,0 +1,15 @@
+Version 3.5.11 added a test to check that the default trust store is readable.
+It does not exist in the build environment, so pretend everything is fine.
+
+diff a/tests/trust-store.c b/tests/trust-store.c
+--- a/tests/trust-store.c
++++ b/tests/trust-store.c
+@@ -61,7 +61,7 @@
+ } else if (ret < 0) {
+ fail("error loading system trust store: %s\n", gnutls_strerror(ret));
+ } else if (ret == 0) {
+- fail("no certificates were found in system trust store!\n");
++ success("no trust store in the Guix build environment!\n");
+ }
+
+ gnutls_certificate_free_credentials(x509_cred);
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 8964abb2f2..bba95eb9bc 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -142,6 +143,7 @@ living in the same process.")
(define-public gnutls
(package
(name "gnutls")
+ (replacement gnutls-3.5.13)
(version "3.5.9")
(source (origin
(method url-fetch)
@@ -214,10 +216,32 @@ required structures.")
(properties '((ftp-server . "ftp.gnutls.org")
(ftp-directory . "/gcrypt/gnutls")))))
+(define gnutls-3.5.13 ;GNUTLS-SA-2017-{3,4}
+ (package
+ (inherit gnutls)
+ ;; We use 'D' instead of '13' here to keep the store file name at
+ ;; the same length. See <https://bugs.gnu.org/27308>.
+ (version "3.5.D")
+ (replacement #f)
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append "mirror://gnupg/gnutls/v"
+ (version-major+minor version)
+ "/gnutls-3.5.13.tar.xz"))
+ (patches
+ (search-patches "gnutls-skip-trust-store-test.patch"
+ "gnutls-skip-pkgconfig-test.patch"))
+ (sha256
+ (base32
+ "15ihq6p0hnnhs8cnjrkj40dmlcaa1jjg8xg0g2ydbnlqs454ixbr"))))))
+
(define-public gnutls/guile-2.2
;; GnuTLS for Guile 2.2. This is supported by GnuTLS >= 3.5.5.
(package
(inherit gnutls)
+ (replacement #f)
+ (source (package-source gnutls-3.5.13))
(name "guile2.2-gnutls")
(arguments
;; Remove '--with-guile-site-dir=…/2.0'.