build-system/go: Add skip-build? option key.

Golang project's root may miss any .go files which makes build phase to
fail with error similar to:

    no Go files in /tmp/<...>/src/golang.org/x/mod

This change implements a SKIP-BUILD? key parameter which is, by default,
set to #f to invoke build procedure. It is taken from cargo-build-system

* guix/build-system/go.scm (go-build, go-cross-build): Add "skip-build?"
key parameter.
* guix/build/go-build-system.scm (build): Add "skip-build?" key
parameter and implement logic.

Change-Id: I3f41414868a7329cbe99324106427cdae4884d94
This commit is contained in:
Sharlatan Hellseher 2024-12-20 18:13:35 +00:00
parent 1e4a22c4d7
commit c149fc769c
No known key found for this signature in database
GPG key ID: 76D727BFF62CD2B5
2 changed files with 21 additions and 12 deletions

View file

@ -289,6 +289,7 @@ unpacking."
(define* (build #:key
build-flags
skip-build?
import-path
(parallel-build? #t)
(verbosity 1)
@ -311,19 +312,23 @@ unpacking."
(setenv "GOMAXPROCS" (number->string njobs)))
(with-throw-handler
#t
#t
(lambda _
(apply invoke "go" "install"
;; 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)))
(if skip-build?
(begin
(format #t "Build is skipped, no go files in project's root.~%")
#t)
(apply invoke "go" "install"
;; 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"