6676 Commits

Author SHA1 Message Date
Mathieu Othacehe
bce55cec88
scripts: system: Use the disk-image size argument for VM generation.
* guix/scripts/system.scm (system-derivation-for-action): Use the given
image-size unconditionnaly when calling system-qemu-image/shared-store-script.
2021-12-23 10:54:00 +01:00
Mathieu Othacehe
c37cd41764
scripts: system: Pass the volatile field to VM generation.
* guix/scripts/system.scm (system-derivation-for-action): Add new volatile?
argument and pass it to system-qemu-image/shared-store-script.
(perform-action): Add new volatile? argument and pass it to
system-derivation-for-action.
(process-action): Pass the volatile? argument to perform-action.
2021-12-23 10:54:00 +01:00
Mathieu Othacehe
3ed8ddd606
scripts: system: Deprecate the docker-image command.
* guix/scripts/system.scm (system-derivation-for-action): Use the image API to
generate the docker images and deprecate the docker-image command.
(process-action): Ditto.
* doc/guix.texi (Invoking guix system): Adapt it.
2021-12-23 10:54:00 +01:00
Ludovic Courtès
e89f767ce8
packages: Avoid #:re-export-and-replace to allow upgrades from 1.2.0.
Fixes <https://issues.guix.gnu.org/52694>.
Reported by Carl Dong <contact@carldong.me>.

Use of #:re-export-and-replace would prevent upgrades from 1.2.0, whose
'source-module-closure' procedure did not recognize #:re-export-and-replace.

* guix/packages.scm: Remove #:re-export-and-replace and add top-level
call to 'module-re-export!'
2021-12-22 23:23:16 +01:00
Attila Lendvai
9ebc9ca070
tests: Move keys into ./tests/keys/ and add a third ed25519 key.
The third key will be used in an upcoming commit.

Rename public keys to .pub.

* guix/tests/gnupg.scm (%ed25519-3-public-key-file): New variable.
(%ed25519-3-secret-key-file): New variable.
(%ed25519-2-public-key-file): Renamed from %ed25519bis-public-key-file.
(%ed25519-2-secret-key-file): Renamed from %ed25519bis-secret-key-file.
* tests/keys/ed25519-3.key: New file.
* tests/keys/ed25519-3.sec: New file.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-12-22 10:53:19 +01:00
Ludovic Courtès
ddf9345dfe
combinators: Add 'define-compile-time-procedure'.
* guix/combinators.scm (procedure-call-location): New syntax parameter.
(define-compile-time-procedure): New macro.
2021-12-20 16:21:40 +01:00
Ludovic Courtès
bdaf38a6e0
build-system/meson: Define build variables when cross-compiling.
Fixes <https://issues.guix.gnu.org/52574>.
Reported by L  p R n  d n    <guix@lprndn.info>.

* guix/build-system/meson.scm (meson-cross-build)[builder]: Define
'%build-host-inputs', '%build-target-inputs', '%build-inputs', and
'%outputs'.
2021-12-20 16:21:39 +01:00
Andrew Whatson
11334d15d5
ci: Restrict substitute search to guix jobset.
* guix/ci.scm (latest-builds): Add jobset keyword.
(find-latest-commit-with-substitutes): Pass jobset "guix".

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-12-19 16:25:51 +01:00
Ludovic Courtès
f6e79ef108
style: Gracefully handle errors such as EACCES when opening files.
* guix/scripts/style.scm (guix-style): Wrap body in
'with-error-handling'.
2021-12-18 22:51:55 +01:00
Ludovic Courtès
a9892f8f2d
style: Refer to source files by absolute file names.
Previously, "guix style PACKAGE" would end up modifying a file looked up
under the current directory since the location associated with PACKAGE
is usually a relative file name.

* guix/scripts/style.scm (absolute-location): New procedure.
(simplify-package-inputs): Use it.
2021-12-18 22:51:55 +01:00
Xinglu Chen
f21c70bc9a
import: elpa: Support ‘upstream-name’ property.
* guix/import/elpa.scm: (guix-package->elpa-name): New procedure.
  (latest-release): Use it.
