database: Honor 'SOURCE_DATE_EPOCH'.

* guix/store/database.scm (timestamp): New procedure.
(sqlite-register): Use it as the default for #:time.
(register-items): Likewise for #:registeration-time.
This commit is contained in:
Ludovic Courtès 2020-12-11 15:37:20 +01:00
parent 3169c93903
commit 9e6fe0e08f
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -323,8 +323,19 @@ (define (add-references db referrer references)
(sqlite-fold cons '() stmt))
references)))
(define (timestamp)
"Return a timestamp, either the current time of SOURCE_DATE_EPOCH."
(match (getenv "SOURCE_DATE_EPOCH")
(#f
(current-time time-utc))
((= string->number seconds)
(if seconds
(make-time time-utc 0 seconds)
(current-time time-utc)))))
(define* (sqlite-register db #:key path (references '())
deriver hash nar-size time)
deriver hash nar-size
(time (timestamp)))
"Registers this stuff in DB. PATH is the store item to register and
REFERENCES is the list of store items PATH refers to; DERIVER is the '.drv'
that produced PATH, HASH is the base16-encoded Nix sha256 hash of
@ -337,9 +348,7 @@ (define* (sqlite-register db #:key path (references '())
#:deriver deriver
#:hash hash
#:nar-size nar-size
#:time (time-second
(or time
(current-time time-utc))))))
#:time (time-second time))))
;; Call 'path-id' on each of REFERENCES. This ensures we get a
;; "non-NULL constraint" failure if one of REFERENCES is unregistered.
(add-references db id
@ -388,7 +397,7 @@ (define %epoch
(define* (register-items db items
#:key prefix
registration-time
(registration-time (timestamp))
(log-port (current-error-port)))
"Register all of ITEMS, a list of <store-info> records as returned by
'read-reference-graph', in DB. ITEMS must be in topological order (with