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
parent
1574bd82bb
commit
3169c93903
|
@ -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))
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Reference in New Issue