summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-07-12 21:40:57 +0200
committerLudovic Courtès <ludo@gnu.org>2017-07-12 21:56:17 +0200
commitb547349d505c57fd679b6e48c472d8ab65469c96 (patch)
treee2c9a69015ae45adbf0d197845915177fb663c64
parenta6c1fe824002d022ff3ba7c8b93987965db29641 (diff)
downloadguix-b547349d505c57fd679b6e48c472d8ab65469c96.tar.gz
substitute: Work around Guile 2.2 'time-monotonic' bug.
Prior to this change, half of the cached narinfos would expire
immediately since they contained the number of nanoseconds instead of
the number of seconds as their date.

* guix/scripts/substitute.scm (time-monotonic) <guile-2.2>: Define, as a
workaround.
-rwxr-xr-xguix/scripts/substitute.scm7
1 files changed, 7 insertions, 0 deletions
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 71f30030b6..9348599193 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -96,6 +96,13 @@
 ;;;
 ;;; Code:
 
+(cond-expand
+  (guile-2.2
+   ;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and
+   ;; nanoseconds swapped (fixed in Guile commit 886ac3e).  Work around it.
+   (define time-monotonic time-tai))
+  (else #t))
+
 (define %narinfo-cache-directory
   ;; A local cache of narinfos, to avoid going to the network.  Most of the
   ;; time, 'guix substitute' is called by guix-daemon as root and stores its