diff options
Diffstat (limited to 'guix/git-download.scm')
-rw-r--r-- | guix/git-download.scm | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/guix/git-download.scm b/guix/git-download.scm index 9cc6dd3d94..62e625c715 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm @@ -30,7 +30,9 @@ git-reference-commit git-reference-recursive? - git-fetch)) + git-fetch + git-version + git-file-name)) ;;; Commentary: ;;; @@ -82,20 +84,39 @@ 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 #:hash hash #:recursive? #t - #:guile-for-build guile - #:local-build? #t))) + #:guile-for-build guile))) + +(define (git-version version revision commit) + "Return the version string for packages using git-download." + (string-append version "-" revision "." (string-take commit 7))) + +(define (git-file-name name version) + "Return the file-name for packages using git-download." + (string-append name "-" version "-checkout")) ;;; git-download.scm ends here |