git: Guard against git submodules lacking a path.

* guix/git.scm (update-submodules) <directory>: Remove extraneous "/" in file
name.  Only recurse when the directory exists.

Fixes: #5579
Change-Id: Ica5e5de196bd1a3d5a0a41c34162c68c0855298d

1 file changed, 11 insertions(+), 5 deletions(-)
guix/git.scm | 16 +++++++++++-----

modified   guix/git.scm
@@ -402,11 +402,17 @@ (define* (update-submodules repository
                 ;; Recurse in SUBMODULE.
                 (let ((directory (string-append
                                   (repository-working-directory repository)
-                                  "/" (submodule-path submodule))))
-                  (with-repository directory repository
-                    (update-submodules repository
-                                       #:fetch-options fetch-options
-                                       #:log-port log-port)))))
+                                  (submodule-path submodule))))
+                  ;; libgit2, unlike git, does not discard invalid submodules
+                  ;; that lack a path, and instead uses the module name as the
+                  ;; path in this case, which would break `with-repository`
+                  ;; below (see:
+                  ;; <https://github.com/libgit2/libgit2/issues/7194>).
+                  (when (file-exists? directory)
+                    (with-repository directory repository
+                      (update-submodules repository
+                                         #:fetch-options fetch-options
+                                         #:log-port log-port))))))
             (repository-submodules repository)))
 
 (define-syntax-rule (false-if-git-not-found exp)

Generated by apteryx using scpaste at Tue Jan 13 12:18:44 2026. JST. (original)