Commit Graph

5505 Commits

Author SHA1 Message Date
Marius Bakke
24c86ad0c0
Merge branch 'master' into staging 2020-11-26 23:59:28 +01:00
Ludovic Courtès
5842239a66
deploy: Let key-and-args exceptions through.
Fixes <https://bugs.gnu.org/44825>.
Reported by Christopher Lemmer Webber <cwebber@dustycloud.org>.

* guix/ui.scm (guard*): Export.
* guix/scripts/deploy.scm (deploy-machine*): Use 'guard*' instead of
'guard'.  Add '&exception-with-kind-and-args' case.
2020-11-26 23:39:15 +01:00
Marius Bakke
bff94a5a53
Merge branch 'master' into staging 2020-11-26 01:08:35 +01:00
zimoun
c2cc5f0a00
weather: Fix '--substitute-urls'.
Fixes <https://bugs.gnu.org/44574>.
Reported by Efraim Flashner <efraim@flashner.co.il>.

* guix/scripts/weather.scm (guix-weather): Fix when substitute-urls
is a list.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-11-25 11:55:07 +01:00
Marius Bakke
87a027243f
Merge branch 'master' into staging 2020-11-23 23:39:47 +01:00
Mathieu Othacehe
d9e57db724
store: Fix ensure-path docstring.
Suggested by Ludovic Courtès.

* guix/store.scm (ensure-path): Fix the docstring.
2020-11-23 14:10:34 +01:00
Marius Bakke
a485a98ca8
Merge branch 'master' into staging 2020-11-22 23:36:09 +01:00
Efraim Flashner
1ca0c34867
build-system/cargo: Set gettext environment variable when available.
* guix/build/cargo-build-system.scm (configure): When gettext is
available in the build environment set the GETTEXT_SYSTEM variable.
* gnu/packages/crates-io.scm (rust-gettext-rs-0.5, rust-gettext-rs-0.4,
rust-gettext-sys-0.19)[arguments]: Remove phase to help find system gettext.
2020-11-22 19:45:43 +02:00
Efraim Flashner
73dbcc4b5f
build-system/cargo: Set libclang environment variable when available.
* guix/build/cargo-build-system.scm (configure): When clang is available
in the build environment set the LIBCLANG_PATH variable.
* gnu/packages/crates-graphics.scm (rust-aom-sys-0.1,
uust-dav1d-sys-0.3),
* gnu/packages/crates-io.scm (rust-bindgen-0.55, rust-bindgen-0.54,
rust-bindgen-0.53, rust-bindgen-0.52, rust-cexpr-0.4, rust-cexpr-0.3,
rust-cexpr-0.2, rust-clang-sys-1, rust-clang-sys-0.29,
rust-clang-sys-0.26, rust-clang-sys-0.22, rust-clang-sys-0.11,
rust-libpijul-0.12, rust-nettle-7, rust-nettle-sys-2,
rust-sequoia-openpgp-0.9)[arguments]: Remove phases which set an
environment variable to find clang.
[inputs]: Rename instances of libclang with clang.
2020-11-22 19:44:53 +02:00
Efraim Flashner
3dbf3a7f51
build-system/cargo: Set openssl environment variable when available.
* guix/build/cargo-build-system.scm (configure): When openssl is
available set the OPENSSL_DIR variable to discover its location.
* gnu/packages/crates-io.scm (rust-curl-sys-0.4, rust-libgit2-sys-0.10,
rust-libpijul-0.12, rust-libssh2-sys-0.2, rust-native-tls-0.2,
rust-openssl-sys-0.9, rust-openssl-0.7, rust-trust-dns-rustls-0.6),
* gnu/packages/rust-apps.scm (tokei, exa)[arguments]: Remove redundant
setenv for openssl.
2020-11-22 19:44:43 +02:00
Mathieu Othacehe
edfa066dca
scripts: publish: Export procedures.
* guix/scripts/publish.scm (open-server-socket, run-publish-server): Export
those procedures.
(%default-gzip-compression): Export it.
2020-11-22 17:19:12 +01:00
Mathieu Othacehe
2a7e1121d8
guix: store: Add ensure-path.
* guix/store.scm (ensure-path): New procedure.
2020-11-22 17:17:56 +01:00
Danny Milosavljevic
8e7c98963f
linux-initrd: Add special-file->cpio-header*.
* guix/cpio.scm (special-file->cpio-header*): New public procedure.
2020-11-22 11:03:31 +01:00
Danny Milosavljevic
b1dfc64552
linux-initrd: Handle 'block-special and 'char-special cpio headers as well.
* guix/cpio.scm (make-cpio-header): Handle size correctly for all file types.
(mode->type): Add 'block-special, 'char-special.
2020-11-22 11:02:58 +01:00
Timothy Sample
464b1fffb0
lint: Add 'check-haskell-stackage' checker.
* guix/lint.scm (check-haskell-stackage): New procedure.
(%network-dependent-checkers): Add 'haskell-stackage' checker.
* guix/import/hackage.scm (%hackage-url): New variable.
(hackage-source-url, hackage-cabal-url): Use it in place of a
hard-coded string.
* guix/import/stackage.scm (%stackage-url): Make it a parameter.
(stackage-lts-info-fetch): Update accordingly.
* tests/lint.scm ("hackage-stackage"): New test.
2020-11-21 22:11:36 -05:00
Ludovic Courtès
4f156c259f
lint: Add 'patch-headers' checker.
* guix/lint.scm (check-patch-headers): New procedure.
(%local-checkers): Add 'patch-headers' checker.
* tests/lint.scm ("patch headers: no warnings")
("patch headers: missing comment", "patch headers: empty")
("patch headers: patch not found"): New tests.
2020-11-21 12:39:14 +01:00
Ludovic Courtès
e79ecff045
transformations: Show '--help-transform' only where applicable.
Fixes <https://bugs.gnu.org/44773>.
Reported by Florian Pelz <pelzflorian@pelzflorian.de>.

This fixes a regression introduced in
6701f64f73.

* guix/transformations.scm (%transformation-options): Add
"--help-transform".
(show-transformation-options-help): Rename to...
(show-transformation-options-help/detailed): ... this.
(show-transformation-options-help): New public procedure.
* guix/scripts/build.scm (show-build-options-help): Remove
"--help-transform".
(%standard-build-options): Likewise.
(show-help): Call 'show-transformation-options-help'.
* guix/scripts/environment.scm (show-help): Likewise.
* guix/scripts/graph.scm (show-help): Likewise.
* guix/scripts/install.scm (show-help): Likewise.
* guix/scripts/pack.scm (show-help): Likewise.
* guix/scripts/package.scm (show-help): Likewise.
* guix/scripts/upgrade.scm (show-help): Likewise.
2020-11-21 12:39:14 +01:00
Brice Waegeneire
becfa42ea7
scripts: lint: Display result of checkers on stdout.
* guix/scripts/lint.scm (emit-warnings): Use 'current-output-port'
instead of 'current-error-port'.

Signed-off-by: Christopher Baines <mail@cbaines.net>
2020-11-21 10:23:08 +00:00
Marius Bakke
be8a0881f1
build-system/cargo: Do not pass --features to Cargo unless specified.
Fixes <https://bugs.gnu.org/44692>.

* guix/build/cargo-build-system.scm (build): Default to the empty list for
FEATURES.  Check whether the list is empty when building the Cargo arguments.
2020-11-20 09:58:04 +01:00
Marius Bakke
35ed83beae
Merge branch 'master' into staging 2020-11-19 00:04:32 +01:00
Miguel Ángel Arruga Vivas
9b5e1cc11f
guix: refresh: Do not use argument jumping with ngettext.
* guix/scripts/refresh.scm (list-dependents)[lst]: Use ~d for the
singular format string, as the argument jumping would trigger an error
during en@boldquot.mo generation.
2020-11-18 20:58:51 +01:00
Maxim Cournoyer
129b9b16d9
Merge remote-tracking branch 'origin/version-1.2.0' into master
Conflicts:
	gnu/packages/bioinformatics.scm

The python-pysam package fixed in master was kept instead of the update done
in the version-1.2.0 branch.
2020-11-17 18:00:28 -05:00
Maxim Cournoyer
41f27bf870
guix: system: Make disk-image root file system non-volatile by default.
And add a new '--volatile' option to have it volatile otherwise.

