summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2015-11-26import: hackage: Imporve parsing of tests.Federico Beffa
* guix/import/cabal.scm (lex-word): Add support for tests with no spaces. (impl): Rewrite.
2015-11-26import: hackage: Add recognition of 'true' and 'false' symbols.Federico Beffa
* guix/import/cabal.scm (is-true, is-false, lex-true, lex-false): New procedures. (lex-word): Use them. (make-cabal-parser): Add TRUE and FALSE tokens. (eval): Add entries for 'true and 'false symbols.
2015-11-25gexp: Build text derivations locally.Ludovic Courtès
* guix/gexp.scm (gexp->file): Pass #:substitutable? #f. (text-file*): Likewise, and #:local-build? #t.
2015-11-24guix package: Reduce startup time by ~50%.Ludovic Courtès
As measured with: time sh -c 'for i in `seq 1 10` ; do guix package --search-paths ; done' On my machine, when running: strace -o ,,s guix package --search-paths the number returned by: grep -E '^(open|l?stat).*\.go' ,,s | wc -l drops from 1610 to 837. * guix/scripts/package.scm: Remove two unnecessary #:use-module forms. Autoload (gnu packages ...) modules.
2015-11-23graph: Add '%bag-with-origins-node-type'.Ludovic Courtès
* guix/scripts/graph.scm (bag-node-edges): Remove 'filter' call. Add case for 'origin'. (%bag-node-type)[edges]: Add filtering here. (%bag-with-origins-node-type): New variable. (%node-types): Add it. * tests/graph.scm ("bag DAG, including origins"): New test. * tests/guix-graph.sh: Add 'bag-with-origins'. * doc/guix.texi (Invoking guix graph): Document it.
2015-11-23refresh: Add '--expression'.Ludovic Courtès
* guix/scripts/refresh.scm (%options, show-help): Add --expression. (guix-refresh): Honor it. * doc/guix.texi (Invoking guix refresh): Document it.
2015-11-23guix download: Fail when more than one URL is passed.Ludovic Courtès
* guix/scripts/download.scm (guix-download)[parse-option]: Call 'leave' when passed an extra argument. * tests/guix-download.sh: Add test.
2015-11-23guix download: Gracefully handle missing arguments.Ludovic Courtès
Fixes <http://bugs.gnu.org/21991>. Reported by Jan Synáček <jan.synacek@gmail.com>. * guix/scripts/download.scm (guix-download): Call 'leave' when OPTS does not contain an 'argument' key.
2015-11-22ftp-client: Default port for 'ftp-open' is now "ftp".Ludovic Courtès
* guix/ftp-client.scm (ftp-open): Change default #:port to "ftp". * guix/scripts/lint.scm (probe-uri): Remove 'port' parameter to 'ftp-open'.
2015-11-22ftp-client: Fix off-by-one when trying addresses in 'ftp-open'.Ludovic Courtès
* guix/ftp-client.scm (ftp-open): Change to use 'match' instead of car/cdr, and fix off-by-one (was '(null? addresses)' instead of '(null? (cdr addresses))'.)
2015-11-21environment: Correctly handle abnormal exits.Ludovic Courtès
Fixes <http://bugs.gnu.org/21958>. * guix/scripts/environment.scm (status->exit-code): New procedure. (exit/status, primitive-exit/status): Use it. * tests/guix-environment-container.sh: Add test.
2015-11-21refresh: Rewrite '--list-dependent' in terms of (guix graph).Ludovic Courtès
* guix/scripts/refresh.scm (all-packages, list-dependents): New procedures. (guix-refresh): Use it.
2015-11-21graph: Add procedures to query a node's edges.Ludovic Courtès
* guix/graph.scm (%node-edges, node-edges, node-back-edges) (node-transitive-edges): New procedures. * tests/graph.scm ("node-edges") ("node-transitive-edges + node-back-edges"): New tests.
2015-11-21Add (guix graph).Ludovic Courtès
* guix/scripts/graph.scm (<node-type>, <graph-backend>, emit-prologue) (emit-epilogue, emit-node, emit-edge, %graphviz-backend, export-graph): Move to... * guix/graph.scm: ... here. New file. * guix/scripts/system.scm, tests/graph.scm: Use it. * Makefile.am (MODULES): Add it.
2015-11-17ftp-client: Restrict to TCP/IP connections.Ludovic Courtès
Fixes <http://bugs.gnu.org/21925>. Regression introduced in 279ec1d. Reported by Chris Marusich <cmmarusich@gmail.com>. * guix/ftp-client.scm (ftp-open): Restrict sockets to SOCK_STREAM/IPPROTO_IP.
2015-11-16graft: Graft files in parallel.Ludovic Courtès
* guix/build/graft.scm (rewrite-directory): Use 'n-par-for-each' instead of 'for-each'.
2015-11-16graft: Graft files in a deterministic order.Ludovic Courtès
* 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'.
2015-11-12lint: Have connections time out after 3 seconds.Ludovic Courtès
* 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'.
2015-11-12download: Always use AI_ADDRCONFIG when resolving host names.Ludovic Courtès
* 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.
2015-11-12download: Add timeout parameter for connections.Ludovic Courtès
* 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'.
2015-11-12ftp-client: Add timeout parameter to 'ftp-open'.Ludovic Courtès
* 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.
2015-11-12ftp-client: Restrict to TCP connections.Ludovic Courtès
* guix/ftp-client.scm (ftp-open): Force SOCK_STREAM as the socket type to avoid calling 'connect' on a datagram socket.
2015-11-11guix gc: Error out when extra arguments are passed.Ludovic Courtès
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.
2015-11-11edit: Honor $VISUAL.Ludovic Courtès
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.
2015-11-11refresh: Avoid non-literal format string.Ludovic Courtès
Reported by Mathieu Lirzin <mthl@gnu.org>. * guix/scripts/refresh.scm (guix-refresh): Rewrite 'list-dependent?' report to avoid nested 'N_' calls.
2015-11-11ui: 'guix help COMMAND' is like 'guix COMMAND --help'.Ludovic Courtès
* guix/ui.scm (run-guix): Add ("help" COMMAND) case.
2015-11-11guix package: '--search-paths' can report combined search paths.Ludovic Courtès
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.
2015-11-08refresh: Discard PyPI updater when Guile-JSON is missing.Ludovic Courtès
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.
2015-11-05edit: Improve error reporting when $EDITOR is not found.Ludovic Courtès
Reported by Benno Evers <benno@bmevers.de> at <https://lists.gnu.org/archive/html/guix-devel/2015-11/msg00125.html>. * guix/scripts/edit.scm (guix-edit): Wrap 'execl' call in 'catch'. Provide more meaningful error message.
2015-11-05edit: Lift helper procedure.Ludovic Courtès
* guix/scripts/edit.scm (package->location-specification): New procedure, with code formerly... (guix-edit): ... here. Use it.
2015-11-04import: hackage: Fix invalid use of 'leave'.Ludovic Courtès
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'.
2015-11-04build-system/python: 'package-with-python2' preserves source location.Ludovic Courtès
* guix/build-system/python.scm (package-with-explicit-python): Add 'location' field.
2015-11-04import: pypi: Make downloads silent.Ludovic Courtès
* guix/import/pypi.scm (pypi-fetch): Wrap body in 'call-with-output-file' and 'with-error-to-port'.
2015-11-04import: pypi: Add missing copyright line.Ludovic Courtès
* guix/import/pypi.scm: Add missing copyright line for bab020d.
2015-11-03scripts: container: Fix 'exec' command line parsing.David Thompson
* 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.
2015-11-03import: pypi: add updaterCyril Roelandt
* guix/import/pypi.scm (guix-package->pypi-name, latest-release): New procedures. (%pypi-updater): New variable. * guix/scripts/refresh.scm (%updaters): Add %PYPI-UPDATER. * doc/guix.texi (Invoking guix refresh): Mention PyPI
2015-11-03import: pypi: Use "pypi-uri" instead of building the URL manually.Cyril Roelandt
* guix/import/pypi.scm (make-pypi-sexp): Use "pypi-uri". * tests/pypi.scm: Update the tests accordingly.
2015-11-03guix: Add a "pypi-uri" helper method.Cyril Roelandt
* guix/download.scm (mirrors): New "pypi" mirror. * guix/build-system/python.scm (pypi-uri): New method.
2015-11-03scripts: environment: Display friendly container error messages.David Thompson
* guix/scripts/environment.scm (assert-container-features): New procedure. (guix-environment): Use it.
2015-11-03import: gnu: Update to the (guix upstream) API.Ludovic Courtès
This is a followup to 0a7c5a0. * guix/import/gnu.scm (preferred-archive-type): Use 'upstream-source-archive-types' instead of 'gnu-release-archive-types'. (gnu-package->sexp): Use 'upstream-source-urls' et al. Update call to 'download-tarball'. (gnu->guix-package): Use <upstream-source> instead of <gnu-release>. * guix/upstream.scm (upstream-source-archive-types): Export.
2015-11-02guix system: Always build grub.cfg for 'init' and 'reconfigure'.Ludovic Courtès
Fixes <http://bugs.gnu.org/21068>. Reported by Germano Gabbianelli <tyrion.mx@gmail.com> and Mark H Weaver <mhw@netris.org>. * guix/scripts/system.scm (perform-action): Always add GRUB.CFG to DRVS for 'init' and 'reconfigure'. Co-authored-by: Mark H Weaver <mhw@netris.org>
2015-11-02services: Add 'system-service-type'.Ludovic Courtès
* gnu/services.scm (system-derivation): New procedure. (system-service-type): New variable. (boot-script-entry): New procedure. (boot-service-type): Extend SYSTEM-SERVICE-TYPE. (etc-entry): New procedure. (etc-service-type): Extend SYSTEM-SERVICE-TYPE. (fold-services): Change default #:target-type to SYSTEM-SERVICE-TYPE. * gnu/system.scm (operating-system-directory-base-entries): New procedure. (essential-services): Use it. Add an instance of SYSTEM-SERVICE-TYPE. (operating-system-boot-script): Pass #:target-type to 'fold-services'. (operating-system-derivation): Rewrite in terms of 'fold-services'. * gnu/system/linux-container.scm (system-container): Remove. (container-script): Use 'operating-system-derivation'. * guix/scripts/system.scm (export-extension-graph): Replace BOOT-SERVICE-TYPE by SYSTEM-SERVICE-TYPE. * doc/images/service-graph.dot: Add 'system' node and edges. * doc/guix.texi (Service Composition): Mention SYSTEM-SERVICE-TYPE. (Service Reference): Document it. Update 'fold-services' documentation.
2015-11-02scripts: environment: Ignore user shell when spawning container.David Thompson
* guix/scripts/environment.scm (%default-options): Remove 'exec' association. (guix-environment): If the user didn't specify a command, use the default shell, or use /bin/sh when a container is requested.
2015-11-02emacs: Add completions for '--type' option of 'refresh' popup.Alex Kost
* guix/scripts/refresh.scm: Export '%updaters'. * emacs/guix-main.scm (refresh-updater-names): New procedure. * emacs/guix-base.el (guix-refresh-updater-names): New function. * emacs/guix-read.el (guix-read-refresh-updater-names, guix-read-refresh-updater-names-string): New functions. * emacs/guix-command.el (guix-command-improve-refresh-argument): Use 'guix-read-refresh-updater-names-string'.
2015-11-01scripts: Add 'container' subcommand.David Thompson
* guix/scripts/container.scm: New file. * guix/scripts/container/exec.scm: New file. * po/guix/POTFILES.in: Add them. * Makefile.am (MODULES): Add them. * doc/guix.texi (Invoking guix container): New section.
2015-10-31guix system: Fix typo in --help message.Alex Kost
* guix/scripts/system.scm (show-help): Align 'container' the same way as other actions.
2015-10-30scripts: environment: Allow lists of packages in expressions.David Thompson
* guix/scripts/environment.scm (options/resolve-packages): Match against lists of packages when evaluating expressions. * tests/guix-environment.sh: Add test. * doc/guix.texi ("invoking guix environment"): Add docs.
2015-10-30scripts: system: Add 'container' action.David Thompson
* guix/scripts/system.scm (show-help): Display 'container' action. (system-derivation-for-action, guix-system): Add 'container' case. (perform-action): Skip GRUB config generation when building a container. * doc/guix.texi (Invoking guix system): Document it.
2015-10-29scripts: environment: Allow mixing regular and ad-hoc packages.David Thompson
This patch changes the --ad-hoc flag to be positional. That is, the packages that appear before --ad-hoc are interpreted as packages whose inputs should be in the environment; the packages that appear after are interpreted as packages to be directly added to the environment. * guix/scripts/environment.scm (tag-package-arg, compact): New procedures. (%options): Tweak the handlers for --load and --expression options. (options/resolve-packages): Preserve package mode tag. (parse-args): Tweak argument handler to use package tagging procedure. (guix-environment): Apply ad-hoc behavior on a per package basis. * tests/guix-environment.sh: Add test. * doc/guix.texi ("invoking guix environment"): Document new behavior of --ad-hoc.
2015-10-28refresh: Support comma-separated updater types.Alex Kost
* guix/scripts/refresh.scm (%options): Handle comma-separated types for '--type' option. (guix-refresh): Adjust accordingly. (show-help): Likewise. * doc/guix.texi (Invoking guix refresh): Document it.