diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-06-11 23:32:45 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-06-12 00:49:32 +0200 |
commit | baf0a4288264098ede43e4f7cd099a29fcf35be4 (patch) | |
tree | 48f3e4bdfe67ef7f287530c9587dad49cf2990e7 | |
parent | 6a9abdcd5db7621a451af310c9a42a9bbfb228d6 (diff) | |
download | guix-baf0a4288264098ede43e4f7cd099a29fcf35be4.tar guix-baf0a4288264098ede43e4f7cd099a29fcf35be4.tar.gz |
git: Update the mtime of the just-updated checkout.
Reported by zimoun <zimon.toutoune@gmail.com>.
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.
-rw-r--r-- | guix/git.scm | 8 |
1 files changed, 8 insertions, 0 deletions
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))) |