From baf0a4288264098ede43e4f7cd099a29fcf35be4 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 11 Jun 2021 23:32:45 +0200 Subject: git: Update the mtime of the just-updated checkout. Reported by zimoun . Previously, the mtime of CACHE-DIRECTORY may or may not have been updated after a pull. Thus, 'maybe-remove-expired-cache-entries' could potentially delete CACHE-DIRECTORY right before it's returned. * guix/git.scm (update-cached-checkout): Call 'utime' on CACHE-DIRECTORY. --- guix/git.scm | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'guix') diff --git a/guix/git.scm b/guix/git.scm index 57fa2ca1ee..9c6f326c36 100644 --- a/guix/git.scm +++ b/guix/git.scm @@ -424,6 +424,14 @@ it unchanged." ;; REPOSITORY as soon as possible. (repository-close! repository) + ;; Update CACHE-DIRECTORY's mtime to so the cache logic sees it. + (match (gettimeofday) + ((seconds . microseconds) + (let ((nanoseconds (* 1000 microseconds))) + (utime cache-directory + seconds seconds + nanoseconds nanoseconds)))) + ;; When CACHE-DIRECTORY is a sub-directory of the default cache ;; directory, remove expired checkouts that are next to it. (let ((parent (dirname cache-directory))) -- cgit v1.2.3