Age | Commit message (Expand) | Author |
2016-05-24 | refresh: Make 'list-dependents' a monadic procedure....* guix/scripts/refresh.scm (list-dependents): Remove use of 'with-store'
and 'run-with-store'.
(guix-refresh): Wrap body in with-store/run-with-store.
| Ludovic Courtès |
2016-05-21 | substitute: Gracefully handle invalid store file names....Before, something like:
echo have /gnu/foo | ./test-env guix substitute --query
would lead to an ugly backtrace.
* guix/scripts/substitute.scm (narinfo-cache-file): Call 'leave' when
'store-hash-part' returns #f.
| Ludovic Courtès |
2016-05-21 | graph: Allow store file names for 'derivation' and 'references' graphs....* guix/scripts/graph.scm (%derivation-node-type)[convert]: Add
'derivation-path?' and catch-all clauses.
(%reference-node-type)[convert]: Add 'store-path?' and catch-all
clauses.
(assert-package, nodes-from-package): New procedures.
(%package-node-type, %bag-node-type,%bag-with-origins-node-type)
(%bag-emerged-node-type): Add 'convert' field
(guix-graph): Rename 'packages' to 'items' and
allow 'store-path?' arguments.
* guix/graph.scm (<node-type>)[convert]: Adjust comment.
* doc/guix.texi (Invoking guix graph): Document it.
| Ludovic Courtès |
2016-05-21 | graph: Use absolute file name canonicalization....* guix/scripts/graph.scm (guix-graph): Wrap in 'with-fluids'.
| Ludovic Courtès |
2016-05-17 | lint: Honor 'cpe-name' and 'cpe-version' package properties....* guix/scripts/lint.scm (package-name->cpe-name): Remove.
(package-vulnerabilities): Honor 'cpe-name' and 'cpe-version'
properties.
* gnu/packages/grub.scm (grub)[properties]: New field.
* gnu/packages/gnuzilla.scm (icecat)[properties]: Add 'cpe-name' and
'cpe-version'.
* doc/guix.texi (Invoking guix lint): Mention 'cpe-name'.
| Ludovic Courtès |
2016-05-17 | import: Gracefully report import failures....Previously, something like 'guix import gnu which' would spit out a
backtrace if, say, the 'which' tarball could not be authenticated.
* guix/upstream.scm (download-tarball): Mention failure modes in
docstring.
* guix/import/gnu.scm (gnu-package->sexp): Return #f when
'download-tarball' returns #f.
* guix/scripts/import.scm (guix-import): Call 'leave' when IMPORTER does
not return a (package ...) sexp.
| Ludovic Courtès |
2016-05-17 | import: Exit with non-zero when an unknown importer is asked....* guix/scripts/import.scm (guix-import): Use 'leave' instead of 'format'
when IMPORTER is unknown.
| Ludovic Courtès |
2016-05-14 | guix build: Catch 'getaddrinfo-error' for '--log-file'....* guix/scripts/build.scm (log-url)[valid-url?]: Catch
'getaddrinfo-error'.
| Ludovic Courtès |
2016-05-14 | guix build: Do not show what to build when '-d' is used....* guix/scripts/build.scm (guix-build): Don't call 'show-what-to-build'
when OPTS contains 'derivations-only?'.
| Ludovic Courtès |
2016-05-04 | utils: Move combinators to (guix combinators)....* guix/utils.scm (compile-time-value, memoize, fold2)
(fold-tree, fold-tree-leaves): Move to...
* guix/combinators: ... here. New file.
* tests/utils.scm ("fold2, 1 list", "fold2, 2 lists")
(fold-tree tests): Move to...
* tests/combinators.scm: ... here. New file.
* Makefile.am (MODULES, SCM_TESTS): Add them.
* gnu/packages.scm, gnu/packages/bootstrap.scm,
gnu/services/herd.scm, guix/build-system/gnu.scm,
guix/build-system/python.scm, guix/derivations.scm,
guix/gnu-maintenance.scm, guix/import/elpa.scm,
guix/scripts/archive.scm, guix/scripts/build.scm,
guix/scripts/graph.scm, guix/scripts/lint.scm,
guix/scripts/size.scm, guix/scripts/substitute.scm,
guix/serialization.scm, guix/store.scm, guix/ui.scm: Adjust imports
accordingly.
| Ludovic Courtès |
2016-05-04 | environment: Use 'break' instead of 'split'....* guix/scripts/environment.scm (parse-args): Use 'break' instead of
'split'.
| Ludovic Courtès |
2016-05-04 | services: herd: Move UI handling to 'guix system'....This makes (gnu services herd) independent of (guix ui).
* gnu/services/herd.scm (&shepherd-error, &service-not-found-error)
(&action-not-found-error, &action-exception-error)
(&unknown-shepherd-error): New error condition types.
(report-action-error): Remove.
(raise-shepherd-error): New procedure.
(display-message): Do not use 'info' and '_'.
(invoke-action): Use 'raise-shepherd-error' instead of
'report-action-error'. Do not use 'warning'.
(current-services): Do not use 'warning'.
* guix/scripts/system.scm (with-shepherd-error-handling): New macro.
(report-shepherd-error, call-with-service-upgrade-info): New
procedures.
(upgrade-shepherd-services): Use it.
| Ludovic Courtès |
2016-04-29 | guix system: Reduce size of image produced for 'vm' action....This reduces the size of the image produced by 'guix system vm' from
26 MiB to 9 MiB.
* gnu/system/vm.scm (system-qemu-image/shared-store):
(system-qemu-image/shared-store-script): Change the default
value of #:disk-image-size to 30 MiB when not FULL-BOOT?.
* guix/scripts/system.scm (system-derivation-for-action): Likewise for
the 'vm' action.
| Ludovic Courtès |
2016-04-28 | lint: 'check-vulnerabilities' follows package replacements....* guix/scripts/lint.scm (check-vulnerabilities): Check the replacement
of PACKAGE.
* tests/lint.scm ("cve: patched vulnerability in replacement"): New test.
| Ludovic Courtès |
2016-04-27 | challenge: Use exit code 2 when discrepancies are found....Suggested by John Darrington <john@darrington.wattle.id.au>.
* guix/scripts/challenge.scm (guix-challenge): Exit with 2 when MISSING
is not empty.
* doc/guix.texi (Invoking guix challenge): Document it.
| Ludovic Courtès |
2016-04-27 | lint: Report synopses/descriptions that are not strings....Suggested by John Darrington.
* guix/scripts/lint.scm (check-description-style): Emit a warning when
DESCRIPTION is not a string.
(check-synopsis-style): Likewise.
(check-gnu-synopsis+description): Likewise.
* tests/lint.scm ("description: not a string", "synopsis: not a
string"): New tests.
| Ludovic Courtès |
2016-04-25 | guix gc: Add '--free-space'....* guix/scripts/gc.scm (show-help, %options): Add '--free-space'.
(guix-gc)[ensure-free-space]: New procedure.
Handle '--free-space'.
| Ludovic Courtès |
2016-04-20 | substitute: Sanitize the client-provided column number....* guix/scripts/substitute.scm (client-terminal-columns): Sanitize the
client's column number.
| Ludovic Courtès |
2016-04-20 | substitute: Install the client's locale....* guix/store.scm (set-build-options): Add #:locale parameter and honor
it.
* guix/scripts/substitute.scm (guix-substitute): Install the client's
locale.
| Ludovic Courtès |
2016-04-20 | substitute: Internationalize signature and download messages....* guix/scripts/substitute.scm (assert-valid-narinfo): Use gettext for
messages.
| Ludovic Courtès |
2016-04-20 | substitute: Better abbreviate substitute URL in progress report....Suggested by Danny Milosavljevic <dannym@scratchpost.org>.
* guix/build/download.scm (nar-uri-abbreviation): New procedure.
* guix/scripts/substitute.scm (process-substitution): Use it instead of
'store-path-abbreviation'.
| Ludovic Courtès |
2016-04-15 | substitute: Honor the number of columns of the client terminal....* guix/store.scm (set-build-options): Add #:terminal-columns parameter
and honor it.
* guix/scripts/substitute.scm (client-terminal-columns): New procedure.
(guix-substitute): Use it to parameterize 'current-terminal-columns'.
| Ludovic Courtès |
2016-04-15 | guix download: Honor the number of columns of the terminal....* guix/scripts/download.scm (guix-download): Parameterize
'current-terminal-columns'.
| Ludovic Courtès |
2016-04-14 | lint: Emit an ANSI erase-in-line sequence....* guix/scripts/lint.scm (run-checkers): Add '\x1b[K' to progress
messages and after 'for-each'.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Danny Milosavljevic |
2016-04-07 | environment: container: Work around read-only /etc/resolv.conf issue....* guix/scripts/environment.scm (launch-environment/container): Mount
/etc/resolv.conf as a writable file.
| David Thompson |
2016-04-06 | challenge: Really exit with non-zero upon hash mismatch....Reported by John Darrington.
* guix/scripts/challenge.scm (guix-challenge): Add an explicit 'exit'
call when ISSUES is empty.
* scripts/guix.in: Add comment about 'exit'.
* doc/guix.texi (Invoking guix challenge): Mention the behavior and exit
code.
| Ludovic Courtès |
2016-04-04 | emacs: Use 'build-and-use-profile' from (guix scripts package)....* guix/scripts/package.scm: Export 'build-and-use-profile'.
* emacs/guix-main.scm (process-package-actions): Use it.
| Alex Kost |
2016-03-30 | import: Add Hackage updater....* guix/import/hackage.scm (guix-package->hackage-name, hackage-package?)
(latest-release): New procedures.
(%hackage-updater): New variable.
* guix/scripts/refresh.scm (%updaters): Add it.
* doc/guix.texi (Invoking guix refresh): Mention it.
| Eric Bavier |
2016-03-30 | environment: Set a default value for PS1....* guix/scripts/environment.scm (launch-environment/container): Set PS1
during container initialization.
| David Thompson |
2016-03-28 | guix system: Warn against missing 'guix pull'....Suggested by Leo Famulari and others.
* guix/scripts/system.scm (maybe-suggest-running-guix-pull): New
procedure.
(perform-action): Call it when ACTION is 'reconfigure.
| Ludovic Courtès |
2016-03-27 | environment: Properly handle SIGINT....Switching to execlp means that the process spawned in a container is PID
1, which obsoleted one of the 'guix environment --container' tests
because the init process can't be killed in the usual manner.
* guix/scripts/environment.scm (launch-environment/fork): New procedure.
(launch-environment): Switch from system* to execlp. Add handler for
SIGINT.
(guix-environment): Use launch-environment/fork.
* tests/guix-environment-container.sh: Replace abnormal exit test with
one that works now that the spawned process is PID 1.
| David Thompson |
2016-03-26 | environment: container: Create dummy home directory and /etc/passwd....* guix/scripts/environment.scm (launch-environment/container): Change
$HOME to the current user's home directory instead of
/homeless-shelter. Create a dummy /etc/passwd with a single entry for
the current user.
* doc/guix.texi ("invoking guix environment"): Add a note about the
dummy home directory and /etc/passwd.
| David Thompson |
2016-03-23 | guix build: '--with-source' correctly matches versioned file names....* guix/scripts/build.scm: Use the right 'package-name->name+version'
procedure. Fixes a regression introduced in
1b846da8c372bee78851439fd9e72b2499115e5a.
* tests/scripts-build.scm ("options->transformation, with-source, with
version"): New test.
| Ludovic Courtès |
2016-03-23 | substitute: Gracefully handle TLS errors....* guix/scripts/substitute.scm (with-networking): Use 'match-lambda*' and
add case for 'gnutls-error'.
| Ludovic Courtès |
2016-03-17 | substitute: Do not leak file descriptors for TLS connections....Partially fixes <http://bugs.gnu.org/20145>.
* guix/scripts/substitute.scm (fetch, download-cache-info):
(http-multiple-get, fetch-narinfos, progress-report-port): Use
'close-connection' instead of 'close-port'.
| Ludovic Courtès |
2016-03-17 | substitute: Cache transient HTTP errors for 10mn....* guix/scripts/substitute.scm (fetch-narinfos)[handle-narinfo-response]:
Cache transient errors for 10mn.
(%narinfo-transient-error-ttl): New variable.
| Ludovic Courtès |
2016-03-17 | lint: Do not leak file descriptors for TLS connections....Partially fixes <http://bugs.gnu.org/20145>.
* guix/scripts/lint.scm (probe-uri): Use 'close-connection' instead of
'close-port'.
| Ludovic Courtès |
2016-03-17 | substitute: Update progress for responses different from 200/404....* guix/scripts/substitute.scm (fetch-narinfos)[handle-narinfo-response]:
Add missing call to 'update-progress!'.
| Ludovic Courtès |
2016-03-16 | substitute: Honor client-provided empty URL list....Before that, 'guix build --substitute-urls=""' would lead to using the
daemon's own URL list instead of the empty list. The 'or*' hack, which
is to blame, had become unnecessary since commit
fb4bf72be3fbc23bca35ba4b842b7e1517ef0e3a.
Reported by Mark H Weaver <mhw@netris.org>.
* guix/scripts/substitute.scm (or*): Remove.
(%cache-urls): Use 'or' instead of 'or*'.
* tests/store.scm ("substitute query, alternating URLs"): Add test with
empty URL list.
* doc/guix.texi (Common Build Options): Mention the empty string.
| Ludovic Courtès |
2016-03-16 | substitute: Honor the 'max-age' of 'Cache-Control' headers....This allows substitute servers to tell 'guix substitute' how long they
can cache narinfo lookups.
* guix/scripts/substitute.scm (cache-narinfo!): Add 'ttl' parameter.
[cache-entry]: Honor it.
(fetch-narinfos)[handle-narinfo-response]: Check the 'Cache-Control'
header of RESPONSE and pass its 'max-age' value to 'cache-narinfo!'.
| Ludovic Courtès |
2016-03-16 | substitute: Make room for a 'ttl' field in cached entries....* guix/scripts/substitute.scm (cached-narinfo): Expect 'narinfo' sexp
version 2 with a 'ttl' field.
(cache-narinfo!)[cache-entry]: Produce 'narinfo' sexp version 2 with a
'ttl' field.
(remove-expired-cached-narinfos)[expired?]: Read 'narinfo' sexp version 2.
| Ludovic Courtès |
2016-03-14 | substitute: Keep the initial connection alive....The connection used to fetch /nix-cache-info is now reused for the
subsequent narinfo requests.
* guix/scripts/substitute.scm (download-cache-info)[download]: Remove.
[uri, read-cache-info]: New variables.
Rewrite in terms of 'http-fetch' instead of 'fetch'. Return an open
port in addition to a <cache-info>.
* guix/scripts/substitute.scm (http-multiple-get): Add #:port parameter
and honor it.
(fetch-narinfos)[do-fetch]: Add 'port' parameter.
Adjust to new 'download-cache-info' and 'do-fetch' signatures.
| Ludovic Courtès |
2016-03-14 | substitute: Remove dead code....This parameter became unused with the switch to HTTP pipelining in
commit d3a652037ef879f9279bc056c43d15ba7afcbb25.
* guix/scripts/substitute.scm (fetch): Remove #:quiet-404? and adjust
accordingly.
| Ludovic Courtès |
2016-03-14 | size: Disable grafts....* guix/scripts/size.scm (guix-size): Parametrize '%graft?'.
| Ludovic Courtès |
2016-03-10 | substitute: Optimize HTTP pipelining over TLS....* guix/scripts/substitute.scm (http-multiple-get): Write the requests
to a bytevector output port before sending them.
| Ludovic Courtès |
2016-03-10 | substitute: Add HTTPS support....Fixes <http://bugs.gnu.org/22937>.
Reported by Chris Marusich <cmmarusich@gmail.com>.
* guix/scripts/substitute.scm (fetch): Add 'https' alongside 'http'.
Use 'open-connection-for-uri' instead of 'open-socket-for-uri'. Call
'setvbuf' only when PORT matches 'file-port?'.
(http-multiple-get): Likewise. Change 'base-url' parameter to
'base-uri'.
(fetch-narinfos)[do-fetch]: Add 'https' case alongside 'http'. Pass URI
instead of URL to 'http-multiple-get'.
* doc/guix.texi (Requirements): Move GnuTLS one level higher and mention
HTTPS substitutes.
(Substitutes): Mention HTTPS and recommend it. Explain why servers
are not authenticated. Add "On Trusting Binaries" subsection.
| Ludovic Courtès |
2016-03-09 | substitute: Error out on unsupported URL schemes....Reported in <http://bugs.gnu.org/22937>
by Chris Marusich <cmmarusich@gmail.com>.
* guix/scripts/substitute.scm (fetch): Add 'else' case and call 'leave'.
| Ludovic Courtès |
2016-03-08 | guix build: Add '--quiet'....Fixes <http://bugs.gnu.org/19772>.
Reported by Andrei Osipov <andrspv@gmail.com>.
* guix/scripts/build.scm (show-help, %options): Add --quiet.
(guix-build): Parameterize 'current-build-output-port' accordingly.
* doc/guix.texi (Invoking guix build): Use it in example.
(Additional Build Options): Document it.
| Ludovic Courtès |
2016-03-08 | guix system: Write the GC root on the target file system....Fixes <http://bugs.gnu.org/22802>.
Reported by Jookia <166291@gmail.com>.
* guix/scripts/system.scm (install-grub*): Prepend TARGET to GC-ROOT.
| Ludovic Courtès |
2016-03-05 | guix build: Set the build options early....This fixes a bug whereby, with grafts leading to builds very early,
build options such as --substitute-urls would not be taken into account
yet.
Reported by Andreas Enge <andreas@enge.fr>.
* guix/scripts/build.scm (guix-build): Move 'opts' to the beginning.
Use 'with-store' instead of 'open-connection'. Call
'set-build-options-from-command-line' right after 'with-store'.
| Ludovic Courtès |