* [bug#49025] [PATCH core-updates 08/37] libgpg-error: Remove trailing #f from phases.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 09/37] libgpg-error: Prevent silent miscompilation some systems Maxime Devos
` (35 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 206 bytes --]
These aren't required anymore.
* gnu/packages/gnupg.scm (libgpgerror)[arguments]{cross-symlinks}:
Remove trailing #f.
---
gnu/packages/gnupg.scm | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
[-- Attachment #2: 0008-libgpg-error-Remove-trailing-f-from-phases.patch --]
[-- Type: text/x-patch, Size: 598 bytes --]
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index cb481b38e1..2f44e6ec6a 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -114,8 +114,7 @@
(string-append x "-unknown-linux-gnu")))))
(symlink
(string-append "lock-obj-pub." triplet ".h")
- "src/syscfg/lock-obj-pub.linux-gnu.h"))
- #t))))
+ "src/syscfg/lock-obj-pub.linux-gnu.h"))))))
'()))
(native-inputs `(("gettext" ,gettext-minimal)))
(home-page "https://gnupg.org")
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 09/37] libgpg-error: Prevent silent miscompilation some systems.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 08/37] libgpg-error: Remove trailing #f from phases Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 01/37] utils: Define target-linux? predicate Maxime Devos
` (34 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 407 bytes --]
* gnu/packages/gpg.scm
(libgpgerror)[arguments]<#:phases>{cross-symlinks}: Only
link to src/syscfg/lock-obj-pub.linux-gnu.h if the package
is being compiled for a Linux target. Do not link either
if the architecture is unknown, as the headers vary with
the architecture.
---
gnu/packages/gnupg.scm | 40 ++++++++++++++++++++++++++--------------
1 file changed, 26 insertions(+), 14 deletions(-)
[-- Attachment #2: 0009-libgpg-error-Prevent-silent-miscompilation-some-syst.patch --]
[-- Type: text/x-patch, Size: 3398 bytes --]
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 2f44e6ec6a..de213d381f 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -18,6 +18,7 @@
;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Fredrik Salomonsson <plattfot@posteo.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -77,6 +78,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
+ #:use-module (ice-9 match)
#:use-module (srfi srfi-1))
(define-public libgpg-error
@@ -94,27 +96,37 @@
(build-system gnu-build-system)
(arguments
(if (%current-target-system)
- `(#:modules ((ice-9 match)
- (guix build gnu-build-system)
+ `(#:modules ((guix build gnu-build-system)
(guix build utils))
#:phases
(modify-phases %standard-phases
;; When cross-compiling, some platform specific properties cannot
;; be detected. Create a symlink to the appropriate platform
- ;; file. See Cross-Compiling section at:
+ ;; file if required. Note that these platform files depend on
+ ;; both the operating system and architecture!
+ ;;
+ ;; See Cross-Compiling section at:
;; https://github.com/gpg/libgpg-error/blob/master/README
(add-after 'unpack 'cross-symlinks
- (lambda* (#:key target inputs #:allow-other-keys)
- (let ((triplet
- (match (string-take target
- (string-index target #\-))
- ("armhf" "arm-unknown-linux-gnueabi")
- ("mips64el" "mips-unknown-linux-gnu")
- (x
- (string-append x "-unknown-linux-gnu")))))
- (symlink
- (string-append "lock-obj-pub." triplet ".h")
- "src/syscfg/lock-obj-pub.linux-gnu.h"))))))
+ (lambda _
+ (define (link triplet source)
+ (symlink (string-append "lock-obj-pub." triplet ".h")
+ (string-append "src/syscfg/lock-obj-pub."
+ source ".h")))
+ ,(let* ((target (%current-target-system))
+ (architecture
+ (string-take target (string-index target #\-))))
+ (cond ((target-linux? target)
+ (match architecture
+ ("armhf"
+ `(link "arm-unknown-linux-gnueabi" "linux-gnu"))
+ ("mips64el"
+ `(link "mips-unknown-linux-gnu" "linux-gnu"))
+ ;; Don't always link to the "linux-gnu"
+ ;; configuration, as this is not correct for
+ ;; all architectures.
+ (_ #t)))
+ (#t #t)))))))
'()))
(native-inputs `(("gettext" ,gettext-minimal)))
(home-page "https://gnupg.org")
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 01/37] utils: Define target-linux? predicate.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 08/37] libgpg-error: Remove trailing #f from phases Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 09/37] libgpg-error: Prevent silent miscompilation some systems Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 03/37] packages: Define this-package-input and this-package-native-input Maxime Devos
` (33 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 258 bytes --]
* guix/utils.scm (target-linux?): New predicate.
* tests/utils.scm
("target-linux?"): Test it.
("target-mingw?"): Also test ‘target-mingw?’.
---
guix/utils.scm | 6 ++++++
tests/utils.scm | 17 +++++++++++++++++
2 files changed, 23 insertions(+)
[-- Attachment #2: 0001-utils-Define-target-linux-predicate.patch --]
[-- Type: text/x-patch, Size: 2274 bytes --]
diff --git a/guix/utils.scm b/guix/utils.scm
index 19990ceb8a..4ff2602e23 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -81,6 +82,7 @@
%current-system
%current-target-system
package-name->name+version
+ target-linux?
target-mingw?
target-arm32?
target-aarch64?
@@ -543,6 +545,10 @@ a character other than '@'."
(idx (values (substring spec 0 idx)
(substring spec (1+ idx))))))
+(define* (target-linux? #:optional (target (or (%current-target-system)
+ (%current-system))))
+ (string-contains target "linux"))
+
(define* (target-mingw? #:optional (target (%current-target-system)))
(and target
(string-suffix? "-mingw32" target)))
diff --git a/tests/utils.scm b/tests/utils.scm
index 7fcbb25552..80a0e669a4 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -289,6 +290,22 @@ skip these tests."
(string-closest "hello" '("kikoo" "helo" "hihihi" "halo"))
(string-closest "hello" '("aaaaa" "12345" "hellohello" "h"))))
+(test-equal "target-linux?"
+ '(#t #f #f #t)
+ (map (compose ->bool target-linux?)
+ '("i686-linux-gnu" "i686-w64-mingw32"
+ ;; Checking that "gnu" is present is not sufficient,
+ ;; as GNU/Hurd exists.
+ "i686-pc-gnu"
+ ;; Some targets have a suffix.
+ "arm-linux-gnueabihf")))
+
+(test-equal "target-mingw?"
+ '(#f #f #t)
+ (map (compose ->bool target-mingw?)
+ '("i686-linux-gnu" "i686-pc-gnu"
+ "i686-w64-mingw32")))
+
(test-end)
(false-if-exception (delete-file temp-file))
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 03/37] packages: Define this-package-input and this-package-native-input.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (2 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 01/37] utils: Define target-linux? predicate Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 13/37] wrap-python3: Make #:builder a G-exp instead of a raw S-exp Maxime Devos
` (32 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 527 bytes --]
These macros are intended to be used in build phases.
More precisely, (assoc-ref %build-inputs "input") can be
replaced by #$(this-package-input "input") or #+(this-package-native-input
"native-input") as appropriate.
* guix/packages.scm
(package-input, package-native-input): New (unexported) procedures.
(this-package-input, this-package-native-input): New macros.
---
guix/packages.scm | 29 +++++++++++++++++++++++++++++
tests/packages.scm | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 63 insertions(+)
[-- Attachment #2: 0003-packages-Define-this-package-input-and-this-package-.patch --]
[-- Type: text/x-patch, Size: 3333 bytes --]
diff --git a/guix/packages.scm b/guix/packages.scm
index a66dbea1b7..80c8bbebf0 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -108,6 +108,9 @@
deprecated-package
package-field-location
+ this-package-input
+ this-package-native-input
+
package-direct-sources
package-transitive-sources
package-direct-inputs
@@ -513,6 +516,32 @@ object."
#f)))
(_ #f)))
+(define (package-input package name)
+ "Return the package input NAME of PACKAGE--i.e., an input
+from the ‘inputs’ or ‘propagated-inputs’ field. Native inputs are not
+considered. If this input does not exist, return #f instead."
+ (and=> (or (assoc-ref (package-inputs package) name)
+ (assoc-ref (package-propagated-inputs package) name))
+ car))
+
+(define (package-native-input package name)
+ "Return the native package input NAME of PACKAGE--i.e., an input
+from the ‘native-inputs’ field. If this native input does not exist,
+return #f instead."
+ (and=> (assoc-ref (package-native-inputs package) name)
+ car))
+
+(define-syntax-rule (this-package-input name)
+ "Return the input NAME of the package being defined--i.e., an input
+from the ‘inputs’ or ‘propagated-inputs’ field. Native inputs are not
+considered. If this input does not exist, return #f instead."
+ (package-input this-package name))
+
+(define-syntax-rule (this-package-native-input name)
+ "Return the native package input NAME of the package being defined--i.e.,
+an input from the ‘native-inputs’ field. If this native input does not
+exist, return #f instead."
+ (package-native-input this-package name))
;; Error conditions.
diff --git a/tests/packages.scm b/tests/packages.scm
index 47d10af5bc..91ec38e4cc 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1851,6 +1852,39 @@
(package-location (specification->package "guile@2"))
(specification->location "guile@2"))
+(test-eq "this-package-input, exists"
+ hello
+ (package-arguments
+ (dummy-package "a"
+ (inputs `(("hello" ,hello)))
+ (arguments (this-package-input "hello")))))
+
+(test-eq "this-package-input, exists in propagated-inputs"
+ hello
+ (package-arguments
+ (dummy-package "a"
+ (propagated-inputs `(("hello" ,hello)))
+ (arguments (this-package-input "hello")))))
+
+(test-eq "this-package-input, does not exist"
+ #f
+ (package-arguments
+ (dummy-package "a"
+ (arguments (this-package-input "hello")))))
+
+(test-eq "this-package-native-input, exists"
+ hello
+ (package-arguments
+ (dummy-package "a"
+ (native-inputs `(("hello" ,hello)))
+ (arguments (this-package-native-input "hello")))))
+
+(test-eq "this-package-native-input, does not exists"
+ #f
+ (package-arguments
+ (dummy-package "a"
+ (arguments (this-package-native-input "hello")))))
+
(test-end "packages")
;;; Local Variables:
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 13/37] wrap-python3: Make #:builder a G-exp instead of a raw S-exp.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (3 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 03/37] packages: Define this-package-input and this-package-native-input Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 14/37] wrap-python3: Fix cross-compilation Maxime Devos
` (31 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 242 bytes --]
This allows using ungexp later.
* gnu/packages/python.scm (wrap-python3)<#:builder>: Make this
a G-expression.
---
gnu/packages/python.scm | 46 ++++++++++++++++++++---------------------
1 file changed, 23 insertions(+), 23 deletions(-)
[-- Attachment #2: 0013-wrap-python3-Make-builder-a-G-exp-instead-of-a-raw-S.patch --]
[-- Type: text/x-patch, Size: 2864 bytes --]
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index b2ec486d7a..9628836567 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -573,29 +573,29 @@ for more information.")))
(arguments
`(#:modules ((guix build utils))
#:builder
- (begin
- (use-modules (guix build utils))
- (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
- (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
- (mkdir-p bin)
- (for-each
- (lambda (old new)
- (symlink (string-append python old)
- (string-append bin "/" new)))
- `("python3" ,"pydoc3" ,"idle3" ,"pip3")
- `("python" ,"pydoc" ,"idle" ,"pip"))
- ;; python-config outputs search paths based upon its location,
- ;; use a bash wrapper to avoid changing its outputs.
- (let ((bash (string-append (assoc-ref %build-inputs "bash")
- "/bin/bash"))
- (old (string-append python "python3-config"))
- (new (string-append bin "/python-config")))
- (with-output-to-file new
- (lambda ()
- (format #t "#!~a~%" bash)
- (format #t "exec \"~a\" \"$@\"~%" old)
- (chmod new #o755)
- #t)))))))
+ ,#~(begin
+ (use-modules (guix build utils))
+ (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
+ (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
+ (mkdir-p bin)
+ (for-each
+ (lambda (old new)
+ (symlink (string-append python old)
+ (string-append bin "/" new)))
+ `("python3" ,"pydoc3" ,"idle3" ,"pip3")
+ `("python" ,"pydoc" ,"idle" ,"pip"))
+ ;; python-config outputs search paths based upon its location,
+ ;; use a bash wrapper to avoid changing its outputs.
+ (let ((bash (string-append (assoc-ref %build-inputs "bash")
+ "/bin/bash"))
+ (old (string-append python "python3-config"))
+ (new (string-append bin "/python-config")))
+ (with-output-to-file new
+ (lambda ()
+ (format #t "#!~a~%" bash)
+ (format #t "exec \"~a\" \"$@\"~%" old)
+ (chmod new #o755)
+ #t)))))))
(synopsis "Wrapper for the Python 3 commands")
(description
"This package provides wrappers for the commands of Python@tie{}3.x such
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 14/37] wrap-python3: Fix cross-compilation.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (4 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 13/37] wrap-python3: Make #:builder a G-exp instead of a raw S-exp Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 12/37] libgcrypt: Fix cross-compilation build error Maxime Devos
` (30 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 418 bytes --]
When cross-compiling, "bash" is missing from %build-inputs,
leading to a build error. Use this-package-input instead of
%build-inputs to resolve this. While we're at it, eliminate
all uses of %outputs and %build-inputs.
* gnu/packages/python.scm
(wrap-python3)[arguments]<#:builder>: Eliminte %outputs
and %build-inputs.
---
gnu/packages/python.scm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[-- Attachment #2: 0014-wrap-python3-Fix-cross-compilation.patch --]
[-- Type: text/x-patch, Size: 1636 bytes --]
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 9628836567..fbad0b65b8 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -60,6 +60,7 @@
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020, 2021 Greg Hogan <code@greghogan.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -575,8 +576,8 @@ for more information.")))
#:builder
,#~(begin
(use-modules (guix build utils))
- (let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
- (python (string-append (assoc-ref %build-inputs "python") "/bin/")))
+ (let ((bin (string-append #$output "/bin"))
+ (python #$(file-append (this-package-input "python") "/bin/")))
(mkdir-p bin)
(for-each
(lambda (old new)
@@ -586,8 +587,7 @@ for more information.")))
`("python" ,"pydoc" ,"idle" ,"pip"))
;; python-config outputs search paths based upon its location,
;; use a bash wrapper to avoid changing its outputs.
- (let ((bash (string-append (assoc-ref %build-inputs "bash")
- "/bin/bash"))
+ (let ((bash #$(file-append (this-package-input "bash") "/bin/bash"))
(old (string-append python "python3-config"))
(new (string-append bin "/python-config")))
(with-output-to-file new
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 12/37] libgcrypt: Fix cross-compilation build error.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (5 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 14/37] wrap-python3: Fix cross-compilation Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 10/37] libgpgerror: Maybe fix a cross-compilation bug Maxime Devos
` (29 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 407 bytes --]
When cross-compiling a package using gnu-build-system,
%build-inputs does not exist. But libgcrypt uses %build-inputs
anyway. Fix it.
* gnu/packages/gnupg.scm
(libgcrypt)[arguments]<#:configure-flags>: Make this a G-exp
instead of a raw S-exp. Eliminate %build-inputs and use
this-package-input instead.
---
gnu/packages/gnupg.scm | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
[-- Attachment #2: 0012-libgcrypt-Fix-cross-compilation-build-error.patch --]
[-- Type: text/x-patch, Size: 1416 bytes --]
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 1fee30584c..35cfdf6f43 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -74,6 +74,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
+ #:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
@@ -169,11 +170,12 @@ Daemon and possibly more in the future.")
;; 'configure' uses 'gpg-error-config' to determine the '-L' flag, and
;; the 'gpg-error-config' it runs is the native one---i.e., the wrong one.
`(#:configure-flags
- (list (string-append "--with-gpg-error-prefix="
- (assoc-ref %build-inputs "libgpg-error-host"))
- ;; When cross-compiling, _gcry_mpih_lshift etc are undefined
- ,@(if (%current-target-system) '("--disable-asm")
- '()))))
+ ,#~(list (string-append "--with-gpg-error-prefix="
+ #$(this-package-input "libgpg-error-host"))
+ ;; When cross-compiling, _gcry_mpih_lshift etc are undefined
+ #$@(if (%current-target-system)
+ #~("--disable-asm")
+ #~()))))
(outputs '("out" "debug"))
(home-page "https://gnupg.org/")
(synopsis "Cryptographic function library")
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 10/37] libgpgerror: Maybe fix a cross-compilation bug.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (6 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 12/37] libgcrypt: Fix cross-compilation build error Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 11/37] libgpg-error: Fix cross-compilation error Maxime Devos
` (28 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 393 bytes --]
Previously, a symlink was created at
src/syscfg/lock-obj-pub.linux-gnu.h pointing at
lock-obj-pub.MANGLED-TARGET.h. I would think this has
to be the other way around, but I am not really sure.
* gnu/packages/gnupg.scm
(gnupg)[arguments]<#:phases>{cross-symlinks}(link): Switch
'triplet' and 'source'.
---
gnu/packages/gnupg.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[-- Attachment #2: 0010-libgpgerror-Maybe-fix-a-cross-compilation-bug.patch --]
[-- Type: text/x-patch, Size: 811 bytes --]
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index de213d381f..f5d4118af9 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -110,9 +110,9 @@
(add-after 'unpack 'cross-symlinks
(lambda _
(define (link triplet source)
- (symlink (string-append "lock-obj-pub." triplet ".h")
+ (symlink (string-append "lock-obj-pub." source ".h")
(string-append "src/syscfg/lock-obj-pub."
- source ".h")))
+ triplet ".h")))
,(let* ((target (%current-target-system))
(architecture
(string-take target (string-index target #\-))))
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 11/37] libgpg-error: Fix cross-compilation error.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (7 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 10/37] libgpgerror: Maybe fix a cross-compilation bug Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 16/37] openssl: Remove trailing #t from phases Maxime Devos
` (27 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 276 bytes --]
TODO: inform upstream about the cross-compilation error.
* gnu/packages/gnupg.scm
(libgpg-error)[arguments]{fix-gen-lock-obj.sh}: Prevent generated
header files from being sprinkled with ‘\c’.
---
gnu/packages/gnupg.scm | 7 +++++++
1 file changed, 7 insertions(+)
[-- Attachment #2: 0011-libgpg-error-Fix-cross-compilation-error.patch --]
[-- Type: text/x-patch, Size: 887 bytes --]
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index f5d4118af9..1fee30584c 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -100,6 +100,13 @@
(guix build utils))
#:phases
(modify-phases %standard-phases
+ ;; If this is left out, some generated header
+ ;; files will be sprinkled with ‘\c’, which
+ ;; the compiler won't like.
+ (add-after 'unpack 'fix-gen-lock-obj.sh
+ (lambda _
+ (substitute* "src/gen-lock-obj.sh"
+ (("if test -n `echo -n`") "if ! test -n `echo -n`"))))
;; When cross-compiling, some platform specific properties cannot
;; be detected. Create a symlink to the appropriate platform
;; file if required. Note that these platform files depend on
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 16/37] openssl: Remove trailing #t from phases.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (8 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 11/37] libgpg-error: Fix cross-compilation error Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 17/37] openssl: Make the #:phases argument a G-expression Maxime Devos
` (26 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 171 bytes --]
* gnu/packages/tls.scm
(openssl)[arguments]<#:phases>: Delete trailing #t.
---
gnu/packages/tls.scm | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
[-- Attachment #2: 0016-openssl-Remove-trailing-t-from-phases.patch --]
[-- Type: text/x-patch, Size: 2019 bytes --]
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 608a7d05b8..5bfc5545db 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -366,8 +366,7 @@ required structures.")
((string-prefix? "powerpc64" target)
"linux-ppc64")
((string-prefix? "powerpc" target)
- "linux-ppc")))
- #t)))
+ "linux-ppc"))))))
'())
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
@@ -406,8 +405,7 @@ required structures.")
(for-each (lambda (file)
(install-file file slib)
(delete-file file))
- (find-files lib "\\.a$"))
- #t)))
+ (find-files lib "\\.a$")))))
(add-after 'install 'move-extra-documentation
(lambda* (#:key outputs #:allow-other-keys)
;; Move man3 pages and full HTML documentation to "doc".
@@ -420,8 +418,7 @@ required structures.")
(copy-recursively man3 man-target)
(delete-file-recursively man3)
(copy-recursively html html-target)
- (delete-file-recursively html)
- #t)))
+ (delete-file-recursively html))))
(add-after
'install 'remove-miscellany
(lambda* (#:key outputs #:allow-other-keys)
@@ -430,8 +427,7 @@ required structures.")
(let ((out (assoc-ref outputs "out")))
(delete-file-recursively (string-append out "/share/openssl-"
,(package-version this-package)
- "/misc"))
- #t))))))
+ "/misc"))))))))
(native-search-paths
(list (search-path-specification
(variable "SSL_CERT_DIR")
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 17/37] openssl: Make the #:phases argument a G-expression.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (9 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 16/37] openssl: Remove trailing #t from phases Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 18/37] openssl: Use G-exp machinery for referring to outputs Maxime Devos
` (25 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 309 bytes --]
This allows using this-package-native-input later.
* gnu/packages/tls.scm
(openssl)[arguments]<#:phases>: Make this a G-expression.
(openssl-1.0)[arguments]<#:phases>: Likewise.
---
gnu/packages/tls.scm | 42 ++++++++++++++++++++++--------------------
1 file changed, 22 insertions(+), 20 deletions(-)
[-- Attachment #2: 0017-openssl-Make-the-phases-argument-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 5413 bytes --]
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 5bfc5545db..9de9a78e84 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -38,6 +38,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (guix gexp)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system perl)
@@ -341,9 +342,10 @@ required structures.")
;; so we explicitly disallow it here.
#:disallowed-references ,(list (canonical-package perl))
#:phases
+ ,#~
(modify-phases %standard-phases
- ,@(if (%current-target-system)
- '((add-before
+ #$@(if (%current-target-system)
+ #~((add-before
'configure 'set-cross-compile
(lambda* (#:key target outputs #:allow-other-keys)
(setenv "CROSS_COMPILE" (string-append target "-"))
@@ -367,7 +369,7 @@ required structures.")
"linux-ppc64")
((string-prefix? "powerpc" target)
"linux-ppc"))))))
- '())
+ #~())
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -377,9 +379,9 @@ required structures.")
(("/usr/bin/env")
(string-append (assoc-ref %build-inputs "coreutils")
"/bin/env")))
- (invoke ,@(if (%current-target-system)
- '("./Configure")
- '("./config"))
+ (invoke #$@(if (%current-target-system)
+ #~("./Configure")
+ #~("./config"))
"shared" ;build shared libraries
"--libdir=lib"
@@ -388,13 +390,13 @@ required structures.")
;; conventional.
(string-append "--openssldir=" out
"/share/openssl-"
- ,(package-version this-package))
+ #$(package-version this-package))
(string-append "--prefix=" out)
(string-append "-Wl,-rpath," lib)
- ,@(if (%current-target-system)
- '((getenv "CONFIGURE_TARGET_ARCH"))
- '())))))
+ #$@(if (%current-target-system)
+ #~((getenv "CONFIGURE_TARGET_ARCH"))
+ #~())))))
(add-after 'install 'move-static-libraries
(lambda* (#:key outputs #:allow-other-keys)
;; Move static libraries to the "static" output.
@@ -426,7 +428,7 @@ required structures.")
;; scripts. Remove them to avoid retaining a reference on Perl.
(let ((out (assoc-ref outputs "out")))
(delete-file-recursively (string-append out "/share/openssl-"
- ,(package-version this-package)
+ #$(package-version this-package)
"/misc"))))))))
(native-search-paths
(list (search-path-specification
@@ -471,7 +473,7 @@ required structures.")
;; Parallel build is not supported in 1.0.x.
((#:parallel-build? _ #f) #f)
((#:phases phases)
- `(modify-phases ,phases
+ #~(modify-phases #$phases
(add-before 'patch-source-shebangs 'patch-tests
(lambda* (#:key inputs native-inputs #:allow-other-keys)
(let ((bash (assoc-ref (or native-inputs inputs) "bash")))
@@ -494,9 +496,9 @@ required structures.")
;; Override this phase because OpenSSL 1.0 does not understand -rpath.
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
- (invoke ,@(if (%current-target-system)
- '("./Configure")
- '("./config"))
+ (invoke #$@(if (%current-target-system)
+ #~("./Configure")
+ #~("./config"))
"shared" ;build shared libraries
"--libdir=lib"
@@ -504,12 +506,12 @@ required structures.")
;; PREFIX/ssl. Change that to something more
;; conventional.
(string-append "--openssldir=" out
- "/share/openssl-" ,version)
+ "/share/openssl-" #$version)
(string-append "--prefix=" out)
- ,@(if (%current-target-system)
- '((getenv "CONFIGURE_TARGET_ARCH"))
- '())))))
+ #$@(if (%current-target-system)
+ '((getenv "CONFIGURE_TARGET_ARCH"))
+ '())))))
(delete 'move-extra-documentation)
(add-after 'install 'move-man3-pages
(lambda* (#:key outputs #:allow-other-keys)
@@ -534,7 +536,7 @@ required structures.")
;; scripts. Remove them to avoid retaining a reference on Perl.
(let ((out (assoc-ref outputs "out")))
(delete-file-recursively (string-append out "/share/openssl-"
- ,version "/misc"))
+ #$version "/misc"))
#t)))))))))
(define-public libressl
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 18/37] openssl: Use G-exp machinery for referring to outputs.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (10 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 17/37] openssl: Make the #:phases argument a G-expression Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 19/37] openssl: Move documentation instead of copying and deleting it Maxime Devos
` (24 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 438 bytes --]
This doesn't fix anything broken, just for simplifying
the code a little while we're rebuilding the world anyway.
IMHO this makes the code a little more readable.
* gnu/packages/tls.scm (openssl)[arguments]<#:phases>: Don't refer
to the association list 'outputs', use #$output, #$output:doc
and #$output:static instead.
---
gnu/packages/tls.scm | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
[-- Attachment #2: 0018-openssl-Use-G-exp-machinery-for-referring-to-outputs.patch --]
[-- Type: text/x-patch, Size: 3972 bytes --]
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 9de9a78e84..90211c733d 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -16,6 +16,7 @@
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -347,7 +348,7 @@ required structures.")
#$@(if (%current-target-system)
#~((add-before
'configure 'set-cross-compile
- (lambda* (#:key target outputs #:allow-other-keys)
+ (lambda* (#:key target #:allow-other-keys)
(setenv "CROSS_COMPILE" (string-append target "-"))
(setenv "CONFIGURE_TARGET_ARCH"
(cond
@@ -371,8 +372,8 @@ required structures.")
"linux-ppc"))))))
#~())
(replace 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
+ (lambda _
+ (let* ((out #$output)
(lib (string-append out "/lib")))
;; It's not a shebang so patch-source-shebangs misses it.
(substitute* "config"
@@ -398,23 +399,23 @@ required structures.")
#~((getenv "CONFIGURE_TARGET_ARCH"))
#~())))))
(add-after 'install 'move-static-libraries
- (lambda* (#:key outputs #:allow-other-keys)
+ (lambda _
;; Move static libraries to the "static" output.
- (let* ((out (assoc-ref outputs "out"))
+ (let* ((out #$output)
(lib (string-append out "/lib"))
- (static (assoc-ref outputs "static"))
+ (static #$output:static)
(slib (string-append static "/lib")))
(for-each (lambda (file)
(install-file file slib)
(delete-file file))
(find-files lib "\\.a$")))))
(add-after 'install 'move-extra-documentation
- (lambda* (#:key outputs #:allow-other-keys)
+ (lambda _
;; Move man3 pages and full HTML documentation to "doc".
- (let* ((out (assoc-ref outputs "out"))
+ (let* ((out #$output)
(man3 (string-append out "/share/man/man3"))
(html (string-append out "/share/doc/openssl"))
- (doc (assoc-ref outputs "doc"))
+ (doc #$output:doc)
(man-target (string-append doc "/share/man/man3"))
(html-target (string-append doc "/share/doc/openssl")))
(copy-recursively man3 man-target)
@@ -423,13 +424,12 @@ required structures.")
(delete-file-recursively html))))
(add-after
'install 'remove-miscellany
- (lambda* (#:key outputs #:allow-other-keys)
+ (lambda _
;; The 'misc' directory contains random undocumented shell and Perl
;; scripts. Remove them to avoid retaining a reference on Perl.
- (let ((out (assoc-ref outputs "out")))
- (delete-file-recursively (string-append out "/share/openssl-"
- #$(package-version this-package)
- "/misc"))))))))
+ (delete-file-recursively (string-append #$output "/share/openssl-"
+ #$(package-version this-package)
+ "/misc")))))))
(native-search-paths
(list (search-path-specification
(variable "SSL_CERT_DIR")
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 19/37] openssl: Move documentation instead of copying and deleting it.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (11 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 18/37] openssl: Use G-exp machinery for referring to outputs Maxime Devos
@ 2021-06-14 15:37 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 21/37] openssl: Find bin/env when cross-compiling Maxime Devos
` (23 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:37 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 255 bytes --]
* gnu/packages/tls.scm
(openssl)[arguments]<#:phases>{move-extra-documentation}: Use
'rename-file' instead of 'copy-recursively' and
'delete-file-recursively'.
---
gnu/packages/tls.scm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[-- Attachment #2: 0019-openssl-Move-documentation-instead-of-copying-and-de.patch --]
[-- Type: text/x-patch, Size: 876 bytes --]
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 90211c733d..9aa0b5a212 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -418,10 +418,10 @@ required structures.")
(doc #$output:doc)
(man-target (string-append doc "/share/man/man3"))
(html-target (string-append doc "/share/doc/openssl")))
- (copy-recursively man3 man-target)
- (delete-file-recursively man3)
- (copy-recursively html html-target)
- (delete-file-recursively html))))
+ (mkdir-p (dirname man3-target))
+ (mkdir-p (dirname html-target))
+ (rename-file man3 man-target)
+ (rename-file html html-target))))
(add-after
'install 'remove-miscellany
(lambda _
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 21/37] openssl: Find bin/env when cross-compiling.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (12 preceding siblings ...)
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 19/37] openssl: Move documentation instead of copying and deleting it Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 22/37] openssl: Extract logic for computing CONFIGURE_TARGET_ARCH Maxime Devos
` (22 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 266 bytes --]
%build-inputs does not exist when cross-compiling,
so find bin/env by another way.
* (openssl)[arguments]<#:phases>{configure}: Don't use '%build-inputs',
use 'which' instead.
---
gnu/packages/tls.scm | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[-- Attachment #2: 0021-openssl-Find-bin-env-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 883 bytes --]
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index c178806805..a4e754e27f 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -376,10 +376,10 @@ required structures.")
(let* ((out #$output)
(lib (string-append out "/lib")))
;; It's not a shebang so patch-source-shebangs misses it.
+ ;; Don't use (assoc-ref %build-inputs "coreutils"), as
+ ;; %build-inputs is not defined when cross-compiling.
(substitute* "config"
- (("/usr/bin/env")
- (string-append (assoc-ref %build-inputs "coreutils")
- "/bin/env")))
+ (("/usr/bin/env") (which "env")))
(invoke #$@(if (%current-target-system)
#~("./Configure")
#~("./config"))
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 22/37] openssl: Extract logic for computing CONFIGURE_TARGET_ARCH.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (13 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 21/37] openssl: Find bin/env when cross-compiling Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 36/37] cross-base: Fix cross-compiler for i686-linux-gnu Maxime Devos
` (21 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 373 bytes --]
By computing this value outside the build code, new targets
can be added without causing rebuilds for other targets.
* gnu/packages/tls.scm
(target->openssl-target): New procedure.
(openssl)[arguments]<#:phases>{set-cross-compile}: Use it.
---
gnu/packages/tls.scm | 46 ++++++++++++++++++++++++++------------------
1 file changed, 27 insertions(+), 19 deletions(-)
[-- Attachment #2: 0022-openssl-Extract-logic-for-computing-CONFIGURE_TARGET.patch --]
[-- Type: text/x-patch, Size: 2624 bytes --]
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index a4e754e27f..af91e42888 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -313,6 +313,31 @@ required structures.")
(define-public guile3.0-gnutls
(deprecated-package "guile3.0-gnutls" gnutls))
+(define (target->openssl-target target)
+ "Return the value to set CONFIGURE_TARGET_ARCH to when cross-compiling
+OpenSSL for TARGET."
+ ;; Keep this code outside the build code,
+ ;; such that new targets can be added
+ ;; without causing rebuilds for other targets.
+ (cond ((string-prefix? "i586" target)
+ "hurd-x86")
+ ((string-prefix? "i686" target)
+ "linux-x86")
+ ((string-prefix? "x86_64" target)
+ "linux-x86_64")
+ ((string-prefix? "mips64el" target)
+ "linux-mips64")
+ ((string-prefix? "arm" target)
+ "linux-armv4")
+ ((string-prefix? "aarch64" target)
+ "linux-aarch64")
+ ((string-prefix? "powerpc64le" target)
+ "linux-ppc64le")
+ ((string-prefix? "powerpc64" target)
+ "linux-ppc64")
+ ((string-prefix? "powerpc" target)
+ "linux-ppc")))
+
(define-public openssl
(package
(name "openssl")
@@ -351,25 +376,8 @@ required structures.")
(lambda* (#:key target #:allow-other-keys)
(setenv "CROSS_COMPILE" (string-append target "-"))
(setenv "CONFIGURE_TARGET_ARCH"
- (cond
- ((string-prefix? "i586" target)
- "hurd-x86")
- ((string-prefix? "i686" target)
- "linux-x86")
- ((string-prefix? "x86_64" target)
- "linux-x86_64")
- ((string-prefix? "mips64el" target)
- "linux-mips64")
- ((string-prefix? "arm" target)
- "linux-armv4")
- ((string-prefix? "aarch64" target)
- "linux-aarch64")
- ((string-prefix? "powerpc64le" target)
- "linux-ppc64le")
- ((string-prefix? "powerpc64" target)
- "linux-ppc64")
- ((string-prefix? "powerpc" target)
- "linux-ppc"))))))
+ #$(target->openssl-target
+ (%current-target-system))))))
#~())
(replace 'configure
(lambda _
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 36/37] cross-base: Fix cross-compiler for i686-linux-gnu.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (14 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 22/37] openssl: Extract logic for computing CONFIGURE_TARGET_ARCH Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 04/37] net-base: Make #:builder argument a G-expression Maxime Devos
` (20 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 709 bytes --]
GCC doesn't find libgcc_s.so anymore and looks in the wrong
location. Fix this (well, more a work-around really).
* gnu/packages/cross-base.scm
(cross-gcc-arguments)<#:configure-flags>:
Add --with-toolexecdir, such that libstdc++ ends up in the right
place. Add --with-slibdir such that libgcc_s.so end up in the right place.
(cross-gcc-arguments)<#:phases>{move-shared-libraries}:
New phase, moving libraries in the correct place.
Delete .la files, libasan.so and libusan.so to prevent circular
references. Likewise, fix a reference in libstdc++.so.VERSION-gdb.py.
---
gnu/packages/cross-base.scm | 63 +++++++++++++++++++++++++++++++++++--
1 file changed, 60 insertions(+), 3 deletions(-)
[-- Attachment #2: 0036-cross-base-Fix-cross-compiler-for-i686-linux-gnu.patch --]
[-- Type: text/x-patch, Size: 5218 bytes --]
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 9487ac9238..995b4ae065 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -33,6 +34,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
+ #:use-module (guix gexp)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (srfi srfi-1)
@@ -169,9 +171,26 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
))
;; Install cross-built libraries such as libgcc_s.so in
- ;; the "lib" output.
+ ;; the "lib" output. At least for version 8.4.0, GCC
+ ;; will put libstdc++ in ${toolexecdir}/lib instead.
+ ;; (A bug?) So set --with-toolexecdir as well.
+
,@(if libc
- `((string-append "--with-toolexeclibdir="
+ `((string-append "--with-toolexecdir="
+ (assoc-ref %outputs "lib"))
+ (string-append "--with-toolexeclibdir="
+ (assoc-ref %outputs "lib")
+ "/" ,target "/lib"))
+ '())
+ ;; At least for GCC 8.0, libgcc_s.so and libstdc++.so
+ ;; are not installed in the location specified in
+ ;; --with-toolexeclibdir so GCC will not find it
+ ;; when cross-compiling, say, GNU Hello.
+ ;;
+ ;; Work-around by specifying slibdir. This is not
+ ;; sufficient, see move-shared-libraries below.
+ ,@(if (and libc (version>=? (package-version xgcc) "8.0"))
+ `((string-append "--with-slibdir="
(assoc-ref %outputs "lib")
"/" ,target "/lib"))
'())
@@ -193,7 +212,45 @@ base compiler and using LIBC (which may be either a libc package or #f.)"
,flags))
flags))
((#:phases phases)
- `(cross-gcc-build-phases ,target ,phases))))))
+ (if (and libc (version>=? (package-version xgcc) "8.0"))
+ #~(modify-phases (cross-gcc-build-phases #$target #$phases)
+ (add-after 'install 'move-shared-libraries
+ (lambda _
+ (let* ((slib (format #f "~a/~a/lib/" #$output:lib #$target))
+ (badlib (format #f "~a/~a/lib/" #$output #$target))
+ (libs (map basename (find-files badlib #:fail-on-error? #t))))
+ (for-each
+ (lambda (lib)
+ (let ((from (string-append badlib lib))
+ (to (string-append slib lib)))
+ (when (file-exists? to)
+ (error "~a was found twice, refusing to overwrite!"
+ lib))
+ ;; The debugging script libstdc++.so.VERSION-gdb.py has
+ ;; reference to #$output. Correct it.
+ (when (string-suffix? "-gdb.py" lib)
+ (substitute* from
+ (("libdir = '(.*)'")
+ (string-append "libdir = '" slib "'")))
+ (system* "cat" from))
+ ;; The .la files have references to BADLIB,
+ ;; leading to cyclic references between
+ ;; the outputs of the package. Remove them
+ ;; and hope noone notices.
+ ;;
+ ;; Likewise, libasan.so.* and libubsan.so.*
+ ;; have references to #$output.
+ (if (or (string-suffix? ".la" lib)
+ (string-prefix? "libasan.so" lib)
+ (string-prefix? "libubsan.so" lib))
+ (delete-file from)
+ (rename-file from to))))
+ libs)
+ ;; If you have "cyclic references" problems,
+ ;; uncomment this and use --keep-failed to figure
+ ;; things out.
+ (copy-recursively #$output:lib "out-test")))))
+ #~(cross-gcc-build-phases #$target #$phases)))))))
(define (cross-gcc-patches xgcc target)
"Return GCC patches needed for XGCC and TARGET."
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 04/37] net-base: Make #:builder argument a G-expression.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (15 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 36/37] cross-base: Fix cross-compiler for i686-linux-gnu Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 05/37] net-base: Fix cross-compilation, eliminating %build-inputs & friends Maxime Devos
` (19 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 282 bytes --]
This allows using ungexp-native and this-package-native-input later.
* gnu/packages/admin.scm (net-base)[arguments]{#:builder}: Make this
a G-expression.
---
gnu/packages/admin.scm | 39 ++++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)
[-- Attachment #2: 0004-net-base-Make-builder-argument-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 2823 bytes --]
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 531686fdbb..5c7e41f51b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -74,6 +74,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
+ #:use-module (guix gexp)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages autogen)
@@ -936,25 +937,25 @@ to allow automatic login and starting any app.")
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
- #:builder (begin
- (use-modules (guix build utils)
- (srfi srfi-26))
-
- (let* ((source (assoc-ref %build-inputs "source"))
- (tar (assoc-ref %build-inputs "tar"))
- (xz (assoc-ref %build-inputs "xz"))
- (output (assoc-ref %outputs "out"))
- (etc (string-append output "/etc")))
- (setenv "PATH" (string-append xz "/bin"))
- (invoke (string-append tar "/bin/tar") "xvf"
- source)
- (chdir ,(string-append "netbase-" version))
- (mkdir-p etc)
- (for-each copy-file
- '("etc-services" "etc-protocols" "etc-rpc")
- (map (cut string-append etc "/" <>)
- '("services" "protocols" "rpc")))
- #t))))
+ #:builder ,#~(begin
+ (use-modules (guix build utils)
+ (srfi srfi-26))
+
+ (let* ((source (assoc-ref %build-inputs "source"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (output (assoc-ref %outputs "out"))
+ (etc (string-append output "/etc")))
+ (setenv "PATH" (string-append xz "/bin"))
+ (invoke (string-append tar "/bin/tar") "xvf"
+ source)
+ (chdir #$(string-append "netbase-" version))
+ (mkdir-p etc)
+ (for-each copy-file
+ '("etc-services" "etc-protocols" "etc-rpc")
+ (map (cut string-append etc "/" <>)
+ '("services" "protocols" "rpc")))
+ #t))))
(native-inputs `(("tar" ,tar)
("xz" ,xz)))
(synopsis "IANA protocol, port, and RPC number assignments")
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 05/37] net-base: Fix cross-compilation, eliminating %build-inputs & friends
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (16 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 04/37] net-base: Make #:builder argument a G-expression Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 06/37] net-base: Don't cross-compile Maxime Devos
` (18 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 318 bytes --]
"source" is not in %build-inputs when cross-compiling, so another
approach for referring to the package source code is needed.
* gnu/packages/admin.scm (net-base)[arguments]<#:builder>: Eliminate
%build-inputs and %outputs.
---
gnu/packages/admin.scm | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
[-- Attachment #2: 0005-net-base-Fix-cross-compilation-eliminating-build-inp.patch --]
[-- Type: text/x-patch, Size: 1091 bytes --]
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 5c7e41f51b..f499a1252b 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -941,10 +941,10 @@ to allow automatic login and starting any app.")
(use-modules (guix build utils)
(srfi srfi-26))
- (let* ((source (assoc-ref %build-inputs "source"))
- (tar (assoc-ref %build-inputs "tar"))
- (xz (assoc-ref %build-inputs "xz"))
- (output (assoc-ref %outputs "out"))
+ (let* ((source #+(package-source this-package))
+ (tar #+(this-package-native-input "tar"))
+ (xz #+(this-package-native-input "xz"))
+ (output #$output)
(etc (string-append output "/etc")))
(setenv "PATH" (string-append xz "/bin"))
(invoke (string-append tar "/bin/tar") "xvf"
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 06/37] net-base: Don't cross-compile.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (17 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 05/37] net-base: Fix cross-compilation, eliminating %build-inputs & friends Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 23/37] readline: Make #:configure-flags a G-expression Maxime Devos
` (17 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 274 bytes --]
net-base is pure data, so cross-compiling is pointless.
* gnu/packages/admin.scm
(net-base)[arguments]<#:target>: Set to #f.
(net-base)[arguments]<#:allowed-references>: Disallow all
references.
---
gnu/packages/admin.scm | 5 +++++
1 file changed, 5 insertions(+)
[-- Attachment #2: 0006-net-base-Don-t-cross-compile.patch --]
[-- Type: text/x-patch, Size: 686 bytes --]
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index f499a1252b..5e41ba9967 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -937,6 +937,11 @@ to allow automatic login and starting any app.")
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
+ ;; This package consists solely of architecture-independent
+ ;; tables. Cross-compilation is pointless! Make sure we'll
+ ;; always get the same derivation.
+ #:target #f
+ #:allowed-references ()
#:builder ,#~(begin
(use-modules (guix build utils)
(srfi srfi-26))
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 23/37] readline: Make #:configure-flags a G-expression.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (18 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 06/37] net-base: Don't cross-compile Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 24/37] readline: Fix build error when cross-compiling Maxime Devos
` (16 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 269 bytes --]
This allos using ungexp and this-package-input later.
* gnu/packages/readline.scm
(readline)[arguments]<#:configure-flags>: Make this a
G-expression.
---
gnu/packages/readline.scm | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
[-- Attachment #2: 0023-readline-Make-configure-flags-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 2070 bytes --]
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index b4c91675a4..6cfa24c666 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -29,6 +29,7 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix utils)
+ #:use-module (guix gexp)
#:use-module (ice-9 format))
(define (patch-url version seqno)
@@ -76,19 +77,19 @@
(build-system gnu-build-system)
(propagated-inputs `(("ncurses" ,ncurses)))
(arguments `(#:configure-flags
- (list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
- (assoc-ref %build-inputs "ncurses")
- "/lib")
+ ,#~(list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
+ (assoc-ref %build-inputs "ncurses")
+ "/lib")
- ;; This test does an 'AC_TRY_RUN', which aborts when
- ;; cross-compiling, so provide the correct answer.
- ,@(if (%current-target-system)
- '("bash_cv_wcwidth_broken=no")
- '())
- ;; MinGW: ncurses provides the termcap api.
- ,@(if (target-mingw?)
- '("bash_cv_termcap_lib=ncurses")
- '()))
+ ;; This test does an 'AC_TRY_RUN', which aborts when
+ ;; cross-compiling, so provide the correct answer.
+ #$@(if (%current-target-system)
+ '("bash_cv_wcwidth_broken=no")
+ '())
+ ;; MinGW: ncurses provides the termcap api.
+ #$@(if (target-mingw?)
+ '("bash_cv_termcap_lib=ncurses")
+ '()))
,@(if (target-mingw?)
;; MinGW: termcap in ncurses
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 24/37] readline: Fix build error when cross-compiling.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (19 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 23/37] readline: Make #:configure-flags a G-expression Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 25/37] bash: Make #:configure-flags a G-expression Maxime Devos
` (15 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 304 bytes --]
%build-inputs does not exist when cross-compiling, so
use this-package-input instead.
* gnu/packages/readline.scm
(readline)[arguments]<#:configure-flags>: Use this-package-input
instead of %build-inputs.
---
gnu/packages/readline.scm | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
[-- Attachment #2: 0024-readline-Fix-build-error-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 1158 bytes --]
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm
index 6cfa24c666..f9f2797247 100644
--- a/gnu/packages/readline.scm
+++ b/gnu/packages/readline.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019, 2020 Marius Bakke <marius@gnu.org>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -77,9 +78,10 @@
(build-system gnu-build-system)
(propagated-inputs `(("ncurses" ,ncurses)))
(arguments `(#:configure-flags
- ,#~(list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
- (assoc-ref %build-inputs "ncurses")
- "/lib")
+ ,#~(list (string-append
+ "LDFLAGS=-Wl,-rpath -Wl,"
+ #$(this-package-input "ncurses")
+ "/lib")
;; This test does an 'AC_TRY_RUN', which aborts when
;; cross-compiling, so provide the correct answer.
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 25/37] bash: Make #:configure-flags a G-expression.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (20 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 24/37] readline: Fix build error when cross-compiling Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 26/37] bash: Fix cross-compilation build error Maxime Devos
` (14 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 274 bytes --]
This allows using this-package-input later.
* gnu/packages/bash.scm
(bash)[arguments]<#:configure-flags>: Make this a G-expression
instead of a raw S-expression.
---
gnu/packages/bash.scm | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
[-- Attachment #2: 0025-bash-Make-configure-flags-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 1794 bytes --]
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 7e98367bbb..b3af873a66 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -109,15 +109,15 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
"-DSSH_SOURCE_BASHRC")
" "))
(configure-flags
- ``("--with-installed-readline"
- ,,(string-append "CPPFLAGS=" cppflags)
- ,(string-append
- "LDFLAGS=-Wl,-rpath -Wl,"
- (assoc-ref %build-inputs "readline")
- "/lib"
- " -Wl,-rpath -Wl,"
- (assoc-ref %build-inputs "ncurses")
- "/lib")))
+ #~`("--with-installed-readline"
+ ,#$(string-append "CPPFLAGS=" cppflags)
+ ,(string-append
+ "LDFLAGS=-Wl,-rpath -Wl,"
+ (assoc-ref %build-inputs "readline")
+ "/lib"
+ " -Wl,-rpath -Wl,"
+ (assoc-ref %build-inputs "ncurses")
+ "/lib")))
(version "5.1"))
(package
(name "bash")
@@ -143,8 +143,8 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
`(;; When cross-compiling, `configure' incorrectly guesses that job
;; control is missing.
#:configure-flags ,(if (%current-target-system)
- `(cons* "bash_cv_job_control_missing=no"
- ,configure-flags)
+ #~(cons* "bash_cv_job_control_missing=no"
+ #$configure-flags)
configure-flags)
;; Bash is reportedly not parallel-safe. See, for instance,
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 26/37] bash: Fix cross-compilation build error.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (21 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 25/37] bash: Make #:configure-flags a G-expression Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 27/37] fontconfig: Make the #:configure-flags argument a G-expression Maxime Devos
` (13 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 322 bytes --]
%build-inputs does not exist when cross-compiling,
so use this-package-input instead.
* gnu/packages/bash.scm
(bash)[arguments]<#:configure-flags>: Use this-package-input
instead of %build-inputs.
---
gnu/packages/bash.scm | 35 +++++++++++++++++++----------------
1 file changed, 19 insertions(+), 16 deletions(-)
[-- Attachment #2: 0026-bash-Fix-cross-compilation-build-error.patch --]
[-- Type: text/x-patch, Size: 2033 bytes --]
diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index b3af873a66..d51ab26bc8 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -103,22 +103,25 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
1))
(define-public bash
- (let* ((cppflags (string-join '("-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
- "-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
- "-DNON_INTERACTIVE_LOGIN_SHELLS"
- "-DSSH_SOURCE_BASHRC")
- " "))
- (configure-flags
- #~`("--with-installed-readline"
- ,#$(string-append "CPPFLAGS=" cppflags)
- ,(string-append
- "LDFLAGS=-Wl,-rpath -Wl,"
- (assoc-ref %build-inputs "readline")
- "/lib"
- " -Wl,-rpath -Wl,"
- (assoc-ref %build-inputs "ncurses")
- "/lib")))
- (version "5.1"))
+ (let ((cppflags (string-join '("-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
+ "-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
+ "-DNON_INTERACTIVE_LOGIN_SHELLS"
+ "-DSSH_SOURCE_BASHRC")
+ " "))
+ (version "5.1"))
+ ;; Delay expansion to inside a lexical environment
+ ;; where this-package is bound.
+ (define-syntax configure-flags
+ (identifier-syntax
+ #~`("--with-installed-readline"
+ ,#$(string-append "CPPFLAGS=" cppflags)
+ ,(string-append
+ "LDFLAGS=-Wl,-rpath -Wl,"
+ ;; %build-inputs does not exist when cross-compiling,
+ ;; so use this-package-input instead.
+ #$(file-append (this-package-input "readline") "/lib")
+ " -Wl,-rpath -Wl,"
+ #$(file-append (this-package-input "ncurses") "/lib")))))
(package
(name "bash")
(source (origin
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 27/37] fontconfig: Make the #:configure-flags argument a G-expression.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (22 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 26/37] bash: Fix cross-compilation build error Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 28/37] fontconfig: Fix build error when cross-compiling Maxime Devos
` (12 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 351 bytes --]
This allows using #$(this-package-input ...) later.
* gnu/packages/fontutils.scm
(fontconfig)[arguments]<#:configure-flags>: Make this a
G-expression instead of a raw S-expression.
(fontconfig-with-documentation)[arguments]<#:configure-flags>: Likewise.
---
gnu/packages/fontutils.scm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[-- Attachment #2: 0027-fontconfig-Make-the-configure-flags-argument-a-G-exp.patch --]
[-- Type: text/x-patch, Size: 1199 bytes --]
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index dbce5beba8..234f11129a 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -64,6 +64,7 @@
#:use-module (gnu packages xorg)
#:use-module (gnu packages tex)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix svn-download)
@@ -347,6 +348,7 @@ Font Format (WOFF).")
("python" ,python-minimal))) ;to avoid a cycle through tk
(arguments
`(#:configure-flags
+ ,#~
(list "--disable-docs"
"--with-cache-dir=/var/cache/fontconfig"
;; register the default fonts
@@ -400,7 +402,7 @@ high quality, anti-aliased and subpixel rendered text on a display.")
(arguments
(substitute-keyword-arguments (package-arguments fontconfig)
((#:configure-flags configure-flags)
- `(delete "--disable-docs" ,configure-flags))
+ #~(delete "--disable-docs" #$configure-flags))
((#:phases phases '%standard-phases)
`(modify-phases ,phases
(add-after 'install 'move-man-sections
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 28/37] fontconfig: Fix build error when cross-compiling.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (23 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 27/37] fontconfig: Make the #:configure-flags argument a G-expression Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 15/37] python: Fix reference to input " Maxime Devos
` (11 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 312 bytes --]
%build-inputs does not exist when cross-compiling,
so use #$(this-package-input ...) instead.
* gnu/packages/fontutils.scm
(fontconfig)[arguments]<#:configure-flags>: Use this-package-input
instead of %build-inputs.
---
gnu/packages/fontutils.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[-- Attachment #2: 0028-fontconfig-Fix-build-error-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 742 bytes --]
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 234f11129a..b0d40efeae 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -353,8 +353,8 @@ Font Format (WOFF).")
"--with-cache-dir=/var/cache/fontconfig"
;; register the default fonts
(string-append "--with-default-fonts="
- (assoc-ref %build-inputs "font-dejavu")
- "/share/fonts")
+ #$(file-append (this-package-input "font-dejavu")
+ "/share/fonts"))
;; Register fonts from user and system profiles.
(string-append "--with-add-fonts="
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 15/37] python: Fix reference to input when cross-compiling.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (24 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 28/37] fontconfig: Fix build error when cross-compiling Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 29/37] glib: Use a correct python in scripts " Maxime Devos
` (10 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 283 bytes --]
"sitecustomize.py" is a native input, so look it up
in 'native-inputs', not 'inputs'.
* gnu/packages/python.scm (customize-site): Look up "sizecustomize.py"
in 'native-inputs', not 'inputs'.
---
gnu/packages/python.scm | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[-- Attachment #2: 0015-python-Fix-reference-to-input-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 994 bytes --]
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index fbad0b65b8..f004b8e739 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -111,13 +111,14 @@
(define* (customize-site version)
"Generate a install-sitecustomize.py phase, using VERSION."
- `(lambda* (#:key inputs outputs #:allow-other-keys)
+ `(lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(site-packages (string-append
out "/lib/python"
,(version-major+minor version)
"/site-packages"))
- (sitecustomize.py (assoc-ref inputs "sitecustomize.py"))
+ (sitecustomize.py (assoc-ref (or native-inputs inputs)
+ "sitecustomize.py"))
(dest (string-append site-packages "/sitecustomize.py")))
(mkdir-p site-packages)
(copy-file sitecustomize.py dest)
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 29/37] glib: Use a correct python in scripts when cross-compiling.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (25 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 15/37] python: Fix reference to input " Maxime Devos
@ 2021-06-14 15:38 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 07/37] tzdata: Don't bother with cross-compiling Maxime Devos
` (9 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:38 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 481 bytes --]
During the build, a native python should be used as these
scripts will be invoked during the build, but when installed,
they should be a python for the system we're compiling for.
* gnu/packages/glib.scm
(glib)[arguments]<#:phases>{patch-python-references}: Look up
"python" in 'native-inputs', not 'inputs'.
(glib)[inputs]{python,python-wrapper,bash-minimal}: New inputs.
---
gnu/packages/glib.scm | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
[-- Attachment #2: 0029-glib-Use-a-correct-python-in-scripts-when-cross-comp.patch --]
[-- Type: text/x-patch, Size: 2308 bytes --]
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 94276ae0ef..25c5ae494b 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -16,6 +16,7 @@
;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Arthur Margerit <ruhtra.mar@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -222,14 +223,19 @@ shared NFS home directories.")
#t))
;; Python references are not being patched in patch-phase of build,
;; despite using python-wrapper as input. So we patch them manually.
+ ;;
+ ;; These python scripts are both used during build and installed,
+ ;; so at first, use a python from 'native-inputs', not 'inputs'. When
+ ;; cross-compiling, the 'patch-shebangs' phase will replace
+ ;; the native python with a python from 'inputs'.
(add-after 'unpack 'patch-python-references
- (lambda* (#:key inputs #:allow-other-keys)
+ (lambda* (#:key native-inputs inputs #:allow-other-keys)
(substitute* '("gio/gdbus-2.0/codegen/gdbus-codegen.in"
"glib/gtester-report.in"
"gobject/glib-genmarshal.in"
"gobject/glib-mkenums.in")
(("@PYTHON@")
- (string-append (assoc-ref inputs "python")
+ (string-append (assoc-ref (or native-inputs inputs) "python")
"/bin/python"
,(version-major+minor
(package-version python)))))
@@ -282,6 +288,13 @@ shared NFS home directories.")
("xsltproc" ,libxslt)))
(inputs
`(("bash-completion" ,bash-completion)
+ ;; "python", "python-wrapper" and "bash-minimal"
+ ;; are for the 'patch-shebangs' phase, to make
+ ;; sure the installed scripts end up with a correct shebang
+ ;; when cross-compiling.
+ ("python" ,python)
+ ("python-wrapper" ,python-wrapper)
+ ("bash-minimal" ,(canonical-package bash-minimal))
("dbus" ,dbus)
("libelf" ,libelf)))
(propagated-inputs
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 07/37] tzdata: Don't bother with cross-compiling.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (26 preceding siblings ...)
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 29/37] glib: Use a correct python in scripts " Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 30/37] glib: Verify the cross-compiled python is used in installed scripts Maxime Devos
` (8 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 377 bytes --]
The time zone database is architecture-independent,
so trying to cross-compile it is pointless!
* gnu/packages/base.scm
(tzdata)[arguments]<#:target>: Set to #f.
(tzdata)[allowed-references]: Only include the "out" output itself,
to make sure no (architecture-dependent) binaries are installed.
---
gnu/packages/base.scm | 9 +++++++++
1 file changed, 9 insertions(+)
[-- Attachment #2: 0007-tzdata-Don-t-bother-with-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 1157 bytes --]
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index d30299a7b6..2674be8048 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -17,6 +17,7 @@
;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1251,6 +1252,14 @@ command.")
(build-system gnu-build-system)
(arguments
`(#:tests? #f
+ ;; This consists purely of (architecture-independent) data,
+ ;; so ‘cross-compilation’ is pointless here!
+ ;; (The binaries zic, dump, and tzselect are deleted in the post-install
+ ;; phase.)
+ #:target #f
+ ;; share/zoneinfo/posix is a symlink to share/zoneinfo,
+ ;; so include the package itself in #:allowed-references.
+ #:allowed-references ("out")
#:make-flags (let ((out (assoc-ref %outputs "out"))
(tmp (getenv "TMPDIR")))
(list (string-append "TOPDIR=" out)
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 30/37] glib: Verify the cross-compiled python is used in installed scripts.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (27 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 07/37] tzdata: Don't bother with cross-compiling Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 37/37] meson: Support cross-compilation Maxime Devos
` (7 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 214 bytes --]
* gnu/packages/glib.scm (glib)[arguments]<#:disallowed-references>:
Disallow the native python when cross-compiling.
---
gnu/packages/glib.scm | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
[-- Attachment #2: 0030-glib-Verify-the-cross-compiled-python-is-used-in-ins.patch --]
[-- Type: text/x-patch, Size: 1195 bytes --]
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 25c5ae494b..244544ea6f 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -77,6 +77,8 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils)
+ #:use-module (guix gexp)
+ #:use-module (srfi srfi-26)
#:use-module ((srfi srfi-1) #:hide (zip))
;; Export variables up-front to allow circular dependency with the 'xorg'
@@ -200,7 +202,15 @@ shared NFS home directories.")
(outputs '("out" ; everything
"bin")) ; glib-mkenums, gtester, etc.; depends on Python
(arguments
- `(#:disallowed-references (,tzdata-for-tests)
+ `(#:disallowed-references
+ (,tzdata-for-tests
+ ;; Verify glib-mkenums, gtester, ... use the cross-compiled
+ ;; python.
+ ,@(if (%current-target-system)
+ (map (cut gexp-input <> #:native? #t)
+ `(,(this-package-native-input "python")
+ ,(this-package-native-input "python-wrapper")))
+ '()))
#:configure-flags '("-Dman=true"
"-Dselinux=disabled")
#:phases
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 37/37] meson: Support cross-compilation.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (28 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 30/37] glib: Verify the cross-compiled python is used in installed scripts Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 20/37] openssl: Move all man pages to separate output, not only man3 Maxime Devos
` (6 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 2136 bytes --]
For cross-compilation, meson needs to be passed a
‘cross file’ with information on the architecture,
CPU type, endianness and operating system, and the
name of the cross-compiler binaries.
The new module (guix build meson-configuration) has
some utilities for writing these cross files, used
by 'make-cross-file' in a G-exp. The values for
the cross file are generated by 'make-machine-alist'
and 'make-binaries-alist'.
'make-machine-alist' and 'make-binaries-alist' live
on the host side, such that new architectures and operating
systems can be added without causing rebuilds for old
architectures.
Currently, only GNU/Hurd, GNU/Linux, MinGW, x86-32 and
x86-64 are supported by 'make-machine-alist'. For other
architectures, someone needs to figure out what to
use as ‘CPU type’ first. Only i686-linux-gnu has been
tested.
This has been tested with:
$ ./pre-inst-env guix build glib --target=i686-linux-gnu
on a x86_64-linux system. ‘If it compiles, it should work.’
* guix/build/meson-configuration.scm
(configuration-port): New parameter.
(write-section-header): New procedure.
(write-assignment): New procedure.
(write-assignments): New procedure.
* guix/build-system/meson.scm
(target-hurd?): New predicate.
(make-machine-alist): New procedure.
(make-binaries-alist): New procedure.
(make-cross-file): New procedure.
(meson-cross-build): New procedure.
(lower)[build-inputs]: Add standard cross packages when cross-compiling.
Do not include regular 'inputs' when cross-compiling.
(lower)[host-inputs]: Include 'inputs' when cross-compiling.
(lower)[target-inputs]: Add cross packages when cross-compiling.
(lower)[build]: Call 'meson-cross-build' instead of 'cross-build'
when cross-compiling.
(lower)[target]: Set it.
(lower)[private-keywords]: Do not remove #:target when cross-compiling.
---
Makefile.am | 1 +
guix/build-system/meson.scm | 197 ++++++++++++++++++++++++++---
guix/build/meson-configuration.scm | 71 +++++++++++
3 files changed, 250 insertions(+), 19 deletions(-)
create mode 100644 guix/build/meson-configuration.scm
[-- Attachment #2: 0037-meson-Support-cross-compilation.patch --]
[-- Type: text/x-patch, Size: 13607 bytes --]
diff --git a/Makefile.am b/Makefile.am
index a10e06e5a7..d4bf626fd5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -234,6 +234,7 @@ MODULES = \
guix/build/emacs-utils.scm \
guix/build/java-utils.scm \
guix/build/lisp-utils.scm \
+ guix/build/meson-configuration.scm \
guix/build/maven/java.scm \
guix/build/maven/plugin.scm \
guix/build/maven/pom.scm \
diff --git a/guix/build-system/meson.scm b/guix/build-system/meson.scm
index 5adc0f92c8..1f763af2aa 100644
--- a/guix/build-system/meson.scm
+++ b/guix/build-system/meson.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2017 Peter Mikkelsen <petermikkelsen10@gmail.com>
;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,7 +31,8 @@
#:use-module (guix packages)
#:use-module (ice-9 match)
#:export (%meson-build-system-modules
- meson-build-system))
+ meson-build-system
+ make-cross-file))
;; Commentary:
;;
@@ -40,6 +42,62 @@
;;
;; Code:
+(define (target-hurd? triplet)
+ (and (string-suffix? "-gnu" triplet)
+ (not (string-contains triplet "linux"))))
+
+(define (make-machine-alist triplet)
+ "Make an association list describing what should go into
+the ‘host_machine’ section of the cross file when cross-compiling
+for TRIPLET."
+ `((system . ,(cond ((target-hurd? triplet) "gnu")
+ ((target-linux? triplet) "linux")
+ ((target-mingw? triplet) "windows")
+ (#t (error "meson: unknown operating system"))))
+ (cpu_family . ,(cond ((target-x86-32? triplet) "x86")
+ ((target-x86-64? triplet) "x86_64")
+ ((target-arm32? triplet) "arm")
+ ((target-aarch64? triplet) "aarch64")
+ ((target-powerpc? triplet)
+ (if (target-64bit? triplet)
+ "ppc64"
+ "ppc"))
+ (#t (error "meson: unknown architecture"))))
+ (cpu . ,(cond ((target-x86-32? triplet) ; i386, ..., i686
+ (substring triplet 0 4))
+ ((target-x86-64? triplet) "x86_64")
+ (#t (error "meson: unknown CPU"))))
+ (endian . ,(cond ((string-prefix? "powerpc64le-" triplet) "little")
+ ((string-prefix? "mips64el-" triplet) "little")
+ ((target-x86-32? triplet) "little")
+ ((target-x86-64? triplet) "little")
+ (#t (error "meson: unknown architecture"))))))
+
+(define (make-binaries-alist triplet)
+ "Make an associatoin list describing what should go into
+the ‘binaries’ section of the cross file when cross-compiling for
+TRIPLET."
+ `((c . ,(cc-for-target triplet))
+ (cpp . ,(cxx-for-target triplet))
+ (pkgconfig . ,(pkg-config-for-target triplet))
+ (objcopy . ,(string-append triplet "-objcopy"))
+ (ar . ,(string-append triplet "-ar"))
+ (ld . ,(string-append triplet "-ld"))
+ (strip . ,(string-append triplet "-strip"))))
+
+(define (make-cross-file triplet)
+ (computed-file "cross-file"
+ (with-imported-modules '((guix build meson-configuration))
+ #~(begin
+ (use-modules (guix build meson-configuration))
+ (call-with-output-file #$output
+ (lambda (f)
+ (parameterize ((configuration-port f))
+ (write-section-header "host_machine")
+ (write-assignments '#$(make-machine-alist triplet))
+ (write-section-header "binaries")
+ (write-assignments '#$(make-binaries-alist triplet)))))))))
+
(define %meson-build-system-modules
;; Build-side modules imported by default.
`((guix build meson-build-system)
@@ -68,24 +126,34 @@
#:rest arguments)
"Return a bag for NAME."
(define private-keywords
- `(#:meson #:ninja #:inputs #:native-inputs #:outputs #:target))
-
- (and (not target) ;; TODO: add support for cross-compilation.
- (bag
- (name name)
- (system system)
- (build-inputs `(("meson" ,meson)
- ("ninja" ,ninja)
- ,@native-inputs
- ,@inputs
- ;; Keep the standard inputs of 'gnu-build-system'.
- ,@(standard-packages)))
- (host-inputs (if source
- `(("source" ,source))
- '()))
- (outputs outputs)
- (build meson-build)
- (arguments (strip-keyword-arguments private-keywords arguments)))))
+ `(#:meson #:ninja #:inputs #:native-inputs #:outputs
+ ,@(if target
+ '()
+ '(#:target))))
+
+ (bag
+ (name name)
+ (system system) (target target)
+ (build-inputs `(("meson" ,meson)
+ ("ninja" ,ninja)
+ ,@native-inputs
+ ,@(if target '() inputs)
+ ;; Keep the standard inputs of 'gnu-build-system'.
+ ,@(if target
+ (standard-cross-packages target 'host)
+ '())
+ ,@(standard-packages)))
+ (host-inputs `(,@(if source
+ `(("source" ,source))
+ '())
+ ,@(if target inputs '())))
+ ;; Keep the standard inputs of 'gnu-buid-system'.
+ (target-inputs (if target
+ (standard-cross-packages target 'target)
+ '()))
+ (outputs outputs)
+ (build (if target meson-cross-build meson-build))
+ (arguments (strip-keyword-arguments private-keywords arguments))))
(define* (meson-build name inputs
#:key
@@ -161,6 +229,97 @@ has a 'meson.build' file."
#:disallowed-references disallowed-references
#:guile-for-build guile)))
+(define* (meson-cross-build name
+ #:key
+ target
+ build-inputs host-inputs target-inputs
+ guile source
+ (outputs '("out"))
+ (configure-flags ''())
+ (search-paths '())
+ (native-search-paths '())
+
+ (build-type "debugoptimized")
+ (tests? #f)
+ (test-target "test")
+ (glib-or-gtk? #f)
+ (parallel-build? #t)
+ (parallel-tests? #f)
+ (validate-runpath? #t)
+ (patch-shebangs? #t)
+ (strip-binaries? #t)
+ (strip-flags ''("--strip-debug"))
+ (strip-directories ''("lib" "lib64" "libexec"
+ "bin" "sbin"))
+ (elf-directories ''("lib" "lib64" "libexec"
+ "bin" "sbin"))
+ (phases '%standard-phases)
+ (system (%current-system))
+ (imported-modules %meson-build-system-modules)
+ (modules '((guix build meson-build-system)
+ (guix build utils)))
+ allowed-references
+ disallowed-references)
+ "Cross-build SOURCE for TARGET using MESON, and with INPUTS, assuming that
+SOURCE has a 'meson.build' file."
+ (define cross-file
+ (make-cross-file target))
+ (define inputs
+ (if (null? target-inputs)
+ (input-tuples->gexp host-inputs)
+ #~(append #$(input-tuples->gexp host-inputs)
+ #+(input-tuples->gexp target-inputs))))
+ (define builder
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
+
+ (define build-phases
+ #$(let ((phases (if (pair? phases) (sexp->gexp phases) phases)))
+ (if glib-or-gtk?
+ phases
+ #~(modify-phases #$phases
+ (delete 'glib-or-gtk-compile-schemas)
+ (delete 'glib-or-gtk-wrap)))))
+
+ ;; Do not use 'with-build-variables', as there should be
+ ;; no reason to use %build-inputs and friends.
+ (meson-build #:source #+source
+ #:system #$system
+ #:outputs #$(outputs->gexp outputs)
+ #:inputs #$inputs
+ #:native-inputs #+(input-tuples->gexp build-inputs)
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:native-search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ native-search-paths))
+ #:phases build-phases
+ #:configure-flags `("--cross-file" #+cross-file
+ ,@#$(sexp->gexp configure-flags))
+ #:build-type #$build-type
+ #:tests? #$tests?
+ #:test-target #$test-target
+ #:parallel-build? #$parallel-build?
+ #:parallel-tests? #$parallel-tests?
+ #:validate-runpath? #$validate-runpath?
+ #:patch-shebangs? #$patch-shebangs?
+ #:strip-binaries? #$strip-binaries?
+ #:strip-flags #$(sexp->gexp strip-flags)
+ #:strip-directories #$(sexp->gexp strip-directories)
+ #:elf-directories #$(sexp->gexp elf-directories)))))
+
+ (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
+ system #:graft? #f)))
+ (gexp->derivation name builder
+ #:system system
+ #:target target
+ #:substitutable? substitutable?
+ #:allowed-references allowed-references
+ #:disallowed-references disallowed-references
+ #:guile-for-build guile)))
+
(define meson-build-system
(build-system
(name 'meson)
diff --git a/guix/build/meson-configuration.scm b/guix/build/meson-configuration.scm
new file mode 100644
index 0000000000..81b4eaa7e1
--- /dev/null
+++ b/guix/build/meson-configuration.scm
@@ -0,0 +1,71 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build meson-configuration)
+ #:use-module (ice-9 match)
+ #:export (write-section-header write-assignment
+ write-assignments make-machine-alist
+ configuration-port))
+
+;; Commentary:
+;;
+;; Utilities for generating a ‘Cross build definition file’ for
+;; the Meson build system. Configuration values are currently
+;; never escaped. In practice this is unlikely to be a problem
+;; in the build environment.
+;;
+;; Code:
+
+(define configuration-port
+ (fluid->parameter (make-unbound-fluid)))
+
+(define (write-section-header section-name)
+ "Write a section header for section named SECTION-NAME
+to the configuration port."
+ (format (configuration-port) "[~a]~%" section-name))
+
+(define (write-assignment key value)
+ "Write an assignment of VALUE to KEY to the configuration
+port. VALUE must be a string (without any special characters
+such as quotes), a boolean or an integer. Lists are currently
+not supported"
+ (define port (configuration-port))
+ (match value
+ ((? string?)
+ (format port "~a = '~a'~%" key value))
+ ((? integer?)
+ (format port "~a = ~a~%" key value))
+ (#f
+ (format port "~a = true~%" key))
+ (#t
+ (format port "~a = false~%" key))))
+
+(define* (write-assignments alist)
+ "Write the assignments in ALIST, an association list,
+to the configuration port."
+ (for-each (match-lambda
+ ((key . value)
+ (write-assignment key value)))
+ alist))
+
+(define* (make-machine-alist #:key system cpu-family cpu endian)
+ "Make an association list for the [host_machine] section."
+ `((system . ,system)
+ (cpu-family . ,cpu-family)
+ (cpu . ,cpu)
+ (endian . ,endian)))
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 20/37] openssl: Move all man pages to separate output, not only man3.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (29 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 37/37] meson: Support cross-compilation Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 32/37] tk: Make #:configure-flags a G-expression Maxime Devos
` (5 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 340 bytes --]
There does not seem to be any reason to only move man3 pages.
So, move all man pages to a separate output for documentation.
* gnu/packages/tls.scm
(openssl)[arguments]<#:phases>{move-extra-documentation}: Move
all man pages, not only man3.
---
gnu/packages/tls.scm | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
[-- Attachment #2: 0020-openssl-Move-all-man-pages-to-separate-output-not-on.patch --]
[-- Type: text/x-patch, Size: 1408 bytes --]
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 9aa0b5a212..c178806805 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -411,16 +411,16 @@ required structures.")
(find-files lib "\\.a$")))))
(add-after 'install 'move-extra-documentation
(lambda _
- ;; Move man3 pages and full HTML documentation to "doc".
+ ;; Move man pages and full HTML documentation to "doc".
(let* ((out #$output)
- (man3 (string-append out "/share/man/man3"))
- (html (string-append out "/share/doc/openssl"))
+ (man (string-append out "/share/man"))
+ (html (string-append out "/share/doc/openssl"))
(doc #$output:doc)
- (man-target (string-append doc "/share/man/man3"))
+ (man-target (string-append doc "/share/man"))
(html-target (string-append doc "/share/doc/openssl")))
- (mkdir-p (dirname man3-target))
+ (mkdir-p (dirname man-target))
(mkdir-p (dirname html-target))
- (rename-file man3 man-target)
+ (rename-file man man-target)
(rename-file html html-target))))
(add-after
'install 'remove-miscellany
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 32/37] tk: Make #:configure-flags a G-expression.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (30 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 20/37] openssl: Move all man pages to separate output, not only man3 Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 34/37] libelf: Use the cross-compiler when cross-compiling Maxime Devos
` (4 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 257 bytes --]
This allows using #$(this-package-input ...) later.
* gnu/packages/tcl.scm (tk)[arguments]<#:configure-flags>: Make
this a G-expression instead of an S-expression.
---
gnu/packages/tcl.scm | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
[-- Attachment #2: 0032-tk-Make-configure-flags-a-G-expression.patch --]
[-- Type: text/x-patch, Size: 996 bytes --]
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index 5fccfa5da9..c87a8187f2 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -230,15 +230,16 @@ X11 GUIs.")
"/lib -lfontconfig")))))))
#:configure-flags
+ ,#~
(list (string-append "--with-tcl="
(assoc-ref %build-inputs "tcl")
"/lib")
;; This is needed when cross-compiling, see:
;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=719247
- ,@(if (%current-target-system)
- '("tcl_cv_strtod_buggy=1"
- "ac_cv_func_strtod=yes")
- '()))
+ #$@(if (%current-target-system)
+ #~("tcl_cv_strtod_buggy=1"
+ "ac_cv_func_strtod=yes")
+ #~()))
;; The tests require a running X server, so we just skip them.
#:tests? #f))
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 34/37] libelf: Use the cross-compiler when cross-compiling.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (31 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 32/37] tk: Make #:configure-flags a G-expression Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 33/37] tk: Do not use %build-inputs " Maxime Devos
` (3 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 403 bytes --]
* gnu/packages/elf.scm
(libelf)[arguments]<#:phases>{delete-configure}: Regenerate
the configure script when cross-compiling.
(libelf)[arguments]<#:phases>{configure}: Do not replace
when cross-compiling.
(libelf)[native-inputs]: Add autoconf when cross-compiling.
---
gnu/packages/elf.scm | 48 +++++++++++++++++++++++++++++---------------
1 file changed, 32 insertions(+), 16 deletions(-)
[-- Attachment #2: 0034-libelf-Use-the-cross-compiler-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 3516 bytes --]
diff --git a/gnu/packages/elf.scm b/gnu/packages/elf.scm
index 0309dd95b5..66c2334e5c 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2020 Mark Wielaard <mark@klomp.org>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021 Leo Le Bouter <lle-bout@zaclys.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -32,6 +33,7 @@
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:select (gpl3+ lgpl3+ lgpl2.0+))
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
#:use-module (gnu packages documentation)
#:use-module (gnu packages gcc)
@@ -205,22 +207,36 @@ static analysis of the ELF binaries at hand.")
(arguments
`(#:phases
(modify-phases %standard-phases
- (replace 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- ;; This old `configure' script doesn't support
- ;; variables passed as arguments.
- (let ((out (assoc-ref outputs "out")))
- (setenv "CONFIG_SHELL" (which "bash"))
- (invoke "./configure"
- (string-append "--prefix=" out)
- ,@(if (string=? "powerpc64le-linux"
- (%current-system))
- '("--host=powerpc64le-unknown-linux-gnu")
- '())
- ,@(if (string=? "aarch64-linux"
- (%current-system))
- '("--host=aarch64-unknown-linux-gnu")
- '()))))))))
+ ,(if (%current-target-system)
+ ;; This old 'configure' script doesn't
+ ;; support cross-compilation well. E.g., it fails
+ ;; to find the cross-compiler.
+ `(add-before 'bootstrap 'delete-configure
+ (lambda _
+ (delete-file "configure")))
+ `(replace 'configure
+ ;; This old `configure' script doesn't support
+ ;; variables passed as arguments. TODO: would
+ ;; simply regenerating 'configure' work
+ ;; well enough, even if compiling natively
+ ;; on powerpc or aarch64?
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "CONFIG_SHELL" (which "bash"))
+ (invoke "./configure"
+ (string-append "--prefix=" out)
+ ,@(if (string=? "powerpc64le-linux"
+ (%current-system))
+ '("--host=powerpc64le-unknown-linux-gnu")
+ '())
+ ,@(if (string=? "aarch64-linux"
+ (%current-system))
+ '("--host=aarch64-unknown-linux-gnu")
+ '())))))))))
+ (native-inputs
+ (if (%current-target-system)
+ `(("autoconf" ,autoconf))
+ '()))
(home-page (string-append "https://web.archive.org/web/20181111033959/"
"http://www.mr511.de/software/english.html"))
(synopsis "ELF object file access library")
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 33/37] tk: Do not use %build-inputs when cross-compiling.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (32 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 34/37] libelf: Use the cross-compiler when cross-compiling Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 35/37] opendht: Correct 'nettle' variable name in inputs Maxime Devos
` (2 subsequent siblings)
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 318 bytes --]
%build-inputs does not exists when cross-compiling,
so use #$(this-package-input ...) instead.
* gnu/packages/tcl.scm
(tk)[arguments]<#:configure-flags>: Use 'this-package-input'
instead of '%build-inputs' when cross-compiling.
---
gnu/packages/tcl.scm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
[-- Attachment #2: 0033-tk-Do-not-use-build-inputs-when-cross-compiling.patch --]
[-- Type: text/x-patch, Size: 946 bytes --]
diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm
index c87a8187f2..91ba8bbb3f 100644
--- a/gnu/packages/tcl.scm
+++ b/gnu/packages/tcl.scm
@@ -29,6 +29,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
+ #:use-module (guix gexp)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system perl)
@@ -232,7 +233,9 @@ X11 GUIs.")
#:configure-flags
,#~
(list (string-append "--with-tcl="
- (assoc-ref %build-inputs "tcl")
+ #$(if (%current-target-system)
+ (this-package-input "tcl")
+ #~(assoc-ref %build-inputs "tcl"))
"/lib")
;; This is needed when cross-compiling, see:
;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=719247
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 35/37] opendht: Correct 'nettle' variable name in inputs.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (33 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 33/37] tk: Do not use %build-inputs " Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 31/37] glib: Look up "tzdata" in 'native-inputs', not 'inputs' Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 02/37] utils: Define a target-x86-32? and target-x86-64? predicate Maxime Devos
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 416 bytes --]
Previously, opendht referred to 'nettle-3.7'.
But nettle-3.7 has been renamed to simply 'nettle'.
So, refer to 'nettle' instead of 'nettle-3.7'.
This should fix recent evaluation failures of core-updates
on ci.guix.gnu.org.
* gnu/packages/networking.scm
(opendht)[inputs]{nettle}: Refer to 'nettle' instead of 'nettle-3.7'.
---
gnu/packages/networking.scm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[-- Attachment #2: 0035-opendht-Correct-nettle-variable-name-in-inputs.patch --]
[-- Type: text/x-patch, Size: 534 bytes --]
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 62c4d7a392..6b154067b1 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3478,7 +3478,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.")
(build-system cmake-build-system)
(inputs
`(("argon2" ,argon2)
- ("nettle" ,nettle-3.7)
+ ("nettle" ,nettle)
("readline" ,readline)
("jsoncpp" ,jsoncpp)
("openssl" ,openssl) ;required for the DHT proxy
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 31/37] glib: Look up "tzdata" in 'native-inputs', not 'inputs'.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (34 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 35/37] opendht: Correct 'nettle' variable name in inputs Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 02/37] utils: Define a target-x86-32? and target-x86-64? predicate Maxime Devos
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 379 bytes --]
Otherwise, "tzdata" won't be found when cross-compiling
and string-append will complain about types. Alternatively,
"tzdata" could be moved from 'native-inputs' to 'inputs'.
* gnu/packages/glib.scm (glib)[arguments]<#:phases>{pre-check}:
Look up "tzdata" in 'native-inputs', not 'inputs'.
---
gnu/packages/glib.scm | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[-- Attachment #2: 0031-glib-Look-up-tzdata-in-native-inputs-not-inputs.patch --]
[-- Type: text/x-patch, Size: 882 bytes --]
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 244544ea6f..57e8282a89 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -251,10 +251,11 @@ shared NFS home directories.")
(package-version python)))))
#t))
(add-before 'check 'pre-check
- (lambda* (#:key inputs outputs #:allow-other-keys)
+ (lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
;; For tests/gdatetime.c.
(setenv "TZDIR"
- (string-append (assoc-ref inputs "tzdata")
+ (string-append (assoc-ref (or native-inputs inputs)
+ "tzdata")
"/share/zoneinfo"))
;; Some tests want write access there.
(setenv "HOME" (getcwd))
^ permalink raw reply related [flat|nested] 37+ messages in thread
* [bug#49025] [PATCH core-updates 02/37] utils: Define a target-x86-32? and target-x86-64? predicate.
[not found] <cover.1623680697.git.maximedevos@telenet.be>
` (35 preceding siblings ...)
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 31/37] glib: Look up "tzdata" in 'native-inputs', not 'inputs' Maxime Devos
@ 2021-06-14 15:39 ` Maxime Devos
36 siblings, 0 replies; 37+ messages in thread
From: Maxime Devos @ 2021-06-14 15:39 UTC (permalink / raw)
To: 49025
[-- Attachment #1: Type: text/plain, Size: 263 bytes --]
* guix/utils.scm (target-x86-32?, target-x86-64?): New predicates.
* tests/utils.scm ("target-x86-32?", "target-x86-64?"): New tests.
---
guix/utils.scm | 20 ++++++++++++++++++++
tests/utils.scm | 23 +++++++++++++++++++++++
2 files changed, 43 insertions(+)
[-- Attachment #2: 0002-utils-Define-a-target-x86-32-and-target-x86-64-predi.patch --]
[-- Type: text/x-patch, Size: 2695 bytes --]
diff --git a/guix/utils.scm b/guix/utils.scm
index 4ff2602e23..2256ea2ca6 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -84,6 +84,8 @@
package-name->name+version
target-linux?
target-mingw?
+ target-x86-32?
+ target-x86-64?
target-arm32?
target-aarch64?
target-arm?
@@ -553,6 +555,24 @@ a character other than '@'."
(and target
(string-suffix? "-mingw32" target)))
+(define* (target-x86-32? #:optional (target (or (%current-target-system)
+ (%current-system))))
+ "Is the architecture of TARGET a variant of Intel's 32-bit architecture
+(IA32)?"
+ ;; Intel also has a 16-bit architecture in the iN86 series, i286
+ ;; (see, e.g. https://en.wikipedia.org/wiki/Intel/808286) so this
+ ;; procedure is not named target-x86?.
+ (or (string-prefix? "i386-" target)
+ (string-prefix? "i486-" target)
+ (string-prefix? "i586-" target)
+ (string-prefix? "i686-" target)))
+
+(define* (target-x86-64? #:optional (target (or (%current-target-system)
+ (%current-system))))
+ "Is the architecture of TARGET a variant of Intel/AMD's 64-bit
+architecture (x86_64)?"
+ (string-prefix? "x86_64-" target))
+
(define* (target-arm32? #:optional (target (or (%current-target-system)
(%current-system))))
(string-prefix? "arm" target))
diff --git a/tests/utils.scm b/tests/utils.scm
index 80a0e669a4..92439b5587 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -306,6 +306,29 @@ skip these tests."
'("i686-linux-gnu" "i686-pc-gnu"
"i686-w64-mingw32")))
+(test-equal "target-x86-32?"
+ '(#f #f #f #t #t #t #t #f)
+ ;; These are (according to Wikipedia) two RISC architectures
+ ;; by Intel and presumably not compatible with the x86-32 series.
+ (map target-x86-32?
+ '("i860-gnu" "i960-gnu"
+ ;; This is a 16-bit architecture
+ "i286-gnu"
+ ;; These are part of the x86-32 series.
+ "i386-gnu" "i486-gnu" "i586-gnu" "i686-gnu"
+ ;; Maybe this one will exist some day, but not yet.
+ "i786-gnu")))
+
+(test-equal "target-x86-64?"
+ '(#t #f #f #f)
+ (map target-x86-64?
+ `("x86_64-linux-gnu" "i386-linux-gnu"
+ ;; Just because it includes "64" doesn't make it 64-bit.
+ "aarch64-linux-gnu"
+ ;; Note that (expt 2 109) in decimal notation starts with 64.
+ ;; However, it isn't 32-bit.
+ ,(format #f "x86_~a-linux-gnu" (expt 2 109)))))
+
(test-end)
(false-if-exception (delete-file temp-file))
^ permalink raw reply related [flat|nested] 37+ messages in thread
end of thread, other threads:[~2021-06-14 16:09 UTC | newest]
Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <cover.1623680697.git.maximedevos@telenet.be>
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 08/37] libgpg-error: Remove trailing #f from phases Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 09/37] libgpg-error: Prevent silent miscompilation some systems Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 01/37] utils: Define target-linux? predicate Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 03/37] packages: Define this-package-input and this-package-native-input Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 13/37] wrap-python3: Make #:builder a G-exp instead of a raw S-exp Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 14/37] wrap-python3: Fix cross-compilation Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 12/37] libgcrypt: Fix cross-compilation build error Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 10/37] libgpgerror: Maybe fix a cross-compilation bug Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 11/37] libgpg-error: Fix cross-compilation error Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 16/37] openssl: Remove trailing #t from phases Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 17/37] openssl: Make the #:phases argument a G-expression Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 18/37] openssl: Use G-exp machinery for referring to outputs Maxime Devos
2021-06-14 15:37 ` [bug#49025] [PATCH core-updates 19/37] openssl: Move documentation instead of copying and deleting it Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 21/37] openssl: Find bin/env when cross-compiling Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 22/37] openssl: Extract logic for computing CONFIGURE_TARGET_ARCH Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 36/37] cross-base: Fix cross-compiler for i686-linux-gnu Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 04/37] net-base: Make #:builder argument a G-expression Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 05/37] net-base: Fix cross-compilation, eliminating %build-inputs & friends Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 06/37] net-base: Don't cross-compile Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 23/37] readline: Make #:configure-flags a G-expression Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 24/37] readline: Fix build error when cross-compiling Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 25/37] bash: Make #:configure-flags a G-expression Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 26/37] bash: Fix cross-compilation build error Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 27/37] fontconfig: Make the #:configure-flags argument a G-expression Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 28/37] fontconfig: Fix build error when cross-compiling Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 15/37] python: Fix reference to input " Maxime Devos
2021-06-14 15:38 ` [bug#49025] [PATCH core-updates 29/37] glib: Use a correct python in scripts " Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 07/37] tzdata: Don't bother with cross-compiling Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 30/37] glib: Verify the cross-compiled python is used in installed scripts Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 37/37] meson: Support cross-compilation Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 20/37] openssl: Move all man pages to separate output, not only man3 Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 32/37] tk: Make #:configure-flags a G-expression Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 34/37] libelf: Use the cross-compiler when cross-compiling Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 33/37] tk: Do not use %build-inputs " Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 35/37] opendht: Correct 'nettle' variable name in inputs Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 31/37] glib: Look up "tzdata" in 'native-inputs', not 'inputs' Maxime Devos
2021-06-14 15:39 ` [bug#49025] [PATCH core-updates 02/37] utils: Define a target-x86-32? and target-x86-64? predicate Maxime Devos
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).