summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2018-12-23offload: Display the normalized load in 'guix offload status' output.Ludovic Courtès
Fixes a regression introduced in bbe66a530a014e8146d63002a5294941e935f863 whereby the actual load (non-normalized) would be displayed. * guix/scripts/offload.scm (check-machine-status): Add call to 'normalized-load'.
2018-12-21database: Use "write-ahead log" mode and set a long "busy timeout".Ludovic Courtès
This should avoid "database is locked" errors when there's a lot of concurrency, for instance when offloading simultaneously a lot of builds. * guix/store/database.scm (call-with-database): Add two 'sqlite-exec' calls to set 'journal_mode' and 'busy_timeout'.
2018-12-21offload: Recognize build failures due to lack of disk space.Ludovic Courtès
Previously, if a remote build would fail due to lack of disk space, this would be considered a permanent failure and thus cached as a build failure if the local daemon runs with '--cache-failures'. * guix/scripts/offload.scm (transfer-and-offload): Upon 'nix-protocol-error?' call 'node-free-disk-space' and return 1 instead of 100 if the result if lower than 10 MiB.
2018-12-21offload: Skip machines that are low on disk space.Ludovic Courtès
Fixes <https://bugs.gnu.org/33378>. * guix/scripts/offload.scm (node-free-disk-space): New procedure. (%minimum-disk-space): New variable. (choose-build-machine): Call 'node-free-disk-space' and take it into account in addition to LOAD. (check-machine-status): Display the free disk space.
2018-12-21offload: Decompose 'machine-load' into simpler procedures.Ludovic Courtès
* guix/scripts/offload.scm (machine-load): Remove. (node-load, normalized-load): New procedures. (choose-build-machine): Call 'open-ssh-session' and 'make-node' from here; pass the node to 'node-load'. (check-machine-status): Use 'node-load' instead of 'machine-load'. Call 'disconnect!' on SESSION.
2018-12-20import: cran: Try import via CRAN if package is not on Bioconductor.Ricardo Wurmus
* guix/import/cran.scm (fetch-description): Return #F on failure. (cran->guix-package): Retry from CRAN on failure to fetch description from bioconductor.
2018-12-19download: 'built-in-builders*' relies on the functional cache.Ludovic Courtès
The previous caching strategy, which used STORE as an 'eq?' key, would no longer work when the functional cache is used because subsequent store values are not 'eq?'. * guix/download.scm (built-in-builders*): Rewrite in terms of 'mcached'.
2018-12-19utils: Memoize 'absolute-dirname'.Ludovic Courtès
* guix/utils.scm (absolute-dirname): Wrap in 'mlambda'.
2018-12-19packages: Turn 'cache!' into a single-value-return cache.Ludovic Courtès
* guix/packages.scm (cache!): Assume THUNK returns a single value. (cached): Likewise.
2018-12-19Use 'mapm' instead of 'sequence' + 'map'.Ludovic Courtès
Previously we'd use the (sequence M (map P L)) idiom just because 'mapm' was slower (not specialized for the given monad). This is no longer the case since commit dcb95c1fc936d74dfdf84b7e59eff66cb99c5a63. * guix/gexp.scm (lower-inputs): Use (mapm M P L) instead of (sequence M (map P L)). (lower-references, gexp->sexp, imported-files): Likewise. * guix/profiles.scm (profile-derivation): Likewise. * guix/scripts/environment.scm (inputs->requisites): Likewise. * guix/scripts/system.scm (copy-closure): Likewise.
2018-12-19store: Add 'GUIX_PROFILING' support for the object cache.Ludovic Courtès
* guix/store.scm (profiled?): New procedure. (record-operation): Use it. (record-cache-lookup!): New procedure. (lookup-cached-object): Use it.
2018-12-19ui: Report profile hooks separately.Ricardo Wurmus
* guix/ui.scm (profile-hook-derivation?): New procedure. (show-what-to-build): Distinguish among BUILD derivations that match 'profile-hook-derivation?'. Report them separately. * guix/status.scm (hook-message): New procedure. (print-build-event): Display profile hooks with readable hook name. * guix/profiles.scm (info-dir-file, ghc-package-cache-file, ca-certificate-bundle, glib-schemas, gtk-icon-themes, gtk-im-modules, xdg-desktop-database, xdg-mime-database, fonts-dir-file, manual-database): Augment derivation with "type" and "hook" properties.
2018-12-18build: Add dune-build-system.Julien Lepiller
* guix/build/dune-build-system.scm, guix/build-system/dune.scm: New files. * Makefile.am (MODULES): Add them. * doc/guix.texi (Build Systems): Document dune-build-system. * guix/build-system/ocaml.scm (lower, default-findlib, default-ocaml): Export them. (package-with-explicit-ocaml): Also transform packages built with dune-build-system.
2018-12-18guix system: Clarify the three strategies available.swedebugia
* guix/scripts/system.scm (show-help): Clarify the three choices. * doc/guix.texi (Invoking guix system): Add 3 @cindex to make on-error=strategy easier to find. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-12-18ui: Report file names in 'system-error' exceptions from 'execlp'.Timothy Sample
Fixes <https://bugs.gnu.org/33755>. * guix/ui.scm (apply-formals): New macro. (execlp): New error-reporting wrapper. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-12-17publish: Add a 'Cache-Control' header on /nar responses.Ludovic Courtès
Fixes <https://bugs.gnu.org/33721>. Reported by Chris Marusich <cmmarusich@gmail.com>. * guix/scripts/publish.scm (render-nar/cached): Add #:ttl and honor it. (make-request-handler): Pass #:ttl to 'render-nar/cached'. * tests/publish.scm ("with cache, uncompressed"): Pass "--ttl=42h" to 'guix publish'. Check 'Cache-Control' on narinfo response and on nar response.
2018-12-17environment: Support package transformation options.Ludovic Courtès
Fixes <https://bugs.gnu.org/33776>. Reported by Adrien Guilbaud <adrien.guilbaud@inria.fr>. * guix/scripts/environment.scm (show-help): Add call to 'show-transformation-options-help'. (%options): Add %TRANSFORMATION-OPTIONS. (options/resolve-packages): Add 'store' parameter. [transform, package->manifest-entry*]: New procedures. Use 'package->manifest-entry*' instead of 'package->manifest-entry'. (guix-environment): Move definition of 'manifest' within 'with-store'. * tests/guix-environment.sh: Add test.
2018-12-17import: Update opam importer.Julien Lepiller
* guix/import/opam.scm: Update importer for opam 2. * tests/opam.scm: Update tests for the opam 2 importer.
2018-12-14deduplication: Gracefully handle ENOSPC raised by 'link' calls.Ludovic Courtès
Reported by Andreas Enge <andreas@enge.fr> in <https://bugs.gnu.org/33676>. * guix/store/deduplication.scm (replace-with-link): Catch ENOSPC around 'get-temp-link'. Do nothing when 'get-temp-link' throws ENOSPC. Move code to restore PARENT's permissions outside of 'catch'. * tests/store-deduplication.scm ("deduplicate, ENOSPC"): New test.
2018-12-14substitute: Ignore irrelevant narinfo signatures.Ludovic Courtès
Fixes <https://bugs.gnu.org/33733>. Fixes a bug whereby 'guix substitute' would accept narinfos whose signature does not cover the StorePath/NarHash/References tuple. * guix/scripts/substitute.scm (narinfo-sha256)[%mandatory-fields]: New variable. Compute SIGNED-FIELDS; return #f unless each of the %MANDATORY-FIELDS is among SIGNED-FIELDS. * tests/substitute.scm ("query narinfo with signature over nothing") ("query narinfo with signature over irrelevant bits"): New tests.
2018-12-10refresh: Account for overlapping updater coverage.Eric Bavier
* guix/scripts/refresh.scm (list-updaters-and-exit): Do not assume updater predicates are disjoint. Track covered packages directly.
2018-12-09guix: Add support for channel dependencies.Ricardo Wurmus
* guix/channels.scm (<channel-metadata>): New record. (read-channel-metadata, channel-instance-dependencies): New procedures. (latest-channel-instances): Include channel dependencies; add optional argument PREVIOUS-CHANNELS. (channel-instance-derivations): Build derivation for additional channels and add it as dependency to the channel instance derivation. * doc/guix.texi (Channels): Add subsection "Declaring Channel Dependencies". * tests/channels.scm: New file. * Makefile.am (SCM_TESTS): Add it.
2018-12-07guix system: Fix bootloader config file generation by 'guix system roll-back'.Ludovic Courtès
Fixes <https://bugs.gnu.org/33623>. Reported by Diego Nicola Barbato <dnbarbato@posteo.de>. Regression introduced in commit 46c296dcc4817f15a4b4ef7e5ef622306b4db62e. * guix/scripts/system.scm (reinstall-bootloader): Add call to 'lower-object'.
2018-12-07describe: In 'channels' format, quote the channel name.Ludovic Courtès
Fixes a regression introduced in commit 8548f995494d8d6358e6a8d7bc3b3bb5a0cbecb5. * guix/scripts/describe.scm (channel->sexp): Quote the channel name.
2018-12-04grafts: Mark as non substitutable.Ludovic Courtès
* guix/grafts.scm (graft-derivation/shallow): Pass #:substitutable? to 'build-expression->derivation'.
2018-12-04refresh: '--list-dependents' ignores deprecated packages.Ludovic Courtès
* guix/scripts/refresh.scm (all-packages): Filter out deprecated packages.
2018-12-04build: Default to https://ci.guix.info for substitutes.Ludovic Courtès
* config-daemon.ac (guix_substitute_urls): Always default to "https://ci.guix.info". * doc/guix.texi (SUBSTITUTE-SERVER): Switch to ci.guix.info. * guix/scripts/build.scm (%default-log-urls): Likewise. * guix/scripts/substitute.scm (%default-substitute-urls): Likewise. * guix/store.scm (%default-substitute-urls): Likewise.
2018-12-04Remove most references to hydra.gnu.org.Ludovic Courtès
* Makefile.am (assert-binaries-available): Don't mention hydra.gnu.org in comment. * build-aux/check-available-binaries.scm: Likewise. * build-aux/check-final-inputs-self-contained.scm: Likewise. * doc/guix.texi (SUBSTITUTE-SERVER): New variable. Use it throughout instead of "mirror.hydra.gnu.org". * doc/contributing.texi (Submitting Patches): Likewise. * gnu/services/base.scm (hydra-key-authorization) (guix-activation): Remove mentions of "hydra.gnu.org" in comments and messages. * gnu/system/install.scm (%installation-services): Likewise. * guix/scripts/size.scm (guix-size): Likewise.
2018-12-04etc: Add "ci.guix.info.pub" public key file.Ludovic Courtès
* etc/substitutes/ci.guix.info.pub: New file. * Makefile.am (dist_pkgdata_DATA): Add it. * guix/self.scm (miscellaneous-files): Add "share/guix/ci.guix.info.pub".
2018-12-03hg-fetch: Remove .hg directories of sub-repositories.Björn Höfling
* guix/build/hg.scm (hg-fetch): Remove all .hg directories recursively.
2018-12-03Merge branch 'core-updates'Ludovic Courtès
2018-12-03repl: Load user's initialization file.Oleg Pykhalov
* guix/scripts/repl.scm (guix-repl): Load user's initialization file.
2018-12-02self: Provide UTF-8 locales when building the manual.Ludovic Courtès
Fixes <https://bugs.gnu.org/33580>. Reported by <znavko@tutanota.com>. * guix/self.scm (info-manual)[glibc-utf8-locales]: New variable. [build]: Add call to 'setenv' for "GUIX_LOCPATH".
2018-11-30git: Nicely report '--with-commit' errors.Ludovic Courtès
* guix/git.scm (latest-repository-commit*): Rewrite to catch 'git-error'. * po/guix/POTFILES.in: Add guix/git.scm. * tests/guix-build-branch.sh: Test --with-commit errors.
2018-11-30guix build: Add '--with-commit'.Ludovic Courtès
* guix/git.scm (<git-checkout>)[commit]: New field. (git-checkout-compiler): Honor it. * guix/scripts/build.scm (evaluate-git-replacement-specs): Add 'proc' parameter and honor it. (transform-package-source-branch)[replace]: New procedure. Adjust 'evaluate-git-replacement-specs' accordingly. (transform-package-source-commit): New procedure. (%transformations, %transformation-options) (show-transformation-options-help): Add 'with-commit'. * tests/guix-build-branch.sh: Add test. * doc/guix.texi (Package Transformation Options): Document it.
2018-11-30guix build: Add '--with-branch' transformation option.Ludovic Courtès
* guix/scripts/build.scm (evaluate-git-replacement-specs) (transform-package-source-branch): New procedures. (%transformations, %transformation-options): Add 'with-branch'. (show-transformation-options-help): Likewise. * tests/guix-build-branch.sh: New file. * Makefile.am (SH_TESTS): Add it. * doc/guix.texi (Package Transformation Options): Document it.
2018-11-30git: Add <git-checkout> record type.Ludovic Courtès
* guix/git.scm (<git-checkout>): New record type. (latest-repository-commit*): New procedure. (git-checkout-compiler): New gexp compiler.
2018-11-30git: 'latest-repository-commit' logs its progress.Ludovic Courtès
* guix/git.scm (latest-repository-commit): Add #:log-port and honor it.
2018-11-29Merge branch 'master' into core-updatesMarius Bakke
2018-11-29docker: Hide scary-looking but harmless tar failure messages.Ludovic Courtès
* guix/docker.scm (build-docker-image): Wrap "tar --delete" invocation in 'with-error-to-port'.
2018-11-28download: Add berlin.guixsd.org as a content-addressed mirror.Ludovic Courtès
* guix/download.scm (%content-addressed-mirrors)[guix-publish]: New procedure. Use it for "mirror.hydra.gnu.org" and add "berlin.guixsd.org" too.
2018-11-28download: Make (guix base16) a soft dependency.Ludovic Courtès
Fixes <https://bugs.gnu.org/33542>. Reported by Mark H Weaver <mhw@netris.org>. * guix/download.scm (%content-addressed-mirrors): Autoload (guix base16).
2018-11-28guix hash: Fix version and help messagesTim Gesthuizen
ca719424455465fca4b872c371daf2a46de88b33 changes the name of the executable to be displayed by the --version and --help commands of `guix hash` to "gcrypt hash". This is reverted by this commit. * guix/scripts/hash.scm (show-help): Change string literals Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2018-11-28channels: Add 'checkout->channel-instance'.Ludovic Courtès
* guix/channels.scm (checkout->channel-instance): New procedure.
2018-11-28inferior: Add 'inferior-eval-with-store'.Ludovic Courtès
* guix/inferior.scm (inferior-eval-with-store): New procedure, with code formerly in 'inferior-package-derivation'. (inferior-package-derivation): Rewrite in terms of 'inferior-eval-with-store'. * tests/inferior.scm ("inferior-eval-with-store"): New test.
2018-11-28ui: 'show-what-to-build' reports grafts separately.Ludovic Courtès
* guix/ui.scm (graft-derivation?): New procedure. (show-what-to-build): Distinguish among BUILD derivations that match 'graft-derivation?'. Report them separately.
2018-11-28status: Report grafting derivations specially.Ludovic Courtès
* guix/status.scm (print-build-event): In 'build-started' event handler, check the properties of DRV and handle 'graft' derivations specially.
2018-11-28grafts: Record metadata as derivation properties.Ludovic Courtès
* guix/grafts.scm (graft-derivation/shallow): Pass #:properties to 'build-expression->derivation'. * tests/grafts.scm ("graft-derivation, grafted item is a direct dependency"): Check the value returned by 'derivation-properties'.
2018-11-28derivations: Add properties.Ludovic Courtès
* guix/derivations.scm (derivation): Add #:properties parameter. [user+system-env-vars]: Honor it. (derivation-properties): New procedure. (build-expression->derivation): Add #:properties and pass it to 'derivation'. * guix/gexp.scm (gexp->derivation): Likewise. * tests/derivations.scm ("derivation-properties"): New test. * tests/gexp.scm ("gexp->derivation properties"): New test. * doc/guix.texi (Derivations, G-Expressions): Adjust accordingly.
2018-11-27pack: List the available formats.Efraim Flashner
* guix/scripts/pack.scm (show-formats): New variable. (%options, show-help): Add 'list-formats' option.