From f33d79402086e940b2fb7d8a2b4da4cb3981719e Mon Sep 17 00:00:00 2001 From: Sharlatan Hellseher Date: Mon, 2 Dec 2024 23:07:17 +0000 Subject: [PATCH] build: go-build-system: Relax build verbosity. During the build phase "-x" option forces go compiler to generate quite a noisy build log which does not help too much when the build is failed. This change makes it optional and governed by #:verbosity key passed to `build' procedure. * guix/build/go-build-system.scm (build): Provide a link to online example. Consolidate options in GOFLAGS environment variable, make "-x" optional. Add description for "-trimpath" option. Change-Id: Icf1b03eb79db8a6f79f86f3cc212a53de5aa7c1c --- guix/build/go-build-system.scm | 39 ++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm index e53d8cb53c5b2884c71ddc5d9cb330651984cff4..d998c322f209ec05af63577771493aa763bb3f96 100644 --- a/guix/build/go-build-system.scm +++ b/guix/build/go-build-system.scm @@ -283,23 +283,44 @@ unpacking." (_ #f)) inputs)))) -(define* (build #:key import-path build-flags (parallel-build? #t) +(define* (build #:key + build-flags + import-path + (parallel-build? #t) + (verbosity 1) #:allow-other-keys) "Build the package named by IMPORT-PATH." - (let* ((njobs (if parallel-build? (parallel-job-count) 1))) + (let* ((njobs (if parallel-build? (parallel-job-count) 1)) + ;; Utilizing GOFLAGS for flexible build options passthrough, refer + ;; for more examples to online documentation of Golang + ;; . + (goflags (string-join + (list + ;; Print the name of packages (pathes) as they are compiled. + "-v" + ;; Print each command as it is invoked. When enabled, it + ;; generates a lot of noisy logs which makes identifying + ;; build failures harder to determine. + (if (> verbosity 1) "-x" "")) + " "))) + (setenv "GOFLAGS" goflags) (setenv "GOMAXPROCS" (number->string njobs))) (with-throw-handler #t (lambda _ (apply invoke "go" "install" - "-v" ; print the name of packages as they are compiled - "-x" ; print each command as it is invoked - ;; Respectively, strip the symbol table and debug - ;; information, and the DWARF symbol table. - "-ldflags=-s -w" - "-trimpath" - `(,@build-flags ,import-path))) + ;; Respectively, strip the symbol table and debug information, + ;; and the DWARF symbol table. + "-ldflags=-s -w" + ;; Remove all file system paths from the resulting executable. + ;; Instead of absolute file system paths, the recorded file names + ;; will begin either a module path@version (when using modules), + ;; or a plain import path (when using the standard library, or + ;; GOPATH). + "-trimpath" + `(,@build-flags ,import-path))) + (lambda (key . args) (display (string-append "Building '" import-path "' failed.\n" "Here are the results of `go env`:\n"))