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.
This commit is contained in:
Ludovic Courtès 2021-06-06 23:11:14 +02:00
parent c335fbf3cb
commit 4604d43c0e
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -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 @@ (define gnutls-3.6.16
"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.