summaryrefslogtreecommitdiff
path: root/guix/store.scm
AgeCommit message (Expand)Author
2014-10-09Break module cycle involving (guix store) and (guix ui)....Before, there was a cycle along the lines of: (guix store) -> (guix nar) -> (guix ui) -> (guix store) This caused problems, as discussed at: http://lists.gnu.org/archive/html/guix-devel/2014-10/msg00109.html This patch removes cycles in the (guix ...) modules. * guix/nar.scm (&nar-error, &nar-read-error, dump, write-contents, read-contents, %archive-version-1, write-file, restore-file): Move to... * guix/serialization.scm: ... here. * guix/store.scm: Remove dependency on (guix nar). * guix/scripts/hash.scm, guix/scripts/offload.scm, guix/scripts/substitute-binary.scm, tests/nar.scm, tests/store.scm, tests/substitute-binary.scm: Adjust accordingly. Ludovic Courtès
2014-07-18guix-register: Add '--state-directory' parameter....* nix/guix-register/guix-register.cc (GUIX_OPT_STATE_DIRECTORY): New macro. (parse_opt): Honor it. * tests/guix-register.sh: Add test with '--state-directory'. * guix/store.scm (register-path): Add #:state-directory parameter. Ludovic Courtès
2014-05-27store: Work around 'get-bytevector-n' bug that affects 'import-paths'....Fixes <http://bugs.gnu.org/17591>. * guix/store.scm (process-stderr) <%stderr-read>: Use 'get-bytevector-n!' instead of 'get-bytevector-n'. Ludovic Courtès
2014-05-25store: Remove misleading 'setsockopt' call....* guix/store.scm (open-connection): Remove misleading 'setsockopt' call, erroneously introduced in df1fab58. This would actually shrink the receive buffer from 124 KiB to 12 KiB, though it had little impact on performance. Ludovic Courtès
2014-05-21store: Flush the output when the build process emits '\r'....This allows progress reports emitted by 'substitute-binary' to be correctly displayed. * guix/store.scm (%newlines): New variable. (process-stderr) <%stderr-next>: Flush (current-build-output-port) when S contains one of %NEWLINES. Ludovic Courtès
2014-05-18store: Change #:store parameter to #:prefix....* guix/store.scm (register-path): Change #:store to #:prefix. Ludovic Courtès
2014-05-17store: Add #:store parameter to 'register-path'....* guix/store.scm (register-path): Add #:store and honor it. Ludovic Courtès
2014-04-28store: (direct-store-path? (%store-prefix)) returns #f....* guix/store.scm (direct-store-path?): Return #f if PATH is (%store-prefix). * tests/store.scm ("direct-store-path?"): Add test. Ludovic Courtès
2014-04-12store: Add 'add-permanent-root' and 'remove-permanent-root'....* guix/store.scm (add-indirect-root): Improve docstring. (%gc-roots-directory): New variable. (add-permanent-root, remove-permanent-root): New procedures. * tests/store.scm ("permanent root"): New test. Ludovic Courtès
2014-03-14store: Add 'hash-part->path'....* guix/store.scm (hash-part->path): New procedure. * tests/store.scm ("hash-part->path"): New test. Ludovic Courtès
2014-03-09store: Add #:timeout build option....* guix/serialization.scm (write-string-pairs): New procedure. * guix/store.scm (write-arg): Add 'string-pairs' case. (set-build-options): Add 'timeout' keyword parameter. Honor it. * tests/derivations.scm ("build-expression->derivation and timeout"): New test. Ludovic Courtès
2014-03-09build: Change state and log directories to $localstatedir/.../guix....* daemon.am (libstore_a_CPPFLAGS): Change /nix to /guix. * guix/config.scm.in (%state-directory): Likewise. * guix/store.scm (log-file): Likewise. Ludovic Courtès
2014-03-07store: 'export-paths' doesn't export references of the given files....This fixes a regression introduced in 99fbddf9a623757e39d88bfb431f8f7d6f24b75b ("store: Change 'export-paths' to always export in topological order.") * guix/store.scm (export-paths): Define 'ordered' variable. Iterate over it. * tests/store.scm ("export/import paths, ensure topological order"): Add 'file0'. Adjust accordingly. Ludovic Courtès
2014-02-27store: Use 'when' instead of 'if' in effectful context....* guix/store.scm (set-build-options): Use 'when' instead of 'if'. Ludovic Courtès
2014-02-12store: Add comments for the stracer....* guix/store.scm (%worker-magic-1, %worker-magic-2): Add comments. Ludovic Courtès
2014-02-10store: Change 'export-paths' to always export in topological order....* guix/store.scm (export-paths): Pass PATHS through 'topologically-sorted' before iterating. * tests/store.scm ("export/import paths, ensure topological order"): New test. Ludovic Courtès
2014-01-24store: Add 'topologically-sorted'....* guix/store.scm (topologically-sorted): New procedure. * tests/store.scm ("topologically-sorted, one item", "topologically-sorted, several items", "topologically-sorted, more difficult"): New tests. Ludovic Courtès
2014-01-24store: Add 'with-store' convenience macro....* guix/store.scm (with-store): New macro. Ludovic Courtès
2014-01-24store: Add 'register-path' procedure....* guix/store.scm (register-path): New procedure. * tests/store.scm ("register-path"): New test. * guix/config.scm.in (%guix-register-program): New variable. * configure.ac: Compute and substitute 'guix_sbindir'. Compute 'guix_prefix'. * pre-inst-env.in: Define 'GUIX_REGISTER'. Ludovic Courtès
2014-01-24store: Add comments for the %stderr constants....* guix/store.scm (process-stderr): Add comments for the various constants, to help when stracing. Ludovic Courtès
2014-01-08config: '%store-directory' always honors $NIX_STORE_DIR....* guix/config.scm.in (%store-directory): Honor $NIX_STORE_DIR. * guix/store.scm (%store-prefix): Use %store-directory directly. Ludovic Courtès
2014-01-08config: '%state-directory' always honors $NIX_STATE_DIR....* guix/config.scm.in (%state-directory): Honor $NIX_STATE_DIR. * guix/scripts/package.scm (%profile-directory): Use %state-directory directly. * guix/store.scm (%default-socket-path, log-file): Likewise. Ludovic Courtès
2014-01-08store: Fix 'log-file' to support uncompressed logs....* guix/store.scm (log-file): Report the file without '.bz2' if it exists. Ludovic Courtès
2013-12-20daemon: Implement signed archive import/export....* guix/scripts/authenticate.scm, nix/scripts/guix-authenticate.in, tests/signing-key.pub, tests/signing-key.sec: New files. * po/POTFILES.in: Add 'guix/scripts/authenticate.scm'. * guix/store.scm (dump-port): New procedure. (process-stderr): Add 'user-port' optional parameter. Handle the %STDERR-WRITE and %STDERR-READ cases as expected. (import-paths, export-path, export-paths): New procedures. * tests/store.scm ("export/import several paths", "import corrupt path"): New tests. * Makefile.am (MODULES): Add 'guix/scripts/authenticate.scm'. (EXTRA_DIST): Add 'tests/signing-key.{pub,sec}'. * daemon.am (libstore_a_CPPFLAGS)[-DNIX_CONF_DIR]: Change 'NIX_CONF_DIR' to .../guix. Change 'OPENSSL_PATH' to 'guix-authenticate'. * config-daemon.ac: Instantiate 'nix/scripts/guix-authenticate'. * nix/nix-daemon/guix-daemon.cc (main): Augment $PATH to include 'settings.nixLibexecDir'. * test-env.in: Export 'NIX_CONF_DIR' and 'NIX_LIBEXEC_DIR'. Populate $NIX_CONF_DIR. Ludovic Courtès
2013-12-11store: Optimize 'store-path-package-name' and 'store-path-hash-part'....* guix/store.scm (store-regexp*): New procedure. (store-path-package-name, store-path-hash-part): Use it. Ludovic Courtès
2013-11-13store: Make 'direct-store-path?' public....* guix/store.scm (direct-store-path?): New procedure. * guix/derivations.scm (derivation)[direct-store-path?]: Remove. * tests/store.scm ("direct-store-path?"): New test. Ludovic Courtès
2013-11-12store: Add 'log-file' procedure....* guix/store.scm (log-file): New procedure. * tests/store.scm ("log-file, derivation", "log-file, output file name"): New tests. Ludovic Courtès
2013-09-11store: The 'references' parameter of 'add-text-to-store' is now optional....* guix/store.scm (add-text-to-store): Make 'references' optional. * tests/store.scm ("dead-paths", "references"): Use 'add-text-to-store' with no optional argument. * doc/guix.texi (The Store): Adjust accordingly. Ludovic Courtès
2013-09-02store: Add a printer for <nix-server>....* guix/store.scm (<nix-server>): Set a printer. Ludovic Courtès
2013-07-04store: Deal with unsupported `setsockopt' operation on GNU/Hurd....* guix/store.scm (open-connection): Silently ignore ENOPROTOOPT on `setsockopt' calls, for the sake of GNU/Hurd. Reported by Matthew Lien <bluet@bluet.org> at <http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00020.html>. Ludovic Courtès
2013-06-13store: Add `requisites'....* guix/store.scm (fold-path, requisites): New procedures. * tests/store.scm ("requisites"): New test. Ludovic Courtès
2013-05-29store: Test the `fallback?' store option....* guix/store.scm (set-build-options): Rename #:try-fallback? to #:fallback?. * tests/store.scm ("substitute --fallback"): New test. Ludovic Courtès
2013-04-20daemon: Gracefully handle cases where the daemon does not return a status code....* guix/store.scm (process-stderr): Check for EOF before doing (read-int p). Ludovic Courtès
2013-04-12store: Remove unneeded and conflicting import....* guix/store.scm: Remove unneeded (ice-9 rdelim) import. In Guile 2.0.9 that module exports `read-string', which conflicts with that of (guix serialization). Ludovic Courtès
2013-04-04Add (guix nar) and (guix serialization)....* guix/store.scm (write-int, read-int, write-long-long, read-long-long, write-padding, write-string, read-string, read-latin1-string, write-string-list, read-string-list, write-store-path, read-store-path, write-store-path-list, read-store-path-list): Move to serialization.scm. (write-contents, write-file): Move to nar.scm. * guix/nar.scm, guix/serialization.scm: New files. * Makefile.am (MODULES): Add them. Ludovic Courtès
2013-04-03Add preliminary binary substituter....* guix/scripts/substitute-binary.scm: New file. * Makefile.am (MODULES): Add it. * nix/scripts/substitute-binary.in: New file. * config-daemon.ac: Produce nix/scripts/substitute-binary. * daemon.am (nodist_pkglibexec_SCRIPTS): Add nix/scripts/substitute-binary. * guix/store.scm (substitutable-path-info): Use the `query-substitutable-path-infos' RPC. * nix/nix-daemon/guix-daemon.cc (main): Honor `NIX_SUBSTITUTERS'. * pre-inst-env.in: Set `NIX_SUBSTITUTERS'. * test-env.in: Leave `NIX_SUBSTITUTERS' unchanged. Set `GUIX_BINARY_SUBSTITUTE_URL, and create $NIX_STATE_DIR/substituter-data. Run `guix-daemon' within `./pre-inst-env'. * tests/store.scm ("substitute query"): New test. Ludovic Courtès
2013-04-01store: Add `store-path-hash-part'....* guix/store.scm (store-path-hash-part): New procedure. * tests/store.scm ("store-path-hash-part", "store-path-hash-part #f"): New tests. Ludovic Courtès
2013-03-22store: Really disable file name canonicalization for derivation inputs....* guix/store.scm (write-contents)[call-with-binary-input-file]: Set %FILE-PORT-NAME-CANONICALIZATION to #f. * gnu/packages.scm (search-patch, search-bootstrap-binary): Leave %FILE-PORT-NAME-CANONICALIZATION unchanged. This reverts 9776ebb. Ludovic Courtès
2013-03-22store: Use `sendfile' when available....* guix/store.scm (write-contents)[call-with-binary-input-file]: New procedure. Use `sendfile' instead of `dump' when available. Add `size' parameter. (write-file): Update caller. Ludovic Courtès
2013-03-07ui: Gracefully report failures to connect to the daemon....* guix/store.scm (&nix-connection-error): New condition type. (open-connection): Translate `system-error' during the `connect' call into `&nix-connection-error'. * guix/ui.scm (call-with-error-handling): Add case for `nix-connection-error?'. * guix/scripts/package.scm (guix-package): Move `open-connection' call within `with-error-handling'. * guix/scripts/pull.scm (guix-pull): Likewise. * guix/scripts/download.scm (guix-download): Move body within `with-error-handling'. Ludovic Courtès
2013-02-27store: Add queries for references & co....* guix/store.scm (operation-id)[query-valid-derivers]: New value. (references, referrers, valid-derivers, query-derivation-outputs): New procedures. * tests/store.scm ("references", "derivers"): New tests. Ludovic Courtès
2013-02-18store: Add the `%daemon-socket-file' parameter....* guix/store.scm (%daemon-socket-file): New variable. (open-connection): Use it as the default value for FILE. Ludovic Courtès
2013-02-04store: Add substitute-related procedures....* guix/store.scm (has-substitutes?, substitutable-paths, read-substitutable-path-list, substitutable-path-info): New procedures. (<substitutable>): New record type. (read-arg): Add `substitutable-path-info'. Change `hash' pattern variable to `base16' literal. * tests/store.scm ("no substitutes"): New test. Ludovic Courtès
2013-02-04store: Update to protocol 1.12....* guix/store.scm (%protocol-version): Bump. (operation-id): Comment out `query-substitutable-path-info'. Rename `query-valid-paths' to `query-all-valid-paths'. Add `query-path-from-hash-part', `query-substitutable-path-infos', `query-valid-paths', and `query-substitutable-paths'. (set-build-options): Add `binary-caches' keyword parameter. When using a server >= 1.12, send the list of binary caches. (query-path-hash): Use the `store-path' type, for clarity. Ludovic Courtès
2013-02-04store: Write string length as a 32-bit integer....* guix/store.scm (write-string): Write L as a 32-bit integer. Bug introduced in 82c38fe64c84fc3febcc5c5aa7fe86454ccaf456 ("store: Micro-optimize `write-string'.") Ludovic Courtès
2013-01-31store: Don't expect build logs to be UTF-8-encoded....* guix/store.scm (read-latin1-string): New procedure. (process-stderr): Use it instead of `read-string'. Reported by Andreas Enge <andreas@enge.fr>. Ludovic Courtès
2013-01-30store: Slightly improve memoization hashing....* guix/store.scm (open-connection): Call `make-hash-table' with 100. (add-text-to-store): Move TEXT first in ARGS, for better `hash' results. (add-to-store): Likewise, move ST first. Ludovic Courtès
2013-01-30store: Remove the `fixed?' parameter from `add-to-store'....* guix/store.scm (add-to-store): Remove the `fixed?' parameter from the public interface. * gnu/packages/bootstrap.scm, guix-download.in, guix/derivations.scm, guix/packages.scm, tests/derivations.scm: Update all callers accordingly. Ludovic Courtès
2013-01-30store: Avoid use of `set!'....* guix/store.scm (operation): New macro. (define-operation): Define in terms of `operation'. (add-text-to-store): Define using `operation', and remove now unnecessary `set!'. (add-to-store): Likewise. (add-text-to-store/cached, add-to-store/cached): Remove. Ludovic Courtès
2013-01-30store: Micro-optimize `write-string'....* guix/store.scm (write-string): Optimize to write the length, contents, and padding all at once. This yields a 2% improvement on the execution time of "guix-build gdb". Ludovic Courtès