[PATCH 0/9] Target check fixes and cleanups

OpenSubmitted by Thiago Jung Bauermann.
Details
One participant
  • Thiago Jung Bauermann
Owner
unassigned
Severity
normal
T
T
Thiago Jung Bauermann wrote on 21 Jul 02:46 +0200
(address . guix-patches@gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721004615.631777-1-bauermann@kolabnow.com
Hello,
I recently had a closer look at uses of ‘%current-target-system’ and‘%current-system’ and noticed a few bugs to fix and also cleanups that canbe done.
They mostly stem from the fact that ‘%current-system’ holds a Nix systemidentifier, while ‘%current-target-system’ holds a GNU triplet identifier.A few parts of the code are confused about that and make the wrong check.The individual patch descriptions have the details.
The last two patches are just cleanups and not bug fixes. I’m on the fenceabout the merits of the last patch. It can reasonably be seen as either aworthwhile cleanup or needless code churn. I’m sending it anyway, and I’mfine with either dropping or applying it.
The series applies on today’s master branch, as of commit:
e644e45aec26 gnu: pipe-viewer: Correct references to youtube-dl program.
The only testing I did was running `make` on each patch in the series andchecking if there’s any new Guile warnings or errors (there isn’t), andrunning `make check`. The testsuite results are:
============================================================================Testsuite summary for GNU Guix UNKNOWN============================================================================# TOTAL: 1935# PASS: 1903# SKIP: 27# XFAIL: 2# FAIL: 3# XPASS: 0# ERROR: 0============================================================================See ./test-suite.logPlease report to bug-guix@gnu.org============================================================================
The failures are in tests/publish.scm, tests/guix-describe.sh andtests/guix-package.sh. Compared to the master branch,tests/guix-describe.sh is the only new failure. The test is skipped in themaster branch. This is because I ran the master branch tests on a gitworktree, where ‘.git’ is a file rather than a directory, causing the testto be skipped. If I change the `if [ -d "…/.git" ]` line to`if [ -e "…/.git" ]`, then the test also fails on master and I have the sametestsuite results with and without the patches.
Thiago Jung Bauermann (9): gnu: Fix check of ‘%current-system’ and ‘%current-target-system’ utils: Add ‘current-target-nix-system’ helper gnu: Query membership in ‘supported-systems’ list with Nix identifier gnu: Use ‘current-target-nix-system’ in pattern matches gnu: Use ‘current-target-nix-system’ in prefix checks gnu: Fix GNU/Linux system detection bootloader: grub: Fix mix of GNU triplet and Nix system identifier gnu: ustr: Don’t pass default argument gnu: Use existing target helpers from ‘(guix utils)’
gnu/bootloader/grub.scm | 5 +---- gnu/packages/algebra.scm | 3 +-- gnu/packages/astronomy.scm | 4 ++-- gnu/packages/bdw-gc.scm | 4 ++-- gnu/packages/boost.scm | 4 ++-- gnu/packages/bootloaders.scm | 22 ++++++---------------- gnu/packages/bootstrap.scm | 6 ++---- gnu/packages/c.scm | 3 +-- gnu/packages/ci.scm | 6 ++---- gnu/packages/compression.scm | 6 ++---- gnu/packages/crypto.scm | 4 ++-- gnu/packages/databases.scm | 3 +-- gnu/packages/debug.scm | 6 ++---- gnu/packages/digest.scm | 3 +-- gnu/packages/firmware.scm | 4 ++-- gnu/packages/gcc.scm | 5 +---- gnu/packages/golang.scm | 6 ++---- gnu/packages/gstreamer.scm | 6 ++---- gnu/packages/java.scm | 16 +++++++--------- gnu/packages/julia.scm | 3 +-- gnu/packages/linux.scm | 4 +--- gnu/packages/lisp.scm | 3 +-- gnu/packages/llvm.scm | 4 +--- gnu/packages/make-bootstrap.scm | 2 +- gnu/packages/mes.scm | 3 +-- gnu/packages/messaging.scm | 12 ++++++------ gnu/packages/multiprecision.scm | 4 +--- gnu/packages/ntp.scm | 4 ++-- gnu/packages/pascal.scm | 6 ++---- gnu/packages/pciutils.scm | 3 +-- gnu/packages/photo.scm | 4 ++-- gnu/packages/php.scm | 3 +-- gnu/packages/python.scm | 26 ++++++++++---------------- gnu/packages/rust.scm | 4 +--- gnu/packages/sdl.scm | 4 ++-- gnu/packages/syncthing.scm | 4 ++-- gnu/packages/telephony.scm | 4 ++-- gnu/packages/textutils.scm | 3 +-- gnu/packages/valgrind.scm | 4 ++-- gnu/packages/video.scm | 7 ++----- gnu/packages/web.scm | 9 +++------ guix/utils.scm | 14 ++++++++++++++ 42 files changed, 101 insertions(+), 149 deletions(-)
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 1/9] gnu: Fix check of ‘%current -system’ and ‘%current-target-system ’
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-1-bauermann@kolabnow.com
The order of the check is important because ‘%current-system’ is alwaysdefined, while ‘%current-target-system’ is only defined whencross-building.
Therefore, it’s important to check ‘%current-target-system’ first,otherwise the cross-build target is never considered.
* gnu/packages/bdw-gc.scm (libgc)[arguments]<#:configure-flags>: Check‘%current-target-system’ first.* gnu/packages/crypto.scm (libb2)[arguments]<#:configure-flags>: Likewise.* gnu/packages/golang.scm (go-1.4)[arguments]<#:system>: Likewise.(go-1.14)[arguments]<#:system>: Likewise.* gnu/packages/java.scm (jamvm-1-bootstrap)[arguments]<#:phases>: Likewise.[native-inputs]: Likewise.(ant-bootstrap)[arguments]<#:phases>: Likewise.(classpath-jamvm-wrappers)[arguments]<#:builder>: Likewise.* gnu/packages/lisp.scm (clisp)[arguments]<#:configure-flags>: Likewise.* gnu/packages/photo.scm (lensfun)[arguments]<#:configure-flags>: Likewise.* gnu/packages/php.scm (php)[arguments]<#:phases>: Likewise.* gnu/packages/sdl.scm (sdl-gfx)[arguments]<#:configure-flags>: Likewise.* gnu/packages/telephony.scm (pjproject)[arguments]<#:configure-flags>: Likewise.--- gnu/packages/bdw-gc.scm | 4 ++-- gnu/packages/crypto.scm | 4 ++-- gnu/packages/golang.scm | 8 ++++---- gnu/packages/java.scm | 16 ++++++++-------- gnu/packages/lisp.scm | 4 ++-- gnu/packages/photo.scm | 4 ++-- gnu/packages/php.scm | 4 ++-- gnu/packages/sdl.scm | 4 ++-- gnu/packages/telephony.scm | 4 ++-- 9 files changed, 26 insertions(+), 26 deletions(-)
Toggle diff (179 lines)diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scmindex ecac5b93687e..cd834ff11031 100644--- a/gnu/packages/bdw-gc.scm+++ b/gnu/packages/bdw-gc.scm@@ -52,8 +52,8 @@ ;; to configure script. See bug report and discussion: ;; <https://lists.opendylan.org/pipermail/bdwgc/2017-April/006275.html> ;; <https://lists.gnu.org/archive/html/bug-hurd/2017-01/msg00008.html>- ,@(if (hurd-triplet? (or (%current-system)- (%current-target-system)))+ ,@(if (hurd-triplet? (or (%current-target-system)+ (%current-system))) '("--disable-gcj-support") '())))) (native-inputs `(("pkg-config" ,pkg-config)))diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scmindex fe2cec045d6c..dff9584e07b3 100644--- a/gnu/packages/crypto.scm+++ b/gnu/packages/crypto.scm@@ -867,8 +867,8 @@ data on your platform, so the seed itself will be as random as possible. (arguments `(#:configure-flags (list- ,@(if (any (cute string-prefix? <> (or (%current-system)- (%current-target-system)))+ ,@(if (any (cute string-prefix? <> (or (%current-target-system)+ (%current-system))) '("x86_64" "i686")) ;; fat only checks for Intel optimisations '("--enable-fat")diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scmindex a830afa022a6..58688687bba3 100644--- a/gnu/packages/golang.scm+++ b/gnu/packages/golang.scm@@ -1046,8 +1046,8 @@ your Go binary to be later served from an http.FileSystem.") (guix build utils) (srfi srfi-1)) #:tests? #f ; Tests are run by the all.bash script.- ,@(if (string-prefix? "aarch64-linux" (or (%current-system)- (%current-target-system)))+ ,@(if (string-prefix? "aarch64-linux" (or (%current-target-system)+ (%current-system))) '(#:system "armhf-linux") '()) #:phases@@ -1199,8 +1199,8 @@ in the style of communicating sequential processes (@dfn{CSP}).") (arguments (substitute-keyword-arguments (package-arguments go-1.4) ((#:system system)- (if (string-prefix? "aarch64-linux" (or (%current-system)- (%current-target-system)))+ (if (string-prefix? "aarch64-linux" (or (%current-target-system)+ (%current-system))) "aarch64-linux" system)) ((#:phases phases)diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex 64df5a2e24a2..e69d62be0802 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -315,8 +315,8 @@ language.") "--enable-runtime-reloc-checks" "--enable-ffi") #:phases- ,(if (string-prefix? "aarch64" (or (%current-system)- (%current-target-system)))+ ,(if (string-prefix? "aarch64" (or (%current-target-system)+ (%current-system))) ;; Makefiles and the configure script need to be regenerated to ;; incorporate support for AArch64. '(modify-phases %standard-phases@@ -330,8 +330,8 @@ language.") ("zip" ,zip) ("zlib" ,zlib))) (native-inputs- (if (string-prefix? "aarch64" (or (%current-system)- (%current-target-system)))+ (if (string-prefix? "aarch64" (or (%current-target-system)+ (%current-system))) ;; Additional packages needed for autoreconf. `(("autoconf" ,autoconf) ("automake" ,automake)@@ -401,8 +401,8 @@ JNI.") ;; Without these JamVM options the build may freeze. (substitute* "bootstrap.sh" (("^\"\\$\\{JAVACMD\\}\" " m)- ,@(if (string-prefix? "armhf" (or (%current-system)- (%current-target-system)))+ ,@(if (string-prefix? "armhf" (or (%current-target-system)+ (%current-system))) `((string-append m "-Xnocompact ")) `((string-append m "-Xnocompact -Xnoinlining "))))) @@ -674,8 +674,8 @@ the standard javac executable."))) (for-each (lambda (tool) (with-output-to-file (string-append bin tool) (lambda _- ,@(if (string-prefix? "armhf" (or (%current-system)- (%current-target-system)))+ ,@(if (string-prefix? "armhf" (or (%current-target-system)+ (%current-system))) `((format #t "#!~a/bin/sh ~a/bin/jamvm -Xnocompact -classpath ~a/share/classpath/tools.zip \ gnu.classpath.tools.~a.~a $@"diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scmindex d8d7a7394c44..ee43226ff091 100644--- a/gnu/packages/lisp.scm+++ b/gnu/packages/lisp.scm@@ -347,8 +347,8 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.") ("libsigsegv" ,libsigsegv))) (arguments `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"- (or (%current-system)- (%current-target-system)))+ (or (%current-target-system)+ (%current-system))) '("CFLAGS=-falign-functions=4") '()) "--with-dynamic-ffi"diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scmindex 673989e06b09..1b646497c91e 100644--- a/gnu/packages/photo.scm+++ b/gnu/packages/photo.scm@@ -440,8 +440,8 @@ scene to produce an image that looks much like a tone-mapped image.") "0cfk8jjhs9nbfjfdy98plrj9ayi59aph0nx6ppslgjhlcvacm2xf")))) (build-system cmake-build-system) (arguments- `(,@(if (any (cute string-prefix? <> (or (%current-system)- (%current-target-system)))+ `(,@(if (any (cute string-prefix? <> (or (%current-target-system)+ (%current-system))) '("x86_64" "i686")) ;; SSE and SSE2 are supported only on Intel processors. '()diff --git a/gnu/packages/php.scm b/gnu/packages/php.scmindex 4edff2cfd886..597494e8a94f 100644--- a/gnu/packages/php.scm+++ b/gnu/packages/php.scm@@ -177,8 +177,8 @@ (substitute* "ext/standard/tests/streams/bug60602.phpt" (("'ls'") (string-append "'" (which "ls") "'"))) - ,@(if (string-prefix? "arm" (or (%current-system)- (%current-target-system)))+ ,@(if (string-prefix? "arm" (or (%current-target-system)+ (%current-system))) ;; Drop tests known to fail on armhf. '((for-each delete-file (listdiff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scmindex 128bd95af881..bddc0bdbe990 100644--- a/gnu/packages/sdl.scm+++ b/gnu/packages/sdl.scm@@ -200,8 +200,8 @@ system, such as sound redirection over the network.") (build-system gnu-build-system) (outputs '("out" "debug")) (arguments- `(,@(if (any (cute string-prefix? <> (or (%current-system)- (%current-target-system)))+ `(,@(if (any (cute string-prefix? <> (or (%current-target-system)+ (%current-system))) '("x86_64" "i686")) ;; mmx is supported only on Intel processors. '()diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scmindex f75a168948bb..4957ecca13a0 100644--- a/gnu/packages/telephony.scm+++ b/gnu/packages/telephony.scm@@ -755,8 +755,8 @@ your calls and messages.") "--with-external-srtp" "--with-external-pa" ;; The following flag is Linux specific.- ,@(if (string-contains (or (%current-system)- (%current-target-system)) "linux")+ ,@(if (string-contains (or (%current-target-system)+ (%current-system)) "linux") '("--enable-epoll") '()) "--with-gnutls" ;disable OpenSSL checks
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 2/9] utils: Add ‘current-target-nix- system’ helper
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-2-bauermann@kolabnow.com
Many places check a Nix system identifier string against‘%current-target-system’ and ‘%current-target’. This is problematic becausethese parameters hold different kinds of identifiers. The former holds aGNU triplet (or #f if not cross-compiling), while the latter holds a Nixsystem identifier.
As a first step to solve the confusion, introduce the‘current-target-nix-system’ procedure which looks at both parameters andalways returns a Nix system identifier. The code is factored out from‘glibc-dynamic-linker’ and ‘system->llvm-target’.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Use result of‘current-target-nix-system’ as default value for ‘system’ argument.* gnu/packages/llvm.scm (system->llvm-target): Likewise.* guix/utils.scm (current-target-nix-system): Define new procedure.--- gnu/packages/bootstrap.scm | 6 ++---- gnu/packages/llvm.scm | 4 +--- guix/utils.scm | 7 +++++++ 3 files changed, 10 insertions(+), 7 deletions(-)
Toggle diff (64 lines)diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scmindex c598cedc0ae2..b7134653cfc4 100644--- a/gnu/packages/bootstrap.scm+++ b/gnu/packages/bootstrap.scm@@ -35,7 +35,7 @@ #:select (run-with-store add-to-store add-text-to-store)) #:use-module ((guix derivations) #:select (derivation derivation-input derivation->output-path))- #:use-module ((guix utils) #:select (gnu-triplet->nix-system))+ #:use-module (guix utils) #:use-module ((guix gexp) #:select (lower-object)) #:use-module (guix memoization) #:use-module (guix i18n)@@ -286,9 +286,7 @@ or false to signal an error." package-with-bootstrap-guile))))) (define* (glibc-dynamic-linker- #:optional (system (or (and=> (%current-target-system)- gnu-triplet->nix-system)- (%current-system))))+ #:optional (system (current-target-nix-system))) "Return the name of Glibc's dynamic linker for SYSTEM." ;; See the 'SYSDEP_KNOWN_INTERPRETER_NAMES' cpp macro in libc. (cond ((string=? system "x86_64-linux") "/lib/ld-linux-x86-64.so.2")diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scmindex 575c63c713e9..3c4e5930d044 100644--- a/gnu/packages/llvm.scm+++ b/gnu/packages/llvm.scm@@ -66,9 +66,7 @@ #:export (system->llvm-target)) (define* (system->llvm-target #:optional- (system (or (and=> (%current-target-system)- gnu-triplet->nix-system)- (%current-system))))+ (system (current-target-nix-system))) "Return the LLVM target name that corresponds to SYSTEM, a system type such as \"x86_64-linux\"." ;; See the 'lib/Target' directory of LLVM for a list of supported targets.diff --git a/guix/utils.scm b/guix/utils.scmindex 2c56c8b2e08b..4072dea89051 100644--- a/guix/utils.scm+++ b/guix/utils.scm@@ -77,6 +77,7 @@ gnu-triplet->nix-system %current-system %current-target-system+ current-target-nix-system package-name->name+version target-mingw? target-arm32?@@ -520,6 +521,12 @@ returned by `config.guess'." ;; cross-building to. (make-parameter #f)) +(define (current-target-nix-system)+ "Return the Nix system identifier for the current target, whether we are+cross-building or not."+ (or (and=> (%current-target-system) gnu-triplet->nix-system)+ (%current-system)))+ (define* (package-name->name+version spec #:optional (delimiter #\@)) "Given SPEC, a package name like \"foo@0.9.1b\", return two values: \"foo\"
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 3/9] gnu: Query membership in ‘s upported-systems’ list with Nix identifier
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-3-bauermann@kolabnow.com
Packages’ ‘supported-systems’ list contains Nix system identifiers, while‘%current-target-system’ contains a GNU triplet. We need to use‘current-target-nix-system’ to query the list, which always returns a Nixsystem identifier.
* gnu/packages/bootloaders.scm (grub)[inputs]: Use ‘current-target-nix-system’to query membership in (package-supported-systems).* gnu/packages/pciutils.scm (pciutils): Likewise.--- gnu/packages/bootloaders.scm | 9 +++------ gnu/packages/pciutils.scm | 3 +-- 2 files changed, 4 insertions(+), 8 deletions(-)
Toggle diff (47 lines)diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scmindex 742992a119b2..be51fb0c3de4 100644--- a/gnu/packages/bootloaders.scm+++ b/gnu/packages/bootloaders.scm@@ -182,16 +182,14 @@ ;; Depend on LVM2 for libdevmapper, used by 'grub-probe' and ;; 'grub-install' to recognize mapped devices (LUKS, etc.)- ,@(if (member (or (%current-target-system)- (%current-system))+ ,@(if (member (current-target-nix-system) (package-supported-systems lvm2)) `(("lvm2" ,lvm2)) '()) ;; Depend on mdadm, which is invoked by 'grub-probe' and 'grub-install' ;; to determine whether the root file system is RAID.- ,@(if (member (or (%current-target-system)- (%current-system))+ ,@(if (member (current-target-nix-system) (package-supported-systems mdadm)) `(("mdadm" ,mdadm)) '())@@ -202,8 +200,7 @@ ;; Needed for ‘grub-mount’, the only reliable way to tell whether a given ;; file system will be readable by GRUB without rebooting.- ,@(if (member (or (%current-target-system)- (%current-system))+ ,@(if (member (current-target-nix-system) (package-supported-systems fuse)) `(("fuse" ,fuse)) '())diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scmindex d7d224b292f2..f2196c4e53ae 100644--- a/gnu/packages/pciutils.scm+++ b/gnu/packages/pciutils.scm@@ -112,8 +112,7 @@ `(("which" ,which) ("pkg-config" ,pkg-config))) (inputs- `(,@(if (member (or (%current-target-system)- (%current-system))+ `(,@(if (member (current-target-nix-system) (package-supported-systems kmod)) `(("kmod" ,kmod)) '())
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 4/9] gnu: Use ‘current-target-nix-sy stem’ in pattern matches
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-4-bauermann@kolabnow.com
Parts of the code try to match a Nix system identifier to either‘%current-target-system’ or ‘%current-system’, but this won’t work forcross-compiling because the former parameter contains a GNU tripletidentifier.
Fix the problem by matching against ‘current-target-nix-system’, whichalways returns a Nix system identifier.
* gnu/packages/astronomy.scm (libpasastro)[arguments]<#:make-flags>: Use‘current-target-nix-system’.* gnu/packages/compression.scm (zpaq)[arguments]<#:make-flags>: Likewise.* gnu/packages/digest.scm (xxhash)[arguments]<#:make-flags>: Likewise.* gnu/packages/java.scm (java-swt)[source]: Likewise.* gnu/packages/julia.scm (julia)[arguments]<#:make-flags>: Likewise.* gnu/packages/make-bootstrap.scm (%bootstrap-tarballs)[inputs]: Likewise.* gnu/packages/pascal.scm (fpc)[native-inputs]: Likewise.[arguments]<#:phases>: Likewise.* gnu/packages/video.scm (mplayer)[arguments]<#:phases>: Likewise.* gnu/packages/web.scm (nginx)[arguments]<#:phases>: Likewise.(nginx-accept-language-module)[arguments]<#:phases>: Likewise.--- gnu/packages/astronomy.scm | 4 ++-- gnu/packages/compression.scm | 6 ++---- gnu/packages/digest.scm | 3 +-- gnu/packages/java.scm | 2 +- gnu/packages/julia.scm | 3 +-- gnu/packages/make-bootstrap.scm | 2 +- gnu/packages/pascal.scm | 6 ++---- gnu/packages/video.scm | 3 +-- gnu/packages/web.scm | 6 ++---- 9 files changed, 13 insertions(+), 22 deletions(-)
Toggle diff (157 lines)diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scmindex a3f7d5cbf456..8c4a759718e7 100644--- a/gnu/packages/astronomy.scm+++ b/gnu/packages/astronomy.scm@@ -645,11 +645,11 @@ low quality ones") `(#:tests? #f #:make-flags (list- ,(match (or (%current-target-system) (%current-system))+ ,(match (current-target-nix-system) ((or "aarch64-linux" "armhf-linux" "i686-linux" "x86_64-linux") "OS_TARGET=linux") (_ #f))- ,(match (or (%current-target-system) (%current-system))+ ,(match (current-target-nix-system) ("i686-linux" "CPU_TARGET=i386") ("x86_64-linux" "CPU_TARGET=x86_64") ((or "armhf-linux" "aarch64-linux") "CPU_TARGET=armv7l")diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scmindex cf4ec4e644a3..ac217e663f4c 100644--- a/gnu/packages/compression.scm+++ b/gnu/packages/compression.scm@@ -1434,16 +1434,14 @@ functionality in a C++ iostream.") #:make-flags (list (string-append "CPPFLAGS=-Dunix"- ,(match (or (%current-target-system)- (%current-system))+ ,(match (current-target-nix-system) ("x86_64-linux" "") ("i686-linux" "") (_ " -DNOJIT"))) ;; These should be safe, lowest-common-denominator instruction sets, ;; allowing for some optimisation while remaining reproducible. (string-append "CXXFLAGS=-O3 -DNDEBUG"- ,(match (or (%current-target-system)- (%current-system))+ ,(match (current-target-nix-system) ("x86_64-linux" " -march=nocona -mtune=generic") ("i686-linux" " -march=i686 -mtune=generic") ("armhf-linux" " -mtune=generic-armv7-a")diff --git a/gnu/packages/digest.scm b/gnu/packages/digest.scmindex 986e33586133..b1954221f261 100644--- a/gnu/packages/digest.scm+++ b/gnu/packages/digest.scm@@ -77,8 +77,7 @@ Zig, V, and Nim programming language standard libraries.") (arguments `(#:make-flags (list ,(string-append "CC=" (cc-for-target))- ,(match (or (%current-target-system)- (%current-system))+ ,(match (current-target-nix-system) ;; Detect vector instruction set at run time. ((or "i686-linux" "x86_64-linux") "DISPATCH=1") (_ "DISPATCH=0"))diff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex e69d62be0802..1c62f5d358e2 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -3715,7 +3715,7 @@ specification.") (file32 "x86") (file64 "x86_64")) (let-values (((hash file)- (match (or (%current-target-system) (%current-system))+ (match (current-target-nix-system) ("x86_64-linux" (values hash64 file64)) (_ (values hash32 file32))))) (origindiff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scmindex abefc388bc6e..b5e29c394532 100644--- a/gnu/packages/julia.scm+++ b/gnu/packages/julia.scm@@ -373,8 +373,7 @@ libraries. It is also a bit like @code{ldd} and @code{otool -L}.") ;; Passing the MARCH flag is necessary to build binary substitutes for ;; the supported architectures.- ,(match (or (%current-target-system)- (%current-system))+ ,(match (current-target-nix-system) ("x86_64-linux" "MARCH=x86-64") ("i686-linux" "MARCH=pentium4") ("armhf-linux" "JULIA_CPU_TARGET=armv7-a,neon")diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scmindex cdcb1dcaa295..fd656f9b8bfd 100644--- a/gnu/packages/make-bootstrap.scm+++ b/gnu/packages/make-bootstrap.scm@@ -902,7 +902,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." %build-inputs) #t))) (inputs `(("guile-tarball" ,%guile-bootstrap-tarball)- ,@(match (or (%current-target-system) (%current-system))+ ,@(match (current-target-nix-system) ((or "i686-linux" "x86_64-linux") `(("bootstrap-mescc-tools" ,%mescc-tools-bootstrap-tarball) ("bootstrap-mes" ,%mes-bootstrap-tarball)diff --git a/gnu/packages/pascal.scm b/gnu/packages/pascal.scmindex 0fdbecf05c20..9169584558b0 100644--- a/gnu/packages/pascal.scm+++ b/gnu/packages/pascal.scm@@ -89,8 +89,7 @@ (native-inputs ;; FPC is built with FPC, so we need bootstrap binaries. `(("fpc-binary"- ,(match (or (%current-target-system)- (%current-system))+ ,(match (current-target-nix-system) ("i686-linux" fpc-bootstrap-i386-3.0.4) ;("powerpc64le-linux" fpc-bootstrap-ppc64le-3.0.4) ;("powerpc-linux" fpc-bootstrap-ppc-3.0.4)@@ -101,8 +100,7 @@ #:phases (let ((fpc-bootstrap-path (string-append (getcwd) "/" ,name "-" ,version "/fpc-bin"))- (arch ,(match (or (%current-target-system)- (%current-system))+ (arch ,(match (current-target-nix-system) ("i686-linux" "i386") ("x86_64-linux" "x86_64") (_ "unknown"))))diff --git a/gnu/packages/video.scm b/gnu/packages/video.scmindex 399327741f6b..6cf8b90ffa95 100644--- a/gnu/packages/video.scm+++ b/gnu/packages/video.scm@@ -2021,8 +2021,7 @@ streaming protocols.") (string-append "--prefix=" out) ;; Enable runtime cpu detection where supported, ;; and choose a suitable target.- ,@(match (or (%current-target-system)- (%current-system))+ ,@(match (current-target-nix-system) ("x86_64-linux" '("--enable-runtime-cpudetection" "--target=x86_64-linux"))diff --git a/gnu/packages/web.scm b/gnu/packages/web.scmindex 2cc8619b19d9..b00c9aa3db5b 100644--- a/gnu/packages/web.scm+++ b/gnu/packages/web.scm@@ -413,8 +413,7 @@ the same, being completely separated from the Internet.") ,(let ((system "Linux") ; uname -s (release "3.2.0") ; uname -r ;; uname -m- (machine (match (or (%current-target-system)- (%current-system))+ (machine (match (current-target-nix-system) ("x86_64-linux" "x86_64") ("i686-linux" "i686") ("mips64el-linux" "mips64")@@ -605,8 +604,7 @@ ngx_http_accept_language_module~%") ,(let ((system "Linux") ; uname -s (release "3.2.0") ; uname -r ;; uname -m- (machine (match (or (%current-target-system)- (%current-system))+ (machine (match (current-target-nix-system) ("x86_64-linux" "x86_64") ("i686-linux" "i686") ("mips64el-linux" "mips64")
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 5/9] gnu: Use ‘current-target-nix-sy stem’ in prefix checks
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-5-bauermann@kolabnow.com
Some places check whether the system identifier starts with “<arch>-linux”,which is a Nix system identifier. The GNU triplet identifier stored in‘%current-target-system’ may not match the pattern if it includes a vendorfield.
Fix the problem by checking against ‘current-target-nix-system’, whichalways returns a Nix system identifier.
* gnu/packages/bootloaders.scm (u-boot-tools)[arguments]<#:phases>: Use‘current-target-nix-system’.* gnu/packages/c.scm (tcc)[arguments]<#:configure-flags>: Likewise.* gnu/packages/databases.scm (rocksdb)[arguments]<#:tests>: Likewise.* gnu/packages/debug.scm (american-fuzzy-lop): Likewise.(qemu-for-american-fuzzy-lop): Likewise.* gnu/packages/golang.scm (go-1.4)[arguments]<#:system>: Likewise.(go-1.14)[arguments]<#:system>: Likewise.* gnu/packages/lisp.scm (clisp)[arguments]<#:configure-flags>: Likewise.* gnu/packages/mes.scm (mes-0.19)[native-inputs]: Likewise.--- gnu/packages/bootloaders.scm | 4 +--- gnu/packages/c.scm | 3 +-- gnu/packages/databases.scm | 3 +-- gnu/packages/debug.scm | 6 ++---- gnu/packages/golang.scm | 6 ++---- gnu/packages/lisp.scm | 3 +-- gnu/packages/mes.scm | 3 +-- 7 files changed, 9 insertions(+), 19 deletions(-)
Toggle diff (119 lines)diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scmindex be51fb0c3de4..669574468bd2 100644--- a/gnu/packages/bootloaders.scm+++ b/gnu/packages/bootloaders.scm@@ -622,9 +622,7 @@ def test_ctrl_c")) (invoke "test/image/test-imagetools.sh"))) ;; Only run full test suite on x86_64 systems, as many tests ;; assume x86_64.- ,@(if (string-match "^x86_64-linux"- (or (%current-target-system)- (%current-system)))+ ,@(if (string-match "^x86_64-linux" (current-target-nix-system)) '((add-after 'check 'check-x86 (lambda* (#:key make-flags test-target #:allow-other-keys) (apply invoke "make" "mrproper" make-flags)diff --git a/gnu/packages/c.scm b/gnu/packages/c.scmindex 1b9003ce09dd..f85bc2f4b6c9 100644--- a/gnu/packages/c.scm+++ b/gnu/packages/c.scm@@ -88,8 +88,7 @@ (assoc-ref %build-inputs "libc") "/lib") ,@(if (string-prefix? "armhf-linux"- (or (%current-target-system)- (%current-system)))+ (current-target-nix-system)) `("--triplet=arm-linux-gnueabihf") '())) #:test-target "test"))diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scmindex 7de85d10c148..14367bde82b5 100644--- a/gnu/packages/databases.scm+++ b/gnu/packages/databases.scm@@ -1379,8 +1379,7 @@ including field and record folding."))) #:test-target "check_some" ;; Many tests fail on 32-bit platforms. There are multiple reports about ;; this upstream, but it's not going to be supported any time soon.- #:tests? (let ((system ,(or (%current-target-system)- (%current-system))))+ #:tests? (let ((system ,(current-target-nix-system))) (or (string-prefix? "x86_64-linux" system) (string-prefix? "aarch64-linux" system))) #:phasesdiff --git a/gnu/packages/debug.scm b/gnu/packages/debug.scmindex 3a29886b0e40..c5fad64692ae 100644--- a/gnu/packages/debug.scm+++ b/gnu/packages/debug.scm@@ -172,8 +172,7 @@ tools that process C/C++ code.") (license license:ncsa))) (define-public american-fuzzy-lop- (let ((machine (match (or (%current-target-system)- (%current-system))+ (let ((machine (match (current-target-nix-system) ("x86_64-linux" "x86_64") ("i686-linux" "i386") ("aarch64-linux" "aarch64")@@ -248,8 +247,7 @@ down the road.") (define-public qemu-for-american-fuzzy-lop ;; afl only supports using a single afl-qemu-trace executable, so ;; we only build qemu for the native target.- (let ((machine (match (or (%current-target-system)- (%current-system))+ (let ((machine (match (current-target-nix-system) ("x86_64-linux" "x86_64") ("i686-linux" "i386") ("aarch64-linux" "aarch64")diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scmindex 58688687bba3..939dbc83ce71 100644--- a/gnu/packages/golang.scm+++ b/gnu/packages/golang.scm@@ -1046,8 +1046,7 @@ your Go binary to be later served from an http.FileSystem.") (guix build utils) (srfi srfi-1)) #:tests? #f ; Tests are run by the all.bash script.- ,@(if (string-prefix? "aarch64-linux" (or (%current-target-system)- (%current-system)))+ ,@(if (string-prefix? "aarch64-linux" (current-target-nix-system)) '(#:system "armhf-linux") '()) #:phases@@ -1199,8 +1198,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") (arguments (substitute-keyword-arguments (package-arguments go-1.4) ((#:system system)- (if (string-prefix? "aarch64-linux" (or (%current-target-system)- (%current-system)))+ (if (string-prefix? "aarch64-linux" (current-target-nix-system)) "aarch64-linux" system)) ((#:phases phases)diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scmindex ee43226ff091..6fd1cd55e009 100644--- a/gnu/packages/lisp.scm+++ b/gnu/packages/lisp.scm@@ -347,8 +347,7 @@ supporting ASDF, Sockets, Gray streams, MOP, and other useful components.") ("libsigsegv" ,libsigsegv))) (arguments `(#:configure-flags '(,@(if (string-prefix? "armhf-linux"- (or (%current-target-system)- (%current-system)))+ (current-target-nix-system)) '("CFLAGS=-falign-functions=4") '()) "--with-dynamic-ffi"diff --git a/gnu/packages/mes.scm b/gnu/packages/mes.scmindex c66751bc7c74..d4a8278697ca 100644--- a/gnu/packages/mes.scm+++ b/gnu/packages/mes.scm@@ -174,8 +174,7 @@ parsers to allow execution with Guile as extension languages."))) ("nyacc" ,nyacc-0.86))) (native-inputs `(("guile" ,guile-2.2)- ,@(let ((target-system (or (%current-target-system)- (%current-system))))+ ,@(let ((target-system (current-target-nix-system))) (cond ((string-prefix? "x86_64-linux" target-system) ;; Use cross-compiler rather than #:system "i686-linux" to get
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 6/9] gnu: Fix GNU/Linux system detection
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-6-bauermann@kolabnow.com
The current code isn’t strictly correct because the GNU triplet in‘%current-target-system’ could end in “linux-gnu”. Instead, check whethereither of the system identifiers contain the string “-linux”.
* gnu/packages/messaging.scm (ngircd)[inputs]: Use ‘string-contains’.[arguments]<#:configure-flags>: Likewise.* gnu/packages/ntp.scm (ntp)[inputs]: Likewise--- gnu/packages/messaging.scm | 12 ++++++------ gnu/packages/ntp.scm | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-)
Toggle diff (43 lines)diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scmindex e5ecdb889441..f18de2a1295d 100644--- a/gnu/packages/messaging.scm+++ b/gnu/packages/messaging.scm@@ -781,17 +781,17 @@ dictionaries. HexChat can be extended with multiple addons.") (inputs `(("zlib" ,zlib) ("libwrap" ,tcp-wrappers) ("gnutls" ,gnutls)- ,@(if (string-suffix? "-linux"- (or (%current-target-system)- (%current-system)))+ ,@(if (string-contains (or (%current-target-system)+ (%current-system))+ "-linux") `(("linux-pam" ,linux-pam)) '()))) (arguments `(#:configure-flags '("--with-gnutls" "--with-iconv" "--enable-ipv6" "--with-tcp-wrappers"- ,@(if (string-suffix? "-linux"- (or (%current-target-system)- (%current-system)))+ ,@(if (string-contains (or (%current-target-system)+ (%current-system))+ "-linux") '("--with-pam") '())) #:phasesdiff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scmindex 191eedd15875..de501199596c 100644--- a/gnu/packages/ntp.scm+++ b/gnu/packages/ntp.scm@@ -154,8 +154,8 @@ time-stamping or reference clock, sub-microsecond accuracy is possible.") ("libevent" ,libevent) ;; Build with POSIX capabilities support on GNU/Linux. This allows 'ntpd' ;; to run as non-root (when invoked with '-u'.)- ,@(if (string-suffix? "-linux"- (or (%current-target-system) (%current-system)))+ ,@(if (string-contains (or (%current-target-system) (%current-system))+ "-linux") `(("libcap" ,libcap)) '()))) (arguments
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 7/9] bootloader: grub: Fix mix of GNU triplet and Nix system identifier
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-7-bauermann@kolabnow.com
‘install-grub-efi-netboot’ calls ‘nix-system->gnu-triplet’ on‘%current-target-system’, but that parameter already contains a GNU tripletidentifier.
There’s no bug in practice because ‘install-grub-efi-netboot’ only uses thearch part of the identifier, which is the same for both. Nevertheless, it’sbest to fix the confusion.
Therefore, define a ‘current-target-gnu-triplet’ procedure which returnsthe GNU triplet identifier for the current target – whether we arecross-building or not – and use it in ‘install-grub-efi-netboot’.
Also take the opportunity to use the new procedure in packages ‘gcc-4.7’,‘rust-1.19’ and ‘mplayer’, which have the same logic as the new procedure.
* gnu/bootloader/grub.scm (install-grub-efi-netboot): Use‘current-target-gnu-triplet’.* gnu/packages/gcc.scm (gcc-4.7)[configure-flags]: Likewise.* gnu/packages/rust.scm (rust-1.19)[arguments]<#:phases>: Likewise.* gnu/packages/video.scm (mplayer)[arguments]<#:phases>: Likewise.* guix/utils.scm (current-target-gnu-triplet): Define new procedure.--- gnu/bootloader/grub.scm | 5 +---- gnu/packages/gcc.scm | 5 +---- gnu/packages/rust.scm | 4 +--- gnu/packages/video.scm | 4 +--- guix/utils.scm | 7 +++++++ 5 files changed, 11 insertions(+), 14 deletions(-)
Toggle diff (87 lines)diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scmindex ce146aba3c60..fe82a3c1e9ed 100644--- a/gnu/bootloader/grub.scm+++ b/gnu/bootloader/grub.scm@@ -610,10 +610,7 @@ fi~%")))) (define (install-grub-efi-netboot subdir) "Define a grub-efi-netboot bootloader installer for installation in SUBDIR, which is usually efi/Guix or efi/boot."- (let* ((system (string-split (nix-system->gnu-triplet- (or (%current-target-system)- (%current-system)))- #\-))+ (let* ((system (string-split (current-target-gnu-triplet) #\-)) (arch (first system)) (boot-efi-link (match system ;; These are the supportend systems and the namesdiff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scmindex 2fe30b13210e..4adcb5fc0d69 100644--- a/gnu/packages/gcc.scm+++ b/gnu/packages/gcc.scm@@ -138,10 +138,7 @@ where the OS part is overloaded to denote a specific ABI---into GCC "--without-headers"))) ;; Pass the right options for the target triplet.- (let ((triplet- (or (%current-target-system)- (nix-system->gnu-triplet (%current-system)))))- (gcc-configure-flags-for-triplet triplet))+ (gcc-configure-flags-for-triplet (current-target-gnu-triplet)) (maybe-target-tools)))))) (hidden-packagediff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scmindex 73f94a3929bd..c8bb4d158711 100644--- a/gnu/packages/rust.scm+++ b/gnu/packages/rust.scm@@ -402,9 +402,7 @@ test = { path = \"../libtest\" } (replace 'install (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out"))- (target-system ,(or (%current-target-system)- (nix-system->gnu-triplet- (%current-system))))+ (target-system ,(current-target-gnu-triplet)) (out-libs (string-append out "/lib/rustlib/" target-system "/lib"))) ;(setenv "CFG_PREFIX" out)diff --git a/gnu/packages/video.scm b/gnu/packages/video.scmindex 6cf8b90ffa95..375e2297b889 100644--- a/gnu/packages/video.scm+++ b/gnu/packages/video.scm@@ -2032,9 +2032,7 @@ streaming protocols.") '("--target=mips3-linux")) (_ (list (string-append "--target="- (or (%current-target-system)- (nix-system->gnu-triplet- (%current-system)))))))+ (current-target-gnu-triplet))))) "--disable-iwmmxt"))))))) (home-page "https://www.mplayerhq.hu") (synopsis "Audio and video player")diff --git a/guix/utils.scm b/guix/utils.scmindex 4072dea89051..61da05137186 100644--- a/guix/utils.scm+++ b/guix/utils.scm@@ -78,6 +78,7 @@ %current-system %current-target-system current-target-nix-system+ current-target-gnu-triplet package-name->name+version target-mingw? target-arm32?@@ -527,6 +528,12 @@ cross-building or not." (or (and=> (%current-target-system) gnu-triplet->nix-system) (%current-system))) +(define (current-target-gnu-triplet)+ "Return the GNU triplet identifier for the current target, whether we are+cross-building or not."+ (or (%current-target-system)+ (nix-system->gnu-triplet (%current-system))))+ (define* (package-name->name+version spec #:optional (delimiter #\@)) "Given SPEC, a package name like \"foo@0.9.1b\", return two values: \"foo\"
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 8/9] gnu: ustr: Don’t pass defau lt argument
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-8-bauermann@kolabnow.com
The default argument to ‘target-64bit?’ already is`(or (%current-target-system) (%current-system))`, so there’s no need toduplicate code.
* gnu/packages/textutils.scm (ustr)[arguments]<#:phases>: Don’t pass defaultargument to ‘target-64bit?’.--- gnu/packages/textutils.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
Toggle diff (14 lines)diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scmindex c3f4580a47c7..0f23a166e7c0 100644--- a/gnu/packages/textutils.scm+++ b/gnu/packages/textutils.scm@@ -331,8 +331,7 @@ input bits thoroughly but are not suitable for cryptography.") (lambda _ (substitute* "Makefile" (("\\./autoconf_64b")- ,(if (target-64bit? (or (%current-target-system)- (%current-system)))+ ,(if (target-64bit?) "echo 1" "echo 0")) (("\\./autoconf_vsnprintf") "echo 0"))))
T
T
Thiago Jung Bauermann wrote on 21 Jul 03:00 +0200
[PATCH 9/9] gnu: Use existing target helpers from ‘(guix utils)’
(address . 49672@debbugs.gnu.org)(name . Thiago Jung Bauermann)(address . bauermann@kolabnow.com)
20210721010043.632012-9-bauermann@kolabnow.com
These are equivalent to existing code and shouldn't lead to any behaviourchange. The objective of the change is to make the code easier to read.
* gnu/packages/algebra.scm (fftwf)[arguments]<#:configure-flags>: Use‘target-arm32?’.* gnu/packages/boost.scm (boost)[arguments]<#:make-flags>: Use‘target-arm32?’ and ‘target-aarch64?’.* gnu/packages/bootloaders.scm (grub)[arguments]<#:tests>: Use‘target-arm?’.(vboot-utils)[arguments]<#:make-flags>: Use ‘target-arm32?’.* gnu/packages/ci.scm (cuirass)[arguments]<#:tests>: Use ‘target-aarch64?’.* gnu/packages/firmware.scm (ovmf-aarch64)[native-inputs]: Use ‘target-aarch64?’.[arguments]<#:phases>: Likewise.* gnu/packages/gstreamer.scm (gst-plugins-base)[propagated-inputs]: Use‘target-arm32?’.(gst-plugins-bad)[arguments]<#:phases>: Likewise.* gnu/packages/java.scm (jamvm-1-bootstrap)[arguments]<#:phases>: Use‘target-aarch64?’.[native-inputs]: Likewise.* gnu/packages/linux.scm (proot)[arguments]<#:tests>: Use ‘target-arm?’.* gnu/packages/multiprecision.scm (qd)[arguments]<#:configure-flags>: Use‘target-aarch64?’.* gnu/packages/php.scm (php)[arguments]<#:phases>: Use ‘target-arm32?’.* gnu/packages/python.scm (python-3.8)[arguments]<#:phases>: Use ‘target-arm?’.[native-inputs]: Likewise.* gnu/packages/syncthing.scm (go-github-com-rcrowley-go-metrics)[arguments]<#:tests>: Use ‘target-aarch64?’.* gnu/packages/valgrind.scm (valgrind)[arguments]<#:make-flags>: Use‘target-powerpc?’.* gnu/packages/web.scm (rapidjson)[arguments]<#:phases>: Use ‘target-aarch64?’.--- gnu/packages/algebra.scm | 3 +-- gnu/packages/boost.scm | 4 ++-- gnu/packages/bootloaders.scm | 9 ++------- gnu/packages/ci.scm | 6 ++---- gnu/packages/firmware.scm | 4 ++-- gnu/packages/gstreamer.scm | 6 ++---- gnu/packages/java.scm | 6 ++---- gnu/packages/linux.scm | 4 +--- gnu/packages/multiprecision.scm | 4 +--- gnu/packages/php.scm | 3 +-- gnu/packages/python.scm | 26 ++++++++++---------------- gnu/packages/syncthing.scm | 4 ++-- gnu/packages/valgrind.scm | 4 ++-- gnu/packages/web.scm | 3 +-- 14 files changed, 31 insertions(+), 55 deletions(-)
Toggle diff (299 lines)diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scmindex 533b1f09e023..f51bd69a4230 100644--- a/gnu/packages/algebra.scm+++ b/gnu/packages/algebra.scm@@ -802,8 +802,7 @@ cosine/ sine transforms or DCT/DST).") (substitute-keyword-arguments (package-arguments fftw) ((#:configure-flags fftw-configure-flags) `(cons* "--enable-single"- ,@(if (string-prefix? "arm" (or (%current-target-system)- (%current-system)))+ ,@(if (target-arm32?) ;; fftw supports NEON on 32-bit ARM only when compiled ;; for single-precision, so add it here. '("--enable-neon")diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scmindex e05a3c32fe11..67d452e925e1 100644--- a/gnu/packages/boost.scm+++ b/gnu/packages/boost.scm@@ -108,11 +108,11 @@ "binary-format=elf" "target-os=linux" ,@(cond- ((string-prefix? "arm" (%current-target-system))+ ((target-arm32?) '("abi=aapcs" "address-model=32" "architecture=arm"))- ((string-prefix? "aarch64" (%current-target-system))+ ((target-aarch64?) '("abi=aapcs" "address-model=64" "architecture=arm"))diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scmindex 669574468bd2..6912cffa38be 100644--- a/gnu/packages/bootloaders.scm+++ b/gnu/packages/bootloaders.scm@@ -173,10 +173,7 @@ "test_unset")) #t))) ;; Disable tests on ARM and AARCH64 platforms or when cross-compiling.- #:tests? ,(not (or (any (cute string-prefix? <> (or (%current-target-system)- (%current-system)))- '("arm" "aarch64"))- (%current-target-system)))))+ #:tests? ,(not (or (target-arm?) (%current-target-system))))) (inputs `(("gettext" ,gettext-minimal) @@ -988,9 +985,7 @@ to Novena upstream, does not load u-boot.img from the first partition.") ;; "armv7l", the value of `uname -m`, and will not ;; match ${ARCH}, which will make the tests require ;; QEMU for testing.- ,@(if (string-prefix? "arm"- (or (%current-target-system)- (%current-system)))+ ,@(if (target-arm32?) '("HOST_ARCH=arm") '()) (string-append "DESTDIR=" (assoc-ref %outputs "out")))diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scmindex 0bcde0fad515..bddc1e8386c2 100644--- a/gnu/packages/ci.scm+++ b/gnu/packages/ci.scm@@ -27,7 +27,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download)- #:use-module (guix download)+ #:use-module (guix utils) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages boost)@@ -97,9 +97,7 @@ #:configure-flags '("--localstatedir=/var") ;for /var/log/cuirass ;; XXX: HTTP tests fail on aarch64 due to Fibers errors, disable them ;; on that architecture for now.- #:tests? ,(let ((s (or (%current-target-system)- (%current-system))))- (not (string-prefix? "aarch64" s)))+ #:tests? ,(not (target-aarch64?)) #:parallel-tests? #f #:phases (modify-phases %standard-phasesdiff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scmindex ebcb89923cee..b569bc288949 100644--- a/gnu/packages/firmware.scm+++ b/gnu/packages/firmware.scm@@ -398,7 +398,7 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") (name "ovmf-aarch64") (native-inputs `(,@(package-native-inputs ovmf)- ,@(if (not (string-prefix? "aarch64" (%current-system)))+ ,@(if (not (target-aarch64? (%current-system))) `(("cross-gcc" ,(cross-gcc "aarch64-linux-gnu")) ("cross-binutils" ,(cross-binutils "aarch64-linux-gnu"))) '())))@@ -408,7 +408,7 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") `(modify-phases ,phases (add-before 'configure 'set-env (lambda _- ,@(if (not (string-prefix? "aarch64" (%current-system)))+ ,@(if (not (target-aarch64? (%current-system))) `((setenv "GCC49_AARCH64_PREFIX" "aarch64-linux-gnu-")) '()) #t))diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scmindex 3047773e0f07..488417c39773 100644--- a/gnu/packages/gstreamer.scm+++ b/gnu/packages/gstreamer.scm@@ -539,8 +539,7 @@ This package provides the core library and elements.") ;; XXX: Do not enable Orc optimizations on ARM systems because ;; it leads to two test failures. ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/683- ,@(if (string-prefix? "arm" (or (%current-target-system)- (%current-system)))+ ,@(if (target-arm32?) '() `(("orc" ,orc))))) ;required by gstreamer-audio-1.0.pc (inputs@@ -691,8 +690,7 @@ model to base your own plug-in on, here it is.") `(#:phases (modify-phases %standard-phases ,@%common-gstreamer-phases- ,@(if (string-prefix? "arm" (or (%current-target-system)- (%current-system)))+ ,@(if (target-arm32?) ;; Disable test that fails on ARMv7. ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1188 `((add-after 'unpack 'disable-asfmux-testdiff --git a/gnu/packages/java.scm b/gnu/packages/java.scmindex 1c62f5d358e2..5b5d5afed945 100644--- a/gnu/packages/java.scm+++ b/gnu/packages/java.scm@@ -315,8 +315,7 @@ language.") "--enable-runtime-reloc-checks" "--enable-ffi") #:phases- ,(if (string-prefix? "aarch64" (or (%current-target-system)- (%current-system)))+ ,(if (target-aarch64?) ;; Makefiles and the configure script need to be regenerated to ;; incorporate support for AArch64. '(modify-phases %standard-phases@@ -330,8 +329,7 @@ language.") ("zip" ,zip) ("zlib" ,zlib))) (native-inputs- (if (string-prefix? "aarch64" (or (%current-target-system)- (%current-system)))+ (if (target-aarch64?) ;; Additional packages needed for autoreconf. `(("autoconf" ,autoconf) ("automake" ,automake)diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scmindex 0d695950d101..c6b7c0a403ef 100644--- a/gnu/packages/linux.scm+++ b/gnu/packages/linux.scm@@ -6890,9 +6890,7 @@ userspace queueing component and the logging subsystem.") ;; Disable the test suite on ARM platforms, as there are too many ;; failures to keep track of (see for example: ;; https://github.com/proot-me/proot/issues/263).- `(#:tests? ,(not (string-match "^(arm|aarch64)"- (or (%current-target-system)- (%current-system))))+ `(#:tests? ,(not (target-arm?)) #:make-flags '("-C" "src") #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-sourcesdiff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scmindex 733e6548b992..53b1e3c55ca7 100644--- a/gnu/packages/multiprecision.scm+++ b/gnu/packages/multiprecision.scm@@ -235,9 +235,7 @@ error. Additionally, iRRAM uses the concept of multi-valued functions.") (arguments `(#:configure-flags `("--disable-enable_fma" ;weird :/ "--enable-shared"- ,,@(if (string-prefix? "aarch64"- (or (%current-target-system)- (%current-system)))+ ,,@(if (target-aarch64?) ;; XXX: The qd_test test fails numerical ;; accuracy checks for 'dd_real::exp()' on ;; aarch64 with GCC 5.4 at -O2. Disablingdiff --git a/gnu/packages/php.scm b/gnu/packages/php.scmindex 597494e8a94f..36a4527aad67 100644--- a/gnu/packages/php.scm+++ b/gnu/packages/php.scm@@ -177,8 +177,7 @@ (substitute* "ext/standard/tests/streams/bug60602.phpt" (("'ls'") (string-append "'" (which "ls") "'"))) - ,@(if (string-prefix? "arm" (or (%current-target-system)- (%current-system)))+ ,@(if (target-arm32?) ;; Drop tests known to fail on armhf. '((for-each delete-file (listdiff --git a/gnu/packages/python.scm b/gnu/packages/python.scmindex e694321e173e..c1a486b9f21f 100644--- a/gnu/packages/python.scm+++ b/gnu/packages/python.scm@@ -488,16 +488,13 @@ data types.") #t))) ;; XXX: Apply patch on ARM platforms only to avoid a full rebuild. ;; Remove this phase in the next rebuild cycle.- ,@(let ((system (or (%current-target-system)- (%current-system))))- (if (any (cute string-prefix? <> system)- '("arm" "aarch64"))- '((add-after 'unpack 'apply-alignment-patch- (lambda* (#:key native-inputs inputs #:allow-other-keys)- (invoke "patch" "-p1" "--force" "--input"- (assoc-ref (or native-inputs inputs)- "arm-alignment.patch")))))- '()))))))+ ,@(if (target-arm?)+ '((add-after 'unpack 'apply-alignment-patch+ (lambda* (#:key native-inputs inputs #:allow-other-keys)+ (invoke "patch" "-p1" "--force" "--input"+ (assoc-ref (or native-inputs inputs)+ "arm-alignment.patch")))))+ '()))))) (native-inputs `(("tzdata" ,tzdata-for-tests) @@ -505,12 +502,9 @@ data types.") ;; it causes a test failure when building 32-bit Python on a ;; 64-bit kernel. See <https://bugs.python.org/issue36515>. ;; TODO: make this a regular patch in the next rebuild cycle.- ,@(let ((system (or (%current-target-system)- (%current-system))))- (if (any (cute string-prefix? <> system)- '("arm" "aarch64"))- `(("arm-alignment.patch" ,(search-patch "python-3-arm-alignment.patch")))- '()))+ ,@(if (target-arm?)+ `(("arm-alignment.patch" ,(search-patch "python-3-arm-alignment.patch")))+ '()) ,@(if (%current-target-system) `(("python3" ,this-package))diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scmindex 5cb8449e448e..b23fcea24096 100644--- a/gnu/packages/syncthing.scm+++ b/gnu/packages/syncthing.scm@@ -30,6 +30,7 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix licenses)+ #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib)@@ -568,8 +569,7 @@ higher-level API for doing so.") (arguments ;; Arbitrary precision tests are known to be broken on aarch64, ppc64le ;; and s390x. See: https://github.com/rcrowley/go-metrics/issues/249- `(#:tests? ,(not (string-prefix? "aarch64" (or (%current-target-system)- (%current-system))))+ `(#:tests? ,(not (target-aarch64?)) #:import-path "github.com/rcrowley/go-metrics")) (propagated-inputs `(("go-github-com-stathat-go" ,go-github-com-stathat-go)))diff --git a/gnu/packages/valgrind.scm b/gnu/packages/valgrind.scmindex 4036bd461bc5..24b422c2c52c 100644--- a/gnu/packages/valgrind.scm+++ b/gnu/packages/valgrind.scm@@ -26,6 +26,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix licenses)+ #:use-module (guix utils) #:use-module (gnu packages gdb) #:use-module (gnu packages perl) #:use-module (gnu packages))@@ -50,8 +51,7 @@ (outputs '("doc" ;16 MB "out")) (arguments- `(,@(if (string-prefix? "powerpc" (or (%current-target-system)- (%current-system)))+ `(,@(if (target-powerpc?) `(#:make-flags '("CFLAGS+=-maltivec")) '()) #:phasesdiff --git a/gnu/packages/web.scm b/gnu/packages/web.scmindex b00c9aa3db5b..a6812699d77b 100644--- a/gnu/packages/web.scm+++ b/gnu/packages/web.scm@@ -1322,8 +1322,7 @@ current version of any major web browser.") #t)))) (build-system cmake-build-system) (arguments- (if (string-prefix? "aarch64" (or (%current-target-system)- (%current-system)))+ (if (target-aarch64?) '(#:phases (modify-phases %standard-phases (add-after 'unpack 'patch-aarch-march-detection
?