me
/
guix
Archived
1
0
Fork 0

database: Remove 'register-path'.

* guix/store/database.scm (register-path): Remove.
* tests/store-database.scm ("register-path"): Rename to...
("register-items"): ... this, and use 'register-items' instead of
'register-path'.
("register-path, directory"): Rename to...
("register-items, directory"): ... this, and use 'register-items'
instead of 'register-path'.
("register-path with unregistered references"): Rename to...
("sqlite-register with unregistered references"): ... this.
master
Ludovic Courtès 2020-12-11 14:46:20 +01:00
parent 1574bd82bb
commit 3169c93903
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 8 additions and 34 deletions

View File

@ -43,7 +43,6 @@
with-database with-database
path-id path-id
sqlite-register sqlite-register
register-path
register-items register-items
%epoch %epoch
reset-timestamps)) reset-timestamps))
@ -383,32 +382,6 @@ is true."
(chmod file (if (executable-file? file) #o555 #o444))) (chmod file (if (executable-file? file) #o555 #o444)))
(utime file 1 1 0 0))))) (utime file 1 1 0 0)))))
(define* (register-path path
#:key (references '()) deriver prefix
state-directory
(schema (sql-schema)))
"Register PATH as a valid store file, with REFERENCES as its list of
references, and DERIVER as its deriver (.drv that led to it.) If PREFIX is
given, it must be the name of the directory containing the new store to
initialize; if STATE-DIRECTORY is given, it must be a string containing the
absolute file name to the state directory of the store being initialized.
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.
PATH must be protected from GC and locked during execution of this, typically
by adding it as a temp-root."
(define db-file
(store-database-file #:prefix prefix
#:state-directory state-directory))
(parameterize ((sql-schema schema))
(with-database db-file db
(register-items db (list (store-info path deriver references))
#:prefix prefix
#:log-port (%make-void-port "w")))))
(define %epoch (define %epoch
;; When it all began. ;; When it all began.
(make-time time-utc 0 1)) (make-time time-utc 0 1))

View File

@ -20,6 +20,7 @@
#:use-module (guix tests) #:use-module (guix tests)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix store database) #:use-module (guix store database)
#:use-module (guix build store-copy)
#:use-module ((guix utils) #:select (call-with-temporary-output-file)) #:use-module ((guix utils) #:select (call-with-temporary-output-file))
#:use-module ((guix build utils) #:use-module ((guix build utils)
#:select (mkdir-p delete-file-recursively)) #:select (mkdir-p delete-file-recursively))
@ -34,7 +35,7 @@
(test-begin "store-database") (test-begin "store-database")
(test-assert "register-path" (test-assert "register-items"
(let ((file (string-append (%store-prefix) "/" (make-string 32 #\f) (let ((file (string-append (%store-prefix) "/" (make-string 32 #\f)
"-fake"))) "-fake")))
(when (valid-path? %store file) (when (valid-path? %store file)
@ -46,9 +47,8 @@
(call-with-output-file file (call-with-output-file file
(cut display "This is a fake store item.\n" <>)) (cut display "This is a fake store item.\n" <>))
(reset-timestamps file) (reset-timestamps file)
(register-path file (with-database (store-database-file) db
#:references (list ref) (register-items db (list (store-info file drv (list ref)))))
#:deriver drv)
(and (valid-path? %store file) (and (valid-path? %store file)
(equal? (references %store file) (list ref)) (equal? (references %store file) (list ref))
@ -57,7 +57,7 @@
(list (stat:mtime (lstat file)) (list (stat:mtime (lstat file))
(stat:mtime (lstat ref))))))) (stat:mtime (lstat ref)))))))
(test-equal "register-path, directory" (test-equal "register-items, directory"
'(1 1 1) '(1 1 1)
(let ((file (string-append (%store-prefix) "/" (make-string 32 #\f) (let ((file (string-append (%store-prefix) "/" (make-string 32 #\f)
"-fake-directory"))) "-fake-directory")))
@ -70,7 +70,8 @@
(call-with-output-file (string-append file "/a/b") (call-with-output-file (string-append file "/a/b")
(const #t)) (const #t))
(reset-timestamps file) (reset-timestamps file)
(register-path file #:deriver drv) (with-database (store-database-file) db
(register-items db (list (store-info file drv '()))))
(and (valid-path? %store file) (and (valid-path? %store file)
(null? (references %store file)) (null? (references %store file))
@ -102,7 +103,7 @@
(list (path-id db "/gnu/foo") (list (path-id db "/gnu/foo")
(path-id db "/gnu/bar"))))))) (path-id db "/gnu/bar")))))))
(test-assert "register-path with unregistered references" (test-assert "sqlite-register with unregistered references"
;; Make sure we get a "NOT NULL constraint failed: Refs.reference" error ;; Make sure we get a "NOT NULL constraint failed: Refs.reference" error
;; when we try to add references that are not registered yet. Better safe ;; when we try to add references that are not registered yet. Better safe
;; than sorry. ;; than sorry.