* guix/scripts/system.scm (%options)[volatile-root?]: New boolean option.
(%default-options): Set its default value to #f.
(show-help): Add help doc.
* guix/scripts/system.scm (perform-action): Propagate option...
(system-derivation-for-action): ...here.  Use it to set the volatile-root?
field of the image object passed to SYSTEM-IMAGE.
* doc/guix.texi (Invoking guix system): Document it.
2020-11-17 15:20:03 -05:00
Florian Pelz
29ed17d634
pull: Do not suggest running `guix pull --news' on the first run.
* guix/scripts/pull.scm (display-channel-news-headlines): If there
are no news to display, return false instead of <unspecified>.
2020-11-16 13:44:29 +00:00
Ludovic Courtès
98750a9d99
self: Limit the number of threads used when translating manuals.
* guix/self.scm (translate-texi-manuals)[build](parallel-jobs): New
variable.
Use it as first argument to 'n-par-for-each'.
2020-11-16 11:40:53 +01:00
Danny Milosavljevic
b720cf90e7
utils: Add 'cxx-for-target'.
* guix/utils.scm (cxx-for-target): New procedure.
2020-11-16 10:26:46 +01:00
Maxim Cournoyer
630602831d
publish: Harmonize buffer size values and configuration.
This change harmonizes the way we configure the buffer sizes and the socket
options, so that we don't forget to change it at one place like it happened in
commit 5e3d169945.

* guix/scripts/publish.scm (%default-buffer-size)
(%default-socket-options): New variables.
* guix/scripts/publish.scm (configure-socket): New procedure.
(compress-nar): Use %default-buffer-size for the buffer size, increased from
128 to 208 KiB.
(nar-response-port): Likewise, increased from 64 to 208 KiB.
(http-write): Use configure-socket to set socket options.
(open-server-socket): Likewise.
2020-11-16 00:04:32 -05:00
Marius Bakke
4e5e05d409
Merge branch 'master' into staging 2020-11-15 23:45:34 +01:00
Tobias Geerinckx-Rice
5d15733c42
archive: Warn about replacing an ACL symlink.
* guix/scripts/archive.scm (authorize-key): Warn when %ACL-FILE is a
symbolic link and print an additional hint for Guix System users.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2020-11-15 23:05:34 +01:00
Holger Peters
521d33cdc6
guix: hg-download: Add hg-predicate.
`hg-predicate' acts for mercurial repositories as `git-predicate' acts
for git-repositories.

* guix/hg-download.scm (hg-predicate): New procedure.

Signed-off-by: Christopher Baines <mail@cbaines.net>
2020-11-14 10:27:00 +00:00
John Soo
0cdc13ce43
guix build: Expose log-url for third parties.
* guix/scripts/build.scm (log-url): Expose it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-11-13 18:11:30 +01:00
John Soo
e783cd51ba
pack: Expose some bindings for third-party use.
* guix/scripts/pack.scm (compressor-name, compressor-extension,
compressor-command, %compressors, %formats): Export.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-11-13 18:10:11 +01:00
Ludovic Courtès
07914def98
Merge branch 'version-1.2.0' 2020-11-12 10:47:25 +01:00
Ludovic Courtès
b73981369e
lint: patch-file-names: Simplify 'search-patch' error handling.
* guix/lint.scm (check-patch-file-names): Remove 'message-condition?'
guard, which is useless since d51bfe242f.
Remove call to 'format' in the 'formatted-message?' case.
2020-11-12 09:29:05 +01:00
Marius Bakke
a9a0d34874
Merge branch 'master' into staging 2020-11-11 00:02:32 +01:00
Ludovic Courtès
1cbda46d4a
publish: Increase TCP buffer size when sending non-cached nars.
This increases throughput tenfold (!) on localhost when downloading
large nars without '--cache'.  This is a followup to
5e3d169945.

Reported by Maxim Cournoyer.

* guix/scripts/publish.scm (http-write): In the
'application/x-nix-archive' case, add call to 'setsockopt'.
2020-11-10 22:56:38 +01:00
Julien Lepiller
6ed2741a35
guix: ocaml: Add package-with-ocaml4.09.
* guix/build-system/ocaml.scm (package-with-ocaml4.09)
(strip-ocaml4.09-variant): New variables.
* gnu/packages/ocaml.scm (ocaml4.09-result, ocaml4.09-csexp)
(ocaml4.09-dune-configurator, ocaml4.09-dune): New variables.
2020-11-10 16:02:59 +01:00
Ludovic Courtès
362529963e
ui: Use the right accessor when reporting '&gexp-input-error'.
* guix/ui.scm (call-with-error-handling): In the 'gexp-input-error?'
case, use 'gexp-error-invalid-input' as the accessor.
2020-11-10 14:40:20 +01:00
Ludovic Courtès
d754757628
publish: Create files in the cache as #o644.
Reported by Ricardo Wurmus <rekado@elephly.net>.

* guix/scripts/publish.scm (compress-nar): Add 'chmod' call to ensure
PORT is #o644, in the uncompressed case.
(bake-narinfo+nar): Likewise for the narinfo file.
* tests/publish.scm ("with cache"): Check permissions on CACHED and NAR.
2020-11-09 23:27:09 +01:00
Ludovic Courtès
464e7437f4
publish: Create files in the cache as #o644.
Reported by Ricardo Wurmus <rekado@elephly.net>.

* guix/scripts/publish.scm (compress-nar): Add 'chmod' call to ensure
PORT is #o644, in the uncompressed case.
(bake-narinfo+nar): Likewise for the narinfo file.
* tests/publish.scm ("with cache"): Check permissions on CACHED and NAR.
2020-11-08 23:39:33 +01:00
Marius Bakke
32787d6524
Merge branch 'master' into staging
Conflicts:
	gnu/local.mk
	gnu/packages/gdb.scm
	gnu/packages/lisp-xyz.scm
	gnu/packages/web-browsers.scm
2020-11-07 21:33:32 +01:00
Ludovic Courtès
db1b18c397
ui: Add missing format argument in 'warn-about-load-error'.
* guix/ui.scm (warn-about-load-error): Add missing argument to 'warning'.
2020-11-06 21:42:39 +01:00
Ludovic Courtès
4db90a6c15
pack: Do not include the host (guix config).
* guix/scripts/pack.scm (store-database)[build]: Import a
synthetic (guix config).
2020-11-05 16:13:50 +01:00
Ludovic Courtès
ca465a9c84
gexp: Warn when importing (guix config) or (ice-9 …).
While importing those modules from the host system is valid, it is often
a mistake that introduces non-reproducibility.  This patch prints a
warning when that happens.

* guix/gexp.scm (gexp-attribute): Add #:validate parameter and honor it.
(gexp-modules)[validate-modules]: New procedure.
Pass it to 'gexp-attribute'.
* tests/gexp.scm ("gexp-modules, warning"): New test.
2020-11-05 16:13:50 +01:00
Ludovic Courtès
18fc84bce8
gexp: Store the source code location in <gexp>.
* guix/gexp.scm (<gexp>)[location]: New field.
(gexp-location): New procedure.
(write-gexp): Print the location of GEXP.
(gexp->derivation): Adjust call to 'make-gexp'.
(gexp): Likewise.
2020-11-05 16:13:50 +01:00
Ludovic Courtès
5e7cf66fb3
publish: Do not path the empty string to 'query-path-info'.
Fixes <https://bugs.gnu.org/44442>.
Regression introduced in 2b2ab7796a.

* guix/scripts/publish.scm (render-nar/cached): Do not call
'bypass-cache?' when ITEM is the empty string.
* tests/publish.scm ("with cache, cache bypass, unmapped hash part"):
New test.
2020-11-04 16:02:53 +01:00
Robert Vollmert
f0bb2662bb
guix import stackage: Default to LTS version that matches GHC.
In particular, this means that 'guix lint' won't warn to update to
versions that won't necessarily fit our package set well.

* guix/import/stackage.scm (%stackage-url): Change to "https",
avoiding redirect log messages.
(%default-lts-version): New variable.
(stackage-lts-info-fetch, stackage->guix-package,
latest-lts-release): Use it.
(lts-info-ghc-version): Remove unused procedure.

