summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Expand)Author
2016-03-17substitute: 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-17substitute: 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-17lint: 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-17download: Add 'close-connection'....Partially fixes <http://bugs.gnu.org/20145>. * guix/build/download.scm (add-weak-reference): Remove. (%tls-ports): New variable. (register-tls-record-port): New procedure. (tls-wrap): Use it instead of 'add-weak-reference'. (close-connection): New procedure. Ludovic Courtès
2016-03-17substitute: 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-17licenses: Add Apache Software License 1.1....* guix/licenses.scm (asl1.1): New variables. Signed-off-by: Leo Famulari <leo@famulari.name> Roel Janssen
2016-03-16substitute: 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-16substitute: 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-16substitute: 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-16build: Default to "https://mirror.hydra.gnu.org/" for substitutes....* config-daemon.ac: Check for (gnutls) and define 'GUIX_SUBSTITUTE_URLS'. * nix/nix-daemon/guix-daemon.cc (main): Use GUIX_SUBSTITUTE_URLS. * guix/store.scm (%default-substitute-urls): Use 'https' when (gnutls) is available. * doc/guix.texi (Binary Installation): Mention mirrors (Invoking guix-daemon): Mention mirror.hydra.gnu.org. (Substitutes): Mention mirrors. (Invoking guix archive): Show https URLs. Ludovic Courtès
2016-03-16http-client: No 'setvbuf' for non-file ports....* guix/http-client.scm (http-fetch): Do not call 'setvbuf' on non-file ports. Ludovic Courtès
2016-03-14grafts: Update the narinfo cache before building a derivation....* guix/grafts.scm (references-oracle)[references*]: Add call to 'substitution-oracle'. Ludovic Courtès
2016-03-14substitute: 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-14http-client: Add #:keep-alive? parameter....* guix/http-client.scm (http-fetch): Add #:keep-alive? parameter and pass it to 'http-get' or 'http-get*'. Ludovic Courtès
2016-03-14substitute: 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-14store: 'references/substitutes' caches its results....* guix/store.scm (%reference-cache): New variable. (references/substitutes): Use it. Ludovic Courtès
2016-03-14size: Disable grafts....* guix/scripts/size.scm (guix-size): Parametrize '%graft?'. Ludovic Courtès
2016-03-14build: Add Ant build system....* guix/build-system/ant.scm: New file. * guix/build/ant-build-system: New file. * Makefile.am (MODULES): Add new files. * doc/guix.texi (Build Systems): Document ant-build-system. Ricardo Wurmus
2016-03-11cve: Read entire CVE databases for the current year and the past year....The "Modified" database that we were reading is much smaller, but it only shows CVEs modified over the past week. * guix/cve.scm (%now, %current-year, %past-year): New variables. (yearly-feed-uri): New procedure. (%cve-feed-uri, %ttl): Remove. (%current-year-ttl, %past-year-ttl): New variables. (call-with-cve-port): Add 'uri' and 'ttl' parameters and honor them. Add 'setvbuf' call. (current-vulnerabilities)[read-vulnerabilities]: New procedure. Read from both %LAST-YEAR and %CURRENT-YEAR. Ludovic Courtès
2016-03-11cve: Make CPE patch level part of the version string....* guix/cve.scm (%cpe-package-rx): Adjust to account for :PATCH-LEVEL. (cpe->package-name): Likewise. Ludovic Courtès
2016-03-10substitute: 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-10substitute: 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-09substitute: 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-09ui: Do not call 'port-filename' on closed file ports....* guix/ui.scm (call-with-error-handling)[port-filename*]: New procedure. Use it in the 'nar-error?' case. Ludovic Courtès
2016-03-09upstream: Fix 'signature-urls' coalescing....Previously, the resulting 'signature-urls' would contain N times the same URL. * guix/upstream.scm (coalesce-sources): Fix TWO in 'signature-urls'. * tests/upstream.scm: New file. * Makefile.am (SCM_TESTS): Add it. Ludovic Courtès
2016-03-08guix 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-08guix 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-08packages: Cache the result of 'input-grafts'....This reduces the wall-clock time of guix environment gnutls --pure -E true by ~35%. * guix/packages.scm (%graft-cache): New variable. (input-graft): Use 'cached' to cache to %GRAFT-CACHE. Ludovic Courtès
2016-03-08packages: Cache the result of 'package->bag'....This reduces the wall-clock time of guix environment gnutls --pure -E true by ~25%. * guix/packages.scm (%bag-cache): New variable. (package->bag): Use 'cached' to cache things to %BAG-CACHE. Ludovic Courtès
2016-03-08packages: Generalize the 'cached' macro....* guix/packages.scm (cache): Rename to... (cache!): ... this. Add 'cache' parameter, and use it. (cached): Add a rule to allow the cache to be specified. Ludovic Courtès
2016-03-06import: snix: Use the right 'package-name->name+version'....Fixes a regression introduced in 1b846da8c372bee78851439fd9e72b2499115e5a. * guix/import/snix.scm: Use 'package-name->name+version' from (guix build utils). Ludovic Courtès
2016-03-05store: 'references/substitutes' correctly handles the order of substitutes....Before that, 'references/substitutes' would assume that 'substitutable-path-info' would return things in the same order as its arguments, which is not the case. Thus, it would sometimes provide incorrect reference information, occasionally leading to infinite loop (because dependency information would denote cycles.) Fixes <http://bugs.gnu.org/22914>. Reported by Eric Bavier <ericbavier@openmailbox.org>. * guix/store.scm (references/substitutes): Make ITEMS the first argument of the loop; match on it. Use 'any' to find a matching substitute. (substitutable-path-info): Clarify docstring about ordering. Ludovic Courtès
2016-03-05grafts: Memoize intermediate results in 'cumulative-grafts'....The time for: guix build inkscape -n --no-substitutes goes down by 30% (in the presence of 3 replacements among all the packages.) * guix/grafts.scm (cumulative-grafts): Turn into a monadic procedure in %STATE-MONAD. Use the current state as a derivation-to-graft cache. (graft-derivation): Call 'cumulative-grafts' within 'run-with-state'. Ludovic Courtès
2016-03-05packages: The result of 'bag-grafts' does not contain duplicates....* guix/packages.scm (bag-grafts): Add call to 'delete-duplicates'. Ludovic Courtès
2016-03-05grafts: Use dependency information from substitutes when possible....This avoids starting derivation builds just for the sake of knowing the references of their outputs, thereby restoring the expected behavior of --dry-run when substitutes are available. * guix/grafts.scm (non-self-references): Remove 'store' parameter, and add 'references'. Use it. Update caller. (references-oracle): New variable. (cumulative-grafts): Add 'references' parameter and use it. Update callers. (graft-derivation): Remove 'build-derivations' call. Add call to 'references-oracle'. Ludovic Courtès
2016-03-05store: Add 'references/substitutes'....* guix/store.scm (references/substitutes): New procedure. * tests/store.scm ("references/substitutes missing reference info") ("references/substitutes with substitute info"): New tests. Ludovic Courtès
2016-03-05tests: Narinfos can specify an non-empty reference list....* guix/tests.scm (derivation-narinfo): Add #:references and honor it. (call-with-derivation-narinfo, call-with-derivation-substitute): Likewise. (with-derivation-narinfo, with-derivation-substitute): Add 'references' keyword. Ludovic Courtès
2016-03-05guix 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
2016-03-04lint: cve: Gracefully handle HTTP errors....* guix/scripts/lint.scm (current-vulnerabilities*): New procedure. (package-vulnerabilities): Use it. Ludovic Courtès
2016-03-03lint: derivation: Disable grafts, but check replacements....* guix/scripts/lint.scm (check-derivation): Pass #:graft? #f. When 'package-replacement' exists, compute its derivation. Ludovic Courtès
2016-03-03guix build: -S returns the replacement's source....Reported by Mark H Weaver. * guix/scripts/build.scm (options->derivations): When SRC and GRAFT? are true, use the source of P's replacement. * tests/guix-build.sh: Add test. Ludovic Courtès
2016-03-02utils: Use '@' for separating package names and version numbers....This provides the ability to use numbers in package names. Fixes <http://bugs.gnu.org/19219>. * guix/utils.scm (package-name->name+version): New procedure. * gnu/packages.scm (%find-package): Add a FALLBACK? keyword argument. Use the previous method when no package is found. (specification->package+output, specification->package): Adapt documentation to new syntax. * doc/guix.texi (Invoking guix package, Invoking guix import): Likewise. * guix/ui.scm (package-specification->name+version+output): Likewise. * guix/scripts/import/hackage.scm (show-help): Likewise. * tests/guix-build.sh: Adapt to new syntax. * tests/guix-lint.sh: Likewise. * tests/guix-package.sh: Likewise. * tests/ui.scm ("package-specification->name+version+output"): Likewise. * tests/utils.scm ("package-name->name+version"): Likewise. * NEWS: Mention new syntax. Mathieu Lirzin
2016-03-02graph: Ignore 'GUIX_BUILD_OPTIONS'....Previously 'GUIX_BUILD_OPTIONS' would be honored, but 'guix graph' does not support the common build options. * guix/scripts/graph.scm (guix-graph): Use 'args-fold*' instead of 'parse-command-line'. Ludovic Courtès
2016-03-02guix build: Move '--no-grafts' to the common build options....* guix/scripts/build.scm (%options): Move --no-grafts to... (%standard-build-options): ... here. (show-help, show-build-options-help): Adjust accordingly. * guix/scripts/archive.scm (%default-options): Add 'graft?'. (guix-archive): Parametrize '%graft?'. * guix/scripts/environment.scm (%default-options): Add 'graft?'. (guix-environment): Parametrize '%graft?'. * guix/scripts/package.scm (%default-options): Add 'graft?'. (guix-package): Parametrize '%graft?'. * guix/scripts/system.scm (%default-options): Add 'graft?'. (guix-system): Parametrize 'graft?'. * doc/guix.texi (Additional Build Options): Move --no-grafts to... (Common Build Options): ... here. Ludovic Courtès
2016-03-02guix archive: Use 'with-store'....* guix/scripts/archive.scm (guix-archive): Use 'with-store' instead of an explicit 'open-connection'. Ludovic Courtès
2016-03-01grafts: Graft recursively....Fixes <http://bugs.gnu.org/22139>. * guix/grafts.scm (graft-derivation): Rename to... (graft-derivation/shallow): ... this. (graft-origin-file-name, item->deriver, non-self-references) (cumulative-grafts, graft-derivation): New procedures * tests/grafts.scm ("graft-derivation, grafted item is a direct dependency"): Clarify title. Use 'grafted' instead of 'graft' to refer to the grafted derivation. ("graft-derivation, grafted item is an indirect dependency") ("graft-derivation, no dependencies on grafted output"): New tests. * guix/packages.scm (input-graft): Change to take a package instead of an input. (input-cross-graft): Likewise. (fold-bag-dependencies): New procedure. (bag-grafts): Rewrite in terms of 'fold-bag-dependencies'. * tests/packages.scm ("package-derivation, indirect grafts"): Comment out. * doc/guix.texi (Security Updates): Mention run-time dependencies and recursive grafting. Ludovic Courtès
2016-02-27grafts: Consider all the outputs in the graft mapping....Before that, outputs of a derivation could be left referring to the ungrafted version of the derivation. * guix/grafts.scm (graft-derivation)[outputs]: Change to a list of name/file pairs. * guix/grafts.scm (graft-derivation)[build]: Add 'old-outputs' variable and use it when computing 'mapping'. Use 'mapping' directly. * tests/grafts.scm ("graft-derivation, multiple outputs"): New test. Ludovic Courtès
2016-02-27grafts: Slight simplification....* guix/grafts.scm (graft-derivation)[output-names]: Use 'derivation-output-names'. Ludovic Courtès
2016-02-27grafts: Make sure files are not created world-writable....* guix/build/graft.scm (rewrite-directory): Add 'umask' call. Ludovic Courtès
2016-02-26import: Add github-updater....* guix/import/github.scm: New file. * guix/scripts/refresh.scm (%updaters): Add %GITHUB-UPDATER. * doc/guix.texi (Invoking guix refresh): Mention it. * Makefile.am (MODULES): Add gnu/import/github.scm. Ben Woodcroft