summary refs log tree commit diff
path: root/nix
AgeCommit message (Collapse)Author
2014-08-25guix-register: By default, attempt to deduplicate registered items.Ludovic Courtès
* nix/guix-register/guix-register.cc (GUIX_OPT_DEDUPLICATE): New macro. (options): Add --no-deduplication. (deduplication): New variable. (parse_opt): Handle GUIX_OPT_DEDUPLICATE. (register_validity): Add 'optimize' parameter and honor it. (main): Move 'store' instanatiation after 'settings.nixStore' assignment. * tests/guix-register.sh: Add test for deduplication. * guix/nar.scm (finalize-store-file): Update comment above 'register-path' call.
2014-07-18guix-register: Add '--state-directory' parameter.Ludovic Courtès
* 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.
2014-06-29guix-register: Add explicit libgcrypt initialization.Ludovic Courtès
* nix/guix-register/guix-register.cc (main): Add calls to 'gcry_check_version' and 'gcry_control', to appease libgcrypt.
2014-05-16list-runtime-roots: Don't display a backtrace on 2.0.5 when lsof is lacking.Ludovic Courtès
* nix/scripts/list-runtime-roots.in (lsof-roots): Fix typo in 'catch' tag. Add 'parent' variable. Wrap 'open-pipe*' call in 'catch'. Reported by Andreas Enge <andreas@enge.fr>.
2014-04-09daemon: Don't abort when $PATH is undefined.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Check whether getenv ("PATH") returns NULL before blindly initializing 'search_path'. Before that 'guix-daemon' would abort when run in an environment where 'PATH' is undefined.
2014-03-27daemon: Clear $NIX_SUBSTITUTERS when passed '--no-substitutes'.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): When --no-substitutes is used, clear NIX_SUBSTITUTERS. Before that, and after 89faa5c75cb3a419c6d02c51f56955275b7ae351, '--no-substitutes' would lead to attempts to use 'download-using-manifests.pl', which in practice would gracelessly fail.
2014-03-27daemon: Change some options via 'settings.set'.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (parse_opt): Use 'settings.set' instead of direct field access for 'buildCores', 'maxBuildJobs', and 'useSubstitutes'. (main): Call 'settings.update' after 'argp_parse'.
2014-03-20daemon: Really override the substituters setting.Ludovic Courtès
Reported by Andreas Enge <andreas@enge.fr>: <https://lists.gnu.org/archive/html/guix-devel/2014-03/msg00211.html>. * nix/nix-daemon/guix-daemon.cc (main): Set the 'NIX_SUBSTITUTERS' env. var. Leave 'settings.substituters' unchanged.
2014-02-06daemon: Add '--gc-keep-outputs' and '--gc-keep-derivations'.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_GC_KEEP_OUTPUTS, GUIX_OPT_GC_KEEP_DERIVATIONS): New macros. (options): Add 'gc-keep-outputs' and 'gc-keep-derivations'. (string_to_bool): New function. (parse_opt): Honor GUIX_OPT_GC_KEEP_DERIVATIONS and GUIX_OPT_GC_KEEP_OUTPUTS. * doc/guix.texi (Invoking guix-daemon): Document --gc-keep-outputs and --gc-keep-derivations.
2014-01-24Add 'guix offload' as a daemon build hook.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_NO_BUILD_HOOK): New macro. (options): Add '--no-build-hook'. (parse_opt): Handle it. (main)[HAVE_DAEMON_OFFLOAD_HOOK]: Set 'useBuildHook' by default. Set $NIX_BUILD_HOOK to our offload hook unless otherwise specified. [!HAVE_DAEMON_OFFLOAD_HOOK]: Clear 'useBuildHook'. * pre-inst-env.in: Set and export NIX_BUILD_HOOK. * nix/scripts/offload.in, guix/scripts/offload.scm: New files. * guix/ui.scm (show-guix-help)[internal?]: Add "offload". * config-daemon.ac: Call 'GUIX_CHECK_UNBUFFERED_CBIP'. Instantiate 'nix/scripts/offload'. Set 'BUILD_DAEMON_OFFLOAD' conditional, and optionally define 'HAVE_DEAMON_OFFLOAD_HOOK' cpp macro. * daemon.am (nodist_pkglibexec_SCRIPTS)[BUILD_DAEMON_OFFLOAD]: Add it. * Makefile.am (MODULES)[BUILD_DAEMON_OFFLOAD]: Add 'guix/scripts/offload.scm'. (EXTRA_DIST)[!BUILD_DAEMON_OFFLOAD]: Likewise. * m4/guix.m4 (GUIX_CHECK_UNBUFFERED_CBIP): New macro. * doc/guix.texi (Setting Up the Daemon): Move most of the body to... (Build Environment Setup): ... this. New subsection. (Daemon Offload Setup): New subsection.
2014-01-24guix-register: Support registration in the current store, without '--prefix'.Ludovic Courtès
* nix/guix-register/guix-register.cc (register_validity): Leave 'info.path' unmodified when PREFIX is empty. (main): Call 'settings.processEnvironment' early on. Leave 'settings.nixStore' unmodified when PREFIX is empty.
2013-12-20daemon: Implement signed archive import/export.Ludovic Courtès
* 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.
2013-12-19sync-with-upstream: Work around limitation of dash.Ludovic Courtès
Reported by Andreas Enge <andreas@enge.fr>. * nix/sync-with-upstream: Expand use of {cc,hh}, to placate dash.
2013-12-19daemon: Fix 'HashSink::currentHash()'.Ludovic Courtès
Before that, calls to 'HashSink::currentHash()' would eventually lead to a segfault because the underlying gcrypt handle has been closed. (Note that this method is only used via 'importPaths' and 'exportPath', though.) * nix/libutil/gcrypt-hash.hh (struct guix_hash_context): Add a constructor and a copy constructor; move out of 'extern "C"'. * nix/libutil/gcrypt-hash.cc (guix_hash_final): Clear 'md_handle' upon exit. * nix/sync-with-upstream (top_srcdir): Change hash.{cc,hh} to read 'struct Ctx' instead of 'union Ctx'.
2013-12-19daemon: Add libgcrypt call to state that the initialization is over.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Add 'gcry_control' call.
2013-10-29list-runtime-roots: List files referenced by environment variables.Ludovic Courtès
Inspired by <https://github.com/NixOS/nix/compare/772b70952f75...4ddd077bfa9a>. * nix/scripts/list-runtime-roots.in (%store-directory): New variable. (proc-environ-roots): New procedure. (<top-level>): Use it.
2013-10-10daemon: Set the umask to 022 when starting.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Add 'umask' call. * test-env.in: Remove use of 'umask'.
2013-09-24guix-register: Allow the initial directory creation to proceed.Ludovic Courtès
This fixes a bug whereby 'guix-register' would bail out when trying to create NIX_STORE_DIR/.links when NIX_STORE_DIR is read-only. * nix/guix-register/guix-register.cc (parse_opt): Initialize 'settings.nixStore' to PREFIX + NIX_STORE_DIR. (main): Change 'settings.nixStore' once the 'LocalStore' has been instantiated.
2013-09-23guix-register: Expect closures to refer to the original store.Ludovic Courtès
* nix/guix-register/guix-register.cc (prefix): New variable. (parse_opt): Use it. (register_validity): Change 'info.path' to the final store name. Hash the final under its real path. * tests/guix-register.sh: Adjust the contents of $closure accordingly. Rename 'NIX_LOCALSTATE_DIR' to 'NIX_STATE_DIR'. Don't try to call 'valid-path?'. Add test using 'sqlite3'.
2013-09-23Add 'guix-register'.Ludovic Courtès
* nix/guix-register/guix-register.cc, tests/guix-register.sh: New files. * Makefile.am (SH_TESTS)[BUILD_DAEMON]: Add tests/guix-register.sh. * daemon.am (sbin_PROGRAMS, guix_register_SOURCES, guix_register_CPPFLAGS, guix_register_LDADD): New variables. * test-env.in: Export 'storedir', 'prefix', 'datarootdir', 'datadir', and 'localstatedir'.
2013-09-12daemon: Use 'int' instead of the internal 'gcry_md_algo_t' type.Ludovic Courtès
Fixes compilation with the forthcoming libgcrypt 1.6.x. Reported by Matthias Wachs <wachs@net.in.tum.de> and NIIBE Yutaka <gniibe@fsij.org>. * nix/libutil/gcrypt-hash.cc (guix_hash_init, guix_hash_final): Use 'int' as the type of the 'algo' parameter. * nix/libutil/gcrypt-hash.hh: Update declarations accordingly.
2013-07-04daemon: Make argp usage compatible with libc on GNU/Hurd.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (parse_opt): Cast return value to `error_t' for the sake of GNU/Hurd. Reported by Matthew Lien <bluet@bluet.org> at <http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00002.html>.
2013-06-18build: Fix `sync-with-upstream'.Ludovic Courtès
* nix/sync-with-upstream: Remove schema.sql.hh.
2013-04-18daemon: Add `--no-substitutes'.Ludovic Courtès
Suggested by Mark H. Weaver. * nix/nix-daemon/guix-daemon.cc (GUIX_OPT_NO_SUBSTITUTES): New macro. (options): Add `--no-substitutes'. (parse_opt): Add `GUIX_OPT_NO_SUBSTITUTES' case. (main): Leave `settings.substituters' empty when `settings.useSubstitutes' is false.
2013-04-18daemon: Really enable the substituter by default.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Really enable the substituter by default. Reported by Mark H. Weaver.
2013-04-03Add preliminary binary substituter.Ludovic Courtès
* 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.
2013-02-19daemon: Add `--listen'.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_LISTEN): New macro. (options): Add `--listen'. (parse_opt): Handle it. * doc/guix.texi (Invoking guix-daemon): Mention it.
2013-01-11Merge branch 'core-updates'Ludovic Courtès
Conflicts: guix/build/union.scm
2013-01-09daemon: Fix warning message when running as root without a build user group.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Fix warning message when running as root without `--build-users-group'.
2013-01-09guix-daemon: Rename `--build-cores' for consistency with `guix-build'.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (options): Change `--build-cores' to `--cores', and `-C' to `-c'. (parse_opt): Adjust accordingly.
2013-01-06Update a few more license headers.Ludovic Courtès
* distro/packages/openssl.scm, m4/guix.m4, nix/sync-with-upstream: Update headers.
2013-01-06Update license headers.Ludovic Courtès
Change all license headers, except guix/build/* and ld-wrapper.scm, with this code: (use-modules (guix build utils) (srfi srfi-1)) (fluid-set! %default-port-encoding "UTF-8") (substitute* (remove (lambda (f) (or (string-contains f ".tar.") (string-contains f ".git/") (string-contains f ".so") (string-suffix? ".o" f) (string-suffix? ".a" f) (string-suffix? ".go" f) (string-suffix? ".pdf" f) (string-suffix? ".png" f) (string-suffix? ".info" f) (equal? (basename f) "guix-daemon") (equal? (basename f) "nix-setuid-helper") (string-contains f "nix-upstream/") (string-contains f "distro/packages/bootstrap/"))) (find-files "." "\\.[a-z]+$")) (("^([[:graph:]]+) This file is part of Guix." _ comment-start) (string-append comment-start " This file is part of GNU Guix.")) (("^([[:graph:]]+) Guix --- Nix package management.*" _ comment-start) (string-append comment-start " GNU Guix --- Functional package management for GNU\n")) (("^([[:graph:]]+) Guix is " _ comment-start) (string-append comment-start " GNU Guix is ")) (("^([[:graph:]]+) along with Guix." _ comment-start) (string-append comment-start " along with GNU Guix.")) (("^([[:graph:]]+) Copyright \\(C\\)" _ comment-start) (string-append comment-start " Copyright ©"))) Change headers using C-style comments manually.
2013-01-02daemon: Show the chroot contents upon `--debug'.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main)[HAVE_CHROOT]: Display the contents of `settings.dirsInChroot' at `lvlDebug'.
2013-01-02daemon: Properly initialize libgcrypt.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Call `gcry_check_version'.
2012-12-16daemon: Gracefully handle Nix errors.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Run Nix code in an exception handler; gracefully print error messages, and exit with EXIT_FAILURE.
2012-12-16daemon: Warn against running as root without `--build-users-group'.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Recommend using `--build-users-group' when running as root without a build users group.
2012-12-16daemon: Add `--chroot-directory'.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_CHROOT_DIR): New macro. (options): Add `--chroot-directory'. (parse_opt): Handle it.
2012-12-15daemon: Add `--debug' option.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_DEBUG): New macro. (options): Add `--debug'. (parse_opt): Set `verbosity' upon GUIX_OPT_DEBUG.
2012-12-14daemon: Disable use of substitutes for now.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (main): Set `settings.useSubstitutes' to false, and `settings.substituters' to the empty list.
2012-12-14build: Avoid brace expansion in `nix/sync-with-upstream'.Andreas Enge
* nix/sync-with-upstream: Avoid brace expansion, for the sake of Dash.
2012-12-06daemon: Add more options.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_BUILD_USERS_GROUP, GUIX_OPT_CACHE_FAILURES, GUIX_OPT_LOSE_LOGS, GUIX_OPT_DISABLE_STORE_OPTIMIZATION, GUIX_OPT_IMPERSONATE_LINUX_26): New macros. (options)["build-users-group", "cache-failures", "lose-logs", "disable-store-optimization", "impersonate-linux-2.6"]: New options. (parse_opt): Handle them.
2012-12-05daemon: Add `list-runtime-roots' script.Ludovic Courtès
* nix/scripts/list-runtime-roots.in: New file. * config-daemon.ac: Add `AC_CONFIG_FILES' invocation for it. * daemon.am (nodist_pkglibexec_SCRIPTS): New variable. (AM_TESTS_ENVIRONMENT): Define `top_builddir'. * tests/guix-daemon.sh: Export `NIX_ROOT_FINDER'. * nix/sync-with-upstream: Substitute the path to the root finder in libstore/gc.cc.
2012-12-05daemon: Disable use of chroots when support is lacking.Ludovic Courtès
* nix/nix-daemon/guix-daemon.cc (options)[!HAVE_CHROOT]: Mention that `--disable-chroot' has no effect. (main)[!HAVE_CHROOT]: Set `useChroot' to false.
2012-12-04daemon: Fix typo in libgcrypt bindings.Ludovic Courtès
* nix/libutil/md5.h (MD5_Final): Pass RESBUF as the first argument to `guix_hash_final'. * nix/libutil/sha1.h (SHA1_Final): Likewise. * nix/libutil/sha256.h (SHA256_Final): Likewise.
2012-12-03build: Add `bootstrap' and `sync-with-upstream' scripts.Ludovic Courtès
* bootstrap, nix/sync-with-upstream: New files. * Makefile.am (EXTRA_DIST): Add `bootstrap'. * daemon.am (EXTRA_DIST): Add `nix/sync-with-upstream'.
2012-12-03build: Include a copy of Nix's libstore and daemon; build it.Ludovic Courtès
* configure.ac: Call `AC_USE_SYSTEM_EXTENSIONS', and `GUIX_SYSTEM_TYPE'. Add `--with-store-dir' option, and substitute `storedir'. Include `config-daemon.ac'. * config-daemon.ac: New file. * Makefile.am [BUILD_DAEMON]: Include `daemon.am'. * daemon.am: New file. * m4/guix.m4 (GUIX_SYSTEM_TYPE): New macro. * nix/libutil/gcrypt-hash.cc, nix/libutil/gcrypt-hash.hh, nix/libutil/md5.h, nix/libutil/sha1.h, nix/libutil/sha256.h, nix/nix-daemon/guix-daemon.cc, nix/nix-daemon/shared.hh: New files.