Signed-off-by: Timothy Sample <samplet@ngyro.com>
2020-11-03 15:36:59 -05:00
Mathieu Othacehe
a38d861e57
system: reconfigure: Use the disk-installer if provided.
Fixes: <https://issues.guix.gnu.org/44101>.

* gnu/build/bootloader.scm (write-file-on-device): Pass 'no-fail flag instead
of 'no-create. Use a latin-1 transcoder.
* guix/scripts/system/reconfigure.scm (install-bootloader-program): Add a
"disk-installer" argument and use it as a fallback.
(install-bootloader): Adapt accordingly.
* gnu/tests/reconfigure.scm (run-install-bootloader-test): Ditto.
2020-11-03 07:59:59 +01:00
Ludovic Courtès
76ea70bd70
profiles: Add fast path for 'xdg-mime-database' hook.
Partly fixes <https://bugs.gnu.org/44053>.
Reported by Joshua Branson <jbranso@dismail.de>
and Maxim Cournoyer <maxim.cournoyer@gmail.com>.

* guix/profiles.scm (xdg-mime-database): When PKGDIRS contains only one
element, symlink directly to it.  Invoke 'update-mime-database' only
when PKGDIRS contains two or more elements, which is less frequent.
2020-11-02 14:59:34 +01:00
Miguel Ángel Arruga Vivas
582cf9257c
system: Add store-directory-prefix to boot-parameters.
Fixes <http://issues.guix.gnu.org/44196>

