summaryrefslogtreecommitdiff
path: root/guix/store
Commit message (Collapse)AuthorAge
...
* database: 'reset-timestamps' now correctly handles symlinks.Ludovic Courtès2018-07-03
| | | | | * guix/store/database.scm (reset-timestamps): Use 'utime' with AT_SYMLINK_NOFOLLOW for symlinks.
* deduplication: Remove 'false-if-system-error', now unused.Ludovic Courtès2018-07-03
| | | | * guix/store/deduplication.scm (false-if-system-error): Remove.
* deduplication: Place link files under /gnu/store/.links.Ludovic Courtès2018-07-03
| | | | | | | | | | | | Previously they'd always be placed next to TO-REPLACE, which would lead to EPERM in some cases. * guix/store/deduplication.scm (replace-with-link): Add #:swap-directory parameter and honor it. Add call to 'make-file-writable'. Catch 'system-error' around 'rename-file'. (deduplicate): Pass #:swap-directory and remove uses of 'false-if-system-error'. * tests/store-deduplication.scm ("deduplicate"): Add 'chmod' call.
* deduplication: Fix incorrect use of 'throw'.Ludovic Courtès2018-07-03
| | | | | * guix/store/deduplication.scm (get-temp-link): In handler, fix call to 'throw'.
* database: Allow for deterministic database construction.Ludovic Courtès2018-06-14
| | | | | | | | | | Fixes <https://bugs.gnu.org/21073>. * guix/store/database.scm (sqlite-register): Add #:time. (%epoch): New variable. (register-items): Add #:registration-time. Pass #:time to 'sqlite-register'. * gnu/build/install.scm (register-closure): Pass #:registration-time.
* install: Use 'reset-timestamps' from (guix store database).Ludovic Courtès2018-06-14
| | | | | * gnu/build/install.scm (reset-timestamps): Remove. * gnu/build/vm.scm: Use 'reset-timestamps' from (guix store database).
* database: Add 'register-items'.Ludovic Courtès2018-06-14
| | | | | | | | * guix/build/store-copy.scm (store-info): Export. * guix/store/database.scm (register-items): New procedure. (register-path): Implement in terms of 'register-items'. * gnu/build/install.scm (register-closure): Use 'register-items' instead of 'for-each' and 'register-path'.
* database: 'sqlite-register' takes a database, not a file name.Ludovic Courtès2018-06-14
| | | | | | | | | * guix/store/database.scm (sqlite-register): Remove #:db-file and add 'db' parameter. Remove #:schema and 'parameterize'. (register-path): Wrap 'sqlite-register' call in 'with-database' and in 'parameterize'. * tests/store-database.scm ("new database") ("register-path with unregistered references"): Adjust accordingly.
* database: 'reset-timestamps' sets file permissions as well.Ludovic Courtès2018-06-14
| | | | * guix/store/database.scm (reset-timestamps): Add 'chmod' calls.
* database: Replace existing entries in Refs.Ludovic Courtès2018-06-14
| | | | * guix/store/database.scm (add-reference-sql): Add "OR REPLACE".
* database: Add #:reset-timestamps? to 'register-path'.Ludovic Courtès2018-06-14
| | | | | * guix/store/database.scm (register-path): Add #:reset-timestamps? and honor it.
* database: Remove extra SQL parameter in 'update-or-insert'.Ludovic Courtès2018-06-14
| | | | | * guix/store/database.scm (update-or-insert): Remove extra #:path parameter.
* deduplicate: Fix a couple of thinkos.Ludovic Courtès2018-06-14
| | | | | | | | | | * guix/store/deduplication.scm (get-temp-link): Turn 'args' in the 'catch' handler into a rest argument. (deduplicate): Use 'lstat' instead of 'file-is-directory?' to properly handle symlinks. When iterating over the result of 'scandir', exclude the ".links" sub-directory. * tests/store-deduplication.scm ("deduplicate"): Create sub-directories and call 'deduplicate' directly on STORE.
* database: 'register-path' creates the database directory if needed.Ludovic Courtès2018-06-14
| | | | * guix/store/database.scm (register-path): Call 'mkdir-p'.
* database: Provide a way to specify the schema location.Ludovic Courtès2018-06-14
| | | | | | * guix/store/database.scm (sqlite-register): Add #:schema. Parameterize 'sql-schema' based on this. (register-path): Add #:schema and pass it to 'sqlite-register'.
* database: Fail registration when encountering unregistered references.Ludovic Courtès2018-06-14
| | | | | | | | | * guix/store/database.scm (add-reference-sql): Remove nested SELECT. (add-references): Expect REFERENCES to be a list of ids. (sqlite-register): Call 'path-id' for each of REFERENCES and pass it to 'add-references'. * tests/store-database.scm ("register-path with unregistered references"): New test.
* database: 'with-database' can now initialize new databases.Ludovic Courtès2018-06-14
| | | | | | | | | | | | | * nix/libstore/schema.sql: Rename to... * guix/store/schema.sql: ... this. * Makefile.am (nobase_dist_guilemodule_DATA): Add it. * nix/local.mk (%D%/libstore/schema.sql.hh): Adjust accordingly. * guix/store/database.scm (sql-schema): New variable. (sqlite-exec, initialize-database, call-with-database): New procedures. (with-database): Rewrite in terms of 'call-with-database'. * tests/store-database.scm ("new database"): New test. * guix/self.scm (compiled-guix)[*core-modules*]: Add 'schema.sql' to #:extra-files.
* Add (guix store deduplication).Caleb Ristvedt2018-06-01
| | | | | | | | | | | | * guix/store/database.scm (register-path): Add #:deduplicate? and call 'deduplicate' when it's true. (counting-wrapper-port, nar-sha256): Move to... * guix/store/deduplication.scm: ... here. New file. * tests/store-deduplication.scm: New file. * Makefile.am (STORE_MODULES): Add deduplication.scm. (SCM_TESTS) [HAVE_GUILE_SQLITE3]: Add store-deduplication.scm. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* database: 'register-path' resets timestamps.Ludovic Courtès2018-06-01
| | | | | * guix/store/database.scm (reset-timestamps): New procedure. (register-path): Use it.
* Add (gnu store database).Caleb Ristvedt2018-06-01
| | | | | | | | | | | * guix/config.scm.in (%store-database-directory): New variable. * guix/store/database.scm: New file. * tests/store-database.scm: New file. * Makefile.am (STORE_MODULES): New variable. (MODULES, MODULES_NOT_COMPILED): Adjust accordingly. (SCM_TESTS) [HAVE_GUILE_SQLITE3]: Add tests/store-database.scm. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* store: Support 'ssh://' URIs in 'GUIX_DAEMON_SOCKET'.Ludovic Courtès2017-04-21
This allows 'guix' commands to talk to a remote store over SSH. * guix/store.scm (connect-to-daemon)[connect]: Call 'resolve-interface' for unknown URI schemes. * guix/store/ssh.scm: New file. * Makefile.am (MODULES): Add it. * doc/guix.texi (The Store): Document it. Mark remote access as experimental.