From 725a138db8d75ab39ff72f3cbb89d5656be23816 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Tue, 13 Jan 2026 12:15:45 +0900 Subject: [PATCH] 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 --- guix/git.scm | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/guix/git.scm b/guix/git.scm index fca7e84fbb7..f6fab9fc914 100644 --- a/guix/git.scm +++ b/guix/git.scm @@ -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: + ;; ). + (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)