graft: Graft files in parallel.
* guix/build/graft.scm (rewrite-directory): Use 'n-par-for-each' instead
of 'for-each'.
graft: Graft files in a deterministic order.
* guix/build/graft.scm (rewrite-directory)[rewrite-leaf]: Change to take
a single parameter. Add call to 'lstat'. Factorize result of
'destination'.
Use 'find-files' instead of 'file-system-fold'.
lint: Have connections time out after 3 seconds.
* guix/scripts/lint.scm (probe-uri): Add #:timeout parameter. Pass it
to 'open-connection-for-uri' and 'ftp-open'.
(validate-uri): Pass #:timeout 3 to 'probe-uri'.
download: Always use AI_ADDRCONFIG when resolving host names.
* guix/build/download.scm (open-socket-for-uri): Always pass
AI_ADDRCONFIG to 'getaddrinfo' as recommended in the fine Guile
manual.
* guix/ftp-client.scm (ftp-open): Ditto.
download: Add timeout parameter for connections.
* guix/build/download.scm (ensure-uri): New procedure.
(current-http-proxy): New variable.
(open-socket-for-uri): Copy from Guile commit aaea5b2, but add #:timeout
parameter and use 'connect*' instead of 'connect'.
(open-connection-for-uri): Add #:timeout parameter and pass it to
'open-socket-for-uri'.
ftp-client: Add timeout parameter to 'ftp-open'.
* guix/ftp-client.scm (catch-EINPROGRESS): New macro.
(connect*): New procedure.
(ftp-open): Add #:timeout parameter. Use 'connect*' instead of
'connect' and pass it TIMEOUT.
ftp-client: Restrict to TCP connections.
* guix/ftp-client.scm (ftp-open): Force SOCK_STREAM as the socket type
to avoid calling 'connect' on a datagram socket.
guix gc: Error out when extra arguments are passed.
Fixes <http://bugs.gnu.org/21817>.
Reported by Petter Berntsen <petter@mykolab.ch>.
* guix/scripts/gc.scm (guix-gc)[assert-no-extra-arguments]: New
procedure.
Use it for actions 'collect-garbage', 'optimize', and 'verify'.
* tests/guix-gc.sh: Add tests.
edit: Honor $VISUAL.
Suggested by Andreas Enge <andreas@enge.fr>.
* guix/scripts/edit.scm (%editor): Honor 'VISUAL' before 'EDITOR'.
(show-help): Adjust accordingly.
* doc/guix.texi (Invoking guix edit): Likewise.
refresh: Avoid non-literal format string.
Reported by Mathieu Lirzin <mthl@gnu.org>.
* guix/scripts/refresh.scm (guix-refresh): Rewrite 'list-dependent?'
report to avoid nested 'N_' calls.
ui: 'guix help COMMAND' is like 'guix COMMAND --help'.
* guix/ui.scm (run-guix): Add ("help" COMMAND) case.
guix package: '--search-paths' can report combined search paths.
Partly fixes <http://bugs.gnu.org/20255>.
* guix/scripts/package.scm (search-path-environment-variables): Change
'profile' to 'profiles'; expect it to be a list.
(display-search-paths): Likewise.
(%default-options): Remove 'profile' entry.
(%options) <--profile>: Keep previous values associated with 'profile'
in RESULT.
(guix-package)[process-actions, process-query]: Handle the possible
lack of 'profile' pair in OPTS.
refresh: Discard PyPI updater when Guile-JSON is missing.
Reported by Sleep_Walker and Mathieu Lirzin <mthl@gnu.org>.
* guix/scripts/refresh.scm (maybe-updater, list-updaters): New macros.
(%updaters): Use 'list-updaters' instead of 'list'. Make
%PYPI-UPDATER conditional.
edit: Lift helper procedure.
* guix/scripts/edit.scm (package->location-specification): New
procedure, with code formerly...
(guix-edit): ... here. Use it.
import: hackage: Fix invalid use of 'leave'.
Reported by Paul van der Walt <paul@denknerd.org>
in <http://bugs.gnu.org/21829>.
* guix/scripts/import/hackage.scm (guix-import-hackage): Add missing
argument in call to 'leave'.
build-system/python: 'package-with-python2' preserves source location.
* guix/build-system/python.scm (package-with-explicit-python): Add
'location' field.
import: pypi: Make downloads silent.
* guix/import/pypi.scm (pypi-fetch): Wrap body in
'call-with-output-file' and 'with-error-to-port'.
import: pypi: Add missing copyright line.
* guix/import/pypi.scm: Add missing copyright line for bab020d.
scripts: container: Fix 'exec' command line parsing.
* guix/scripts/container/exec.scm (partition-args): Reimplement such
that all args up to and including the PID are returned as the first of
the two values.