[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
09/19: guix: register-path: return #t on success.
From: |
guix-commits |
Subject: |
09/19: guix: register-path: return #t on success. |
Date: |
Tue, 29 Jan 2019 14:19:50 -0500 (EST) |
reepca pushed a commit to branch guile-daemon
in repository guix.
commit 8f7e8587f6ca341cbb18a0559419ff1766bf0f7d
Author: Caleb Ristvedt <address@hidden>
Date: Thu Jun 8 02:56:37 2017 -0500
guix: register-path: return #t on success.
* guix/store.scm: (register-path): return #t on success.
---
guix/store.scm | 96 ++++++++++++++++++++++++++++++----------------------------
1 file changed, 50 insertions(+), 46 deletions(-)
diff --git a/guix/store.scm b/guix/store.scm
index bc0a057..bd92d89 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -1592,9 +1592,9 @@ future duplicates can hardlink to it."
(link path links-path))))
;; TODO: Handle databases not existing yet (what should the default behavior
-;; be? Figuring out how the C++ stuff currently does it sounds like a lot of
-;; grepping for global variables...). Also, return #t on success like the
-;; documentation says we should.
+;; be? The C++ version checks for a number in the file "schema" in the
+;; database directory and compares it to a constant, and uses that to decide
+;; whether to "upgrade" or initialize the database).
(define* (register-path path
#:key (references '()) deriver prefix state-directory)
@@ -1612,49 +1612,53 @@ Return #t on success.
Use with care as it directly modifies the store! This is primarily meant to
be used internally by the daemon's build hook."
- (let* ((db-dir (cond
- (state-directory
- (string-append state-directory "/db"))
- (prefix
- ;; If prefix is specified, the value of NIX_STATE_DIR
- ;; (which affects %state-directory) isn't supposed to
- ;; affect db-dir, only the compile-time-customized
- ;; default should.
- (string-append prefix %localstatedir "/guix/db"))
- (else
- %store-database-directory)))
- (store-dir (if prefix
- ;; same situation as above
- (string-append prefix %storedir)
- %store-directory))
- (to-register (if prefix
- (string-append %storedir "/" (basename path))
- ;; note: we assume here that if path is, for
- ;; example, /foo/bar/gnu/store/thing.txt and prefix
- ;; isn't given, then an environment variable has
- ;; been used to change the store directory to
- ;; /foo/bar/gnu/store, since otherwise real-path
- ;; would end up being /gnu/store/thing.txt, which is
- ;; probably not the right file in this case.
- path))
- (real-path (string-append store-dir "/" (basename path))))
- (let-values (((hash nar-size)
- (nar-sha256 real-path)))
- (sqlite-register
- #:dbpath (string-append db-dir "/db.sqlite")
- #:path to-register
- #:references references
- #:deriver deriver
- #:hash (string-append "sha256:"
- (bytevector->base16-string hash))
- #:nar-size nar-size)
- ;; reset-timestamps prints a message on each invocation that we probably
- ;; don't want.
- (with-output-to-port
- (%make-void-port "w")
- (lambda ()
- (reset-timestamps real-path)))
- (deduplicate real-path store-dir hash))))
+ (false-if-exception
+ (let* ((db-dir (cond
+ (state-directory
+ (string-append state-directory "/db"))
+ (prefix
+ ;; If prefix is specified, the value of NIX_STATE_DIR
+ ;; (which affects %state-directory) isn't supposed to
+ ;; affect db-dir, only the compile-time-customized
+ ;; default should.
+ (string-append prefix %localstatedir "/guix/db"))
+ (else
+ %store-database-directory)))
+ (store-dir (if prefix
+ ;; same situation as above
+ (string-append prefix %storedir)
+ %store-directory))
+ (to-register (if prefix
+ (string-append %storedir "/" (basename path))
+ ;; note: we assume here that if path is, for
+ ;; example, /foo/bar/gnu/store/thing.txt and prefix
+ ;; isn't given, then an environment variable has
+ ;; been used to change the store directory to
+ ;; /foo/bar/gnu/store, since otherwise real-path
+ ;; would end up being /gnu/store/thing.txt, which is
+ ;; probably not the right file in this case.
+ path))
+ (real-path (string-append store-dir "/" (basename path))))
+ (let-values (((hash nar-size)
+ (nar-sha256 real-path)))
+ (sqlite-register
+ #:dbpath (string-append db-dir "/db.sqlite")
+ #:path to-register
+ #:references references
+ #:deriver deriver
+ #:hash (string-append "sha256:"
+ (bytevector->base16-string hash))
+ #:nar-size nar-size)
+ ;; reset-timestamps prints a message on each invocation that we probably
+ ;; don't want.
+ (with-output-to-port
+ (%make-void-port "w")
+ (lambda ()
+ (reset-timestamps real-path)))
+ (deduplicate real-path store-dir hash)
+ ;; If we've made it this far without an exception, I guess we've
+ ;; probably succeeded?
+ #t))))
;;;
- branch guile-daemon created (now 10b0562), guix-commits, 2019/01/29
- 07/19: guix: register-path: reset timestamps after registering., guix-commits, 2019/01/29
- 01/19: patches: honor NIX_STORE in site.py., guix-commits, 2019/01/29
- 04/19: .dir-locals.el: properly indent sql macros., guix-commits, 2019/01/29
- 08/19: guix: register-path: do deduplication., guix-commits, 2019/01/29
- 12/19: linux-container: new use-output argument., guix-commits, 2019/01/29
- 02/19: guix: register-path: Implement prototype in scheme., guix-commits, 2019/01/29
- 05/19: guix: sql.scm: split into generic and store-specific parts., guix-commits, 2019/01/29
- 09/19: guix: register-path: return #t on success.,
guix-commits <=
- 03/19: guix: register-path: Honor environment variables., guix-commits, 2019/01/29
- 06/19: guix: register-path: use new %store-database-directory, guix-commits, 2019/01/29
- 10/19: guix: register-path: use new %store-database-directory, guix-commits, 2019/01/29
- 16/19: build-derivations: Leaked environment variables more robust., guix-commits, 2019/01/29
- 19/19: gnu: linux-container: Make it more suitable for derivation-building., guix-commits, 2019/01/29
- 17/19: guix: store: Make register-items transactional, register drv outputs, guix-commits, 2019/01/29
- 14/19: build-derivations: initial build-group support, guix-commits, 2019/01/29
- 15/19: linux-container: don't include /dev/ptmx or /dev/pts from host., guix-commits, 2019/01/29
- 13/19: build-derivations: use call-with-container, guix-commits, 2019/01/29
- 18/19: guix: store: Adapt to using register-items instead of register-path., guix-commits, 2019/01/29