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 dac115935f
commit 4ced25f0ca
No known key found for this signature in database
GPG key ID: 76D727BFF62CD2B5
2 changed files with 21 additions and 12 deletions

View file

@ -203,6 +203,7 @@ (define* (go-build name inputs
(import-path "")
(unpack-path "")
(build-flags ''())
(skip-build? #f)
(tests? #t)
(test-flags ''())
(test-subdirs ''("..."))
@ -238,6 +239,7 @@ (define builder
#:import-path #$import-path
#:unpack-path #$unpack-path
#:build-flags #$build-flags
#:skip-build? #$skip-build?
#:tests? #$tests?
#:test-flags #$test-flags
#:test-subdirs #$test-subdirs
@ -264,6 +266,7 @@ (define* (go-cross-build name
(import-path "")
(unpack-path "")
(build-flags ''())
(skip-build? #f)
(tests? #f) ; nothing can be done
(test-flags ''())
(test-subdirs ''("..."))
@ -317,6 +320,7 @@ (define %outputs
#:import-path #$import-path
#:unpack-path #$unpack-path
#:build-flags #$build-flags
#:skip-build? #$skip-build?
#:tests? #$tests?
#:test-flags #$test-flags
#:test-subdirs #$test-subdirs

View file

@ -289,6 +289,7 @@ (define (go-inputs inputs)
(define* (build #:key
build-flags
skip-build?
import-path
(parallel-build? #t)
(verbosity 1)
@ -313,17 +314,21 @@ (define* (build #:key
(with-throw-handler
#t
(lambda _
(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.
;; 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).
;; 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)))
`(,@build-flags ,import-path))))
(lambda (key . args)
(display (string-append "Building '" import-path "' failed.\n"