summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2019-11-13guix: svn: Allow dropping externals.Julien Lepiller
* guix/build/svn.scm (svn-fetch): Allow to ignore externals. * guix/svn-download.scm (svn-reference, svn-multi-reference): Add recursive? field.
2019-11-09ui: Emit hyperlinks for 'license' in package search results.Ludovic Courtès
* guix/ui.scm (package->recutils): When HYPERLINKS is true, call 'hyperlink' for the 'license' field.
2019-11-09ui: Produce hyperlinks for the 'location' field of search results.Ludovic Courtès
This affects the output of 'guix show', 'guix search', and 'guix system search'. * guix/ui.scm (hyperlink, supports-hyperlinks?, location->hyperlink): New procedures. (package->recutils): Add #:hyperlinks? and honor it. (display-search-results): Pass #:hyperlinks? to PRINT. * guix/scripts/system/search.scm (service-type->recutils): Add #:hyperlinks? and honor it.
2019-11-08guix: package: lock profiles when processing them.Julien Lepiller
* guix/scripts/package.scm (process-actions): Get a per-profile lock to prevent concurrent actions on profiles. * tests/guix-package.sh: Add test.
2019-11-08guix: Add file-locking with no wait.Julien Lepiller
* guix/build/syscalls.scm (with-file-lock/no-wait): New procedure. (lock-file): Take a #:wait? key.
2019-11-07graph: Support package transformation options.Ludovic Courtès
* guix/scripts/graph.scm (%options): Append %TRANSFORMATION-OPTIONS. (show-help): Call 'show-transformation-options-help'. (guix-graph): Call 'options->transformation' and use it. * tests/guix-graph.sh: Add test. * doc/guix.texi (Invoking guix graph): Document it.
2019-11-07derivations: Use a regular hash table for the module cache.Ludovic Courtès
The hit rate of the 'add-data-to-store' cache goes from 10% to 4% on: guix build -e '(@@ (gnu packages libreoffice) libreoffice)' -nd * guix/derivations.scm (%module-cache): Turn into a regular hash table. It didn't make sense to use a weak-value hash table given that values are pairs.
2019-11-01pull: Gracefully handle invalid Texinfo markup in news.Ludovic Courtès
Reported by Oleg Pykhalov <go.wigust@gmail.com>. * guix/scripts/pull.scm (display-news-entry-title) (display-news-entry): Catch 'parser-error' around call to 'texi->plain-text', and return Texinfo as-is when an exception is caught.
2019-10-28derivation: Remove memoization invalidation for 'derivation->bytevector'.Ludovic Courtès
This is a followup to d727a9343d861cf775645df8be5bfefd43d6c6f0, which broke 'hydra-jobs' from (gnu ci). * guix/derivations.scm (invalidate-derivation-caches!): Remove call to 'invalidate-memoization!' for 'derivation->bytevector'.
2019-10-27pull: Honor '/etc/guix/channels.scm'.Ludovic Courtès
* guix/scripts/pull.scm (channel-list)[global-file]: New variable. [channels]: Honor it. * doc/guix.texi (Invoking guix pull): Document it.
2019-10-27channels: Refer to 'guile-json-3'.Ludovic Courtès
Fixes a regression introduced in 84af1e74029fd4c43636f7d8d3e6f82ddab9ce82. * guix/channels.scm (whole-package-for-legacy): Refer to GUILE-JSON-3, not GUILE-JSON.
2019-10-27derivations: Don't memoize 'derivation->bytevector'.Ludovic Courtès
Its hit rate was only 8%. Removing it reduces heap size of "guix build libreoffice -nd" from 69MiB to 61MiB and the wall-clock time is unchanged. * guix/derivations.scm (derivation->bytevector): Change from 'mlambda' to 'lambda'.
2019-10-27gexp: Cache the module to derivation mappings.Ludovic Courtès
This reduces the number of 'add-data-to-store' cache lookups from 3329 to 2743 (hit rate: 27% to 11%) when running: GUIX_PROFILING=add-data-to-store-cache guix build libreoffice -nd Execution time of "guix build libreoffice -nd" goes from 1.86s to 1.80s. * guix/gexp.scm (imported+compiled-modules): Wrap body in 'mcached'.
2019-10-27store: Allow objects in the cache to be inserted and search for with 'equal?'.Ludovic Courtès
* guix/store.scm (cache-object-mapping): Add #:vhash-cons parameter and honor it. (lookup-cached-object): Add #:vhash-fold* parameter and honor it. (%mcached): Add #:vhash-fold* and #:vhash-cons and honor them. (mcached): Add clauses with 'eq?' and 'equal?' as the first argument.
2019-10-27gexp: Add 'imported+compiled-modules'.Ludovic Courtès
* guix/gexp.scm (imported+compiled-modules): New procedure. (lower-gexp): Use it instead of separate calls to 'imported-modules' and 'compiled-modules'.
2019-10-27derivations: 'build-expression->derivation' caches its module derivations.Ludovic Courtès
This reduces the number of lookups in the 'add-data-to-store' cache from 7505 to 3329 (hit rate from 68% to 27%) when running: GUIX_PROFILING=add-data-to-store-cache guix build libreoffice -nd The execution time of "guix build libreoffice -nd" goes from 2.12s to 1.87s. * guix/derivations.scm (%module-cache): New variable. (imported+compiled-modules)[key]: New variable. Lookup KEY in %MODULE-CACHE and populate %MODULE-CACHE upon cache miss.
2019-10-27derivations: Introduce 'imported+compiled-modules'.Ludovic Courtès
* guix/derivations.scm (imported+compiled-modules): New procedure. (build-expression->derivation): Use it instead of separate calls to '%imported-modules' and '%compiled-modules'.
2019-10-25guix build: Remove obsolete TODO.Ludovic Courtès
* guix/scripts/build.scm (set-build-options-from-command-line): Remove obsolete TODO comment.
2019-10-25guix build: Warn when '--keep-failed' is passed to a remote daemon.Ludovic Courtès
* guix/scripts/build.scm (set-build-options-from-command-line): When OPTS has 'keep-failed?' set, check whether STORE is connected over AF_UNIX and warn when it's not.
2019-10-24Revert "guix: svn: Allow dropping externals."Tobias Geerinckx-Rice
This reverts commit 51395c84fdbf8daed6392951a973ad750cf3eefa, fixing <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37896>. Reported by <o.rojon@posteo.net>.
2019-10-23guix: svn: Allow dropping externals.Julien Lepiller
* guix/build/svn.scm (svn-fetch): Allow to ignore externals. * guix/svn-download.scm (svn-reference, svn-multi-reference): Add recursive? field.
2019-10-23lint: Re-enable CVE checker.Ludovic Courtès
This reverts d7fcd9c565812919109ae88049f5d8bf4c56f9bd. * guix/lint.scm (%network-dependent-checkers): Re-enable 'cve checker.
2019-10-23cve: Rewrite to read the JSON feed instead of the XML feed.Ludovic Courtès
The XML feed was discontinued on Oct. 16th, 2019: <https://nvd.nist.gov/General/News/XML-Vulnerability-Feed-Retirement-Phase-3> * guix/cve.scm (string->date*): New procedure. (<cve-item>, <cve>, <cve-reference>): New record types. (cpe-match->cve-configuration, configuration-data->cve-configurations) (json->cve-items, version-matches?): New procedures. (yearly-feed-uri): Change URL to refer to JSON feed. (cpe->product-alist, %parse-vulnerability-feed) (xml->vulnerabilities): Remove. (cve-configuration->package-list, merge-package-lists) (cve-item->vulnerability, json->vulnerabilities): New procedures. (write-cache): Use 'json->vulnerabilities' instead of 'xml->vulnerabilities', and remove 'parameterize'. (vulnerabilities->lookup-proc): Use 'version-matches?' when VERSION is true. * tests/cve.scm (%sample): Use 'tests/cve-sample.json'. (%expected-vulnerabilities): Rewrite accordingly. ("json->cve-items", "cve-item-published-date") ("json->vulnerabilities"): New tests. ("xml->vulnerabilities"): Remove. ("vulnerabilities->lookup-proc"): Adjust to new vulnerabilities. * tests/cve-sample.json: New file. * tests/cve-sample.xml: Remove. * Makefile.am (EXTRA_DIST): Adjust accordingly. * doc/guix.texi (Invoking guix lint): Update nist.gov URLs.
2019-10-21download: Honor /etc/ssl/certs when 'SSL_CERT_DIR' is not set.Ludovic Courtès
* guix/build/download.scm (%x509-certificate-directory): Use "/etc/ssl/certs" as a last resort. This ensures, for instance, that 'guix download' honors system-wide certificates when SSL_CERT_DIR is unset.
2019-10-20packages: Add "aarch64-linux" to '%hydra-supported-systems'.Ludovic Courtès
* guix/packages.scm (%hydra-supported-systems): Keep "aarch64-linux".
2019-10-18reconfigure: Silence "shepherd: Evaluating ..." messages.Ludovic Courtès
* guix/scripts/system/reconfigure.scm (upgrade-services-program): Parameterize 'shepherd-message-port' to silent "Evaluating ..." messages.
2019-10-18lint: Comment out 'cve' checker.Ludovic Courtès
* guix/lint.scm (%network-dependent-checkers): Comment out 'cve' checker.
2019-10-18pull: Call 'ensure-default-profile' after 'set-build-options'.Ludovic Courtès
This is a followup to 81c580c8664bfeeb767e2c47ea343004e88223c7. * guix/scripts/pull.scm (guix-pull): Move 'ensure-default-profile' call after 'set-build-options-from-command-line' call. This ensures that the 'profiles/per-user/$USER' directory is created before 'ensure-default-profile' is called when 'GUIX_DAEMON_SOCKET' points to a remote TCP daemon.
2019-10-18build-system/asdf: Fix package transform.Guillaume Le Vaillant
* guix/build-system/asdf.scm (package-with-build-system): [find-input-package]: New function. [rewrite]: Use it.
2019-10-16daemon: Make 'profiles/per-user' non-world-writable.Ludovic Courtès
Fixes <https://bugs.gnu.org/37744>. Reported at <https://www.openwall.com/lists/oss-security/2019/10/09/4>. Based on Nix commit 5a303093dcae1e5ce9212616ef18f2ca51020b0d by Eelco Dolstra <edolstra@gmail.com>. * nix/libstore/local-store.cc (LocalStore::LocalStore): Set 'perUserDir' to #o755 instead of #o1777. (LocalStore::createUser): New function. * nix/libstore/local-store.hh (LocalStore): Add it. * nix/libstore/store-api.hh (StoreAPI): Add it. * nix/nix-daemon/nix-daemon.cc (performOp): In 'wopSetOptions', add condition to handle "user-name" property and honor it. (processConnection): Add 'userId' parameter. Call 'store->createUser' when userId is not -1. * guix/profiles.scm (ensure-profile-directory): Note that this is now handled by the daemon. * guix/store.scm (current-user-name): New procedure. (set-build-options): Add #:user-name parameter and pass it to the daemon. * tests/guix-daemon.sh: Test the creation of 'profiles/per-user' when listening on a TCP socket. * tests/store.scm ("profiles/per-user exists and is not writable") ("profiles/per-user/$USER exists"): New tests.
2019-10-15inferior: Set the error port when using older Guix versions.Christopher Baines
This makes the behaviour more consistent. * guix/inferior.scm (inferior-pipe): Wrap the second open-pipe* call with with-error-to-port, to match the first call to open-pipe*.
2019-10-15inferior: Allow controlling the inferior error port.Christopher Baines
Previously, stderr for the inferior process would always be sent to /dev/null because the current-output-port when the process is launched is a void port. This change means that it's possible to pass in a different port to use. * guix/inferior.scm (inferior-pipe): Take the error-port as an argument. (open-inferior): Add new error-port keyword argument, with a default of (%make-void-port "w").
2019-10-15ssh: Add a longer SSH timeout by default.Ludovic Courtès
* guix/ssh.scm (open-ssh-session): Add #:timeout parameter, and add call to 'session-set!' to honor it.
2019-10-15offload: Set a longer SSH session timeout.Ludovic Courtès
Fixes <https://bugs.gnu.org/37762>. * guix/scripts/offload.scm (open-ssh-session): Add 'max-silent-time' parameter. Add call to 'session-set!' before returning SESSION. (transfer-and-offload): Pass MAX-SILENT-TIME to 'open-ssh-session'. (%short-timeout): New variable. (choose-build-machine): Pass %SHORT-TIMEOUT to 'open-ssh-session'. (check-machine-availability): Likewise. (check-machine-status): Likewise.
2019-10-14gexp: Use cross extensions when cross-compiling.Mathieu Othacehe
* guix/gexp.scm (load-path-expression): Use ungexp-splicing instead of ungexp-native-splicing so that the cross extensions are used when target is set.
2019-10-14build-system/gnu: 'package-with-explicit-inputs' uses 'package-mapping'.Ludovic Courtès
* guix/build-system/gnu.scm (package-with-explicit-inputs): Rename to... (package-with-explicit-inputs/deprecated): ... this. (package-with-explicit-inputs*): New procedure. (package-with-explicit-inputs): Define as a 'case-lambda*'.
2019-10-11gnu: Add nsis-x86_64 and nsis-i686.Carl Dong
* guix/build-system/scons.scm (scons-build): Add build-targets and install-targets parameters. * guix/build/scons-build-system.scm (build, install): Adjust accordingly. * doc/guix.texi (Build Systems): Document it. * gnu/packages/installers.scm: New file, (make-nsis): New procedure, (nsis-x86_64, nsis-i686): New variables. * gnu/packages/patches/nsis-env-passthru.patch: New file. * gnu/local.mk (dist_patch_DATA, GNU_SYSTEM_MODULES): Adjust accordingly.
2019-10-06Merge branch 'master' into core-updatesRicardo Wurmus
2019-10-05syscalls: Add 'add-to-entropy-count'.Ludovic Courtès
* guix/build/syscalls.scm (RNDADDTOENTCNT): New variable. (add-to-entropy-count): New procedure. * tests/syscalls.scm ("add-to-entropy-count"): New test.
2019-10-03gexp: 'load-path-expression' produces an expression that deletes duplicates.Ludovic Courtès
Fixes <https://bugs.gnu.org/37531>. "herd eval root '(length %load-path)'" on a freshly-booted bare-bones system now returns 8 instead of 119 before. * guix/gexp.scm (load-path-expression): Rewrite expression to that it deletes duplicates.
2019-10-03environment: '--container' honors '--preserve'.Ludovic Courtès
* guix/scripts/environment.scm (launch-environment/container): Add #:white-list parameter and honor it. (guix-environment): Pass #:white-list to 'launch-environment/container'. * tests/guix-environment-container.sh: Add test.
2019-10-02channels: Add quirk to build recent 'master' with Guile 2.2.4.Ludovic Courtès
Fixes <https://bugs.gnu.org/37506>. Reported by Marius Bakke <mbakke@fastmail.com>. * guix/channels.scm (syscalls-reexports-local-variables?) (guile-2.2.4, guile-for-source): New procedures. (%quirks): New variable. (build-from-source): Add calls to 'guile-for-source' and 'set-guile-for-build'.
2019-10-01import: crate: Add '--recursive'.Martin Becze
* guix/scripts/import/crate.scm (show-help, guix-import-crate): Add '--recursive'. * doc/guix.texi (Invoking guix import): Mention '--recursive'. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2019-10-01import: crate: Support recursive imports.Martin Becze
* guix/import/crate.scm (crate-recursive-import): New procedure. (crate->guix-package): Return dependencies as a second value. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-10-01pull: Do not use '~*', which 'msgfmt' fails to interpret.Konrad Hinsen
Really fixes <https://bugs.gnu.org/37505>. This is a followup to f751b4646d3989d76dad9e33e39f9724c7c50be6. * guix/scripts/pull.scm (display-channel-news): Remove second occurrence of '~*' in a format string. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-10-01inferior: Change to use the (guix repl) module.Christopher Baines
Rather than (guix scripts repl), from which the machine-repl procedure was removed in [1]. 1: 92a4087bf4862d5ba9b77111eba3c68c2a1c4679 * guix/inferior.scm (inferior-pipe): Load (guix repl) rather than (guix scripts repl).
2019-10-01Merge branch 'master' into core-updatesLudovic Courtès
2019-10-01pull: Do not use '~*', which 'msgfmt' fails to interpret.Ludovic Courtès
Fixes <https://bugs.gnu.org/37505>. Reported by Konrad Hinsen <konrad.hinsen@fastmail.net>. * guix/scripts/pull.scm (display-channel-news): Use ~a instead of ~* when reporting new channels.
2019-10-01ui: 'show-what-to-build' colorizes store file names.Ludovic Courtès
* guix/ui.scm (colorize-store-file-name): New procedure. (show-what-to-build)[colorize-store-item]: New variable. Use it throughout.
2019-09-29syscalls: 'define-as-needed' does not re-export local variables.Ludovic Courtès
Fixes <https://bugs.gnu.org/36723>. Reported by Timothy Sample <samplet@ngyro.com>. * guix/build/syscalls.scm (define-as-needed): Rewrite to use lower-level module primitives; define VARIABLE only if it's not already defined to avoid "re-exporting local variable" error.