* tests/elpa.scm ("guix-package->elpa-name: without 'upstream-name' property")
  ("guix-package->elpa-name: with 'upstream-name' property"): Test it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-12-18 22:51:55 +01:00
Vagrant Cascadian
5f547a5c42
lint: Adjust patch file length check.
With the switch to "ustar" format in commit
bdf5c16ac052af2ca9d5c3acc4acbc08fd9fdbea, the maximum file length has
increased.

* guix/lint.scm (check-patch-file-names): Adjust margin used to check for
  patch file lengths. Increase allowable patch file length appropriate to new
  tar format. Extend warning to explain that long files may break 'make dist'.
* tests/lint.scm: Update tests accordingly.
2021-12-17 21:04:25 -08:00
zimoun
28ffdc5cc8
guix hash: Add git serializer.
* guix/scripts/hash.scm (git-hash): New procedure.
(%options): Use it.
* tests/guix-hash.sh: Test it.
* doc/guix.texi: Update.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-12-17 17:29:34 +01:00
zimoun
05c962594c
guix hash: Add 'serializer' option.
* guix/scripts/hash.scm (%options): Deprecate 'recursive', add 'serializer'.
(%default-options): Add 'serializer'.
(nar-hash): New procedure.
(default-hash): New procedure.
(guix-hash)[file-hash]: Use them.
(show-help): Adjust.
* tests/guix-hash.scm: Adjust.
* doc/guix.texi: Update.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-12-17 17:29:34 +01:00
zimoun
6e08f07f20
guix hash: Support several files.
* guix/scripts/hash.scm (guix-hash): Allow several files.
[file-hash]: Catch system-error.
[formatted-hash]: New procedure.
* tests/guix-hash.sh: Add test.
* doc/guix.texi (Invoking guix hash): Mention "one or more files".

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2021-12-17 17:29:34 +01:00
Xinglu Chen
155fc235b5
import: Beautify descriptions when appropriate.
* guix/import/elpa.scm (elpa-package->sexp)
* guix/import/gnu.scm (gnu-package->sexp)
* guix/import/hackage.scm (hackage-module->sexp)
* guix/import/minetest.scm (make-minetest-sexp)
* guix/import/opam.scm (opam->guix-package)
* guix/import/pypi.scm (make-pypi-sexp): Beautify descriptions.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-12-17 17:29:34 +01:00
Xinglu Chen
5cd1019488
import: utils: Wrap lines in description.
* guix/import/utils.scm (beautify-description): Use ‘fill-paragraph’; add
  optional ‘length’ argument.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-12-17 17:29:34 +01:00
Leo Famulari
18d5e7c96b
lint: 'kdoctools' is typically used only while building.
* guix/lint.scm (check-inputs-should-be-native): Add kdoctools.
2021-12-16 13:51:54 -05:00
Ludovic Courtès
2a621f168f
offload: Autoload Guile-SSH.
This halves the number of syscalls made by "guix offload" during startup
and delays loading of Guile-SSH until there are actually machines to
offload to.

* guix/scripts/offload.scm: Remove unused module imports.  Autoload many
modules.
(check-ssh-zlib-support): New procedure.
(process-request): Call it when accepting.
(guix-offload): Remove 'zlib-support?' check, now moved to
'check-ssh-zlib-support'.
2021-12-15 17:12:13 +01:00
Ludovic Courtès
ebbf7fc1c6
offload: Delay call to 'read-derivation-from-file'.
This significantly reduces the amount of work done by "guix offload"
when there's no machine to offload to.

* guix/scripts/offload.scm (process-request): Add call to
'read-derivation-from-file', moved from...
(guix-offload): ... here.
2021-12-15 17:12:13 +01:00
Tobias Geerinckx-Rice
9f955a1cfd
build-system/linux-module: Wrap with build variables.
* guix/build-system/linux-module.scm (linux-module-build): Wrap the
builder gexp WITH-BUILD-VARIABLES to restore %build-inputs after commit
7d873f194ca69d6096d28d7a224ab78e83e34fe1 removed all old certainties.

