GNU bug report logs -
#74758
[PATCH] pack: Allow cross-compiling with '--relocatable'.
Previous Next
Reported by: Brian Kubisiak <brian <at> kubisiak.com>
Date: Mon, 9 Dec 2024 22:17:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your message dated Mon, 16 Dec 2024 00:16:02 +0100
with message-id <87wmg0fsgd.fsf <at> gnu.org>
and subject line Re: [bug#74758] [PATCH] pack: Allow cross-compiling with '--relocatable'.
has caused the debbugs.gnu.org bug report #74758,
regarding [PATCH] pack: Allow cross-compiling with '--relocatable'.
to be marked as done.
(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)
--
74758: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=74758
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
* guix/scripts/pack.scm (c-compiler-compiler): Remove exception when
cross-compiling and always build gexp->script for the host.
[toolchain]: Use standard-cross-packages when cross-compiling.
[search-paths]: Use package-search-paths instead of
package-native-search-paths when cross-compiling.
[run]: Use cc-for-target and strip-for-target.
Change-Id: I5503e48b3394fdfee06999f8d1ad82f5f0d9af96
---
guix/scripts/pack.scm | 47 ++++++++++++++++++++++++++++---------------
1 file changed, 31 insertions(+), 16 deletions(-)
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 58cd55b129..d0e66c3013 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -1105,12 +1105,30 @@ (define-gexp-compiler (c-compiler-compiler (compiler <c-compiler>) system target
"Lower COMPILER to a single script that does the right thing."
(define toolchain
(or (c-compiler-toolchain compiler)
- (list (first (assoc-ref (standard-packages) "gcc"))
- (first (assoc-ref (standard-packages) "ld-wrapper"))
- (first (assoc-ref (standard-packages) "binutils"))
- (first (assoc-ref (standard-packages) "libc"))
- (gexp-input (first (assoc-ref (standard-packages) "libc"))
- "static"))))
+ (if target
+ (let* ((cross-packages-host
+ (standard-cross-packages target 'host))
+ (cross-packages-target
+ (standard-cross-packages target 'target))
+ (xgcc
+ (first (assoc-ref cross-packages-host "cross-gcc"))))
+ (list xgcc
+ ;; ld-wrapper-cross isn't included with
+ ;; STANDARD-CROSS-PACKAGES, pull it from the inputs of
+ ;; cross-gcc instead
+ (first (assoc-ref (package-native-inputs xgcc)
+ "ld-wrapper-cross"))
+ (first (assoc-ref cross-packages-host "cross-binutils"))
+ (first (assoc-ref cross-packages-target "cross-libc"))
+ (gexp-input (first (assoc-ref cross-packages-target
+ "cross-libc:static"))
+ "static")))
+ (list (first (assoc-ref (standard-packages) "gcc"))
+ (first (assoc-ref (standard-packages) "ld-wrapper"))
+ (first (assoc-ref (standard-packages) "binutils"))
+ (first (assoc-ref (standard-packages) "libc"))
+ (gexp-input (first (assoc-ref (standard-packages) "libc"))
+ "static")))))
(define inputs
(match (append-map package-propagated-inputs
@@ -1120,7 +1138,9 @@ (define-gexp-compiler (c-compiler-compiler (compiler <c-compiler>) system target
(define search-paths
(cons $PATH
- (append-map package-native-search-paths
+ (append-map (if target
+ package-search-paths
+ package-native-search-paths)
(filter package? inputs))))
(define run
@@ -1144,17 +1164,12 @@ (define-gexp-compiler (c-compiler-compiler (compiler <c-compiler>) system target
'#$inputs)
(let ((output (output-file (command-line))))
- (apply invoke "gcc" (cdr (command-line)))
- (invoke "strip" output)))))
-
- (when target
- ;; TODO: Yep, we'll have to do it someday!
- (leave (G_ "cross-compilation not implemented here;
-please email '~a'~%")
- (@ (guix config) %guix-bug-report-address)))
+ (apply invoke #$(cc-for-target target) (cdr (command-line)))
+ (invoke #$(strip-for-target target) output)))))
(gexp->script "c-compiler" run
- #:guile (c-compiler-guile compiler)))
+ #:guile (c-compiler-guile compiler)
+ #:target #f))
;;;
base-commit: 9001514e242ad15c190588439930b0fa4f6782e3
--
2.46.0
[Message part 3 (message/rfc822, inline)]
Hi,
Brian Kubisiak <brian <at> kubisiak.com> skribis:
> * guix/scripts/pack.scm (c-compiler-compiler): Remove exception when
> cross-compiling and always build gexp->script for the host.
> [toolchain]: Use standard-cross-packages when cross-compiling.
> [search-paths]: Use package-search-paths instead of
> package-native-search-paths when cross-compiling.
> [run]: Use cc-for-target and strip-for-target.
>
> Change-Id: I5503e48b3394fdfee06999f8d1ad82f5f0d9af96
Excellent. Applied, thanks!
> guix/scripts/pack.scm | 47 ++++++++++++++++++++++++++++---------------
> 1 file changed, 31 insertions(+), 16 deletions(-)
I’m glad the implementation turned out to be quite small!
Ludo’.
This bug report was last modified 158 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.