summaryrefslogtreecommitdiff
path: root/guix/store.scm
AgeCommit message (Expand)Author
2015-06-19store: Memoize 'add-to-store' based on the result of 'lstat', not 'stat'....* guix/store.scm (add-to-store): Change 'stat' call to 'lstat'. Clarify docstring. Ludovic Courtès
2015-06-06store: Add 'verify-store' RPC....* guix/store.scm (operation-id): Add 'verify-store'. (verify-store): New procedure. (set-build-options): Adjust comment. * tests/store.scm ("verify-store", "verify-store + check-contents"): New tests. Ludovic Courtès
2015-05-26gc: ignore trailing slash or subdirectories for `guix gc -d'...Fixes <http://bugs.gnu.org/19757>. * guix/scripts/gc.scm (guix-gc): Convert paths to direct store paths. * guix/store.scm (direct-store-path): Get rid of subdirectories in store path. * tests/guix-gc.sh: New tests. Co-authored-by: Ludovic Courtès <ludo@gnu.org> Cyrill Schenkel
2015-05-19store: Add 'optimize-store' RPC....* guix/store.scm (operation-id): Add 'optimize-store'. (optimize-store): New procedure. Ludovic Courtès
2015-04-04store: Add query-path-info operation....* guix/store.scm (<path-info>): New record type. (read-path-info): New procedure. (read-arg): Add 'path-info' syntax. (query-path-info): New variable. * tests/store.scm ("query-path-info"): New test. David Thompson
2015-03-22store: Default to a non-empty list of substituters....Fixes <http://bugs.gnu.org/20163>. Reported by Mark H Weaver <mhw@netris.org>. * guix/store.scm (%default-substitute-urls): New variable. (set-build-options): Change default value of #:substitute-urls to %DEFAULT-SUBSTITUTE-URLS. Ludovic Courtès
2015-03-18store: Remove debugging leftover....* guix/store.scm (set-build-options): Remove leftover 'pk' call from 41c45e7. Ludovic Courtès
2015-03-18store: Add preliminary support for client-supplied substitute URLs....* guix/store.scm (set-build-options): Rename #:binary-caches to #:substitute-urls. Actually pass it in 'pairs' under the "substitute-urls" key. * guix/scripts/substitute-binary.scm (%cache-url): Add comment for "untrusted-substitute-urls". Ludovic Courtès
2015-03-05store: Attempt to decode build logs as UTF-8....* guix/serialization.scm (read-maybe-utf8-string): New procedure. * guix/store.scm (process-stderr): Use it for the build log and errors. * tests/store.scm ("current-build-output-port, UTF-8", "current-build-output-port, UTF-8 + garbage"): New tests. Ludovic Courtès
2015-02-12store: Add optional 'references' parameter to 'text-file'....* guix/store.scm (text-file): Add optional 'references' parameter. Pass it to 'add-text-to-store'. * doc/guix.texi (The Store Monad): Adjust accordingly. Ludovic Courtès
2015-02-02store: Remove 'build-derivations'....* guix/store.scm (build-derivations): Remove. * guix/derivations.scm (build-derivations): Write in terms of 'build-things'. * doc/guix.texi (Invoking guix build): Adjust text accordingly. Ludovic Courtès
2015-02-02store: Add 'build-things'....* guix/store.scm (operation-id): Rename 'build-derivations' to 'build-things', as per Nix commit 1aba0bf0. (build-derivations): Rename to... (build-things): ... this. Keep 'build-derivations' as an alias. (build): New procedure. * tests/store.scm ("build-things with output path", "substitute + build-things with output path"): New tests. Ludovic Courtès
2015-01-21store: Change 'run-with-store' to return a single value....* guix/store.scm (run-with-store): Wrap 'run-with-state' in 'call-with-values'. Return only the first value. Ludovic Courtès
2015-01-18store: Change 'store-lower' to preserve the original procedure's documentation....* guix/store.scm (preserve-documentation): New procedure. (store-lift, store-lower): Use it. Ludovic Courtès
2015-01-17store: Make '%store-monad' an alias for '%state-monad'....* guix/store.scm (define-alias): New macro. (%store-monad, store-return, store-bind): Define as aliases of the corresponding %STATE-MONAD part. (store-lift, text-file, interned-file): Return STORE as a second value. (run-with-store): Use 'run-with-state'. * guix/packages.scm (set-guile-for-build, package-file): Return STORE as a second value. * guix/monads.scm: Remove part of the module commentary. Ludovic Courtès
2015-01-17store: Remove unused variable....* guix/store.scm (export-paths): Remove unused variable 's'. Ludovic Courtès
2015-01-17store: Add #:recursive? parameter to 'export-paths'....* guix/store.scm (export-paths): Add #:recursive? parameter and honor it. * tests/store.scm ("export/import incomplete", "export/import recursive"): New tests. Ludovic Courtès
2015-01-14store: Add 'store-lower'....* guix/store.scm (store-lower): New procedure. * tests/store.scm ("store-lower"): New test. Ludovic Courtès
2015-01-14monads: Move '%store-monad' and related procedures where they belong....This turns (guix monads) into a generic module for monads, and moves the store monad and related monadic procedures in their corresponding module. * guix/monads.scm (store-return, store-bind, %store-monad, store-lift, text-file, interned-file, package-file, package->derivation, package->cross-derivation, origin->derivation, imported-modules, compiled, modules, built-derivations, run-with-store): Move to... * guix/store.scm (store-return, store-bind, %store-monad, store-lift, text-file, interned-file): ... here. (%guile-for-build): New variable. (run-with-store): Moved from monads.scm. Remove default value for #:guile-for-build. * guix/packages.scm (default-guile): Export. (set-guile-for-build): New procedure. (package-file, package->derivation, package->cross-derivation, origin->derivation): Moved from monads.scm. * guix/derivations.scm (%guile-for-build): Remove. (imported-modules): Rename to... (%imported-modules): ... this. (compiled-modules): Rename to... (%compiled-modules): ... this. (built-derivations, imported-modules, compiled-modules): New procedures. * gnu/services/avahi.scm, gnu/services/base.scm, gnu/services/dbus.scm, gnu/services/dmd.scm, gnu/services/networking.scm, gnu/services/ssh.scm, gnu/services/xorg.scm, gnu/system/install.scm, gnu/system/linux-initrd.scm, gnu/system/shadow.scm, guix/download.scm, guix/gexp.scm, guix/git-download.scm, guix/profiles.scm, guix/svn-download.scm, tests/monads.scm: Adjust imports accordingly. * guix/monad-repl.scm (default-guile-derivation): New procedure. (store-monad-language, run-in-store): Use it. * build-aux/hydra/gnu-system.scm (qemu-jobs): Add explicit 'set-guile-for-build' call. * guix/scripts/archive.scm (derivation-from-expression): Likewise. * guix/scripts/build.scm (options/resolve-packages): Likewise. * guix/scripts/environment.scm (guix-environment): Likewise. * guix/scripts/system.scm (guix-system): Likewise. * doc/guix.texi (The Store Monad): Adjust module names accordingly. Ludovic Courtès
2014-11-23store: default to serial "scheduler"...* guix/store.scm (set-build-options): exchange default argument values Signed-off-by: Ludovic Courtès <ludo@gnu.org> nebuli
2014-11-04store: Invalidate caches once GC has run....* guix/store.scm (run-gc): Add calls to 'hash-clear!'. * tests/store.scm ("add-text-to-store vs. delete-paths", "add-to-store vs. delete-paths"): New tests. Ludovic Courtès
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