Reported by lfam in #guix.
2021-12-15 04:57:05 +01:00
Maxim Cournoyer
046a23e63a
build-system: emacs: Do not rely on input labels in the 'build' phase.
This commit repairs the Emacs build system for packages using the new
label-less "guix style".  Tested with emacs-libgit.

* guix/build/emacs-build-system.scm (build): Use search-input-file to locate
emacs.
2021-12-14 11:18:46 -05:00
Nicolas Goaziou
41e61e4fed
guix: Fix typo in last commit.
* guix/build/emacs-build-system.scm (make-autoloads): Fix typo.
2021-12-14 15:49:15 +01:00
Nicolas Goaziou
6717ce28d0
guix: Do not assume "emacs" label in make-autoloads.
* guix/build/emacs-build-system.scm (make-autoloads): Look for "emacs"
executable independently on the label.
2021-12-14 15:48:02 +01:00
Ludovic Courtès
aca2defe01
packages: 'modify-inputs' preserves and introduces input labels if needed.
Fixes a bug whereby, in an expression like this:

  (modify-inputs lst
    (delete ...)
    (prepend ...))

the 'delete' clause would have no effect because 'prepend' would pass it
a label-less input list.

* guix/packages.scm (inputs-sans-labels): Remove.
(modify-inputs): In the 'prepend' and 'append' cases, preserve/add input
labels instead of removing them.
2021-12-13 17:48:25 +01:00
Ludovic Courtès
1052ae5f03
Merge branch 'master' into core-updates-frozen 2021-12-13 11:49:15 +01:00
Christopher Baines
604880ae22
progress: Rate limit drawing in the progress-reporter/bar.
This helps smooth the output in cases where the bar is updated very quickly,
for example in guix weather where it's computing derivations.

* guix/progress.scm (progress-reporter/bar): Wrap the drawing code with the
rate-limited procedure.
2021-12-12 14:12:15 +00:00
Ludovic Courtès
cba0395c99
narinfo: Do not repeat slash when building nar URLs.
* guix/narinfo.scm (narinfo-maker): When one of URLS is relative, do not
repeat trailing slash if it's already present in CACHE-URL.
2021-12-12 00:27:53 +01:00
Ludovic Courtès
e68466de12
substitutes: Build correct narinfo URLs for cache URLs without trailing slash.
Fixes <https://issues.guix.gnu.org/51441>.
Reported by Z572 <873216071@qq.com> and Peng Mei Yu <pengmeiyu@riseup.net>.

Previously, passing '--substitute-urls=https://mirror.sjtu.edu.cn/guix',
without a trailing slash, would fail due to incorrectly constructed
narinfo URLs.  Users would have to explicitly add a trailing slash.

* guix/substitutes.scm (narinfo-request): Ensure BASE has a trailing
slash.
2021-12-12 00:27:53 +01:00
Ludovic Courtès
4dca1bae27
challenge: Store item contents are returned in canonical order.
This allows the 'delete-duplicates' call in 'differing-files' to have
the intended effect.

Before that, a "guix challenge" invocation with three builds of a store
item, two of which are identical, would lead 'differing-files' to not
print anything, as in this example:

  $ ./pre-inst-env guix challenge python-numpy
  /gnu/store/…-python-numpy-1.17.3 contents differ:
    local hash: 07var0wn8fywxchldz5pjqpnlavrlbc8s81aqwsqyi0i7qlh6ka7
    https://ci.guix.gnu.org/nar/lzip/…-python-numpy-1.17.3: 07var0wn8fywxchldz5pjqpnlavrlbc8s81aqwsqyi0i7qlh6ka7
    https://bordeaux.guix.gnu.org/nar/lzip/…-python-numpy-1.17.3: 0cbl3q19bshb6ddz8xkcrjzkcmillsqii4z852ybzixyp7rg40qa

  1 store items were analyzed:
    - 0 (0.0%) were identical
    - 1 (100.0%) differed
    - 0 (0.0%) were inconclusive

