build-system/go: Add pre-built standard library as implicit input.
* gnu/packages/golang.scm (make-go-std): New procedure. * guix/build-system/go.scm (make-go-std): New procedure. (lower): Use it. Add pre-built standard library to inputs. Signed-off-by: Leo Famulari <leo@famulari.name>
This commit is contained in:
parent
c90f73f816
commit
d6121d7dd6
@ -831,6 +831,36 @@ in the style of communicating sequential processes (@dfn{CSP}).")
|
|||||||
|
|
||||||
(define-public go go-1.14)
|
(define-public go go-1.14)
|
||||||
|
|
||||||
|
(define-public (make-go-std go)
|
||||||
|
"Return a package which builds the standard library for Go compiler GO."
|
||||||
|
(package
|
||||||
|
(name (string-append (package-name go) "-std"))
|
||||||
|
(version (package-version go))
|
||||||
|
(source #f)
|
||||||
|
(build-system go-build-system)
|
||||||
|
(arguments
|
||||||
|
`(#:import-path "std"
|
||||||
|
#:build-flags `("-pkgdir" "pkg") ; "Install" to build directory.
|
||||||
|
#:allow-go-reference? #t
|
||||||
|
#:substitutable? #f ; Faster to build than download.
|
||||||
|
#:tests? #f ; Already tested in the main Go build.
|
||||||
|
#:go ,go
|
||||||
|
#:phases
|
||||||
|
(modify-phases %standard-phases
|
||||||
|
(delete 'unpack)
|
||||||
|
(replace 'install
|
||||||
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
|
(out-cache (string-append out "/var/cache/go/build")))
|
||||||
|
(copy-recursively (getenv "GOCACHE") out-cache)
|
||||||
|
(delete-file (string-append out-cache "/trim.txt"))
|
||||||
|
(delete-file (string-append out-cache "/README")))))
|
||||||
|
(delete 'install-license-files))))
|
||||||
|
(home-page (package-home-page go))
|
||||||
|
(synopsis "Cached standard library build for Go")
|
||||||
|
(description (package-description go))
|
||||||
|
(license (package-license go))))
|
||||||
|
|
||||||
(define-public go-0xacab-org-leap-shapeshifter
|
(define-public go-0xacab-org-leap-shapeshifter
|
||||||
(let ((commit "0aa6226582efb8e563540ec1d3c5cfcd19200474")
|
(let ((commit "0aa6226582efb8e563540ec1d3c5cfcd19200474")
|
||||||
(revision "12"))
|
(revision "12"))
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||||
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
|
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
|
||||||
|
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
@ -112,6 +113,9 @@ commit hash and its date rather than a proper release tag."
|
|||||||
(let ((go (resolve-interface '(gnu packages golang))))
|
(let ((go (resolve-interface '(gnu packages golang))))
|
||||||
(module-ref go 'go)))
|
(module-ref go 'go)))
|
||||||
|
|
||||||
|
(define (make-go-std)
|
||||||
|
(module-ref (resolve-interface '(gnu packages golang)) 'make-go-std))
|
||||||
|
|
||||||
(define* (lower name
|
(define* (lower name
|
||||||
#:key source inputs native-inputs outputs system target
|
#:key source inputs native-inputs outputs system target
|
||||||
(go (default-go))
|
(go (default-go))
|
||||||
@ -121,6 +125,14 @@ commit hash and its date rather than a proper release tag."
|
|||||||
(define private-keywords
|
(define private-keywords
|
||||||
'(#:target #:go #:inputs #:native-inputs))
|
'(#:target #:go #:inputs #:native-inputs))
|
||||||
|
|
||||||
|
(define inputs-with-cache
|
||||||
|
;; XXX: Avoid a circular dependency. This should be rewritten with
|
||||||
|
;; 'package-mapping' or similar.
|
||||||
|
(let ((go-std-name (string-append (package-name go) "-std")))
|
||||||
|
(if (string-prefix? go-std-name name)
|
||||||
|
inputs
|
||||||
|
(cons `(,go-std-name ,((make-go-std) go)) inputs))))
|
||||||
|
|
||||||
(bag
|
(bag
|
||||||
(name name)
|
(name name)
|
||||||
(system system)
|
(system system)
|
||||||
@ -130,7 +142,7 @@ commit hash and its date rather than a proper release tag."
|
|||||||
'())
|
'())
|
||||||
,@`(("go" ,go))
|
,@`(("go" ,go))
|
||||||
,@native-inputs
|
,@native-inputs
|
||||||
,@(if target '() inputs)
|
,@(if target '() inputs-with-cache)
|
||||||
,@(if target
|
,@(if target
|
||||||
;; Use the standard cross inputs of
|
;; Use the standard cross inputs of
|
||||||
;; 'gnu-build-system'.
|
;; 'gnu-build-system'.
|
||||||
@ -138,7 +150,7 @@ commit hash and its date rather than a proper release tag."
|
|||||||
'())
|
'())
|
||||||
;; Keep the standard inputs of 'gnu-build-system'.
|
;; Keep the standard inputs of 'gnu-build-system'.
|
||||||
,@(standard-packages)))
|
,@(standard-packages)))
|
||||||
(host-inputs (if target inputs '()))
|
(host-inputs (if target inputs-with-cache '()))
|
||||||
|
|
||||||
;; The cross-libc is really a target package, but for bootstrapping
|
;; The cross-libc is really a target package, but for bootstrapping
|
||||||
;; reasons, we can't put it in 'host-inputs'. Namely, 'cross-gcc' is a
|
;; reasons, we can't put it in 'host-inputs'. Namely, 'cross-gcc' is a
|
||||||
|
Loading…
Reference in New Issue
Block a user