~ruther/guix-local

25a49294caf2386e65fc1b12a2508324be0b1cc2 — Ludovic Courtès 9 years ago 8a8e2d2
cache: Work around 'time-monotonic' bug in Guile 2.2.2.

* guix/cache.scm (time-monotonic) [guile-2.2]: New variable.
* tests/cache.scm (time-monotonic) [guile-2.2]: Likewise.
* guix/build/download.scm (time-monotonic) [guile-2.2]: Adjust comment:
it's a 2.2.2 bug.
3 files changed, 16 insertions(+), 3 deletions(-)

M guix/build/download.scm
M guix/cache.scm
M tests/cache.scm
M guix/build/download.scm => guix/build/download.scm +2 -3
@@ 142,9 142,8 @@ Otherwise return STORE-PATH."

(cond-expand
  (guile-2.2
   ;; Guile 2.2.0 to 2.2.2 included has a bug whereby 'time-monotonic' objects
   ;; have seconds and nanoseconds swapped (fixed in Guile commit 886ac3e).
   ;; Work around it.
   ;; 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))


M guix/cache.scm => guix/cache.scm +7 -0
@@ 33,6 33,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 (obsolete? date now ttl)
  "Return #t if DATE is obsolete compared to NOW + TTL seconds."
  (time>? (subtract-duration now (make-time time-duration 0 ttl))

M tests/cache.scm => tests/cache.scm +7 -0
@@ 24,6 24,13 @@
  #:use-module ((guix utils) #:select (call-with-temporary-directory))
  #:use-module (ice-9 match))

(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))

(test-begin "cache")

(test-equal "remove-expired-cache-entries"