diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-12-11 15:37:20 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-12-15 17:32:11 +0100 |
commit | 9e6fe0e08fda67ab298ca33ef00ffbf078ce4dd9 (patch) | |
tree | f26933efdc8a2cc7dd055c6ee29c751943af2e50 | |
parent | 3169c93903c20cea000335d59560eac7f28e8f92 (diff) |
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.
-rw-r--r-- | guix/store/database.scm | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/guix/store/database.scm b/guix/store/database.scm index 4579b05261..0a84bbddb9 100644 --- a/guix/store/database.scm +++ b/guix/store/database.scm @@ -323,8 +323,19 @@ ids of items referred to." (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 @@ Every store item in REFERENCES must already be registered." #: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 @@ is true." (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 |