diff options
author | Arun Isaac | 2022-02-09 23:53:31 +0530 |
---|---|---|
committer | Arun Isaac | 2022-02-09 23:58:33 +0530 |
commit | 8bc27ffef8f6636aeb2ef9f58b2fe205d812ce7a (patch) | |
tree | d047fa26bffa50f2882f2ccb70582cbf7c435c3f /forge/build/git.scm | |
parent | 9075f01fa32c9ecae021393b870a23413000f9c4 (diff) | |
download | guix-forge-8bc27ffef8f6636aeb2ef9f58b2fe205d812ce7a.tar.gz guix-forge-8bc27ffef8f6636aeb2ef9f58b2fe205d812ce7a.tar.lz guix-forge-8bc27ffef8f6636aeb2ef9f58b2fe205d812ce7a.zip |
forge: Implement our own git downloader.
Implement our own git downloader independent of that provided by
Guix. This is required for better control of the output, and to later
print the current git commit.
* forge/build/git.scm: Do not import (guix build git). Import (rnrs
exceptions).
(download-git-to-store): Do not accept #:git-command argument. Expect
git and nss-certs to be in the environment. Do not call git-fetch
from (guix build git).
* forge/forge.scm: Import nss-certs from (gnu packages certs).
(gexp-producer->job-script): Run in environment with the git-minimal
and nss-certs packages. Do not pass #:git-command to
latest-git-checkout.
Diffstat (limited to 'forge/build/git.scm')
-rw-r--r-- | forge/build/git.scm | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/forge/build/git.scm b/forge/build/git.scm index e699822..2e3dc41 100644 --- a/forge/build/git.scm +++ b/forge/build/git.scm @@ -18,7 +18,7 @@ ;;; <https://www.gnu.org/licenses/>. (define-module (forge build git) - #:use-module ((guix build git) #:prefix guix-build:) + #:use-module (rnrs exceptions) #:use-module (guix build utils) #:use-module (guix store) #:use-module (guix utils) @@ -34,16 +34,21 @@ ;;; Code: -(define* (download-git-to-store store name url commit #:key (git-command "git")) - "Download COMMIT from git repository from URL to STORE under NAME -and return store path." +(define (download-git-to-store store name url branch) + "Download BRANCH of git repository from URL to STORE under NAME and +return store path. git and certificates should be in the environment." (call-with-temporary-directory (lambda (directory) - (unless (with-output-to-port (current-error-port) - (lambda () - (guix-build:git-fetch url commit directory - #:git-command git-command))) - (error "Error fetching git repository" url commit)) + (with-directory-excursion directory + (guard (condition ((invoke-error? condition) + (format (current-error-port) + "git-fetch: '~a~{ ~a~}' failed with exit code ~a~%" + (invoke-error-program condition) + (invoke-error-arguments condition) + (invoke-error-exit-status condition)) + (exit #f))) + (invoke "git" "clone" "--quiet" "--depth" "1" "--branch" branch url ".")) + (delete-file-recursively ".git")) (add-to-store store name #t "sha256" directory)))) (define latest-git-checkout |