about summary refs log tree commit diff
path: root/forge
diff options
context:
space:
mode:
Diffstat (limited to 'forge')
-rw-r--r--forge/build/git.scm23
-rw-r--r--forge/forge.scm57
2 files changed, 43 insertions, 37 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
diff --git a/forge/forge.scm b/forge/forge.scm
index 11a1e92..d3bb879 100644
--- a/forge/forge.scm
+++ b/forge/forge.scm
@@ -22,6 +22,7 @@
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 match)
+  #:use-module ((gnu packages certs) #:select (nss-certs))
   #:use-module (gnu packages ci)
   #:use-module ((gnu packages gnupg) #:select (guile-gcrypt))
   #:use-module ((gnu packages guile) #:select (guile-3.0 guile-zlib))
@@ -198,35 +199,35 @@ derivation to run."
                                                   (guix profiles))
                                                 #:select? import-module?)
     (with-extensions (list guile-gcrypt guile-zlib)
-      #~(begin
-          (use-modules (forge build git)
-                       (guix derivations)
-                       (guix gexp)
-                       (guix monads)
-                       (guix store)
-                       (rnrs exceptions))
+      (with-packages (list git-minimal nss-certs)
+        #~(begin
+            (use-modules (forge build git)
+                         (guix derivations)
+                         (guix gexp)
+                         (guix monads)
+                         (guix store)
+                         (rnrs exceptions))
 
-          (parameterize ((%daemon-socket-uri #$guix-daemon-uri))
-            (with-store store
-              (guard (condition ((store-protocol-error? condition)
-                                 (exit #f)))
-                (format (current-error-port)
-                        "Built ~a successfully~%"
-                        (run-with-store store
-                          (mlet* %store-monad ((git-checkout (latest-git-checkout #$git-checkout-name
-                                                                                  #$git-repository
-                                                                                  #$git-branch
-                                                                                  #:git-command #$(file-append git-minimal "/bin/git")))
-                                               (tests-drv (gexp->derivation #$derivation-name
-                                                            (#$gexp-producer git-checkout)
-                                                            #:guile-for-build (read-derivation-from-file
-                                                                               #$(raw-derivation-file
-                                                                                  (with-store store
-                                                                                    (package-derivation store guile-3.0))))
-                                                            #:substitutable? #f)))
-                            (mbegin %store-monad
-                              (built-derivations (list tests-drv))
-                              (return (derivation->output-path tests-drv)))))))))))))
+            (parameterize ((%daemon-socket-uri #$guix-daemon-uri))
+              (with-store store
+                (guard (condition ((store-protocol-error? condition)
+                                   (exit #f)))
+                  (format (current-error-port)
+                          "Built ~a successfully~%"
+                          (run-with-store store
+                            (mlet* %store-monad ((git-checkout (latest-git-checkout #$git-checkout-name
+                                                                                    #$git-repository
+                                                                                    #$git-branch))
+                                                 (tests-drv (gexp->derivation #$derivation-name
+                                                              (#$gexp-producer git-checkout)
+                                                              #:guile-for-build (read-derivation-from-file
+                                                                                 #$(raw-derivation-file
+                                                                                    (with-store store
+                                                                                      (package-derivation store guile-3.0))))
+                                                              #:substitutable? #f)))
+                              (mbegin %store-monad
+                                (built-derivations (list tests-drv))
+                                (return (derivation->output-path tests-drv))))))))))))))
 
 (define forge-service-type
   (service-type