guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/05: git-download: Use a single download script for all derivations.


From: Ludovic Courtès
Subject: 01/05: git-download: Use a single download script for all derivations.
Date: Sat, 31 Dec 2016 17:36:54 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit c0b2d08bf473ccc6a95e0ed38ce966befb83c0c1
Author: Ludovic Courtès <address@hidden>
Date:   Sat Dec 31 15:28:28 2016 +0100

    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'.
---
 guix/git-download.scm |   18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/guix/git-download.scm b/guix/git-download.scm
index 9cc6dd3..81d1d4f 100644
--- a/guix/git-download.scm
+++ b/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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]