With this change, 'differing-files' prints additional info as intended:

    differing file:
      /lib/python3.8/site-packages/numpy/distutils/fcompiler/__pycache__/vast.cpython-38.pyc

* guix/scripts/challenge.scm (archive-contents): Add tail call to
'reverse'.
(store-item-contents): Rewrite to use 'scandir' and recursive calls
instead of 'file-system-fold'.
2021-12-12 00:27:53 +01:00
Ludovic Courtès
c6903e156f
challenge: Use SRFI-71 instead of SRFI-11.
* guix/scripts/challenge.scm (port-sha256*, call-with-nar): Use SRFI-71.
2021-12-12 00:27:53 +01:00
Mathieu Othacehe
32750e8c3e
Merge remote-tracking branch 'signed/master' into core-updates 2021-12-10 21:49:25 +01:00
Ludovic Courtès
16e9e53838
environment: Suggestion code gracefully handles empty "/bin" directories.
* guix/scripts/environment.scm (suggest-command-name): Handle the case
where 'scandir' returns #f.
2021-12-10 15:32:44 +01:00
Ludovic Courtès
7197710121
shell: When using '-D -f', '-D' has no effect on remaining packages.
Fixes <https://issues.guix.gnu.org/52093>.
Reported by Konrad Hinsen <konrad.hinsen@fastmail.net>.

* guix/scripts/shell.scm (%options): In "--file" handler, add call to
'ensure-ad-hoc'.
* tests/guix-shell.sh: Add test.
2021-12-10 15:32:44 +01:00
Ludovic Courtès
c879354003
shell: Fix '--file' description in '--help' output.
Reported by pinoaffe on #guix.

* guix/scripts/shell.scm (show-help): Fix '--file' description.
2021-12-10 15:32:44 +01:00
Ricardo Wurmus
9bc0f45df5
Merge remote-tracking branch 'origin/master' into core-updates-frozen 2021-12-05 19:17:41 +01:00
Marius Bakke
f63fb61d0c
import: PyPI: Validate GPG signatures when applicable.
* guix/import/pypi.scm (<distribution>): Fix funny typo.
(latest-release): When the distribution has a cryptographic signature, pass it
along to UPSTREAM-SOURCE.
2021-12-05 14:40:08 +01:00
Liliana Marie Prikler
98cec36957
build-system: emacs: Keep -pkg.el files.
Partly fixes <https://bugs.gnu.org/48331> -- package descriptions can now be
found in the install directory.

* guix/build/emacs-build-system.scm (%default-exclude): Remove "-pkg\\.el$".
2021-12-03 21:39:50 +01:00
Attila Lendvai
b42bfbdfe5
guix system vm: Add --no-graphic CLI argument.
It configures QEMU to use the tty it was started in for IO (as opposed to
opening a separate graphical window).  This enables copy-pasting and
scrollback.  Exit QEMU with C-a x.

* gnu/system/vm.scm (system-qemu-image/shared-store-script): Also add the
'-nographic' QEMU argument when called with #:graphic? #false.
* guix/scripts/system.scm (system-derivation-for-action): Propagate
the #:graphic? keyword arg.
(perform-action): Add and propagate the #:graphic? keyword arg.
(show-help): Add --no-graphic CLI arg.
(%options): Process the new --no-graphic CLI arg.
(process-action): Feed in the CLI arg through the #:graphic? keyword arg.
* doc/guix.texi (Invoking guix system): Add example to combine guix system and
invoking the vm start script into one command.  Split the description of the
various options into separate paragraphs.  Add a paragraph to describe
--no-graphic.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-12-03 14:18:32 +01:00
Xinglu Chen
39f4ef59ff
build-system: haskell: Add ‘hackage-uri’ procedure.
* guix/build-system/haskell (hackage-uri): New procedure.
* guix/import/hackage.scm (hackage-module->sexp, latest-release): Use it.
* tests/hackage.scm (match-ghc-foo, match-ghc-foo-6, match-ghc-foo-revision,
match-ghc-foo-import): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-12-01 17:53:25 +01:00
Ludovic Courtès
9f371f23eb
inferior: 'cached-channel-instance' does not cache unauthenticated instances.
The comment saying that caching is fine even when AUTHENTICATE? is false
was true in commit 838ac881ec98cb71d4a4e4b20773573f99ecbf25, but it
became incorrect in 7cfd789150f448cf5256b88915bae4163cc9db03, which
no longer calls 'latest-channel-instances' on cache hits.

