~ruther/guix-local

725a138db8d75ab39ff72f3cbb89d5656be23816 — Maxim Cournoyer a month ago 7d32682
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 files changed, 11 insertions(+), 5 deletions(-)

M guix/git.scm
M guix/git.scm => guix/git.scm +11 -5
@@ 402,11 402,17 @@ values) if DIRECTORY does not hold a readable Git 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)