summaryrefslogtreecommitdiff
path: root/guix/scripts
AgeCommit message (Collapse)Author
2014-07-23guix system: Protect against changes to $PATH when activating the system.Ludovic Courtès
Partly fixes <http://bugs.gnu.org/18082>. Reported by Mark H Weaver <mhw@netris.org>. * guix/scripts/system.scm (save-environment-excursion): New macro. (switch-to-system): Wrap 'primitive-load' call in it.
2014-07-23guix system: Fix type error in 'reconfigure'.Ludovic Courtès
Partly fixes <http://bugs.gnu.org/18082>. Reported by Mark H Weaver <mhw@netris.org>. * guix/scripts/system.scm (perform-action) <reconfigure>: Pass the output file name of GRUB.CFG to 'install-grub'.
2014-07-21guix package: add a "show" option.Cyril Roelandt
* doc/guix.texi: Update the documentation. * guix/scripts/package.scm: Add a "show" option. * tests/guix-package.sh: Add a test for the "show" option.
2014-07-20guix refresh: Use (ice-9 format).Ludovic Courtès
* guix/scripts/refresh.scm: Use (ice-9 format).
2014-07-20guix system: Factorize 'copy-closure'.Ludovic Courtès
* guix/scripts/system.scm (copy-closure): Rename to... (copy-item): ... this. (copy-closure): New procedure. (install): Use it, and remove redundant code.
2014-07-20guix: refresh: Add --list-dependent option.Eric Bavier
* guix/packages.scm (package-direct-inputs): New procedure. * gnu/packages.scm (vhash-refq, package-direct-dependents) (package-transitive-dependents, package-covering-dependents): New procedures. * guix/scripts/refresh.scm (%options, show-help, guix-refresh): Add --list-dependent option. * doc/guix.texi (Invoking guix refresh): Document '--list-dependent' option.
2014-07-18guix system: init: Always use /var/guix as the target state directory.Ludovic Courtès
Fixes <http://bugs.gnu.org/18049>. Reported by Marek Benc <merkur32@gmail.com>. * guix/scripts/system.scm (copy-closure): Pass #:state-directory to 'register-path'.
2014-07-15guix: refresh: Correctly identify invalid package names.Eric Bavier
* guix/scripts/refresh.scm (guix-refresh): Check for null list returned by find-packages-by-name rather than #f.
2014-07-14guix system: reconfigure: Always use "/" as GRUB's target file system.Ludovic Courtès
* guix/scripts/system.scm (perform-action) <reconfigure>: Wrap 'install-grub' call in 'false-if-exception'. Always use "/" as the target.
2014-07-13guix system: Fix return value for 'reconfigure'.Ludovic Courtès
* guix/scripts/system.scm (perform-action) <reconfigure>: Add missing 'return' expression.
2014-07-13guix system: Convert to monadic style.Ludovic Courtès
* guix/scripts/system.scm (references*, topologically-sorted*, show-what-to-build*): New procedures. (copy-closure): Turn into a monadic procedure. (install): Likewise, and adjust parameter list. (switch-to-system): Likewise. (system-derivation-for-action, grub.cfg, maybe-build, perform-action): New procedures. (guix-system): Use them.
2014-07-08guix system: Add '--system' option.Ludovic Courtès
* guix/scripts/system.scm (switch-to-system): Add #:system parameter; pass it to 'run-with-store'. (%options): Add '--system'. (guix-system): Pass the 'system' option to 'run-with-store', 'package-derivation', and 'switch-to-system' calls. * doc/guix.texi (Invoking guix system): Document '--system' and '--image-size'.
2014-07-05guix package: Try $LOGNAME in addition to $USER.Taylan Ulrich Bayirli/Kammer
Fixes <http://bugs.gnu.org/17946>. Notoriously, cron jobs may set LOGNAME only and not USER. See e.g. crontab(5) under Debian 7 (wheezy). * guix/scripts/package.scm (%profile-directory) (guix-package): Also try LOGNAME if USER is unset. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-05guix package: Do the right thing for '-p ~/.guix-profile'.Ludovic Courtès
Fixes <http://bugs.gnu.org/17939>. Reported by Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>. * guix/scripts/package.scm (canonicalize-profile): New procedure. (%options): Use it for --profile. * tests/guix-package.sh: Add test.
2014-06-27system: Install /var/guix/profiles/system-1-link on new systems.Ludovic Courtès
* guix/build/install.scm (directives): Add /var/guix/profiles/system. (populate-root-file-system): Add 'system' parameter. Create /var/guix/profiles/system-1-link. * guix/scripts/system.scm (install): Pass OS-DIR to 'populate-root-file-system'. * guix/build/vm.scm (initialize-root-partition): Add #:system-directory parameter, and pass it to 'populate-root-file-system'. (initialize-hard-disk): Add #:system-directory parameter, and pass it to 'initialize-root-partition'. * gnu/system/vm.scm (qemu-image): Add #:os-derivation parameter and pass it to 'initialize-hard-disk'. (system-disk-image, system-qemu-image, system-qemu-image/shared-store): Pass #:os-derivation to 'qemu-image.
2014-06-27guix system: Add 'reconfigure' action.Ludovic Courtès
* guix/scripts/system.scm (%system-profile): New variable. (switch-to-system, previous-grub-entries): New procedures. (unless-file-not-found): New macro. (show-help): Add 'reconfigure'. (guix-system): Handle it. * gnu/system.scm: Export 'operating-system-activation-script'. * doc/guix.texi (Invoking guix system): Document it.
2014-06-27guix {system,offload}: Improve reporting of syntax errors.Ludovic Courtès
* guix/scripts/system.scm (read-operating-system) <catch handler>: Add case for 'syntax-error'. Correct message for default case. * guix/scripts/offload.scm (build-machines) <catch handler>: Add case for 'syntax-error'. * tests/guix-system.sh: New file. * Makefile.am (SH_TESTS): Add it.
2014-06-24guix system: Gracefully handle 'install-grub' errors.Ludovic Courtès
* guix/scripts/system.scm (install): Wrap 'install-grub' call in 'false-if-exception'. This is a followup to 641f9a2a.
2014-06-20Merge branch 'core-updates'Ludovic Courtès
2014-06-19substitute-binary: Warn about uninitialized ACL.Ludovic Courtès
* guix/scripts/substitute-binary.scm (guix-substitute-binary): Call 'check-acl-initialized'. (check-acl-initialized): Don't rely on 'equal?' to compare keys. Instead, convert keys to strings.
2014-06-19guix system: 'init' makes sure the target store directory exists.Ludovic Courtès
* guix/scripts/system.scm (install): Before calling 'copy-closure', make sure directory (%store-prefix) under TARGET exists.
2014-06-17substitute-binary: Avoid the term "narinfo" in user messages.Ludovic Courtès
* guix/scripts/substitute-binary.scm (assert-valid-narinfo): Change message to avoid the term "narinfo".
2014-06-14guix build: Allow gexps to be passed to '-e'.Ludovic Courtès
* guix/ui.scm (%guix-user-module): New variable. (read/eval): Pass it as the second argument to 'eval'. * guix/scripts/build.scm (options/resolve-packages): Add case for 'gexp?'. * tests/guix-build.sh: Add tests. * doc/guix.texi (Invoking guix build): Document '-e gexp'. guxi build: Allow gexps to be passed to '-e'. * guix/ui.scm (%guix-user-module): New variable. (read/eval): Pass it as the second argument to 'eval'. * guix/scripts/build.scm (options/resolve-packages): Add case for 'gexp?'. * tests/guix-build.sh: Add tests. * doc/guix.texi (Invoking guix build): Document '-e gexp'.
2014-06-13Separate package description translations from string translations.Ludovic Courtès
* po/packages/LINGUAS, po/packages/Makevars, po/packages/POTFILES.in: New files. * po/guix/Makevars (DOMAIN): Change to "guix". (XGETTEXT_OPTIONS): Remove "--keyword=synopsis --keyword=description". * po/guix/POTFILES.in: Remove gnu/packages/*.scm. * configure.ac: Change to gettext 0.18.3. Produce po/packages/Makefile.in. * Makefile.am (SUBDIRS): Add po/packages. * guix/ui.scm (%package-text-domain): New variable. (P_): New procedure. (package->recutils): Use 'P_' instead of '_'. * guix/scripts/package.scm (find-packages-by-description): Use 'P_' instead of 'gettext'.
2014-06-09guix build: Only 'guix build' sets #:print-build-trace.Ludovic Courtès
This makes 'guix package' et al. slightly less verbose, by not emitting "@ substituter-started" lines and similar. * guix/scripts/build.scm (set-build-options-from-command-line): Pass #:print-build-trace. (%default-options): Add 'print-build-trace?'.
2014-05-22guix system: Add 'disk-image' action.Ludovic Courtès
* guix/scripts/system.scm (show-help): Add 'disk-image'. (guix-system)[parse-options]: Support 'disk-image' action. [option-arguments]: Likewise. Handle the 'disk-image' action. * doc/guix.texi (Invoking guix system): Document 'disk-image'.
2014-05-19guix system: Check whether we are installing to /.Ludovic Courtès
* guix/scripts/system.scm (install): Check whether TARGET is / and warn.
2014-05-19guix system: Factorize out closure copy.Ludovic Courtès
* guix/scripts/system.scm (copy-closure): New procedure. (install): Use it.
2014-05-19guix system: 'guix system init' installs GRUB by default.Ludovic Courtès
* guix/scripts/system.scm (install): Add #:grub?, #:grub.cfg, and #:device parameters; honor them. (show-help): Document '--no-grub'. (%options): Add '--no-grub'. (%default-options): Add 'install-grub?'. (guix-system): Honor 'install-grub?' option from OPTS. Adjust 'install' call accordingly. * doc/guix.texi (Invoking guix system): Document '--no-grub'.
2014-05-18guix system: Add 'init' sub-command.Ludovic Courtès
* guix/scripts/system.scm (install): New procedure. (guix-system)[parse-option]: Remove check for extraneous arguments. [match-pair, option-arguments]: New procedures. Use 'option-arguments'. Honor 'init'. (show-help): Document 'init'. * doc/guix.texi (Invoking guix system): Document 'init'.
2014-05-16guix system: Add 'build' action.Ludovic Courtès
* guix/scripts/system.scm (show-help): Document 'build' action. (guix-system): Honor 'build' action. * doc/guix.texi (Invoking guix system): Add 'build' action.
2014-05-16authenticate: Add compatibility hack for Guile 2.0.5.Ludovic Courtès
* guix/scripts/authenticate.scm (%default-port-conversion-strategy): New variable. Reported by Andreas Enge <andreas@enge.fr>.
2014-04-22pk-crypto: Add pretty-printer to 'gcry-error' exceptions.Ludovic Courtès
* guix/pk-crypto.scm (string->canonical-sexp, sign, generate-key): Pass the procedure name as the first argument to 'throw'. (gcrypt-error-printer): New procedure. <top level>: Add call to 'set-exception-printer!'. * guix/nar.scm (restore-one-item): Add 'proc' parameter to 'catch' handler for 'gcry-error. * guix/scripts/archive.scm (%options, generate-key-pair, authorize-key): Likewise. * guix/scripts/substitute-binary.scm (narinfo-signature->canonical-sexp): Likewise.
2014-04-22authenticate: Allow signatures with binary data to be written to stdout.Ludovic Courtès
Fixes <http://bugs.gnu.org/17312>. * guix/scripts/authenticate.scm (guix-authenticate): Add calls to 'set-port-encoding!' and 'set-port-conversion-strategy!'. Wrap body in 'with-fluids' form that sets '%default-port-encoding' and '%default-port-conversion-strategy'. * tests/guix-authenticate.sh: Add test. * tests/pk-crypto.scm ("hash corrupt due to restrictive locale encoding"): Add reference to bug.
2014-04-14offload: '{send,receive}-files' wait for completion of the transfer.Ludovic Courtès
Fixes situations where the remote 'guix build' is invoked before the .drv has been completely copied, as reported at <https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00174.html>. In some cases 'send-files' would return before the other end is done importing the files, and so the subsequent 'guix build' invocation would just miss the .drv file it refers to. * guix/utils.scm (call-with-decompressed-port): Don't close PORT. (call-with-compressed-output-port): Likewise. * tests/utils.scm ("compressed-output-port + decompressed-port"): Adjust accordingly. * guix/scripts/offload.scm (send-files): Add explicit (close-pipe pipe) call. (retrieve-files): Likewise.
2014-04-14offload: Better synchronize with remote invocation of 'guix archive --missing'.Ludovic Courtès
* guix/scripts/offload.scm (send-files)[missing-files]: Call 'waitpid' after reading all of MISSING.
2014-04-09guix system: Add 'vm-image' action and '--image-size' option.Ludovic Courtès
* guix/scripts/system.scm (%options): Add --image-size. (%default-options): Add 'image-size'. (guix-system)[parse-options]: Handle the 'vm-image' action. Honor them. (show-help): Update accordingly. * doc/guix.texi (Invoking guix system): Add 'vm-image'.
2014-04-08ui: Add 'size->number'.Ludovic Courtès
* guix/scripts/gc.scm (size->number): Remove. * guix/ui.scm (size->number): New procedure. * tests/ui.scm ("size->number, bytes", "size->number, MiB", "size->number, GiB", "size->number, 1.2GiB", "size->number, invalid unit"): New tests.
2014-04-08offload: Remove all the GC roots in case of multiple-output derivations.Ludovic Courtès
* guix/scripts/offload.scm (remove-gc-root): Rename to... (remove-gc-roots): ... this. [builder]: Use 'scandir' and remove all the files starting with %GC-ROOT-FILE. (transfer-and-offload): Adjust to renaming; remove 'false-if-exception' wraps.
2014-04-08offload: Bail out when failing to register a GC root on the build machine.Ludovic Courtès
* guix/scripts/offload.scm (register-gc-root): Call 'leave' when 'close-pipe' returns non-zero.
2014-04-05hydra: Add 'qemu-image' job.Ludovic Courtès
* build-aux/hydra/demo-os.scm: New file. * Makefile.am (EXTRA_DIST): Add it. * build-aux/hydra/gnu-system.scm (qemu-jobs): New procedure. (hydra-jobs): Use it. * guix/scripts/system.scm (read-operating-system): Export.
2014-04-05guix package: Fix indentation of packages to remove.Ludovic Courtès
* guix/scripts/package.scm (show-what-to-remove/install): Add space when showing packages to remove.
2014-04-04pki: Introduce 'write-acl', and fix wrong conversion in 'ensure-acl'.Ludovic Courtès
* guix/pki.scm (write-acl): New procedure. (ensure-acl): Use it. Fixes a regression introduced in 39831f1, whereby 'ensure-acl' would yield a wrong-type-arg error. * guix/scripts/archive.scm (authorize-key): Use 'write-acl'.
2014-04-03offload: Prevent the '.drv' and build result from being GC'd.Ludovic Courtès
Before that, there was a small time window during which the GC could wipe the .drv (before 'guix build' has been called), or the build result (before 'retrieve-files' has started.) * guix/scripts/offload.scm (remote-pipe): Add #:quote? parameter and honor it. (%gc-root-file): New variable. (register-gc-root, remove-gc-root): New procedures. (offload): Adjust comment. Run 'guix build' with '-r %GC-ROOT-FILE'. (transfer-and-offload): Call 'register-gc-root' before sending (derivation-file-name DRV). Call 'remove-gc-root' after the call to 'offload' or 'retrieve-files'. (send-files): Call 'remote-pipe' with #:quote? #f. (retrieve-files): Likewise.
2014-04-02guix package: 'search-path-environment-variables' traverses module tree once.Ludovic Courtès
* guix/scripts/package.scm (search-path-environment-variables)[manifest-entry->package]: Use 'find-best-packages-by-name' instead of 'find-packages-by-name'. On a profile with 140 packages, this reduces execution time of this procedure from 5.8 seconds to 2.9 seconds (50% improvement.)
2014-04-02guix package: Register non-default profiles as GC roots.Ludovic Courtès
* guix/scripts/package.scm (maybe-register-gc-root): New procedure. * tests/guix-package.sh (profile): Grep the output of "guix gc --list-live" in a couple of places.
2014-04-01pki: Keep ACL in native sexp format to speed up 'authorized-key?'.Ludovic Courtès
* guix/pki.scm (acl-entry-sexp, acl-sexp): Remove. (public-keys->acl, current-acl): Return a native sexp. (acl->public-keys, authorized-key?): Expect ACL to be a native sexp. * guix/scripts/archive.scm (authorize-key): Convert ACL to canonical-sexp when writing it.
2014-04-01substitute-binary: Avoid consing 'regexp-exec' arguments.Ludovic Courtès
* guix/scripts/substitute-binary.scm (regexp-exec): Change formals to (rx str . rest).
2014-04-01substitute-binary: Avoid reloading the ACL repeatedly.Ludovic Courtès
* guix/scripts/substitute-binary.scm (guix-substitute-binary) <--query>: Cache the result of (current-acl); pass it to 'valid-narinfo?' calls. This saves 12% wall-clock time for "guix build emacs -n".
2014-03-31Use 'signature-case' in (guix nar) and 'substitute-binary'.Ludovic Courtès
* guix/nar.scm (restore-file-set)[assert-valid-signature]: Rewrite in terms of 'signature-case'. * guix/scripts/substitute-binary.scm (narinfo-signature->canonical-sexp): Call 'leave' instead of 'raise' when SIGNATURE is invalid. (&nar-signature-error, &nar-invalid-hash-error): Remove. (assert-valid-signature): Add 'narinfo' parameter; remove 'port'. Rewrite in terms of 'signature-case' and 'leave'. Mention NARINFO's URI in error messages. Adjust caller. (narinfo-sha256): New procedure. (assert-valid-narinfo): Use it. (valid-narinfo?): Rewrite using 'narinfo-sha256' and 'signature-case'. * tests/substitute-binary.scm (assert-valid-signature, test-error-condition): Remove. ("corrupt signature data", "unauthorized public key", "invalid signature"): Remove.