* guix/inferior.scm (cached-channel-instance): Do not create CACHED when
AUTHENTICATE? is false.
2021-12-01 17:51:33 +01:00
Ludovic Courtès
6b30eb189e
gexp: 'file-append' correctly handles bases without an expander.
This fixes this use case:

  (file-append (let-system ...) ...)

* guix/gexp.scm (file-append-compiler): When BASE lacks an expander,
delegate to LOWERED.
* tests/gexp.scm ("let-system in file-append"): New test.
2021-11-27 23:06:17 +01:00
zimoun
73f55957cf
build: julia-build-system: Correctly disable parallel tests.
* guix/build/julia-build-system.scm: Remove phases trailing #t.
[phases]{check}: Omit the --procs argument when parallel tests are to be
disabled.  Substract 1 from the number of parallel jobs otherwise.

Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-11-27 01:22:33 -05:00
Maxim Cournoyer
71b309169d
profiles: Also handle package objects in GDK-PIXBUF-LOADERS-CACHE-FILE.
* guix/profiles.scm (gdk-pixbuf-loaders-cache-file): Handle both a string or a
package object for GDK-PIXBUF, as these are the two types that can be returned
by MANIFEST-LOOKUP-PACKAGE.

Suggested-by: Ludovic Courtès <ludo@gnu.org>
2021-11-25 20:44:16 -05:00
Maxim Cournoyer
0702bbe1f7
profiles: Fix the gdk-pixbuf-loaders-cache-file hook.
'guix install' would otherwise fail with a wrong type argument whet attempting
to call the hook.

* guix/profiles.scm (gdk-pixbuf-loaders-cache-file) <file-append>: Replace
with...
<string-append>: ... this, as gdk-pixbuf has already been expanded to a string
at this point.
2021-11-25 14:27:46 -05:00
zimoun
905b090582
build: julia-build-system: Add support for parallel tests.
The tests are defined by the script 'test/runtests.jl' from packages and the
parallelism depends on the implementation of this script.  Therefore, 'julia'
is launched using local worker processes accordingly with 'parallel?'.

* guix/build/julia-build-system.scm (check): Set the JULIA_CPU_THREADS
environment variable and invoke julia with the '--procs' option.
* guix/build-system/julia.scm (julia-build)[parallel-tests?]: New argument.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-11-25 01:04:17 -05:00
Ludovic Courtès
19dc16ce4b
style: Add '--dry-run'.
* guix/scripts/style.scm (edit-expression/dry-run): New procedure.
(simplify-package-inputs): Add #:edit-expression parameter.
(%options, show-help): Add '--dry-run'.
(guix-style): Honor '--dry-run'.
2021-11-23 16:55:42 +01:00
Ludovic Courtès
b15e543d30
Merge branch 'master' into core-updates-frozen 2021-11-23 11:29:38 +01:00
Ludovic Courtès
0632ea98b3
guix graph: Show '-M' in '--help' output.
* guix/scripts/graph.scm (show-help): Add -M shorthand.
2021-11-23 10:24:28 +01:00
Josselin Poiret
0831dfab75
system: Add swap flags.
* gnu/system/file-systems.scm (swap-space)[priority, discard?]: Add
them.
* guix/build/syscalls.scm (SWAP_FLAG_PREFER, SWAP_FLAG_PRIO_MASK,
SWAP_FLAG_PRIO_SHIFT, SWAP_FLAG_DISCARD): Add them.
* gnu/build/file-systems.scm (swap-space->flags-bit-mask): Add it.
* gnu/services/base.scm (swap-service-type): Use it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-11-23 10:24:27 +01:00