~ruther/guix-local

c0b2d08bf473ccc6a95e0ed38ce966befb83c0c1 — Ludovic Courtès 9 years ago b13a5b4
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 ced200328ca6337ac446e4557c645629e7d7a997.

* 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'.
1 files changed, 15 insertions(+), 3 deletions(-)

M guix/git-download.scm
M guix/git-download.scm => guix/git-download.scm +15 -3
@@ 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