Commit Graph

4817 Commits

Author SHA1 Message Date
Arne Babenhauserheide
ef4b5f2fed
profiles: Compute manual database entries in parallel.
This provides a 36% speedup on an SSD and 4 cores for the 1.5K man pages
in the manual database derivation of:

  guix environment --ad-hoc jupyter python-ipython python-ipykernel

* guix/profiles.scm (manual-database)[build]: Add 'print-string',
'print', and 'compute-entry'.  Change 'compute-entries' to call
'compute-entry' in 'n-par-map'.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2020-03-31 14:55:42 +02:00
Ludovic Courtès
2c33901fb1
ci: Fix 'evaluation-spec' binding.
* guix/ci.scm (<evaluation>)[spec]: Add "specification", which is what
the JSON field is actually called.
2020-03-31 14:55:42 +02:00
Ludovic Courtès
a357849f5b
guix package: Do not misdiagnose upgrades when there are propagated inputs.
Fixes <https://bugs.gnu.org/35872>.
Reported by Andy Tai <atai@atai.org>.

* guix/profiles.scm (list=?, manifest-entry=?): New procedures.
* guix/scripts/package.scm (transaction-upgrade-entry): In the '=' case,
use 'manifest-entry=?' to determine whether it's an upgrade.
* tests/packages.scm ("transaction-upgrade-entry, zero upgrades,
propagated inputs"): New test.
2020-03-31 00:06:36 +02:00
Ludovic Courtès
1a9a373eb4
profiles: 'lower-manifest-entry' recurses on dependencies.
* guix/profiles.scm (lower-manifest-entry)[recurse]: New procedure.
Call it on dependencies and set the 'dependencies' field accordingly.
2020-03-31 00:06:36 +02:00
Ludovic Courtès
a187cc5628
guix package: 'transaction-upgrade-entry' swallows build requests.
Fixes a regression introduced in
131f50cdc9 whereby the install/upgrade
message would not be displayed:

  $ guix upgrade -n
  2.1 MB would be downloaded:
     /gnu/store/…-something-1.2
     /gnu/store/…-its-dependency-2.3

This is because we'd directly abort from 'transaction-upgrade-entry' to
the build handler of 'build-notifier'.

* guix/scripts/package.scm (transaction-upgrade-entry): Call 'string=?'
expression in 'with-build-handler'.
* tests/packages.scm ("transaction-upgrade-entry, grafts"): New test.
2020-03-31 00:06:36 +02:00
Ludovic Courtès
190ddfe21e
guix package: 'transaction-upgrade-entry' uses 'lower-manifest-entry'.
* guix/profiles.scm (lower-manifest-entry): Export.
* guix/scripts/package.scm (transaction-upgrade-entry)[lower-manifest-entry*]
[upgrade]: New procedures.
Use 'lower-manifest-entry*' instead of 'package-derivation' to compute
the output file name of PKG.
2020-03-31 00:06:36 +02:00
Ludovic Courtès
5a17b9b673
build-system/gnu: Optimize the package graph.
With this change, the output of:

  guix graph -e '(@@ (gnu packages commencement) coreutils-final)' |grep 'label = ' | wc -l

drops from 76 nodes to 68 nodes, and the "add-data-to-store-cache" hit
rate for:

  guix build libreoffice -d --no-grafts

drops from 3.9% to 2.6%.

* guix/build-system/gnu.scm (package-with-explicit-inputs*)[cut?]:
Adjust condition to exclude packages with build systems other than
GNU-BUILD-SYSTEM, such as 'ld-wrapper-boot3'.
2020-03-29 23:14:28 +02:00
Ludovic Courtès
9f78552996
packages: 'package->bag' keys cache by replacement.
* guix/packages.scm (package->bag): When GRAFT? is true, use PACKAGE's
replacement as the cache key.  Remove GRAFT? from the list of
secondary cache keys.
2020-03-29 23:14:28 +02:00
Ludovic Courtès
18c8a4396b
deploy: Use 'map/accumulate-builds'.
* guix/scripts/deploy.scm (guix-deploy): Use 'map/accumulate-builds'
instead of 'for-each'.
2020-03-29 23:14:27 +02:00
Ludovic Courtès
d089b23335
deploy: Factorize machine deployment.
* guix/scripts/deploy.scm (deploy-machine*): New procedure.
(guix-deploy): Call it in 'for-each'.
2020-03-29 23:14:27 +02:00
Ludovic Courtès
033df23680
packages: Change 'guile-for-grafts' back to 2.0.
This reverts 2b6fe60599, due to reports of
segfaults of Guile 3.0.2 during grafting.

* guix/packages.scm (guile-for-grafts): Change back to GUILE-2.0.
2020-03-29 15:35:47 +02:00
Ludovic Courtès
131f50cdc9
'--dry-run' no longer implies '--no-grafts'.
* guix/scripts/archive.scm (%options): "dry-run" option no longer adds
'graft? #f to RESULT.
* guix/scripts/environment.scm (%options): Likewise.
* guix/scripts/pack.scm (%options): Likewise.
* guix/scripts/package.scm (%options): Likewise.
* guix/scripts/pull.scm (%options): Likewise.
* guix/scripts/system.scm (%options): Likewise.
2020-03-29 15:32:18 +02:00
Ludovic Courtès
710854304b
grafts: Don't rely on substitute info for missing store items.
Fixes <https://bugs.gnu.org/22990>.

* guix/grafts.scm (references-oracle)[references*]: Remove call to
'substitution-oracle' and to 'references/substitutes'.  Use
'references/cached' and 'build-derivations' right away instead.
2020-03-29 15:32:17 +02:00
Ludovic Courtès
c70cf1a724
store: Add 'references/cached'.
* guix/store.scm (references/cached): New procedure.
2020-03-29 15:32:17 +02:00
Ludovic Courtès
25af35fa32
profiles: Use 'mapm/accumulate-builds'.
* guix/profiles.scm (check-for-collisions): Use 'mapm/accumulate-builds'
to lower manifest entries.  Call 'foldm' over the already-lowered entries.
(profile-derivation): Use 'mapm/accumulate-builds' instead of 'mapm'
when calling HOOKS.
2020-03-29 15:32:17 +02:00
Ludovic Courtès
584dfdac37
gexp: 'lower-inputs' uses 'mapm/accumulate-builds'.
This doesn't have an noticeable impact on the run time of
'guix system build desktop.tmp --no-grafts -d'.

* guix/gexp.scm (lower-inputs): Use 'mapm/accumulate-builds' instead of 'mapm'.
2020-03-29 15:32:17 +02:00
Ludovic Courtès
1213ea9bd9
guix build: Use 'map/accumulate-builds'.
* guix/scripts/build.scm (options->derivations): Use
'map/accumulate-builds' instead of 'append-map'.
2020-03-29 15:32:17 +02:00
Ludovic Courtès
c40bf5816c
store: Add 'map/accumulate-builds'.
* guix/store.scm (<unresolved>): New record type.
(build-accumulator, map/accumulate-builds, mapm/accumulate-builds): New
procedures.
* tests/store.scm ("map/accumulate-builds", "mapm/accumulate-builds"):
New tests.
2020-03-29 15:32:17 +02:00
Marius Bakke
388b432cea
deploy: Remove use of '~*' in format string.
...since 'msgfmt' fails to interpret it.  Reported by Vagrant Cascadian
in <https://lists.gnu.org/archive/html/guix-devel/2020-03/msg00340.html>.
See also <https://bugs.gnu.org/37505>.

* guix/scripts/deploy.scm (show-what-to-deploy): Use ~d instead of ~* when
displaying machines that will be deployed.
2020-03-28 15:55:13 +01:00
Ludovic Courtès
2b6fe60599
packages: Use Guile 3.0 for grafts.
* guix/packages.scm (guile-2.0): Rename to...
(guile-for-grafts): ... this, and adjust callers.  Refer to 'guile-3.0'
instead of 'guile-2.0'.
2020-03-27 19:09:30 +01:00
Ludovic Courtès
260eae7893
status: Display synthetic information about profiles being built.
* guix/status.scm (print-build-event): Add 'profile case.
* guix/scripts/package.scm (build-and-use-profile): Remove now redundant
message.
2020-03-26 13:07:19 +01:00
Ludovic Courtès
e7570ec2da
profiles: 'profile-derivation' sets a 'type' property.
* guix/profiles.scm (profile-derivation): Pass #:properties to
'gexp->derivation'.
2020-03-26 13:07:19 +01:00
Ricardo Wurmus
9e17989017
import/cran: Import missing module.
This is a follow-up to commit b005c240bb.

Reported-by: Ludovic Courtès <ludo@gnu.org>

* guix/import/cran.scm: Import (guix ui) module.
2020-03-25 16:28:57 +01:00
Ludovic Courtès
c74f19d758
environment: Use 'with-build-handler'.
* guix/scripts/environment.scm (build-environment): Remove.
(guix-environment): Wrap 'with-status-verbosity' in
'with-build-handler'.  Remove 'dry-run?' conditional.  Use
'built-derivations' instead of 'build-environment'.
2020-03-25 16:02:53 +01:00
Ludovic Courtès
2d5ee2c6e8
archive: Use 'with-build-handler'.
* guix/scripts/archive.scm (export-from-store): Remove call to
'show-what-to-build' and dry-run? condition.
(guix-archive): Wrap 'cond' in 'with-build-handler'.
2020-03-25 16:02:53 +01:00
Ricardo Wurmus
b005c240bb
import/cran: Support importing from Mercurial repositories.
* guix/import/cran.scm (download): Accept keyword #:method; add case for hg
method.
(fetch-description): Handle hg repository.
(description->package): Add cases for hg repositories and update call of
DOWNLOAD procedure.
(cran->guix-package): Retry importing from Bioconductor when hg import failed.
2020-03-25 09:40:05 +01:00
Christopher Baines
57e12aad6d
scripts: lint: Handle store connections for lint checkers.
Rather than individual checkers opening up a connection to the store for each
package to check, if any checker requires a store connection, open a
connection and pass it to all checkers that would use it. This makes running
the derivation checker much faster for multiple packages.

* guix/scripts/lint.scm (run-checkers): Add a #:store argument, and pass the
store to checkers if they require a store connection.
(guix-lint): Establish a store connection if any checker requires one, and
pass it through to run-checkers.
2020-03-24 19:47:46 +00:00
Christopher Baines
7826fbc02b
lint: Add a #:store argument to check-derivation
This can then be used to avoid opening up a store connection each time a
package needs checking.

* guix/lint.scm (check-derivation): Add a #:store argument, and pull the
handling of the store connection out of the try function.
2020-03-24 19:47:46 +00:00
Christopher Baines
d84ad6a24e
lint: Mark the derivation checker as requiring a store connection.
* guix/lint.scm (%local-checkers): Mark the derivation checker as requiring a
store connection.
2020-03-24 19:47:46 +00:00
Christopher Baines
3874dc5ef2
lint: Add a requires-store? field to the checker record.
This can then be used to mark checkers that require a store connection, which
will enable passing a connection in, avoiding the overhead of establishing a
connection inside the check function when it's run for lots of different
packages.

* guix/lint.scm (<lint-checker>): Add requires-store? to the record type.
2020-03-24 19:47:43 +00:00
Ludovic Courtès
637db76d7a
guix system: Fix mistaken 'guix pull' warning upon 'reconfigure'.
Fixes <https://bugs.gnu.org/38196>.
Reported by Florian Pelz <pelzflorian@pelzflorian.de>.

* guix/scripts/system.scm (maybe-suggest-running-guix-pull): Check
whether 'current-profile' returns true instead of checking for the
existence of ~root/.config/guix/current.  That way, "sudo guix system
reconfigure" no longer emits a warning in that case.
2020-03-24 18:54:41 +01:00
Ludovic Courtès
53c594cb3f
pack: Do not store extended attributes in squashfs images.
* guix/scripts/pack.scm (squashfs-image)[build](mksquashfs): Pass "-no-xattrs".
2020-03-24 16:56:19 +01:00
Ludovic Courtès
8465f1f680
ui: 'show-manifest-transaction' tabulates package lists for install/remove.
It also removes the store file name from the output.

* guix/ui.scm (show-manifest-transaction)[package-strings]: Rewrite to
use 'tabulate'.  Remove 'item' parameter and adjust callers.
2020-03-24 15:44:45 +01:00
Ludovic Courtès
3e5ab0a7a9
ui: 'show-manifest-transaction' tabulates upgraded package lists.
This also changes "1.0.0 → 1.0.0" to "(dependencies changed)", which is
probably less confusing.

* guix/ui.scm (tabulate): New procedure.
(show-manifest-transaction)[upgrade-string]: Rewrite to take lists of
names, versions, and outputs instead of single elements.  Use
'tabulate'.  Adjust callers accordingly.
2020-03-24 15:44:45 +01:00
Martin Becze
cf2b91aad0
import: crate: Deduplicate dependencies.
* guix/import/crate.scm (crate-version-dependencies): Deduplicate crate dependencies.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-03-24 15:44:45 +01:00
Arun Isaac
d13d28265f
licenses: Add QWT 1.0 license.
* guix/licenses.scm (qwt1.0): New variable.

Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
2020-03-24 11:42:41 +01:00
Arun Isaac
5d33e789c2
licenses: Add Open Government Licence for Public Sector Information.
* guix/licenses.scm (ogl-psi1.0): New variable.

Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
2020-03-24 11:42:40 +01:00
Ludovic Courtès
1292372725
deploy: Write a message upon successful deployment.
* guix/scripts/deploy.scm (guix-deploy): Write message upon successful
deployment.
2020-03-23 10:48:17 +01:00
Ludovic Courtès
1bb248d0b1
deploy: Show what machines will be deployed.
* guix/scripts/deploy.scm (show-what-to-deploy): New procedure.
(guix-deploy): Call it.
2020-03-23 10:48:17 +01:00
Ludovic Courtès
7b322d3c4c
ui: Add 'indented-string'.
* guix/scripts/pull.scm (display-news-entry): Remove extra space in
format string for 'indented-string'.
(indented-string): Remove.
(display-new/upgraded-packages)[pretty]: Pass #:initial-indent? to
'indented-string'.
* guix/ui.scm (indented-string): New procedure.
2020-03-23 10:48:17 +01:00
Ludovic Courtès
8f53d73493
ssh: 'send-files' reports missing modules on the remote host.
Reported by Mikael Djurfeldt <mikael@djurfeldt.com>
in <https://bugs.gnu.org/40125>.

* guix/ssh.scm (send-files)[inferior-remote-eval*]: New procedure.
[missing]: Use it.  Add an explicit 'resolve-module' call.
(report-inferior-exception): New procedure.
2020-03-23 10:48:17 +01:00
Maxim Cournoyer
afc6b1c0b6
build: emacs-utils: Add an option to select scoping for batch eval.
In Emacs 27, --eval now evaluates using lexical scoping.  This change adds an
option to select dynamic scoping, by using a workaround proposed in
<https://bugs.gnu.org/39823>.

* guix/build/emacs-utils.scm (emacs-batch-eval): Add a DYNAMIC? keyword
argument.  Wrap the EXPR with a call to EVAL that makes use of the argument
to select the scoping mode.
(emacs-generate-autoloads): Use it.
2020-03-22 21:17:38 -04:00
Ludovic Courtès
9acacb71c9
Remove workaround for 'time-monotonic' in Guile 2.2.2.
This is a followup to e688c2df39.

* build-aux/hydra/evaluate.scm <top level>: Remove 'time-monotonic'
definition.
* guix/cache.scm: Likewise.
* guix/progress.scm: Likewise.
* guix/scripts/substitute.scm: Likewise.
* guix/scripts/weather.scm: Likewise.
* tests/cache.scm: Likewise.
2020-03-22 16:49:47 +01:00
Mathieu Othacehe
c086c5af1c
build-system: linux-module: Fix cross compilation.
* guix/build-system/linux-module.scm (default-kmod, default-gcc): Delete
procedures.
(system->arch): New procedure.
(make-linux-module-builder)[native-inputs]: Move linux...
[inputs]: ...to here.
(linux-module-build-cross): New procedure.
(linux-module-build): Add TARGET.  Pass TARGET and ARCH to build side.
(lower): Allow cross-compilation.  Move "linux" and "linux-module-builder"
to host-inputs.  Add target-inputs.  Call linux-module-build-cross if
TARGET is set, linux-module-build otherwise.
* guix/build/linux-module-build-system.scm (configure): Add ARCH argument.
(linux-module-build): Adjust comment.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
2020-03-22 13:20:07 +01:00
Danny Milosavljevic
5c79f23863
system: Add kernel-loadable-modules to operating-system.
* gnu/system.scm (<operating-system>): Add kernel-loadable-modules.
(operating-system-directory-base-entries): Use it.
* doc/guix.texi (operating-system Reference): Document
KERNEL-LOADABLE-MODULES.
* gnu/build/linux-modules.scm (depmod): New procedure.
(make-linux-module-directory): New procedure.  Export it.
* guix/profiles.scm (linux-module-database): New procedure.  Export it.
* gnu/tests/linux-modules.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/linux.scm (make-linux-libre*)[arguments]<#:phases>[install]:
Disable depmod.  Remove "build" and "source" symlinks.
[native-inputs]: Remove kmod.
2020-03-22 12:51:50 +01:00
Ludovic Courtès
91601790d0
packages: 'package-field-location' handles missing source properties.
This is a followup to f2b24f01f4.

* guix/packages.scm (package-field-location): Check whether
'source-properties->location' returns #f.  This fixes the case where
'source-properties' returns the empty list.
2020-03-22 12:42:52 +01:00
Ludovic Courtès
3e6f65be7a
copy: Use 'with-build-handler'.
* guix/scripts/copy.scm (send-to-remote-host): Remove explicit
'show-what-to-build' call.  Call 'build-derivations' unconditionally.
(guix-copy): Wrap 'with-status-verbosity' in 'with-build-handler'.
2020-03-22 12:42:52 +01:00
Ludovic Courtès
81c0b52bd6
copy: Actually implement '--dry-run'.
* guix/scripts/copy.scm (%options): Add '--dry-run'.
2020-03-22 12:42:52 +01:00
Ludovic Courtès
7473238f7d
copy: Factorize 'with-store' & co.
* guix/scripts/copy.scm (send-to-remote-host): Remove 'with-store' and
'set-build-options-from-command-line' call.  Add 'local' parameter.
(retrieve-from-remote-host): Likewise.
(guix-copy): Wrap 'with-status-verbosity' in 'with-store' and add call
to 'set-build-options-from-command-line'.
2020-03-22 12:42:52 +01:00
Ludovic Courtès
9b771305df
ui: 'build-notifier' invokes continuation when there's nothing to do.
* guix/ui.scm (build-notifier): Call CONTINUE when there's nothing to
build or download, even when DRY-RUN? is true.
2020-03-22 12:42:52 +01:00