Age | Commit message (Expand) | Author |
2019-01-07 | gexp: 'gexp->script' does not emit load-path expression when unnecessary....This removes two elements from %LOAD-PATH and %LOAD-COMPILED-PATH of the
'guix' command and thus further reduces the number of 'stat' calls it
makes.
* guix/gexp.scm (load-path-expression): Return #f when MODULES and
EXTENSIONS are both empty.
(gexp->script): Don't emit anything when SET-LOAD-PATH is #f.
| Ludovic Courtès |
2019-01-07 | self: Move all modules into a single directory....This halves the number of elements in %LOAD-PATH and %LOAD-COMPILED-PATH
and halves the number of 'stat' calls as reported by:
env -i $(type -P guix) build -e '(@ (gnu packages base) coreutils)' -nd
* guix/self.scm (node-source+compiled, guile-module-union): New
procedures.
(guix-command): Remove 'compiled-modules' parameter. Remove
'source-directories' and 'object-directories' variables and add
'module-directory'. Change command so that it adds nothing but
MODULE-DIRECTORY to %LOAD-PATH and %LOAD-COMPILED-PATH.
(whole-package): Remove #:compiled-modules. Assume MODULES contains
'share/guile/site' and 'lib/guile' and adjust code accordingly.
(compiled-guix): When PULL-VERSION is 1, use 'node-source+compiled'
only. Remove #:compiled-modules argument to 'whole-package'.
* guix/channels.scm (whole-package-for-legacy): Add 'module+compiled'
and pass it to 'whole-package'.
| Ludovic Courtès |
2019-01-07 | import: opam: Parse comments....* guix/import/opam.scm: Add comment support in parser.
| Julien Lepiller |
2019-01-07 | import: opam: Add updater....* guix/import/opam.scm (%opam-updater): New variable.
| Julien Lepiller |
2019-01-07 | import: opam: Add recursive option....* guix/script/import/opam.scm: Add recursive option.
* guix/import/opam.scm (opam->guix-package): return two values.
(opam-recursive-import): New variable.
| Julien Lepiller |
2019-01-07 | lint: Avoid 'dirname' call at the top level....* guix/scripts/lint.scm (%distro-directory): Wrap in 'mlambda'.
(check-patch-file-names): Adjust accordingly.
| Ludovic Courtès |
2019-01-07 | Remove (guix build pull)....This module had been unused since commit
5f93d97005897c2d859f0be1bdff34c88467ec61 (Oct. 2017).
* guix/build/pull.scm: Delete.
* Makefile.am (MODULES): Remove.
| Ludovic Courtès |
2019-01-06 | hydra: Compute jobs in an inferior....Previously we would rely on auto-compilation of all the Guix modules.
The complete evaluation would take ~15mn on berlin.guixsd.org and
require lots of RAM. This approach should be faster since potentially
only part of the modules are rebuilt. Furthermore, as a side-effect, it
builds the derivations that 'guix pull' uses.
* build-aux/hydra/gnu-system.scm: Remove 'eval-when' form.
(hydra-jobs): New procedure.
* gnu/ci.scm (package->alist, qemu-jobs, system-test-jobs)
(tarball-jobs): Return strings for the 'license' field.
* guix/self.scm (compiled-guix)[*cli-modules*]: Add (gnu ci).
| Ludovic Courtès |
2019-01-06 | lint: Rename checker to 'github-url'....* guix/scripts/lint.scm (%checkers): Rename 'github-uri' to 'github-url'
to match the documentation.
| Ludovic Courtès |
2019-01-06 | git-download: Use 'invoke'....* guix/build/git.scm (git-fetch): Use 'invoke' instead of 'system*' for
"git submodule update".
| Ludovic Courtès |
2019-01-06 | git-download: 'git-fetch' really returns #f upon error....This allows the fallback code in (guix git-download) to actually run.
Regression introduced in commit 329dabe13bf98b899b907b45565434c5140804f5.
Fixes <https://bugs.gnu.org/33911>.
Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>.
* guix/build/git.scm (git-fetch): Guard against 'invoke-error?' and
really return #f upon failure.
| Ludovic Courtès |
2019-01-05 | ui: It's 2019 now!...* guix/ui.scm (show-version-and-exit): Change year to 2019.
| Ludovic Courtès |
2019-01-05 | guix build: Honor '--system' for file-like objects and gexps....Fixes a bug whereby "guix build -f file.scm -s SYSTEM" would not honor
SYSTEM when 'file.scm' returns a gexp or a file-like object.
* guix/scripts/build.scm (options->derivations): Pass #:system to
'run-with-store' in the 'file-like?' and 'gexp?' cases.
| Ludovic Courtès |
2019-01-05 | gexp: Lowering a <computed-file> honors SYSTEM and TARGET....* guix/gexp.scm (computed-file-compiler): Pass #:system and #:target to
'gexp->derivation'.
* tests/gexp.scm ("lower-object, computed-file, #:system"): New test.
| Ludovic Courtès |
2019-01-03 | import: cran: Default to 'cran repo....* guix/import/cran.scm (cran-recursive-import): Default to 'cran repo.
| Ricardo Wurmus |
2019-01-03 | import: cran: Abort if no description could be fetched....* guix/import/cran.scm (cran->guix-package): Only proceed if a valid
description could be fetched.
| Ricardo Wurmus |
2019-01-03 | import: cran: Use HTTPS....* guix/import/cran.scm (%cran-url): Use HTTPS.
| Ricardo Wurmus |
2019-01-03 | import: cran: Download tarballs only once....* guix/import/cran.scm (download): New procedure.
(fetch-description, description->package): Use it.
| Ricardo Wurmus |
2018-12-31 | refresh: github: updates for origins using 'git-fetch'....* guix/import/github.scm (updated-github-url): Respond with the repository url
for the 'git-fetch' fetch method.
(github-package?): Simplify boolean expression.
(github-repository, github-user-slash-repository): Strip trailing ".git" from
project if present.
(latest-release)<origin-github-uri>: Recognize a 'git-reference'.
| Eric Bavier |
2018-12-27 | lint: Check for unstable tarballs....* guix/scripts/lint.scm (check-source-unstable-tarball): New procedure.
(%checkers): Add it.
* tests/lint.scm ("source-unstable-tarball", "source-unstable-tarball:
source #f", "source-unstable-tarball: valid", "source-unstable-tarball:
package named archive", "source-unstable-tarball: not-github",
"source-unstable-tarball: git-fetch"): New tests.
* doc/guix.texi (Invoking guix lint): Document it.
| Efraim Flashner |
2018-12-27 | pull: Add '--system'....* guix/scripts/pull.scm (%options): Add '--system'.
(guix-pull): Honor it.
* doc/guix.texi (Invoking guix pull): Document it.
| Ludovic Courtès |
2018-12-26 | offload: Remove unnecessary locking on machine slots....This extra level of locking turned out to be unnecessary.
* guix/scripts/offload.scm (with-machine-lock): Remove.
(machine-lock-file): Remove.
(acquire-build-slot): Remove surrounding 'with-machine-lock'.
| Ludovic Courtès |
2018-12-26 | offload: Remove the "machine choice" lock....This lock was unnecessary and it led to a contention when many 'guix
offload' processes are polling for available machines.
* guix/scripts/offload.scm (machine-choice-lock-file): Remove.
(choose-build-machine): Remove surrounding 'with-file-lock (machine-lock-file)'.
| Ludovic Courtès |
2018-12-25 | offload: Adjust 'test' and 'status' to the latest changes....This is a followup to ed7b44370f71126087eb953f36aad8dc4c44109f;
following that commit, 'guix offload test' and 'guix offload status'
would abort with a backtrace instead of clearly diagnosing a missing
'guix' command on the build machine.
* guix/scripts/offload.scm (assert-node-has-guix): Call 'leave' when
NODE is not an inferior. Remove 'catch' blocks for 'node-repl-error'.
(check-machine-availability): Invoke 'assert-node-has-guix' first.
(check-machine-status): Print a warning when 'remote-inferior' returns #f.
| Ludovic Courtès |
2018-12-24 | offload: Use (guix inferior) instead of (ssh dist node)....Using inferiors and thus 'guix repl' simplifies setup on build
machines (no need to worry about GUILE_LOAD_PATH etc.)
Furthermore, the 'guix repl -t machine' protocol running in a remote
pipe addresses several issues with the current implementation of nodes
and RREPLs in Guile-SSH: fewer round trips, doesn't leave a 'guile
--listen' process behind it, stateless (since a new process is started
each time), more efficient (the SSH channel can be reused), more
reliable (no 'pgrep', 'pkill', and shellology; see
<https://github.com/artyom-poptsov/guile-ssh/issues/11> as an example.)
* guix/ssh.scm (inferior-remote-eval): New procedure.
(send-files): Use it instead of 'make-node' and 'node-eval'.
* guix/scripts/offload.scm (node-guile-version): New procedure.
(node-free-disk-space, transfer-and-offload, node-load)
(choose-build-machine, assert-node-has-guix): Use 'remote-inferior'
instead of 'make-node' and 'inferior-eval' instead of 'node-eval'.
(assert-node-can-import, assert-node-can-export): Likewise, and add
'session' parameter.
(check-machine-availability): Likewise, and add calls to
'close-inferior' and 'disconnect!'.
(check-machine-status): Likewise.
* doc/guix.texi (Daemon Offload Setup): Remove bit related to 'guile' in
$PATH and $GUILE_LOAD_PATH; mention 'guix' alone.
| Ludovic Courtès |
2018-12-24 | ssh: Add 'remote-inferior'....* guix/inferior.scm (<inferior>)[close]: New field.
(port->inferior): New procedure.
(open-inferior): Rewrite in terms of 'port->inferior'.
(close-inferior): Honor INFERIOR's 'close' field.
(inferior-eval-with-store): Add FIXME comment.
* guix/ssh.scm (remote-inferior): New procedure.
| Ludovic Courtès |
2018-12-24 | scripts: refresh: Allow searching recursively....* guix/scripts/refresh.scm (refresh-recursive, list-transitive): New
procedures.
(show-help): Document it.
(guix-refresh): Add flags and checks for new options.
* doc/guix.texi (Invoking guix refresh): Document new options.
| Efraim Flashner |
2018-12-24 | guix: lint: Check for source URIs redirecting to GitHub....* guix/scripts/lint.scm (check-github-uri): New procedure.
(%checkers): Add it.
* doc/guix.texi (Invoking guix lint): Document it.
* tests/lint.scm ("github-url", "github-url: one suggestion"): New tests.
| Arun Isaac |
2018-12-23 | offload: Display the normalized load in 'guix offload status' output....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'.
| Ludovic Courtès |
2018-12-21 | database: Use "write-ahead log" mode and set a long "busy timeout"....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'.
| Ludovic Courtès |
2018-12-21 | offload: Recognize build failures due to lack of disk space....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.
| Ludovic Courtès |
2018-12-21 | offload: Skip machines that are low on disk space....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.
| Ludovic Courtès |
2018-12-21 | offload: Decompose 'machine-load' into simpler procedures....* 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.
| Ludovic Courtès |
2018-12-20 | import: cran: Try import via CRAN if package is not on Bioconductor....* guix/import/cran.scm (fetch-description): Return #F on failure.
(cran->guix-package): Retry from CRAN on failure to fetch description from
bioconductor.
| Ricardo Wurmus |
2018-12-19 | download: 'built-in-builders*' relies on the functional cache....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'.
| Ludovic Courtès |
2018-12-19 | utils: Memoize 'absolute-dirname'....* guix/utils.scm (absolute-dirname): Wrap in 'mlambda'.
| Ludovic Courtès |
2018-12-19 | packages: Turn 'cache!' into a single-value-return cache....* guix/packages.scm (cache!): Assume THUNK returns a single value.
(cached): Likewise.
| Ludovic Courtès |
2018-12-19 | Use 'mapm' instead of 'sequence' + 'map'....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.
| Ludovic Courtès |
2018-12-19 | store: Add 'GUIX_PROFILING' support for the object cache....* guix/store.scm (profiled?): New procedure.
(record-operation): Use it.
(record-cache-lookup!): New procedure.
(lookup-cached-object): Use it.
| Ludovic Courtès |
2018-12-19 | ui: Report profile hooks separately....* 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.
| Ricardo Wurmus |
2018-12-18 | build: Add dune-build-system....* 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.
| Julien Lepiller |
2018-12-18 | guix system: Clarify the three strategies available....* 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>
| swedebugia |
2018-12-18 | ui: Report file names in 'system-error' exceptions from 'execlp'....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>
| Timothy Sample |
2018-12-17 | publish: Add a 'Cache-Control' header on /nar responses....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.
| Ludovic Courtès |
2018-12-17 | environment: Support package transformation options....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.
| Ludovic Courtès |
2018-12-17 | import: Update opam importer....* guix/import/opam.scm: Update importer for opam 2.
* tests/opam.scm: Update tests for the opam 2 importer.
| Julien Lepiller |
2018-12-14 | deduplication: Gracefully handle ENOSPC raised by 'link' calls....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.
| Ludovic Courtès |
2018-12-14 | substitute: Ignore irrelevant narinfo signatures....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.
| Ludovic Courtès |
2018-12-10 | refresh: Account for overlapping updater coverage....* guix/scripts/refresh.scm (list-updaters-and-exit): Do not assume updater
predicates are disjoint. Track covered packages directly.
| Eric Bavier |
2018-12-09 | guix: Add support for channel dependencies....* 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.
| Ricardo Wurmus |