diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-06-06 23:11:14 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-06-06 23:12:18 +0200 |
commit | 4604d43c0e438107d834fb68ea46130bbfc5ec9f (patch) | |
tree | d7a7fce47d42595af8b02098e51e2691d63d5582 | |
parent | c335fbf3cb218ab93aee8175ddfaf329194a8aa8 (diff) | |
download | guix-4604d43c0e438107d834fb68ea46130bbfc5ec9f.tar.gz guix-4604d43c0e438107d834fb68ea46130bbfc5ec9f.zip |
gnu: gnutls@3.6.16: Fix cross-compilation.
Fixes <https://bugs.gnu.org/48771>.
Reported by Eric Brown <ecbrown@ericcbrown.com>.
* gnu/packages/tls.scm (gnutls-3.6.16)[arguments]: New field.
-rw-r--r-- | gnu/packages/tls.scm | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 55410f3911..cbb4991c70 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2021 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> @@ -274,7 +274,53 @@ required structures.") "gnutls-cross.patch")) (sha256 (base32 - "1czk511pslz367shf32f2jvvkp7y1323bcv88c2qng98mj0v6y8v")))))) + "1czk511pslz367shf32f2jvvkp7y1323bcv88c2qng98mj0v6y8v")))) + (arguments + (if (%current-target-system) + (substitute-keyword-arguments (package-arguments gnutls) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'configure 'build-eccdata-headers + (lambda* (#:key configure-flags #:allow-other-keys) + ;; Build the 'ecc/eccdata' program using the native + ;; compiler, not the cross-compiler as happens by default, + ;; and use it to build lib/nettle/ecc/ecc-*.h. In GnuTLS + ;; 3.6.15, this was not necessary because the tarball + ;; contained pre-generated lib/nettle/ecc/ecc-*.h files as + ;; well as 'ecc/eccdata.stamp'. + (let ((jobs (number->string (parallel-job-count))) + (patch (assoc-ref %standard-phases + 'patch-generated-file-shebangs))) + (mkdir "+native-build") + (with-directory-excursion "+native-build" + ;; Build natively, with the native compiler, GMP, etc. + (invoke "../configure" + (string-append "SHELL=" (which "sh")) + (string-append "CONFIG_SHELL=" (which "sh")) + "NETTLE_CFLAGS= " "NETTLE_LIBS= " + "HOGWEED_CFLAGS= " "HOGWEED_LIBS= " + "LIBTASN1_CFLAGS= " "LIBTASN1_LIBS= " + "ac_cv_func_nettle_rsa_sec_decrypt=yes" + "--without-p11-kit" "--disable-guile") + (patch) + (invoke "make" "-C" "gl" "-j" jobs) + (invoke "make" "-C" "lib/nettle" "V=1" "-j" jobs)) + + ;; Copy the files we obtained during native build. + (for-each (lambda (file) + (install-file file "lib/nettle/ecc")) + (find-files + "+native-build/lib/nettle/ecc" + "^(eccdata\\.stamp|ecc-.*\\.h)$")))))))) + (package-arguments gnutls))) + (native-inputs + (if (%current-target-system) + `(("libtasn1" ,libtasn1) ;for 'ecc/eccdata' + ("libidn2" ,libidn2) + ("nettle" ,nettle) + ("zlib" ,zlib) + ,@(package-native-inputs gnutls)) + (package-native-inputs gnutls))))) (define-public gnutls/guile-2.0 ;; GnuTLS for Guile 2.0. |