From 10bbb79f87f3728c347e33a101add8cb740e9469 Mon Sep 17 00:00:00 2001 In-Reply-To: <56398@debbugs.gnu.org> References: <56398@debbugs.gnu.org> From: =?UTF-8?q?Andr=C3=A9=20Batista?= Date: Thu, 4 Aug 2022 08:07:35 -0300 Subject: [PATCH] guix: git: Gracefully handle missing submodules when updating. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To: debbugs@gnu.org Fixes . Reported by Ludovic Courtès . * guix/git.scm (update-submodules): Check if submodule directory exists before trying to update it. --- guix/git.scm | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/guix/git.scm b/guix/git.scm index 631bf577d3..d6a82fb86c 100644 --- a/guix/git.scm +++ b/guix/git.scm @@ -320,20 +320,22 @@ (define* (update-submodules repository (fetch-options #f)) "Update the submodules of REPOSITORY, a Git repository object." (for-each (lambda (name) - (let ((submodule (submodule-lookup repository name))) + (let* ((submodule (submodule-lookup repository name)) + (directory (string-append + (repository-working-directory repository) + "/" (submodule-path submodule)))) (format log-port (G_ "updating submodule '~a'...~%") name) - (submodule-update submodule - #:fetch-options fetch-options) - - ;; 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))))) + (if (file-exists? directory) + ((lambda () + (submodule-update submodule + #:fetch-options fetch-options) + + ;; Recurse in SUBMODULE. + (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) -- 2.36.0