Browse Source

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'.
wip-gexp-grafts
Ludovic Courtès 6 years ago
parent
commit
c0b2d08bf4
No known key found for this signature in database GPG Key ID: 90B11993D9AEBB5
  1. 18
      guix/git-download.scm

18
guix/git-download.scm

@ -82,14 +82,26 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
(((names dirs) ...)
dirs)))
(git-fetch '#$(git-reference-url ref)
'#$(git-reference-commit ref)
(git-fetch (getenv "git url") (getenv "git commit")
#$output
#:recursive? '#$(git-reference-recursive? ref)
#:recursive? (call-with-input-string
(getenv "git recursive?")
read)
#:git-command (string-append #+git "/bin/git")))))
(mlet %store-monad ((guile (package->derivation guile system)))
(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
#:local-build? #t ;don't offload repo cloning
#:hash-algo hash-algo

Loading…
Cancel
Save