summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2023-07-25 16:02:14 +0300
committerEfraim Flashner <efraim@flashner.co.il>2023-07-25 16:07:02 +0300
commit1fd4f544b3065af225731462f3d3d647da781ee8 (patch)
tree8148baf93d7243fcc556312fc43ac043d2815c34 /guix
parent11751b016d7f8b925e9d676c4c6b9f79cb99813d (diff)
transformations: Wrap go binary.
* guix/transformations.scm (tuning-compiler): Adjust to wrap the go binary with the appropriate environment variable. (build-system-with-tuning-compiler): Remove custom 'set-microarchitecture phase.
Diffstat (limited to 'guix')
-rw-r--r--guix/transformations.scm46
1 files changed, 22 insertions, 24 deletions
diff --git a/guix/transformations.scm b/guix/transformations.scm
index 92d9c89c0e..ede914456f 100644
--- a/guix/transformations.scm
+++ b/guix/transformations.scm
@@ -441,6 +441,9 @@ actual compiler."
#~(begin
(use-modules (ice-9 match))
+ (define psabi #$(gcc-architecture->micro-architecture-level
+ micro-architecture))
+
(define* (search-next command
#:optional
(path (string-split (getenv "PATH")
@@ -469,10 +472,25 @@ actual compiler."
(match (search-next (basename command))
(#f (exit 127))
(next
- (apply execl next
+ (if (and (search-next "go")
+ (string=? next (search-next "go")))
+ (cond
+ ((string-prefix? "arm" psabi)
+ (setenv "GOARM" (string-take-right psabi 1)))
+ ((string-prefix? "powerpc" psabi)
+ (setenv "GOPPC64" psabi))
+ ((string-prefix? "x86_64" psabi)
+ (setenv "GOAMD" (string-take-right psabi 2)))
+ (else #t))
+ '())
+ (apply
+ execl next
(append (cons next arguments)
+ (if (and (search-next "go")
+ (string=? next (search-next "go")))
+ '()
(list (string-append "-march="
- #$micro-architecture))))))))))
+ #$micro-architecture)))))))))))
(define program
(program-file (string-append "tuning-compiler-wrapper-" micro-architecture)
@@ -489,7 +507,8 @@ actual compiler."
(for-each (lambda (program)
(symlink #$program
(string-append bin "/" program)))
- '("cc" "gcc" "clang" "g++" "c++" "clang++")))))))
+ '("cc" "gcc" "clang" "g++" "c++" "clang++"
+ "go")))))))
(define (build-system-with-tuning-compiler bs micro-architecture)
"Return a variant of BS, a build system, that ensures that the compiler that
@@ -564,27 +583,6 @@ micro-architectures:
(bag
(inherit lowered)
- (arguments
- (substitute-keyword-arguments (bag-arguments lowered)
- ;; We add the tuning parameter after the default GO flags are set.
- ((#:phases phases '%standard-phases)
- #~(modify-phases #$phases
- (add-after 'setup-go-environment 'set-microarchitecture
- (lambda _
- (cond
- ((string-prefix? "arm" #$psabi)
- (setenv "GOARM" (string-take-right #$psabi 1))
- (format #t "Setting GOARM to ~s."
- (getenv "GOARM")))
- ((string-prefix? "powerpc" #$psabi)
- (setenv "GOPPC64" #$psabi)
- (format #t "Setting GOPPC64 to ~s."
- (getenv "GOPPC64")))
- ((string-prefix? "x86_64" #$psabi)
- (setenv "GOAMD" (string-take-right #$psabi 2))
- (format #t "Setting GOAMD to ~s.\n"
- (getenv "GOAMD")))
- (else #t))))))))
(build-inputs
;; Arrange so that the compiler wrapper comes first in $PATH.
`(("tuning-compiler" ,(tuning-compiler micro-architecture))