diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm index 66cb5e8b05..1a4d090fa9 100644 --- a/guix/build-system/go.scm +++ b/guix/build-system/go.scm @@ -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 diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm index fd90335710..70ff880db8 100644 --- a/guix/build/go-build-system.scm +++ b/guix/build/go-build-system.scm @@ -289,6 +289,7 @@ (define (go-inputs inputs) (define* (build #:key build-flags + skip-build? import-path (parallel-build? #t) (verbosity 1) @@ -311,19 +312,23 @@ (define* (build #:key (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"