From 1fd4f544b3065af225731462f3d3d647da781ee8 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 25 Jul 2023 16:02:14 +0300 Subject: [PATCH] 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. --- guix/transformations.scm | 46 +++++++++++++++++++--------------------- 1 file 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))