git: Guard against git submodules lacking a path. * guix/git.scm (update-submodules) : 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: + ;; ). + (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)