Subject: Re: bug#44593: (guix git) doesn’t honor HTTP/HTTPS proxy settings for submodules

From: Ludovic Courtès <[email-masked]>
Date: Fri, 02 Apr 2021 11:56:20 +0200

Ludovic Courtès <[email-masked]> skribis:

> Ludovic Courtès <[email-masked]> skribis:
>
>> (guix git) does not honor proxy settings when fetching submodules.
>>
>> In fact, Guile-Git 0.4.0 doesn’t allow us to pass fetch options to
>> ‘submodule-update’, which is what needs to be fixed first.
>
> Implemented here:
>
>   https://gitlab.com/guile-git/guile-git/-/commit/6c512f7a4d14814a306b9c97b53373527d9a6c50
>
> Unfortunately I couldn’t come up with a good test to ensure the fetch
> options are honored by ‘submodule-update’, as noted there.

And here’s the (guix git) patch, to commit when the new Guile-Git
release is out.

Ludo’.

diff --git a/guix/git.scm b/guix/git.scm
index 1820036f25..ed00a50df9 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -279,13 +279,15 @@ dynamic extent of EXP."
       (report-git-error err))))
 
 (define* (update-submodules repository
-                            #:key (log-port (current-error-port)))
+                            #:key (log-port (current-error-port))
+                            (fetch-options #f))
   "Update the submodules of REPOSITORY, a Git repository object."
   (for-each (lambda (name)
               (let ((submodule (submodule-lookup repository name)))
                 (format log-port (G_ "updating submodule '~a'...~%")
                         name)
-                (submodule-update submodule)
+                (submodule-update submodule
+                                  #:fetch-options fetch-options)
 
                 ;; Recurse in SUBMODULE.
                 (let ((directory (string-append
@@ -293,6 +295,7 @@ dynamic extent of EXP."
                                   "/" (submodule-path submodule))))
                   (with-repository directory repository
                     (update-submodules repository
+                                       #:fetch-options fetch-options
                                        #:log-port log-port)))))
             (repository-submodules repository)))
 
@@ -391,7 +394,8 @@ it unchanged."
        (remote-fetch (remote-lookup repository "origin")
                      #:fetch-options (make-default-fetch-options)))
      (when recursive?
-       (update-submodules repository #:log-port log-port))
+       (update-submodules repository #:log-port log-port
+                          #:fetch-options (make-default-fetch-options)))
 
      ;; Note: call 'commit-relation' from here because it's more efficient
      ;; than letting users re-open the checkout later on.