git-download: Use a single download script for all derivations.
That way, we have only one /gnu/store/…-git-download instead of one
/gnu/store/…-PACKAGE-checkout-builder for each package.
This is a followup to ced200328c
.
* guix/git-download.scm (git-fetch)[build]: Get the URL, commit, and
recursive parameter using 'getenv'. Pass #:script-name and #:env-vars
arguments to 'gexp->derivation'.
This commit is contained in:
parent
b13a5b4d16
commit
c0b2d08bf4
|
@ -82,14 +82,26 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
|
||||||
(((names dirs) ...)
|
(((names dirs) ...)
|
||||||
dirs)))
|
dirs)))
|
||||||
|
|
||||||
(git-fetch '#$(git-reference-url ref)
|
(git-fetch (getenv "git url") (getenv "git commit")
|
||||||
'#$(git-reference-commit ref)
|
|
||||||
#$output
|
#$output
|
||||||
#:recursive? '#$(git-reference-recursive? ref)
|
#:recursive? (call-with-input-string
|
||||||
|
(getenv "git recursive?")
|
||||||
|
read)
|
||||||
#:git-command (string-append #+git "/bin/git")))))
|
#:git-command (string-append #+git "/bin/git")))))
|
||||||
|
|
||||||
(mlet %store-monad ((guile (package->derivation guile system)))
|
(mlet %store-monad ((guile (package->derivation guile system)))
|
||||||
(gexp->derivation (or name "git-checkout") build
|
(gexp->derivation (or name "git-checkout") build
|
||||||
|
|
||||||
|
;; Use environment variables and a fixed script name so
|
||||||
|
;; there's only one script in store for all the
|
||||||
|
;; downloads.
|
||||||
|
#:script-name "git-download"
|
||||||
|
#:env-vars
|
||||||
|
`(("git url" . ,(git-reference-url ref))
|
||||||
|
("git commit" . ,(git-reference-commit ref))
|
||||||
|
("git recursive?" . ,(object->string
|
||||||
|
(git-reference-recursive? ref))))
|
||||||
|
|
||||||
#:system system
|
#:system system
|
||||||
#:local-build? #t ;don't offload repo cloning
|
#:local-build? #t ;don't offload repo cloning
|
||||||
#:hash-algo hash-algo
|
#:hash-algo hash-algo
|
||||||
|
|
Loading…
Reference in New Issue