aboutsummaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-11-13 09:46:40 +0100
committerLudovic Courtès <ludo@gnu.org>2018-11-13 14:59:45 +0100
commit1afe1985f5bffef76872f4c9e87115b46a4a3d47 (patch)
tree79bd452895b477a5ec3ec3b5aa12c763cf7160cf /guix
parent155956449af6d42cdf739b0922b34bdaae639aa7 (diff)
downloadgnu-guix-1afe1985f5bffef76872f4c9e87115b46a4a3d47.tar
gnu-guix-1afe1985f5bffef76872f4c9e87115b46a4a3d47.tar.gz
nar: Access the database instead of connecting to the daemon.
* guix/store/database.scm (%default-database-file): New variable. (path-id): Export. * guix/nar.scm (finalize-store-file): Use 'with-database' instead of 'with-store', and use 'path-id' instead of 'valid-path?'.
Diffstat (limited to 'guix')
-rw-r--r--guix/nar.scm13
-rw-r--r--guix/store/database.scm6
2 files changed, 13 insertions, 6 deletions
diff --git a/guix/nar.scm b/guix/nar.scm
index 0495b4a40c..8894f10d2b 100644
--- a/guix/nar.scm
+++ b/guix/nar.scm
@@ -22,8 +22,12 @@
#:use-module (guix build syscalls)
#:use-module ((guix build utils)
#:select (delete-file-recursively with-directory-excursion))
+
+ ;; XXX: Eventually we should use (guix store database) exclusively, and not
+ ;; (guix store) since this is "daemon-side" code.
#:use-module (guix store)
#:use-module (guix store database)
+
#:use-module (guix ui) ; for '_'
#:use-module (gcrypt hash)
#:use-module (guix pki)
@@ -88,15 +92,12 @@
REFERENCES and DERIVER. When LOCK? is true, acquire exclusive locks on TARGET
before attempting to register it; otherwise, assume TARGET's locks are already
held."
-
- ;; XXX: Currently we have to call out to the daemon to check whether TARGET
- ;; is valid.
- (with-store store
- (unless (valid-path? store target)
+ (with-database %default-database-file db
+ (unless (path-id db target)
(when lock?
(lock-store-file target))
- (unless (valid-path? store target)
+ (unless (path-id db target)
;; If FILE already exists, delete it (it's invalid anyway.)
(when (file-exists? target)
(delete-file-recursively target))
diff --git a/guix/store/database.scm b/guix/store/database.scm
index 341276bc30..38796910da 100644
--- a/guix/store/database.scm
+++ b/guix/store/database.scm
@@ -36,7 +36,9 @@
#:use-module (ice-9 match)
#:use-module (system foreign)
#:export (sql-schema
+ %default-database-file
with-database
+ path-id
sqlite-register
register-path
register-items
@@ -85,6 +87,10 @@ create it and initialize it as a new database."
(lambda ()
(sqlite-close db)))))
+(define %default-database-file
+ ;; Default location of the store database.
+ (string-append %store-database-directory "/db.sqlite"))
+
(define-syntax-rule (with-database file db exp ...)
"Open DB from FILE and close it when the dynamic extent of EXP... is left.
If FILE doesn't exist, create it and initialize it as a new database."