Package: guix-patches;
Reported by: Marius Bakke <marius <at> gnu.org>
Date: Thu, 28 May 2020 17:12:02 UTC
Severity: normal
Tags: patch
Done: Marius Bakke <marius <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 41579 in the body.
You can then email your comments to 41579 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
guix-patches <at> gnu.org
:bug#41579
; Package guix-patches
.
(Thu, 28 May 2020 17:12:02 GMT) Full text and rfc822 format available.Marius Bakke <marius <at> gnu.org>
:guix-patches <at> gnu.org
.
(Thu, 28 May 2020 17:12:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Marius Bakke <marius <at> gnu.org> To: guix-patches <at> gnu.org Subject: [PATCH 0/2] Introduce 'cc-for-target'. Date: Thu, 28 May 2020 19:11:37 +0200
Many packages specify a compiler "manually", which leads to this stanza in order to work when cross-compiling: (string-append "CC=" (let ((target ,(%current-target-system))) (if target (string-append target "-gcc") "gcc"))) To reduce duplication, the following patch introduces a 'cc-for-target' procedure, so one can instead do: (string-append "CC=" ,(cc-for-target)) ...and it will DTRT. Thoughts? Marius Bakke (2): utils: Add 'cc-for-target'. gnu: Use 'cc-for-target' instead of custom implementations. gnu/packages/compression.scm | 7 +- gnu/packages/linux.scm | 22 ++---- gnu/packages/mail.scm | 5 +- gnu/packages/music.scm | 6 +- gnu/packages/radio.scm | 7 +- gnu/packages/suckless.scm | 134 +++++++++++------------------------ guix/utils.scm | 9 ++- 7 files changed, 60 insertions(+), 130 deletions(-) -- 2.26.2
guix-patches <at> gnu.org
:bug#41579
; Package guix-patches
.
(Thu, 28 May 2020 17:14:02 GMT) Full text and rfc822 format available.Message #8 received at 41579 <at> debbugs.gnu.org (full text, mbox):
From: Marius Bakke <marius <at> gnu.org> To: 41579 <at> debbugs.gnu.org Subject: [PATCH 1/2] utils: Add 'cc-for-target'. Date: Thu, 28 May 2020 19:13:08 +0200
* guix/utils.scm (cc-for-target): New procedure. --- guix/utils.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/guix/utils.scm b/guix/utils.scm index d7b197fa44..69e3f0a934 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Mathieu Lirzin <mthl <at> gnu.org> ;;; Copyright © 2015 David Thompson <davet <at> gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe <at> gmail.com> -;;; Copyright © 2018 Marius Bakke <mbakke <at> fastmail.com> +;;; Copyright © 2018, 2020 Marius Bakke <marius <at> gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -78,6 +78,8 @@ target-aarch64? target-arm? target-64bit? + cc-for-target + version-compare version>? version>=? @@ -506,6 +508,11 @@ a character other than '@'." (%current-system)))) (any (cut string-prefix? <> system) '("x86_64" "aarch64" "mips64" "ppc64"))) +(define* (cc-for-target #:optional (target (%current-target-system))) + (if target + (string-append target "-gcc") + "gcc")) + (define version-compare (let ((strverscmp (let ((sym (or (dynamic-func "strverscmp" (dynamic-link)) -- 2.26.2
guix-patches <at> gnu.org
:bug#41579
; Package guix-patches
.
(Thu, 28 May 2020 17:14:02 GMT) Full text and rfc822 format available.Message #11 received at 41579 <at> debbugs.gnu.org (full text, mbox):
From: Marius Bakke <marius <at> gnu.org> To: 41579 <at> debbugs.gnu.org Subject: [PATCH 2/2] gnu: Use 'cc-for-target' instead of custom implementations. Date: Thu, 28 May 2020 19:13:09 +0200
* gnu/packages/compression.scm (ecm)[arguments]: In #:make-flags, remove TARGET binding and use CC-FOR-TARGET instead. * gnu/packages/linux.scm (powerstat, crda, cachefilesd)[arguments]: Likewise. * gnu/packages/mail.scm (alpine)[arguments]: Likewise. * gnu/packages/music.scm (lsp-plugins)[arguments]: Likewise. * gnu/packages/radio.scm (dump1090)[arguments]: Likewise. * gnu/packages/suckless.scm (blind, dmenu, spoon, slock, st, surf, sent, wificurse, sbm, prout, noice, human, fortify-headers, colors, libutf, scron)[arguments]: Likewise. --- gnu/packages/compression.scm | 7 +- gnu/packages/linux.scm | 22 ++---- gnu/packages/mail.scm | 5 +- gnu/packages/music.scm | 6 +- gnu/packages/radio.scm | 7 +- gnu/packages/suckless.scm | 134 +++++++++++------------------------ 6 files changed, 52 insertions(+), 129 deletions(-) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 38adf35e33..cdab7408ed 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -2207,11 +2207,8 @@ computations.") (arguments `(#:tests? #f ; no check target #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "DESTDIR=" (assoc-ref %outputs "out")))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "DESTDIR=" (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases (replace 'configure diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index dad7b6e992..225f20caf6 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1222,11 +1222,8 @@ at login. Local and dynamic reconfiguration are its key features.") (build-system gnu-build-system) (arguments `(#:make-flags - (let* ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "prefix=" (assoc-ref %outputs "out")))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "prefix=" (assoc-ref %outputs "out"))) #:tests? #f ; no test suite #:phases (modify-phases %standard-phases @@ -3377,12 +3374,9 @@ interface.") #t)))) #:test-target "verify" #:make-flags (let ((out (assoc-ref %outputs "out")) - (regdb (assoc-ref %build-inputs "wireless-regdb")) - (target ,(%current-target-system))) + (regdb (assoc-ref %build-inputs "wireless-regdb"))) (list - (string-append - "CC=" (if target - (string-append target "-gcc") "gcc")) + (string-append "CC=" ,(cc-for-target)) "V=1" ;; Disable signature-checking on 'regulatory.bin'. @@ -7040,12 +7034,8 @@ system boot process.") `(#:tests? #f ; there are no tests #:make-flags (let ((prefix-dir (lambda (var dir) - (string-append var "=" %output "/" dir))) - (target ,(%current-target-system))) - (list (string-append "CC=" - (if target - (string-append target "-gcc") - "gcc")) + (string-append var "=" %output "/" dir)))) + (list (string-append "CC=" ,(cc-for-target)) (prefix-dir "SBINDIR" "sbin/") (prefix-dir "ETCDIR" "etc/") (prefix-dir "MANDIR" "share/man/"))) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index fa0b22cd9c..a19ec44026 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -2697,10 +2697,7 @@ operators and scripters.") (build-system gnu-build-system) (arguments `(#:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")))) + (list (string-append "CC=" ,(cc-for-target))) #:configure-flags (list (string-append "--with-ssl-include-dir=" (assoc-ref %build-inputs "openssl") "/include/openssl") diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 89edcae43e..9f75d32fa6 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -4886,11 +4886,7 @@ and reverb.") (arguments `(#:make-flags (list - (string-append "CC=" - (if ,(%current-target-system) - (string-append (assoc-ref %build-inputs "cross-gcc") - "/bin/" ,(%current-target-system) "-gcc") - "gcc")) + (string-append "CC=" ,(cc-for-target)) "BUILD_MODULES=\"lv2 ladspa jack\"" "VST_UI=0" (string-append "PREFIX=" (assoc-ref %outputs "out")) (string-append "ETC_PATH=" (assoc-ref %outputs "out") "/etc")) diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index f5dbbf7838..2b27d03cb4 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -1017,11 +1017,8 @@ gain and standing wave ratio.") (arguments `(#:test-target "test" #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - "BLADERF=no")) + (list (string-append "CC=" ,(cc-for-target)) + "BLADERF=no") #:phases (modify-phases %standard-phases (delete 'configure) diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index 5cabb40eb0..bb21c13ad0 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -46,6 +46,7 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix utils) #:use-module (guix packages)) (define-public blind @@ -62,12 +63,8 @@ (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target - #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + #:make-flags (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -152,14 +149,11 @@ optimising the environment for the application in use and the task performed.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output) - (string-append "FREETYPEINC=" - (assoc-ref %build-inputs "freetype") - "/include/freetype2"))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output) + (string-append "FREETYPEINC=" + (assoc-ref %build-inputs "freetype") + "/include/freetype2")) #:phases (modify-phases %standard-phases (delete 'configure)))) (inputs @@ -190,11 +184,8 @@ numbers of user-defined menu items efficiently.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)))) (inputs `(("libx11" ,libx11) ("libxkbfile" ,libxkbfile) @@ -221,11 +212,8 @@ numbers of user-defined menu items efficiently.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target) + (string-append "PREFIX=" %output))) #:phases (modify-phases %standard-phases (delete 'configure)))) (inputs `(("libx11" ,libx11) @@ -253,11 +241,8 @@ numbers of user-defined menu items efficiently.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure) @@ -298,11 +283,8 @@ drawing.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure) @@ -347,14 +329,11 @@ point surf to another URI by setting its XProperties.") (delete 'configure)) ; no configuration #:tests? #f ; no test suite #:make-flags - (let ((target ,(%current-target-system)) - (pkg-config (lambda (flag) + (let ((pkg-config (lambda (flag) (string-append "$(shell pkg-config " flag " " "xft fontconfig x11 libpng)")))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) + (list (string-append "CC=" ,(cc-for-target)) (string-append "PREFIX=" %output) (string-append "INCS=-I. " (pkg-config "--cflags")) (string-append "LIBS=" (pkg-config "--libs") " -lm"))))) @@ -390,11 +369,8 @@ few minutes.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)))) (inputs `(("libx11" ,libx11))) (home-page "https://git.2f30.org/xbattmon/") @@ -452,11 +428,8 @@ drivers capable of injecting packets in wireless networks.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target) + (string-append "PREFIX=" %output))) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -484,11 +457,8 @@ left.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -514,11 +484,8 @@ left.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -550,11 +517,8 @@ cups server to be installed.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure) ; no configure script @@ -588,11 +552,8 @@ cups server to be installed.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -621,11 +582,8 @@ environment variable.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -666,11 +624,8 @@ initially intended to be used on musl-based Linux distributions. (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -707,11 +662,8 @@ colormap to stdout.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -756,11 +708,8 @@ as -1, to be used instead of U+FFFD. (arguments `(#:test-target "test" #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure) ; no configure script @@ -805,11 +754,8 @@ chat output in the background.") (arguments `(#:tests? #f ; no tests #:make-flags - (let ((target ,(%current-target-system))) - (list (string-append "CC=" (if target - (string-append target "-gcc") - "gcc")) - (string-append "PREFIX=" %output))) + (list (string-append "CC=" ,(cc-for-target)) + (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script -- 2.26.2
guix-patches <at> gnu.org
:bug#41579
; Package guix-patches
.
(Thu, 28 May 2020 18:05:02 GMT) Full text and rfc822 format available.Message #14 received at 41579 <at> debbugs.gnu.org (full text, mbox):
From: Tobias Geerinckx-Rice <me <at> tobias.gr> To: Marius Bakke <marius <at> gnu.org> Cc: 41579 <at> debbugs.gnu.org Subject: Re: [bug#41579] [PATCH 1/2] utils: Add 'cc-for-target'. Date: Thu, 28 May 2020 20:04:29 +0200
[Message part 1 (text/plain, inline)]
Marius, Marius Bakke 写道: > * guix/utils.scm (cc-for-target): New procedure. Yes please! I didn't review the package changes but know in my heart that you've tested them all. Kind regards, T G-R
[signature.asc (application/pgp-signature, inline)]
guix-patches <at> gnu.org
:bug#41579
; Package guix-patches
.
(Thu, 28 May 2020 18:44:02 GMT) Full text and rfc822 format available.Message #17 received at 41579 <at> debbugs.gnu.org (full text, mbox):
From: Mathieu Othacehe <othacehe <at> gnu.org> To: Marius Bakke <marius <at> gnu.org> Cc: 41579 <at> debbugs.gnu.org Subject: Re: [bug#41579] [PATCH 0/2] Introduce 'cc-for-target'. Date: Thu, 28 May 2020 20:43:44 +0200
Hello Marius, > To reduce duplication, the following patch introduces a 'cc-for-target' > procedure, so one can instead do: > > (string-append "CC=" ,(cc-for-target)) > > ...and it will DTRT. This is definitely a nice improvement! Sometimes the issue also extends to AR and LD for instance. This has been discussed here[1]. Maybe we should deal with that directly in the build system, and provide suitable default values for CC, AR, LD & friends, when cross-compiling. Anyway, your patch is already a big improvement and it LGTM. Thanks, Mathieu [1]: https://lists.gnu.org/archive/html/guix-patches/2020-05/msg00423.html
Marius Bakke <marius <at> gnu.org>
:Marius Bakke <marius <at> gnu.org>
:Message #22 received at 41579-done <at> debbugs.gnu.org (full text, mbox):
From: Marius Bakke <marius <at> gnu.org> To: Mathieu Othacehe <othacehe <at> gnu.org> Cc: 41579-done <at> debbugs.gnu.org Subject: Re: [bug#41579] [PATCH 0/2] Introduce 'cc-for-target'. Date: Fri, 29 May 2020 15:58:22 +0200
[Message part 1 (text/plain, inline)]
Mathieu Othacehe <othacehe <at> gnu.org> writes: > Hello Marius, > >> To reduce duplication, the following patch introduces a 'cc-for-target' >> procedure, so one can instead do: >> >> (string-append "CC=" ,(cc-for-target)) >> >> ...and it will DTRT. > > This is definitely a nice improvement! Sometimes the issue also extends > to AR and LD for instance. > > This has been discussed here[1]. Maybe we should deal with that directly > in the build system, and provide suitable default values for CC, AR, LD > & friends, when cross-compiling. That makes sense. Can't think of any cases where setting these would have an adverse effect, though I'm sure plenty of stuff will break. ;-) > Anyway, your patch is already a big improvement and it LGTM. Thanks for checking, pushed!
[signature.asc (application/pgp-signature, inline)]
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Sat, 27 Jun 2020 11:24:06 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.