Age | Commit message (Expand) | Author |
2014-07-20 | guix: refresh: Add --list-dependent option.•••* 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.
| Eric Bavier |
2014-07-18 | guix system: init: Always use /var/guix as the target state directory.•••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'.
| Ludovic Courtès |
2014-07-15 | guix: refresh: Correctly identify invalid package names.•••* guix/scripts/refresh.scm (guix-refresh): Check for null list
returned by find-packages-by-name rather than #f.
| Eric Bavier |
2014-07-14 | guix system: reconfigure: Always use "/" as GRUB's target file system.•••* guix/scripts/system.scm (perform-action) <reconfigure>: Wrap
'install-grub' call in 'false-if-exception'. Always use "/" as the
target.
| Ludovic Courtès |
2014-07-13 | guix system: Fix return value for 'reconfigure'.•••* guix/scripts/system.scm (perform-action) <reconfigure>: Add missing
'return' expression.
| Ludovic Courtès |
2014-07-13 | guix system: Convert to monadic style.•••* 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.
| Ludovic Courtès |
2014-07-08 | guix system: Add '--system' option.•••* 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'.
| Ludovic Courtès |
2014-07-05 | guix package: Try $LOGNAME in addition to $USER.•••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>
| Taylan Ulrich Bayirli/Kammer |
2014-07-05 | guix package: Do the right thing for '-p ~/.guix-profile'.•••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.
| Ludovic Courtès |
2014-06-27 | system: Install /var/guix/profiles/system-1-link on new systems.•••* 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.
| Ludovic Courtès |
2014-06-27 | guix system: Add 'reconfigure' action.•••* 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.
| Ludovic Courtès |
2014-06-27 | guix {system,offload}: Improve reporting of syntax errors.•••* 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.
| Ludovic Courtès |
2014-06-24 | guix system: Gracefully handle 'install-grub' errors.•••* guix/scripts/system.scm (install): Wrap 'install-grub' call in
'false-if-exception'. This is a followup to 641f9a2a.
| Ludovic Courtès |
2014-06-20 | Merge branch 'core-updates' | Ludovic Courtès |
2014-06-19 | substitute-binary: Warn about uninitialized ACL.•••* 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.
| Ludovic Courtès |
2014-06-19 | guix system: 'init' makes sure the target store directory exists.•••* guix/scripts/system.scm (install): Before calling 'copy-closure', make
sure directory (%store-prefix) under TARGET exists.
| Ludovic Courtès |
2014-06-17 | substitute-binary: Avoid the term "narinfo" in user messages.•••* guix/scripts/substitute-binary.scm (assert-valid-narinfo): Change
message to avoid the term "narinfo".
| Ludovic Courtès |
2014-06-14 | guix 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'.
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'.
| Ludovic Courtès |
2014-06-13 | Separate package description translations from string translations.•••* 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'.
| Ludovic Courtès |
2014-06-09 | guix build: Only 'guix build' sets #:print-build-trace.•••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?'.
| Ludovic Courtès |
2014-05-22 | guix system: Add 'disk-image' action.•••* 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'.
| Ludovic Courtès |
2014-05-19 | guix system: Check whether we are installing to /.•••* guix/scripts/system.scm (install): Check whether TARGET is / and warn.
| Ludovic Courtès |
2014-05-19 | guix system: Factorize out closure copy.•••* guix/scripts/system.scm (copy-closure): New procedure.
(install): Use it.
| Ludovic Courtès |
2014-05-19 | guix system: 'guix system init' installs GRUB by default.•••* 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'.
| Ludovic Courtès |
2014-05-18 | guix system: Add 'init' sub-command.•••* 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'.
| Ludovic Courtès |
2014-05-16 | guix system: Add 'build' action.•••* guix/scripts/system.scm (show-help): Document 'build' action.
(guix-system): Honor 'build' action.
* doc/guix.texi (Invoking guix system): Add 'build' action.
| Ludovic Courtès |
2014-05-16 | authenticate: Add compatibility hack for Guile 2.0.5.•••* guix/scripts/authenticate.scm (%default-port-conversion-strategy): New
variable. Reported by Andreas Enge <andreas@enge.fr>.
| Ludovic Courtès |
2014-04-22 | pk-crypto: Add pretty-printer to 'gcry-error' exceptions.•••* 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.
| Ludovic Courtès |
2014-04-22 | authenticate: Allow signatures with binary data to be written to stdout.•••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.
| Ludovic Courtès |
2014-04-14 | offload: '{send,receive}-files' wait for completion of the transfer.•••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.
| Ludovic Courtès |
2014-04-14 | offload: Better synchronize with remote invocation of 'guix archive --missing'.•••* guix/scripts/offload.scm (send-files)[missing-files]: Call 'waitpid'
after reading all of MISSING.
| Ludovic Courtès |
2014-04-09 | guix system: Add 'vm-image' action and '--image-size' option.•••* 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'.
| Ludovic Courtès |
2014-04-08 | ui: Add 'size->number'.•••* 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.
| Ludovic Courtès |
2014-04-08 | offload: Remove all the GC roots in case of multiple-output derivations.•••* 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.
| Ludovic Courtès |
2014-04-08 | offload: Bail out when failing to register a GC root on the build machine.•••* guix/scripts/offload.scm (register-gc-root): Call 'leave' when
'close-pipe' returns non-zero.
| Ludovic Courtès |
2014-04-05 | hydra: Add 'qemu-image' job.•••* 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.
| Ludovic Courtès |
2014-04-05 | guix package: Fix indentation of packages to remove.•••* guix/scripts/package.scm (show-what-to-remove/install): Add space when
showing packages to remove.
| Ludovic Courtès |
2014-04-04 | pki: Introduce 'write-acl', and fix wrong conversion in 'ensure-acl'.•••* 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'.
| Ludovic Courtès |
2014-04-03 | offload: Prevent the '.drv' and build result from being GC'd.•••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.
| Ludovic Courtès |
2014-04-02 | guix package: 'search-path-environment-variables' traverses module tree once.•••* 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.)
| Ludovic Courtès |
2014-04-02 | guix package: Register non-default profiles as GC roots.•••* 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.
| Ludovic Courtès |
2014-04-01 | pki: Keep ACL in native sexp format to speed up 'authorized-key?'.•••* 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.
| Ludovic Courtès |
2014-04-01 | substitute-binary: Avoid consing 'regexp-exec' arguments.•••* guix/scripts/substitute-binary.scm (regexp-exec): Change formals
to (rx str . rest).
| Ludovic Courtès |
2014-04-01 | substitute-binary: Avoid reloading the ACL repeatedly.•••* 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".
| Ludovic Courtès |
2014-03-31 | Use 'signature-case' in (guix nar) and 'substitute-binary'.•••* 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.
| Ludovic Courtès |
2014-03-31 | substitute-binary: Notify of valid signatures.•••* guix/scripts/substitute-binary.scm (assert-valid-narinfo): Add
#:verbose? parameter; when true, write "found valid signature".
(valid-narinfo?): Pass #:verbose? #f.
| Ludovic Courtès |
2014-03-31 | guix archive: Make sure $sysconfdir/guix exists in '--authorize'.•••* guix/scripts/archive.scm (authorize-key): Add 'mkdir-p' call.
Reported by Alex Sassmannshausen <alex.sassmannshausen@gmail.com>.
| Ludovic Courtès |
2014-03-31 | offload: Exit with code 100 upon build failures.•••* guix/scripts/offload.scm (transfer-and-offload): Exit with code 100
upon build failure.
| Ludovic Courtès |
2014-03-30 | substitute-binary: Defer narinfo authentication and authorization checks.•••* guix/scripts/substitute-binary.scm (narinfo-signature->canonical-sexp):
Catch 'gcry-error' around 'string->canonical-sexp' call, and re-raise
as a SRFI-35 &message and &nar-signature-error.
(narinfo-maker): Handle when SIGNATURE is #f or an invalid canonical
sexp.
(&nar-signature-error, &nar-invalid-hash-error): New variables.
(assert-valid-signature): Use them. Expect 'signature' to be a
canonical sexp.
(read-narinfo): Remove authentication and authorization checks.
(%signature-line-rx): New variable.
(assert-valid-narinfo, valid-narinfo?): New procedures.
(guix-substitute-binary): Wrap body in 'with-error-handling'.
[valid?]: New procedure.
<--query>: Show only store items of narinfos that match
'valid-narinfo?'.
<--substitute>: Call 'assert-valid-narinfo'.
* tests/substitute-binary.scm (test-error*): Use 'test-equal'.
(%keypair): Remove.
(%public-key, %private-key): Load from signing-key.{pub,sec}.
(signature-body): Add #:public-key parameter.
(call-with-narinfo): New procedure.
(with-narinfo): New macro.
("corrupt signature data", "unauthorized public key", "invalid
signature"): Make the first argument to 'assert-valid-signature' a
canonical sexp.
("invalid hash", "valid read-narinfo", "valid write-narinfo"):
Remove.
("query narinfo with invalid hash", "query narinfo signed with
authorized key", "query narinfo signed with unauthorized key",
"substitute, invalid hash", "substitute, unauthorized key"): New
tests.
| Ludovic Courtès |
2014-03-30 | substitute-binary: Store the cache's URI in the local cached narinfo.•••* guix/scripts/substitute-binary.scm (<narinfo>)[uri-base]: New field.
(narinfo-maker): Pass CACHE-URL as the 'uri-base' value.
(string->narinfo): Add 'cache-uri' parameter.
(lookup-narinfo)[cache-entry]: Switch to version 1. Add 'cache-uri'
field. Adjust body accordingly.
(remove-expired-cached-narinfos): Switch to version 1 by default.
| Ludovic Courtès |