* gnu/machine/ssh.scm (roll-back-managed-host): Use
boot-parameters-store-directory-prefix.
* gnu/system.scm (define-module): Export
boot-parameters-store-directory-prefix.
(<boot-parameters>)[store-directory-prefix]: New field. It is used to
generate the correct paths when /gnu/store is installed on a btrfs
subvolume whose name doesn't match the final runtime path, as the
bootloader doesn't have knowledge about the final mounting points.
[boot-parameters-store-directory-prefix]: New accessor.
(read-boot-parameters): Read directory-prefix from store field.
(operating-system-boot-parameters-file): Add directory-prefix to
store field.
* guix/scripts/system.scm (reinstall-bootloader): Use
boot-parameters-store-directory-prefix.
* test/boot-parameters.scm (%default-btrfs-subvolume,
%default-store-directory-prefix): New variables.
(%grub-boot-parameters): Use %default-store-directory-prefix.
(%default-operating-system): Use %default-btrfs-subvolume.
(test-boot-parameters): Add directory-prefix.
(test optional fields): Add test for directory-prefix.
(test os store-directory-prefix): New test.
2020-11-01 02:28:38 +01:00
Ludovic Courtès
31726f32ac
transformations: Raise '&formatted-message' exceptions instead of 'leave'.
* guix/transformations.scm (evaluate-replacement-specs)
(package-git-url, evaluate-git-replacement-specs)
(transform-package-source-git-url)
(transform-package-toolchain): Use 'raise' and 'formatted-message'
instead of 'leave'.
2020-10-31 23:16:43 +01:00
Ludovic Courtès
f68b3ba12d
guix build: Move transformation options to (guix transformations).
* guix/transformations.scm: New file.
* tests/scripts-build.scm: Rename to...
* tests/transformations.scm: ... this.
* Makefile.am (MODULES): Add 'guix/transformations.scm'.
(SCM_TESTS): Adjust to rename.
* guix/scripts/build.scm (numeric-extension?)
(tarball-base-name, <downloaded-file>, download-to-store*)
(compile-downloaded-file, package-with-source)
(transform-package-source, evaluate-replacement-specs)
(transform-package-inputs, transform-package-inputs/graft)
(%not-equal, package-git-url, evaluate-git-replacement-specs)
(transform-package-source-branch, transform-package-source-commit)
(transform-package-source-git-url, package-dependents/spec)
(package-toolchain-rewriting, transform-package-toolchain)
(transform-package-with-debug-info, transform-package-tests)
(%transformations, transformation-procedure, %transformation-options)
(show-transformation-options-help, options->transformation)
(package-transformations): Move to (guix transformations).
* guix/scripts/environment.scm: Adjust accordingly.
* guix/scripts/graph.scm: Likewise.
* guix/scripts/install.scm: Likewise.
* guix/scripts/pack.scm: Likewise.
* guix/scripts/package.scm: Likewise.
* guix/scripts/upgrade.scm: Likewise.
* po/guix/POTFILES.in: Add 'guix/transformations.scm'.
2020-10-31 23:16:43 +01:00
Ludovic Courtès
1ae33664a6
guix build: 'options->transformation' no longer takes a 'store' parameter.
* guix/scripts/build.scm (transform-package-source)
(transform-package-inputs, transform-package-inputs/graft)
(transform-package-source-branch, transform-package-source-commit)
(transform-package-source-git-url, transform-package-toolchain)
(transform-package-with-debug-info, transform-package-tests): Remove
'store' parameter.
(options->transformation, options->derivations): Adjust accordingly.
* guix/scripts/environment.scm (options/resolve-packages): Likewise.
* guix/scripts/graph.scm (guix-graph): Likewise.
* guix/scripts/pack.scm (guix-pack): Likewise.
* guix/scripts/package.scm (transaction-upgrade-entry): Likewise.
(process-actions): Likewise.
* tests/scripts-build.scm ("options->transformation, no transformations")
("options->transformation, with-source, replacement"):
Adjust tests.
("options->transformation, with-source")
("options->transformation, with-source, with version")
("options->transformation, with-source, PKG=URI"): Use 'lower-object' to
compute the store file name of the source.
("options->transformation, with-source, no matches"): Remove
'with-store' and adjust accordingly.
("options->transformation, with-input"): Likewise.
("options->transformation, with-graft"): Likewise.
("options->transformation, with-branch"): Likewise.
("options->transformation, with-commit"): Likewise.
("options->transformation, with-git-url"): Likewise.
("options->transformation, with-git-url + with-branch"): Likewise.
("options->transformation, with-c-toolchain"): Likewise.
("options->transformation, with-c-toolchain twice"): Likewise.
("options->transformation, with-c-toolchain, no effect"): Likewise.
("options->transformation, with-debug-info"): Likewise.
("options->transformation, without-tests"): Likewise.
2020-10-31 23:16:43 +01:00
Ludovic Courtès
e72cc79263
guix build: Remove unnecessary (replacement #f).
* guix/scripts/build.scm (package-with-source): Remove 'replacement'
field, which is innate since d5ec5ed719.
2020-10-31 23:16:43 +01:00
Ludovic Courtès
139c4ac199
guix build: 'package-with-source' no longer takes a 'store' parameter.
* guix/scripts/build.scm (<downloaded-file>): New record type.
(download-to-store*): New variable.
(compile-downloaded-file): New procedure.
(package-with-source): Remove 'store' parameter.  Use 'downloaded-file'
instead of 'download-to-store'.
(transform-package-source): Adjust accordingly.
2020-10-31 23:16:42 +01:00
Eric Bavier
4184998c70
guix: pack: Only wrap executable files.
* guix/scripts/pack.scm (wrapped-package)<build>: Build wrappers for
executable files and symlink others.
* tests/guix-pack-relocatable.sh: Test relocatable example of mixed
executable and non-executable files.
2020-10-30 10:00:35 -05:00
Eric Bavier
a73896425e
guix: pack: Fix offset calculation for store directory mount point.
Fixes wrapping of non-package things, where the target store directory may
differ in length from the original.

* guix/scripts/pack.scm (wrapped-package)<build-wrapper>: Define
WRAPPER_PROGRAM macro with wrapper's file name.
* gnu/packages/aux-files/run-in-namespace.c (main): Offset index by len of
that file name.
2020-10-30 10:00:29 -05:00
zimoun
58db2e6877
scripts: lint: Add '--exclude' option.
* guix/scripts/lint.scm (%options, parse-options): Add '--exclude' option.
(option-checker): New helper function.
* doc/guix.texi (Invoking guix lint): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-10-30 01:14:20 +01:00
zimoun
80c7f02468
scripts: lint: Fix '--no-network' option.
* guix/scripts/lint.scm: (show-help): Add '--no-network' option message.
(%options, parse-options): Fix argument order.
* doc/guix.texi (Invoking guix lint): Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-10-30 01:14:20 +01:00
Vagrant Cascadian
159c5943e4
build/maven: Fix typo.
* guix/build/maven/pom: Fix spelling of "with".
2020-10-28 21:11:11 -07:00
Vagrant Cascadian
28680722b2
build/maven: fix-pom-dependencies: Fix typo.
* guix/build/maven/pom (fix-pom-dependencies): Fix spelling of "overrides".
2020-10-28 21:11:06 -07:00
Vagrant Cascadian
05ee7ef8b7
build/maven: fix-pom-dependencies: Fix typo.
* guix/build/maven/pom (fix-pom-dependencies): Fix spelling of "overridden".
2020-10-28 21:11:01 -07:00
Miguel Ángel Arruga Vivas
504fd36a85
substitute: Do not discard ttl info when the response code is 202.
* guix/scripts/substitute.scm (fetch-narinfos)
[handle-narinfo-response]: Add code 202 to the condition.  This will
allow in the future the use of 404 for nar requests which cannot be
built in the present, leaving for the 202 to indicate that a request has
triggered a nar generation that might be completed later, as specified
in <https://www.ietf.org/rfc/rfc2616.txt>.
2020-10-28 19:29:11 +01:00
Ludovic Courtès
ecaa102a58
publish: Add '--cache-bypass-threshold'.
* guix/scripts/publish.scm (show-help, %options): Add
'--cache-bypass-threshold'.
(low-compression): New procedure.
(cache-bypass-threshold): New parameter.
(bypass-cache?): New procedure.
(render-narinfo/cached): Call 'render-narinfo' when 'bypass-cache?'
returns true.
(render-nar/cached): Call 'render-nar' when 'bypass-cache?' returns
true.
(guix-publish): Parameterize 'cache-bypass-threshold'.
* tests/publish.scm ("with cache", "with cache, lzip + gzip")
("with cache, uncompressed"): Pass '--cache-bypass-threshold=0'.
("with cache, vanishing item"): Expect 200 for RESPONSE.
("with cache, cache bypass"): New test.
2020-10-28 16:24:47 +01:00
Amar Singh
6955cff962
publish: Provide server's signing key.
* guix/scripts/publish.scm (render-signing-key): New procedure.
(render-home-page): Add link to it.
(make-request-handler): Handle it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-10-27 00:40:24 +01:00
Björn Höfling
f503cfc9c5
build/maven-build-system: Return #t in fix-pom-files phase.
* guix/build/maven-build-system.scm (fix-pom-files): Return #t.
2020-10-26 21:36:09 +01:00
Ludovic Courtès
c9278dc9c1
offload: Adjust default 'max-silent-time' value of 'open-ssh-session'.
* guix/scripts/offload.scm (open-ssh-session): Have 'max-silent-time'
default to #f rather than -1, which is not a valid timeout value.
Adjust body accordingly.
2020-10-25 01:06:09 +02:00
Ludovic Courtès
d3f02752b5
offload: Export <build-machine> accessors.
* guix/scripts/offload.scm: Export 'build-machine' accessors.
2020-10-25 01:06:08 +02:00
Ludovic Courtès
8425a9b60a
git: Support HTTP and HTTPS proxies.
This allows 'guix pull' and similar to fetch code over a proxy.

* guix/git.scm (make-default-fetch-options): Pass #:proxy-url.
2020-10-22 17:10:25 +02:00
Ludovic Courtès
298f9d29d6
git: Display a progress bar while fetching a repo.
Fixes <https://bugs.gnu.org/39260>.

This uses the API of the yet-to-be-released Guile-Git 0.4.0.  Using an
older version is still possible, but progress report is disabled.

* guix/git.scm (show-progress, make-default-fetch-options): New
procedures.
(clone*, update-cached-checkout): Use it instead of
'make-fetch-options'.
2020-10-22 17:10:25 +02:00
Ludovic Courtès
59bb1ae3a9
git: Require Guile-Git 0.3.0 or later.
* guix/git.scm (auth-supported?): Remove.
(clone*): Inline code that was dependent on AUTH-SUPPORTED?.
(update-cached-checkout): Likewise.
(resolve-reference): Remove check for 'object-lookup-prefix' and use it
unconditionally.
(load-git-submodules): Remove.
(update-submodules): Use 'repository-submodules', 'submodule-lookup',
etc. unconditionally.
(update-cached-checkout): Use 'repository-close!' unconditionally.
* m4/guix.m4 (GUIX_CHECK_GUILE_GIT): New macro.
* configure.ac: Use it and error out when it fails.
* doc/guix.texi (Requirements): Bump to Guile-Git 0.3.0.
2020-10-22 17:10:25 +02:00
Ludovic Courtès
16155bbeb8
graph: Don't insist on "Helvetica" in the Graphviz backend.
Suggested by Fulbert <fulbert@bluewin.ch>.

* guix/graph.scm (emit-node): Use "sans" instead of "Helvetica".
2020-10-22 17:10:21 +02:00
Ludovic Courtès
6701f64f73
guix build: Move package transformation options behind '--help-transform'.
This change declutters the '--help' output.

* guix/scripts/build.scm (show-build-options-help)
(%standard-build-options): Add '--help-transform'.
(show-transformation-options-help): Make private.
(show-help): Remove call to 'show-transformation-options-help'.
* guix/scripts/build.scm (show-help): Likewise.
* guix/scripts/environment.scm (show-help): Likewise.
* guix/scripts/graph.scm (show-help): Likewise.
* guix/scripts/install.scm (show-help): Likewise.
* guix/scripts/pack.scm (show-help): Likewise.
* guix/scripts/package.scm (show-help): Likewise.
* guix/scripts/upgrade.scm (show-help): Likewise.
* doc/guix.texi (Package Transformation Options): Mention '--help-transform'.
2020-10-20 16:30:16 +02:00
Ludovic Courtès
6aeda81602
guix build: Add '--with-debug-info'.
* guix/scripts/build.scm (transform-package-with-debug-info): New
procedure.
(%transformations): Add 'with-debug-info'.
(%transformation-options, show-transformation-options-help): Add
'--with-debug-info'.
* tests/scripts-build.scm ("options->transformation, with-debug-info"):
New test.
* doc/guix.texi (Package Transformation Options): Document
'--with-debug-info'.
(Installing Debugging Files): Introduce sections.  Remove bit about
eventual "opt-out" since this is not happening.  Document
'--with-debug-info' under "Rebuilding with Debugging Info".
2020-10-20 16:30:16 +02:00
Ludovic Courtès
ccf3dcba3d
tests: Do not fetch and print the random seed from the top level.
* guix/tests.scm (%seed): Turn into a memoizing procedure.
(random-text, random-bytevector): Adjust accordingly.
2020-10-20 16:30:16 +02:00
Ludovic Courtès
f59ec1de94
graph: Fix typo in docstring.
* guix/graph.scm (shortest-path): Fix typo in docstring.
2020-10-20 16:30:16 +02:00
Ludovic Courtès
8db4ebb0cd
packages: Better preserve object identity when rewriting.
Fixes a bug whereby the presence of propagated inputs could lead to two
non-eq? but actually equal packages in a bag's inputs.  The problem
would manifest itself when running, for instance:

  guix build inkscape -d --with-graft=glib=glib-networking --no-grafts

The resulting derivation would differ due from that without
'--with-graft'.  This was due to the fact that glib propagates libffi;
this instance of libffi was not rewritten even though other instances in
the graph were rewritten.  Thus, glib would end up with two non-eq?
libffi instances, which in turn would lead to duplicate entries in its
'%build-inputs' variable.

Fixes <https://bugs.gnu.org/43890>.

* guix/packages.scm (package-mapping)[rewrite]: Remove call to 'cut?'
and call 'replace' unconditionally.
[replace]: Add 'cut?' case.
* tests/guix-build.sh: Add test combining '--no-grafts' and
'--with-graft'.
* tests/packages.scm ("package-input-rewriting/spec, identity")
("package-input-rewriting, identity"): New tests.
2020-10-20 16:30:15 +02:00
Ludovic Courtès
d154462bd8
download: Update docstring.
* guix/download.scm (url-fetch): Update docstring to match what's in the
manual.
2020-10-20 16:30:15 +02:00
Christopher Baines
c949530b6f
import: crate: make-crate-sexp: Fix missing home-page handling.
* guix/import/crate.scm (make-crate-sexp): Replace 'null rather than '() with
the empty string for the home-page.
2020-10-19 18:48:33 +01:00
Helio Machado
a9105c2c4c
import: print: Fix deprecation warning for origin-sha256.
* guix/import/print.scm (source->code source version): Replace
'origin-sha256' by 'origin-hash' and handle non-SHA256 hashes.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2020-10-19 13:28:38 +02:00
Marius Bakke
1a8f7a0f58
Merge branch 'master' into staging 2020-10-19 00:17:48 +02:00
zimoun
19d42e0e23
build-system/haskell: Disable parallel builds.
Fixes <https://bugs.gnu.org/43843>.

* guix/build-system/haskell.scm (haskell-build): Turn off PARALLEL-BUILD? by
default.

Signed-off-by: Marius Bakke <marius@gnu.org>
2020-10-19 00:07:37 +02:00
Miguel Ángel Arruga Vivas
eaf0963983
system: Provide locale information to the bootloader.
* gnu/machine/ssh.scm (roll-back-managed-host): Use locale information
from boot-parameters.
* gnu/system.scm (operating-system-bootcfg): Provide locale information
to the bootloader.
* guix/system/script.scm (reinstall-bootloader): Use locale information
from boot-parameters.
2020-10-18 15:33:05 +02:00
Ludovic Courtès
6be7146130
gexp: 'assume-valid-file-name' has files looked up under the CWD.
Fixes a bug introduced in 5d4ad8e1be,
whereby files enclosed in 'assume-valid-file-name' would be looked up
relative to the source directory instead of relative to the current
directory.

* guix/gexp.scm (local-file): In the 'assume-valid-file-name' case, look
up FILE relative to the current working directory.
2020-10-18 00:21:33 +02:00
Helio Machado
f045a7a926
import: utils: Fix license name mismatches and define CUA-OPL-1.0.
* guix/licenses.scm (cua-opl1.0): New variable.
* guix/import/utils.scm (spdx-string->license): Rename licenses to fit
the internal names and add a notice pointing to guix/licenses.scm.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-10-17 22:40:18 +02:00
Ludovic Courtès
5d4ad8e1be
gexp: Add 'assume-valid-file-name' syntax for use with 'local-file'.
* guix/gexp.scm (assume-valid-file-name): New variable.
(local-file): Add clause with (assume-valid-file-name file).
2020-10-16 15:00:50 +02:00
Ludovic Courtès
5ef1508942
ui: Only suggest modules that export the unbound variable identifier.
Fixes <https://bugs.gnu.org/43498>.
Reported by Tobias Geerinckx-Rice <me@tobias.gr>.

* guix/ui.scm (known-variable-definition): Check for variables in the
public interface of HEAD, not in HEAD itself.
* tests/guix-build.sh: Add test.
2020-10-15 18:50:22 +02:00
Efraim Flashner
6b793fa662
build-system/go: Install license files.
* guix/build/go-build-system.scm (install-license-files): New procedure.
(%standard-phases): Replace inherited 'install-license-files phase.
2020-10-15 11:13:25 +03:00
Ludovic Courtès
37a8f5b281
openpgp: '&openpgp-unrecognized-packet-error' includes type tag.
* guix/openpgp.scm (&openpgp-unrecognized-packet-error)[type]: New
field.
(get-data, parse-subpackets): Initialize 'type' field.
2020-10-14 15:22:55 +02:00
Marius Bakke
f7175626ff
Merge branch 'master' into staging 2020-10-13 23:39:27 +02:00
Marius Bakke
2323a7120a
gnu: nmap: Update license.
* guix/licenses.scm (nmap): Rename to ...
(npsl): ... this.  Adjust name and URL, and remove outdated Fedora wiki
entry in favor of nmap's own annotated version.
* gnu/packages/admin.scm (nmap)[license]: Adjust accordingly.
2020-10-13 23:36:43 +02:00
Ludovic Courtès
abd7a47461
guix build: Add '--with-c-toolchain'.
* guix/scripts/build.scm (package-dependents/spec)
(package-toolchain-rewriting, transform-package-toolchain): New procedures.
(%transformations): Add it.
(%transformation-options, show-transformation-options-help): Add
'--with-c-toolchain'.
* tests/scripts-build.scm (depends-on-toolchain?): New procedure.
("options->transformation, with-c-toolchain")
("options->transformation, with-c-toolchain twice")
New test.
("options->transformation, with-c-toolchain, no effect"): New tests.
* doc/guix.texi (Package Transformation Options): Document it.
2020-10-12 18:23:47 +02:00
Ludovic Courtès
46135ce4ce
packages: Add 'package-with-c-toolchain'.
* guix/build-system.scm (build-system-with-c-toolchain): New procedure.
* guix/packages.scm (package-with-c-toolchain): New procedure.
* tests/packages.scm ("package-with-c-toolchain"): New test.
* doc/guix.texi (package Reference): Document 'package-with-c-toolchain'.
(Build Systems): Mention it.
2020-10-12 18:23:47 +02:00
Ludovic Courtès
099d709caf
substitute: Reduce default narinfo negative TTL to 1h.
* guix/scripts/substitute.scm (%narinfo-negative-ttl): Reduce to 1h.
2020-10-12 18:23:47 +02:00
Ludovic Courtès
75e72dd34e
upgrade: Mention '--do-not-upgrade' in '--help' output.
* guix/scripts/upgrade.scm (show-help): Add '--do-not-upgrade'.
2020-10-12 18:23:47 +02:00
Ludovic Courtès
baa4a2ef81
lint: cve: Set a connection timeout.
This (notably) works around the fact that nvd.nist.gov is currently
inaccessible over IPv6.

* guix/cve.scm (fetch-vulnerabilities): Add #:timeout and pass it to
'http-fetch/cached'.
(current-vulnerabilities): Add #:timeout and pass it to
'fetch-vulnerabilities'.
* guix/lint.scm (current-vulnerabilities*): Pass #:timeout to
'current-vulnerabilities'.
2020-10-12 11:28:56 +02:00
Ludovic Courtès
d11f7f62b6
http-client: 'http-fetch' and 'http-fetch/cached' accept #:timeout.
* guix/http-client.scm (http-fetch): Add #:timeout and pass it to
'guix:open-connection-for-uri'.
(http-fetch/cached): Add #:timeout parameter and pass it to
'http-fetch'.
2020-10-12 11:28:56 +02:00
Ludovic Courtès
6c46e477eb
channels: Address test failure.
Fixes <https://bugs.gnu.org/43940>.
Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.

The "channel-instances->manifest" test would fail since
1d4ab335b2: 'quiet-guile' would be passed #f
as GUILE, and thus 'package-version' would fail with wrong-type-arg.

* guix/channels.scm (whole-package-for-legacy): Pass #:guile to
'whole-package'.
* tests/channels.scm ("channel-instances->manifest"): Remove 'test-expect-fail'.
2020-10-12 11:28:56 +02:00
Ludovic Courtès
cda046b3ea
reconfigure: Start services not currently running.
Fixes <https://bugs.gnu.org/43720>.
Reported by Andreas Enge <andreas@enge.fr>.

The bug was introduced in 5c793753b3,
which changed the way TO-START is computed: as a function of the running
services first, and then as a function of the live services (which
includes services not currently running).

* guix/scripts/system/reconfigure.scm (running-services): Serialize the
'running' field and return it.
(upgrade-shepherd-services): Comput RUNNING.  Compute TO-START as the
difference between TARGET-SERVICES and RUNNING.
2020-10-11 17:26:41 +02:00
Ludovic Courtès
b55409b2c0
svn-download, hg-download: Use 'report-invoke-error'.
* guix/build/hg.scm (hg-fetch): Use 'report-invoke-error' instead of
'format'.
* guix/build/svn.scm (svn-fetch): Likewise.
2020-10-10 22:37:45 +02:00
Maxim Cournoyer
efbf5fdd01
offload: Improve load normalization and configurability.
Fixes <https://issues.guix.gnu.org/43773>.

The computed normalized load was previously obtained by dividing the load
average as found in /proc/loadavg by the number of parallel builds defined for
a build machine.

This normalized load didn't allow to compare machines with different number of
cores, as the load average reported by /proc/loadavg can be as high as the
number of cores; thus comparing that value to a fixed threshold of 2.0 would
mean machines with multiple cores were more likely to be flagged as overloaded
compared to single core machines.

This can be fixed by normalizing using the available number of cores instead
of the number of parallel jobs.

* guix/scripts/offload.scm (<build-machine>)[overload-threshold]: New field.
(node-load): Modify to return a normalized load value between 0 and 1, taking
into account the number of cores available.
(normalized-load): Remove procedure.
(report-load): New procedure.
(choose-build-machine): Adjust to use the modified 'node-load' and the new
'report-load' and 'build-machine-overload-threshold' procedures.
(check-machine-status): Adjust.
* doc/guix.texi (Daemon Offload Setup): Document the offload scheduler and the
new 'overload-threshold' field.
2020-10-08 10:57:12 -04:00
zimoun
db9e4af0ea
build: svn: Fix handle fetch errors.
This fixes the revert 1ec67d5220.

* guix/build/svn.scm (svn-fetch): Add 'guard' to handle errors.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-10-08 12:38:43 +02:00
Paul Garlick
1ec67d5220
Revert "build: svn: Handle fetch errors."
This reverts commit 2fb12dd1bb, which
causes the 'svn export' command to fail with:

svn: E155000: Destination directory exists; please remove the directory
or use --force to overwrite
2020-10-06 14:47:57 +01:00
zimoun
2fb12dd1bb
build: svn: Handle fetch errors.
* guix/build/svn.scm (svn-fetch): Add 'guard' to handle errors.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-10-06 10:24:38 +02:00
zimoun
a5a3f813c7
build: hg: Handle fetch errors.
* guix/build/hg.scm (hg-fetch): Add 'guard' to handle errors.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-10-06 10:24:37 +02:00
Efraim Flashner
c1cc0c4865
build-system/cargo: Don't install .crates.toml file.
Fixes <https://issues.guix.gnu.org/43810>.

* guix/build/cargo-build-system.scm (install): Remove installed
.crates.toml file.
2020-10-06 10:37:34 +03:00
Ludovic Courtès
1d4ab335b2
self: Use a 'guile' that doesn't complain about locales.
Since commit ba48895899, selected UTF-8
locales are bundled.  However, because 'guix-command' is itself a Guile
script, users would still see Guile's warning, particularly on foreign
distros:

  $ LC_ALL=sdf guix foo
  guile: warning: failed to install locale
  hint: Consider installing the `glibc-utf8-locales' [...]

User commands would print that warning, but more importantly, each
invocation of 'guix substitute' would print it, even though
'guix-daemon.service' explicitly chooses "en_US.utf8", which is in
'glibc-utf8-locales'.  This leads to confusion since users would keep
seeing this message unless/until they realize they also need to install
'glibc-utf8-locales' in root's profile.

This patch gets rid of "guile: warning: ..." for a guix-pulled 'guix'
command.

* guix/self.scm (specification->package): Add "gcc-toolchain".
(quiet-guile): New procedure.
(guix-command): Use it.
* gnu/packages/aux-files/guile-launcher.c: New file.
* Makefile.am (AUX_FILES): Add it.
2020-10-05 23:19:19 +02:00
Guillaume Le Vaillant
87c079d9b5
Merge branch 'master' into staging 2020-10-05 14:17:25 +02:00
Ludovic Courtès
b68d410651
environment: Turn "lo" up in network-less containers.
This is a followup to 0f53c801b9.

* guix/scripts/environment.scm (launch-environment/container): Add call
to 'set-network-interface-up'.
* tests/guix-environment-container.sh: Add test.
2020-10-05 10:41:59 +02:00
Ludovic Courtès
0f53c801b9
environment: Provide /etc/hosts in containers without '--network'.
Fixes <https://bugs.gnu.org/43762>.

* guix/scripts/environment.scm (launch-environment/container): Create
/etc/hosts when NETWORK? is false.
* tests/guix-environment-container.sh: Add "localhost" resolution test.
2020-10-02 23:28:09 +02:00
Ludovic Courtès
8e1907a724
guix package: Re-apply package transformation when upgrading.
* guix/scripts/package.scm (transaction-upgrade-entry)[upgrade]: Add
'transform' parameter.  Pass PKG through it.  Use
'manifest-entry-with-transformations'.
Call 'options->transformation' to get the transformation procedure.
* tests/guix-package.sh: Add 'guix package -u' test.
* tests/packages.scm ("transaction-upgrade-entry, transformation options preserved"):
New test.
* doc/guix.texi (Invoking guix package): Mention that transformations
are preserved across upgrades.
(Package Transformation Options): Likewise.
2020-10-02 23:28:09 +02:00
Ludovic Courtès
ad54a73bb8
guix build: Record package transformations in manifest entries.
With this change, package transformation options used while building a
manifest are saved in the metadata of the manifest entries.

* guix/scripts/build.scm (transformation-procedure): New procedure.
(options->transformation)[applicable]: Use it.  Change to a list of
key/value/proc tuples instead of key/proc pairs.
[package-with-transformation-properties, tagged-object]: New
procedures.  Use them.
(package-transformations, manifest-entry-with-transformations): New
procedures.
* guix/scripts/pack.scm (guix-pack)[with-transformations]: New
procedure.
Use it.
* guix/scripts/package.scm (process-actions)[transform-entry]: Use it.
* tests/guix-package-aliases.sh: Add test.
2020-10-02 23:28:09 +02:00
Mathieu Othacehe
bdbd8bf905
scripts: system: Honor target argument.
Since 313f492657 the target argument passed to
"guix system" was not honored for 'disk-image' command.

This forces the command line passed "target" to take precedence over the
"target" field of the <image> record returned by "os->image" procedure.

* guix/scripts/system.scm (system-derivation-for-action): Override the
"target" field of the "image" record using the "target" argument from the
command line.
2020-10-02 10:03:29 +02:00
Ludovic Courtès
9471aea76a
gexp: Fix argument ordering in 'local-file' macro.
Fixes a regression introduced in
f43ffee908.
Reported by jonsger on #guix.

* guix/gexp.scm (local-file): In the non-literal case, add #:literal?
and #:location after REST.
2020-10-02 09:29:26 +02:00
Ludovic Courtès
dc749a0e91
ui: Use "guix install" in locale hint.
* guix/ui.scm (install-locale): Change "guix package -i" to "guix install".
2020-10-02 08:11:38 +02:00
Ludovic Courtès
f43ffee908
gexp: 'local-file' warns when passed a non-literal relative file name.
Fixes <https://bugs.gnu.org/43736>.
Reported by Vitaliy Shatrov <guix.vits@disroot.org>.

* guix/gexp.scm (%local-file): Add #:literal? and #:location.
Emit a warning when LITERAL? is false and FILE is not absolute.
(local-file): In the non-literal case, pass #:location and #:literal?.
* po/guix/POTFILES.in: Add guix/gexp.scm.
* tests/guix-system.sh: Add test for the warning.
2020-10-02 08:11:38 +02:00
Julien Lepiller
a6816618fc
import: opam: Report groups in syntax tree.
* guix/import/opam.scm (group-pat): Report in syntax tree.
(dependency->input, dependency->native-input, dependency->name):
consider the case of a group.
2020-10-02 00:43:41 +02:00
Julien Lepiller
f4390d391b
guix: opam: Fix syntax.
* guix/import/opam.scm (STRCHR, comment, choice): Fix syntax.
(group-pat): Add syntax.
(opam->guix-package): Suppport "archive" keyword.
2020-10-01 21:43:29 +02:00
Ludovic Courtès
7dc19c33fc
ui: "guix help" silently ignores EPIPE.
This avoids a backtrace when running "guix help | head" or similar.

* guix/ui.scm (run-guix): Wrap 'show-guix-help' calls in
'leave-on-EPIPE'.
2020-10-01 12:45:38 +02:00
Ludovic Courtès
58abd58739
pack: Work around ld.so bug that affects the "fakechroot" engine.
Fixes <https://bugs.gnu.org/43491>.

* guix/scripts/pack.scm (wrapped-package): Use (runpath program) instead
of (runpath #$(audit-module)).
2020-10-01 12:45:38 +02:00
Mathieu Othacehe
313f492657
scripts: system: Add support for image-type.
* guix/scripts/system.scm (list-image-types): New procedure,
(%options): add "image-type" and "list-image-types" options, remove
"file-system-type" option,
(show-help): adapt accordingly,
(%default-options): also adapt, and set the default "image-type" to "raw",
(perform-action): add image-type argument and remove file-system-type argument,
(process-action):  adapt perform-action call,
(system-derivation-for-action): remove base-image
argument, add image-type argument, and use it to create the image passed to
"system-image".
* tests/guix-system.sh: Adapt accordingly and add a test for
"--list-image-types" command.
* doc/guix.texi (Building the Installation Image,
Invoking guix system): Adapt accordingly.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-09-30 10:47:59 +02:00
Lars-Dominik Braun
680b80e374
openpgp: Fix argument order of 'fxbit-set?'.
* guix/openpgp.scm (fxbit-set?): Change to swap arguments compared to
'bit-set?'.
* tests/openpgp.scm (%binary-sample): New test vector.
("port-ascii-armored?, #t"): Add test.
("port-ascii-armored?, #f"): Add another test.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2020-09-29 22:53:36 +02:00
Julien Lepiller
e75443d4f2
guix build: Add a hint for unspecified value.
* guix/scripts/build.scm (options->things-to-build): Add a hint when we
cannot build something.
2020-09-29 15:15:25 +02:00
Ludovic Courtès
8819551c8d
packages: 'package-input-rewriting' has a #:deep? parameter.
* guix/packages.scm (package-input-rewriting): Add #:deep? and pass it
to 'package-mapping'.
[replacement-property]: New variable.
[rewrite]: Check it.
[cut?]: New procedure.
* tests/packages.scm ("package-input-rewriting"): Pass #:deep? #f and
ensure implicit inputs were not rewritten.  Avoid 'eq?' comparisons.
("package-input-rewriting, deep"): New test.
* gnu/packages/guile.scm (package-for-guile-2.0, package-for-guile-3.0):
Pass #:deep? #f.
2020-09-27 21:41:15 +02:00
Ludovic Courtès
b3fc03ee26
packages: 'package-mapping' correctly recurses into 'replacement'.
Previously, something like:

  guix build glib --with-graft=glibc=glibc@2.29

would produce a result showing that rewriting rules were not applied to
libx11@1.6.A (a replacement).

* guix/packages.scm (package-mapping): Call REPLACE instead of PROC to
'replacement'.
* tests/packages.scm ("package-input-rewriting/spec, graft"): New test.
2020-09-27 21:41:11 +02:00
Ludovic Courtès
2bf6f962b9
packages: 'package-input-rewriting/spec' can rewrite implicit dependencies.
With this change, '--with-input', '--with-graft', etc. also apply to
implicit dependencies.  Thus, it's now possible to do:

  guix build python-itsdangerous --with-input=python-wrapper=python@2

or:

  guix build hello --with-graft=glibc=glibc@2.29

Additionally, before, implicit inputs were not rewritten, which could
lead to duplicates in the output of 'bag-transitive-inputs' (packages
that are not 'eq?' but lead to the same derivation).  This in turn would
lead to unnecessary rebuilds when using '--with-input' & co.  This
change fixes it by ensuring even implicit inputs are rewritten.

Fixes <https://bugs.gnu.org/42156>.

* guix/packages.scm (package-input-rewriting/spec): Add #:deep?
defaulting to #true, and pass it to 'package-mapping'.
[replacement-property]: New variable.
[rewrite]: Check that property and set it on the result of PROC.
[cut?]: New procedure.
* tests/packages.scm ("package-input-rewriting/spec"): Ensure implicit
inputs were unchanged.
("package-input-rewriting/spec, partial match"): Pass #:deep? #f.
("package-input-rewriting/spec, deep")
("package-input-rewriting/spec, no duplicates"): New tests.
(package/inherit): Move before use.
* tests/guix-build.sh: Add tests.
* tests/scripts-build.scm ("options->transformation, with-graft"):
Compare dependencies by package name or derivation file name.
* doc/guix.texi (Defining Packages): Adjust accordingly.
2020-09-27 21:41:08 +02:00
Ludovic Courtès
ff39361c80
packages: 'package-mapping' can recurse on implicit inputs.
* guix/packages.scm (build-system-with-package-mapping): New procedure.
(package-mapping): Add #:deep? and honor it.
* tests/packages.scm ("package-mapping"): Compare the direct inputs of
the bag of P0 and that of P1.
("package-mapping, deep"): New test.
2020-09-27 21:41:05 +02:00
Ludovic Courtès
f458cfbcc5
guix build: Add '--without-tests'.
* guix/scripts/build.scm (transform-package-tests): New procedure.
(%transformations, %transformation-options)
show-transformation-options-help): Add it.
* tests/scripts-build.scm ("options->transformation, without-tests"):
New test.
* doc/guix.texi (Package Transformation Options): Document it.
2020-09-27 21:32:09 +02:00
Ludovic Courtès
795065533d
gnu: Replace uses of 'guile3.0-gnutls' by 'gnutls'.
* gnu/packages/package-management.scm (guix)[propagated-inputs]: Use
GNUTLS instead of GUILE3.0-GNUTLS.
(guix-daemon)[inputs]: Likewise.
* guix/self.scm (specification->package): Likewise.
2020-09-25 19:05:08 +02:00
Ludovic Courtès
4eeaae7994
guix package: Simplify 'package->manifest-entry*'.
* guix/scripts/package.scm (package->manifest-entry*): Rewrite in terms
of 'manifest-entry-with-provenance'.
2020-09-25 19:05:08 +02:00
André Batista
9c4aaa630d
licenses: Add Apple Public Source License 2.0.
* guix/licenses.scm (apsl2): New variable.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2020-09-25 14:11:04 +02:00
Guillaume Le Vaillant
2374443561
Merge branch 'staging' into wip-lisp 2020-09-23 14:50:19 +02:00
Tobias Geerinckx-Rice
bd16cc2902
import: Fix docstring typoes.
* guix/import/cabal.scm (cabal-flags->alist): Fix typo in docstring.
* guix/import/stackage.scm (lts-info-ghc-version): Likewise.
* guix/scripts/import/hackage.scm (show-help): Likewise.
2020-09-23 04:36:59 +02:00
zimoun
620681534a
guix: scripts: build: Mention 'PACKAGE' in '--with-source' option.
* guix/scripts/build.scm (show-transformation-options-help): Mention 'PACKAGE'
in '--with-source' option.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2020-09-21 23:14:43 +02:00
Ludovic Courtès
9b65281de5
environment: '--link-profile' uses ~/.guix-profile for environment variables.
Before this patch, we had:

  $ guix environment -CP --ad-hoc coreutils
  [env]$ echo $PATH
  /gnu/store/…-profile/bin
  [env]$ echo $GUIX_ENVIRONMENT
  /gnu/store/…-profile

After this patch:

  $ guix environment -CP --ad-hoc coreutils
  [env]$ echo $PATH
  /home/ludo/.guix-profile/bin
  [env]$ echo $GUIX_ENVIRONMENT
  /home/ludo/.guix-profile

* guix/scripts/environment.scm (launch-environment/container): When
LINK-PROFILE? is true, pass ~/.guix-profile as the second argument to
'launch-environment'.
* tests/guix-environment-container.sh: Adjust test accordingly.
* doc/guix.texi (Invoking guix environment): Update accordingly.
2020-09-21 23:05:38 +02:00
Ludovic Courtès
1b179d7876
describe: Save the original value of (program-arguments).
Fixes <https://bugs.gnu.org/42688>.
Reported by pkill9 <pkill9@runbox.com>.

This ensures that 'guix repl -s SCRIPT' give SCRIPT the right value
of (current-profile), which in turn ensures that (%package-module-path)
is initialized with the right set of channels.

* guix/describe.scm (initial-program-arguments): New variable.
(current-profile): Use it.
* guix/scripts/repl.scm (guix-repl): Call 'current-profile' before
'set-program-arguments'.
2020-09-19 22:52:36 +02:00
Konrad Hinsen
d7f7ed39be
repl: Look for script files in (getcwd).
Fixes <https://bugs.gnu.org/43331>.

* guix/scripts/repl.scm (guix-repl): Replace "." by (getcwd)
* tests/guix-repl.sh: Add test.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2020-09-16 16:04:01 +02:00
Guillaume Le Vaillant
e0d9103f41
build-system: asdf: Improve install phase for CL source packages.
* guix/build/asdf-build-system.scm (install)[parent-source]: Add support for
  package names not containing a hyphen.
2020-09-15 22:00:29 +02:00
Tobias Geerinckx-Rice
9d1af83e0b
import: cpan: Export cpan-release-module.
* guix/import/cpan.scm: Fix typo.
2020-09-15 14:57:06 +02:00
Ludovic Courtès
b911d65474
authenticate: Encode strings as ISO-8859-1.
Fixes <https://bugs.gnu.org/43421>.

* guix/scripts/authenticate.scm (read-command): Decode strings as
ISO-8859-1, not UTF-8.
(guix-authenticate)[send-reply]: Encode strings as ISO-8859-1, not
UTF-8.
* tests/guix-authenticate.sh: Add test.
2020-09-15 14:40:20 +02:00
Guillaume Le Vaillant
952fafb2a3
build-system: asdf: Read all .asd files if no #:asd-files specified.
* guix/build-system/asdf.scm (asdf-build): Remove the 'files' variable.
* guix/build/asd-build-system.scm (find-asd-files): New variable.
  (build, check): Use it.
2020-09-15 14:36:24 +02:00
Ludovic Courtès
846403ef62
ui: 'show-what-to-build' displays download estimate more prominently.
* guix/ui.scm (show-what-to-build): When VERBOSITY is 1, add a newline
before the "would/will be downloaded" line, and wrap that message in
'highlight'.
2020-09-14 15:42:56 +02:00
Ludovic Courtès
7d516c17da
authenticate: Cache the ACL and key pairs.
In practice we're always using the same key pair,
/etc/guix/signing-key.{pub,sec}.  Keeping them in cache allows us to
avoid redundant I/O and parsing when signing multiple store items in a
row.

* guix/scripts/authenticate.scm (load-key-pair): New procedure.
(sign-with-key): Remove 'key-file' parameter and add 'public-key' and
'secret-key'.  Adjust accordingly.
(validate-signature): Add 'acl' parameter and pass it to
'authorized-key?'.
(guix-authenticate)[call-with-reply]: New procedure.
[with-reply]: New macro.
Call 'current-acl' upfront and cache its result.  Add 'key-pairs' as an
argument to 'loop' and use it as a cache of key pairs.
2020-09-14 15:42:55 +02:00
Ludovic Courtès
64cf660f87
daemon: Spawn 'guix authenticate' once for all.
Previously, we'd spawn 'guix authenticate' once for each item that has
to be signed (when exporting) or authenticated (when importing).  Now,
we spawn it once for all and then follow a request/reply protocol.  This
reduces the wall-clock time of:

  guix archive --export -r $(guix build coreutils -d)

from 30s to 2s.

* guix/scripts/authenticate.scm (sign-with-key): Return the signature
instead of displaying it.  Raise a &formatted-message instead of calling
'leave'.
(validate-signature): Likewise.
(read-command): New procedure.
(define-enumerate-type, reply-code): New macros.
(guix-authenticate)[send-reply]: New procedure.
Change to read commands from current-input-port.
* nix/libstore/local-store.cc (runAuthenticationProgram): Remove.
(authenticationAgent, readInteger, readAuthenticateReply): New
functions.
(signHash, verifySignature): Rewrite in terms of the agent.
* tests/store.scm ("import not signed"): Remove 'pk' call.
("import signed by unauthorized key"): Check the error message of C.
* tests/guix-authenticate.sh: Rewrite using the new protocol.

fixlet
2020-09-14 15:42:55 +02:00
Paul Garlick
735808b12c
guix: Fix download-svn-to-store.
* guix/svn-download.scm (download-svn-to-store): Add a subdirectory to
the download path.  The subdirectory is used as the target for the 'svn
export' command, avoiding a 'directory exists' error when attempting to
use the parent directory directly.
2020-09-14 14:24:29 +01:00
Christopher Baines
2932591b8a
database: register-items: reduce transaction scope.
It was made transactional in a4678c6ba1, with
the reasoning to prevent broken intermediate states from being visible. I
think this means something like an entry being in ValidPaths, but the Refs not
being inserted.

Using a transaction for this makes sense, but I think using one single
transaction for the whole register-items call is unnecessary to avoid broken
states from being visible, and could block other writes to the store database
while register-items is running. Because the deduplication and resetting
timestamps happens within the transaction as well, even though these things
don't involve the database, writes to the database will still be blocked while
this is happening.

To reduce the potential for register-items to block other writers to the
database for extended periods, this commit moves the transaction to just wrap
the call to sqlite-register. This is the one place where writes occur, so that
should prevent the broken intermediate states issue above. The one difference
this will make is some of the registered items will be visible to other
connections while others may be still being added. I think this is OK, as it's
equivalent to just registering different items.

* guix/store/database.scm (register-items): Reduce transaction scope.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-09-14 10:51:26 +02:00
Caleb Ristvedt
a05c31ab30
database: document extra registration requirements.
It's necessary that store items be locked and protected from garbage
collection while they are being registered.  This documents that.

* guix/store/database.scm (register-path, register-items): document GC
  protection and locking requirements.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-09-14 10:51:26 +02:00
Caleb Ristvedt
14c422c12c
deduplication: pass store directory to replace-with-link.
This causes with-writable-file to take into consideration the actual store
being used, as passed to 'deduplicate', rather than
whatever (%store-directory) may return.

* guix/store/deduplication.scm (replace-with-link): new keyword argument
  'store'.  Pass to with-writable-file.
  (with-writable-file, call-with-writable-file): new store argument.
  (deduplicate): pass store to replace-with-link.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-09-14 10:51:26 +02:00
Danny Milosavljevic
2be5c2652a
build-system: linux-module: Delete some huge items that we probably don't need.
* guix/build-system/linux-module.scm (make-linux-module-builder): Delete
some huge items that we probably don't need.
2020-09-14 10:15:43 +02:00
Guillaume Le Vaillant
a13f45c150
build-system: asdf: Switch from bundles to regular compilation.
* gnu/packages/lisp.scm (sbcl, ecl)[native-search-paths]: Add
  'XDG_CONFIG_DIRS'.
* guix/build-system/asdf.scm (asdf-build): Replace 'asd-file' and
  'asd-system-name' keywords by 'asd-files' and 'asd-systems'.
* guix/build/asdf-build-system.scm (%object-prefix,
  %lisp-source-install-prefix): Update variables.
  (install): Update variable.
  (main-system-name): New variable.
  (copy-source): Replace 'asd-file' and 'asd-system-name' keywords by
  'asd-files' and 'asd-systems'.
  (configure): New variable.
  (build, check): Replace 'asd-file' and 'asd-system-name' keywords by
  'asd-files' and 'asd-systems'.
  (create-asd-file, symlink-asd-files): Remove variables.
  (create-asdf-configuration): New variable.
  (cleanup-files): Update variable.
  (%standard-phases): Remove 'create-asd-file' and 'symlink-asd-files' phases.
  Add 'configure' and 'create-asdf-configuration' phases.
* guix/build/lisp-utils.scm (%bundle-install-prefix, normalize-dependency,
  inputs->asd-file-map, asdf-load-all, compile-system): Remove variables.
  (compile-systems): New variable.
  (system-dependencies, compiled-system, generate-system-definition): Remove
  variable.
  (test-system): Replace 'asd-file' parameter by 'asd-files'.
  (generate-executable-for-system): Update variable.
  (generate-dependency-links, make-asd-file, bundle-asd-file): Remove
  variables.
  (make-asdf-configuration): New variable.
  (build-program, build-image): Set 'XDG_CONFIG_DIRS'.
  (generate-executable): Update variable.
2020-09-12 11:18:56 +02:00