Commit Graph

6967 Commits

Author SHA1 Message Date
Ricardo Wurmus
8525c26499
import/cran: Remove directory-needs-zlib? in favor of needed-libraries-in-directory.
* guix/import/cran.scm (directory-needs-zlib?): Remove procedure.
(source-dir->dependencies): Use needed-libraries-in-directory instead of
directory-needs-zlib?.
2023-02-18 19:56:30 +01:00
Ricardo Wurmus
049cff91ac
import/cran: Add generic way to detect needed libraries.
* guix/import/cran.scm (needed-libraries-in-directory): New procedure.
(libraries-pattern, packages-for-matches): New variables.
2023-02-18 19:56:30 +01:00
Ricardo Wurmus
271c0bfcf2
import/cran: Process all vignette builders.
* guix/import/cran.scm (needs-knitr?): Remove procedure.
(vignette-builders): New procedure.
(description->package): Use vignette-builders instead of needs-knitr?.
2023-02-18 19:56:30 +01:00
Ricardo Wurmus
c0507e9f1e
import/cran: Add name mapping for libjpeg.
* guix/import/cran.scm (transform-sysname): Add mapping from libjpeg to
libjpeg-turbo.
2023-02-18 19:56:29 +01:00
Ricardo Wurmus
6ce68a7a83
import/cran: Add directory-needs-esbuild?.
* guix/import/cran.scm (directory-needs-esbuild?): New procedure.
(source-dir->dependencies): Use it.
2023-02-18 19:56:29 +01:00
Tobias Geerinckx-Rice
df5a358f67
licenses: Update NPSL (nmap licence).
The previous URL does not resolve.  The new URL contains an updated
licence text (version 0.95 at time of this commit) that is strictly less
worse than previous versions, and applies retroactively to older nmaps:

  “Versions of Nmap released under previous versions of the NPSL may
   also be used under the NPSL 0.95 terms.”
     -- <https://nmap.org/changelog>

* guix/licenses.scm (nmap): Update.
2023-02-12 01:00:00 +01:00
Pierre Langlois
dbd4d2d070
build-system: Add tree-sitter-build-system.
* guix/build-system/tree-sitter.scm: New module.
* guix/build/tree-sitter-build-system.scm: Likewise.
* Makefile.am (MODULES): Add them.
* doc/guix.texi: Document it.

Signed-off-by: Andrew Tropin <andrew@trop.in>
2023-02-12 11:32:20 +04:00
Ludovic Courtès
a68229b9a0
syscalls: 'with-file-lock' removes lock file upon exit.
Fixes <https://issues.guix.gnu.org/57501>.
Reported by Ricardo Wurmus <rekado@elephly.net>.

* guix/build/syscalls.scm (call-with-file-lock)
(call-with-file-lock/no-wait): Add call to 'delete-file' in unwind
handler.
2023-02-12 01:48:53 +01:00
Christopher Baines
7d0ebe040d
download: Add bordeaux.guix.gnu.org as a content addressed mirror.
bordeaux.guix.gnu.org now provides access to some files by hash. This is done
through the nar-herder finding a nar produced by a fixed output derivation for
the requested content, and then providing the content stored inside that nar.

I've put this new entry at the start of the list, as I think it's more likely
to have content than the others. Because bordeaux.guix.gnu.org stores nars
indefinitely, my suspicion is that it's going to be able to fulfil more
requests than ci.guix.gnu.org, which relies on the file requested being in the
store (so the now frequent garbage collection is going to limit the files
available).

* guix/download.scm (%content-addressed-mirrors): Add bordeaux.guix.gnu.org.

Signed-off-by: Christopher Baines <mail@cbaines.net>
2023-02-11 20:34:22 +00:00
Ludovic Courtès
3ab8559436
status: Print a hint when a 'package-cache' hook fails to build.
* guix/channels.scm (package-cache-file): Add 'channels' to the #:properties
list.
* guix/status.scm (print-build-event): Upon failure, display a hint when
the derivation is a 'package-cache' hook.
2023-02-11 00:09:40 +01:00
Philip McGrath
a89aa4523b
utils: Add target-little-endian?.
* guix/utils.scm (target-little-endian?): New function.
* guix/build-system/meson.scm (make-machine-alist): Use it.
* gnu/packages/chez.scm (nix-system->pbarch-machine-type): Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-02-11 00:09:40 +01:00
Ludovic Courtès
25947bbc32
build-system: Always pass #:graft? #f to 'gexp->derivation'.
Fixes <https://issues.guix.gnu.org/60947>.

Fixes a bug whereby packages referred via 'ungexp' in package arguments
would be "double-grafted": 'gexp->derivation' would first replace those
references by references to the grafted package, only to repeat the
grafting process on the result.

Build systems such as 'gnu', 'cmake', and 'pyproject' were already doing
this.  Only the rest of them is affected.

* guix/build-system/cargo.scm (cargo-build): Pass #:graft? #f to
'gexp->derivation'.
* guix/build-system/copy.scm (copy-build): Likewise.
* guix/build-system/dune.scm (dune-build): Likewise.
* guix/build-system/font.scm (font-build): Likewise.
* guix/build-system/guile.scm (guile-build): Likewise.
(guile-cross-build): Likewise.
* guix/build-system/ocaml.scm (ocaml-build): Likewise.
* guix/build-system/ruby.scm (ruby-build): Likewise.
* guix/build-system/scons.scm (scons-build): Likewise.
* guix/build-system/texlive.scm (texlive-build): Likewise.
* guix/build-system/waf.scm (waf-build): Likewise.
2023-02-03 16:26:20 +01:00
Ludovic Courtès
52eb3db19c
container: Correctly report exit status.
* gnu/build/linux-container.scm (container-excursion): Return the raw
status value.
* tests/containers.scm ("container-excursion, same namespaces"): Add
'status:exit-val' call.
* guix/scripts/container/exec.scm (guix-container-exec): Correctly
handle the different cases.
2023-01-30 22:24:27 +01:00
Jonathan Brielmaier
3e8dd0df8c
build-system: copy: Add substitutable keyword.
* guix/build-system/copy.scm (copy-build): Add substitutable keyword.
2023-01-29 20:31:29 +01:00
Tobias Geerinckx-Rice
be97c7ed11
download: Remove dead SourceForge mirrors.
* guix/download.scm (%mirrors): Remove dl.sourceforge.net subdomains
that no longer resolve.
2023-01-22 01:01:01 +01:00
Ludovic Courtès
fed3953d70
inferior: Use 'spawn' on Guile 3.0.9+.
* guix/inferior.scm (open-bidirectional-pipe): When 'spawn' is defined,
use it instead of 'primitive-fork'.
2023-01-26 11:11:18 +01:00
Ludovic Courtès
852908d24d
ui: Add "error-reporting wrapper" for 'mkdir'.
* guix/ui.scm <top level>: Change 'mkdir' to use an error-reporting
wrapper.
2023-01-25 22:53:20 +01:00
Ludovic Courtès
e6c01420db
channels: 'channel->code' emits 'channel' field only when necessary.
* guix/channels.scm (channel->code): Emit 'commit' field only when it is
true.
2023-01-23 23:23:07 +01:00
Ludovic Courtès
a8792bc796
import: opam: Do not crash when description is missing.
Previous 'guix import opam coccinelle' would crash due to the lack of a
description.

* guix/import/opam.scm (opam->guix-package): Call 'beautify-description'
only when "description" metadata is available.
2023-01-23 23:23:07 +01:00
Maxim Cournoyer
10e51d6dde
platforms: Raise an exception when no suitable platform is found.
This was motivated by #60786, which produced a cryptic, hard to understand
backtrace.

Given the following reproducer:
    (use-modules (guix packages)
                 (gnu packages cross-base))

    (define linux-libre-headers-cross-mips64el-linux-gnuabi64
      (cross-kernel-headers "mips64el-linux-gnuabi64"))

    (package-arguments linux-libre-headers-cross-mips64el-linux-gnuabi64)

Before this change:
    ice-9/boot-9.scm:1685:16: In procedure raise-exception:
    In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f

After this change:
    ice-9/boot-9.scm:1685:16: In procedure raise-exception:
    ERROR:
      1. &platform-not-found-error: "mips64el-linux-gnuabi64"

* guix/platform.scm (&platform-not-found-error): New condition.
(platform-not-found-error?): New predicate.
(false-if-platform-not-found): New syntax.
(lookup-platform-by-system): Raise an exception when no platform is found.
Update documentation.
(lookup-platform-by-target): Likewise.
(lookup-platform-by-target-or-system): Likewise, and guard lookup calls with
false-if-platform-not-found.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Handle
lookup-platform-by-system call to preserve existing behavior.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-01-18 20:53:15 -05:00
Ludovic Courtès
c4a8762e52
debug-link: Protect against dangling symlinks.
Fixes <https://issues.guix.gnu.org/60584>.
Reported by Greg Hogan <code@greghogan.com>
and Sébastien Rey-Coyrehourcq <sebastien.rey-coyrehourcq@univ-rouen.fr>.

* guix/build/debug-link.scm (find-elf-files): Wrap 'elf-file?' call in 'catch'.
2023-01-17 16:05:20 +01:00
Mathieu Othacehe
34c7dd7e09
build-system/meson: Add mips64el cross compilation support.
* guix/build-system/meson.scm (make-machine-alist): Add it.
2023-01-17 10:50:58 +01:00
Antero Mejr
93e683a952
scripts: repl: Add -i, --interactive flag.
* guix/scripts/repl.scm (%options): Add -i, --interactive flag.
(guix-repl): Honor -i, --interactive flag.
* doc/guix.texi (Invoking guix repl): Add documentation for -i, --interactive.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-01-16 09:00:03 -05:00
Antero Mejr
abd9569571
scripts: repl: Add --list-types flag.
* guix/scripts/repl.scm (%options): Add --list-types.
* doc/guix.texi (Invoking guix repl): Add documentation for --list-types.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-01-16 08:50:05 -05:00
Ludovic Courtès
20c923c40d
transformations: Let users know when '--with-latest' has no effect.
* guix/transformations.scm (package-with-upstream-version): Print a
message when VERSION is false and SOURCE has the same version as P.
2023-01-16 13:41:27 +01:00
Ludovic Courtès
137b91f03b
transformations: Add '--with-version'.
This is a followup to 8aeccc6240.

* guix/transformations.scm (package-with-upstream-version): New procedure.
(transform-package-latest)[package-with-latest-upstream]: Remove.
Use 'package-with-upstream-version' instead.
(transform-package-version): New procedure.
(%transformations, %transformation-options)
(show-transformation-options-help/detailed): Add '-with-version'.
* tests/transformations.scm ("options->transformation, with-version"):
New test.
* doc/guix.texi (Package Transformation Options): Document '--with-version'.
(Defining Package Variants): Mention it.
2023-01-16 13:41:27 +01:00
Ludovic Courtès
99e255d04b
guix graph: '--path' defaults to "out" in the case of multiple outputs.
Previously, "guix graph -t references --graph guix guile" would fail
with:

  no path from '/gnu/store/…-guix-1.4.0-1.9fe5b49' to '/gnu/store/…-guile-3.0.8-debug'

simply because the "debug" happened to be the first one, getting bound
to NODE2.  With this change it will instead pick the "out" output of
each.

* guix/scripts/graph.scm (guix-graph)[shorter?, length-sorted]: New
procedures.
In the 'path?' case, use the latter to store node lists.
2023-01-16 00:06:56 +01:00
Ludovic Courtès
a4a35e123b
guix graph: 'guix graph --path' correctly handles multiple outputs.
Previously, "guix graph -t references --path guix guile" would fail
with:

  error: '--path' option requires exactly two nodes (given 2)

This is because '_' in the 'match' clause wouldn't match the
placeholder and would instead be interested as a variable name, thereby
meaning NODES is expected to have two lists with the same tail.

* guix/scripts/graph.scm (guix-graph): Rename '_' in 'mlet' to '_g' so
that the literal '_' used in 'match' below matches.
2023-01-16 00:06:55 +01:00
John Kehayias
3bfbfa2946
environment: Fix '--emulate-fhs' option overriding $PATH.
Fixes <https://issues.guix.gnu.org/60566> where even if "--preserve='^PATH$'"
was passed to 'guix shell' it would be replaced by just the FHS directories
when '--emulate-fhs' was also set.

* gnu/scripts/environment.scm (launch-environment): Add the FHS directories to
$PATH rather than overriding $PATH completely.
* tests/guix-environment-container.sh: Test that FHS directories are in $PATH
in the container and that $PATH can be preserved.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-01-15 17:54:14 -05:00
pukkamustard
79bf3b54a6
guix: dune-build-system: Do not use `test-target' argument.
This lets dune run all tests for a given package.

* guix/build/dune-build-system.scm (check): Do not use `test-target' argument.
* gnu/package/ocaml.scm (ocaml-cohttp)[native-inputs]: Add
  ocaml-crowbar.
(ocaml-cudf, opam, ocaml-frontc, ocaml-qcheck, ocaml-qtest)
(ocaml-stringext, ocaml4.07-ppx-tools-versioned, ocaml-result)
(ocaml4.09-result, ocaml5.0-result, ocaml-csv, ocaml-alcotest)
(ocaml4.07-alcotest, ocaml-ssl, ocaml-optint, ocaml-eio)
(ocaml-eio-luv, ocaml-uring, ocaml-eio-linux, ocaml-eio-main)
(ocaml-gen, ocaml-ocp-indent, ocaml-benchmark, ocaml-re)
(ocaml4.07-re, ocaml-ocplib-endian, ocaml-cstruct, ocaml-hex)
(ocaml-ezjsonm, ocaml-uri, ocaml4.07-uri, ocaml-camomile, ocaml-zed)
(ocaml-lambda-term, ocaml-utop, ocaml-ansiterminal, dedukti, ocaml-bindlib)
(ocaml-earley, ocaml-timed, ocaml-yojson, ocaml-gsl, ocaml-ppx-deriving)
(ocaml-ppx-cold, ocaml-ppx-typerep-conv, ocaml-ppx-stable)
(ocaml-ppx-base, ocaml-ppx-disable-unused-warnings, ocaml-ppx-jane)
(ocaml4.07-jane-street-headers, ocaml4.07-bisect-ppx, ocaml-fftw3)
(ocaml-cairo2, lablgtk3, ocaml-lablgtk3-sourceview3, ocaml-bigstringaf)
(ocaml-angstrom, ocaml-uri-sexp, ocaml-cohttp, js-of-ocaml)
(ocaml-monolith, ocaml-crowbar): Remove test-target argument.

Signed-off-by: Julien Lepiller <julien@lepiller.eu>
2023-01-15 15:57:49 +01:00
Ricardo Wurmus
6e75790fc0
import/cran: Fix Bioconductor updater.
* guix/import/cran.scm (latest-bioconductor-release): Use LATEST-VERSION
instead of VERSION, which is always #F.
2023-01-09 22:32:58 +01:00
Ludovic Courtès
6c343d0d0f
read-print: Do not use extended notation when printing '1+', '1-', etc.
* guix/read-print.scm (%special-non-extended-symbols): New variable.
(symbol->display-string): New procedure.
(pretty-print-with-comments): Use it in lieu of 'string->symbol'.
* tests/read-print.scm: Add test.
2023-01-09 17:40:54 +01:00
Ludovic Courtès
5d24e57a61
derivations: 'read-derivation' correctly handles case with empty hash.
Reported by Stephen Paul Weber <singpolyma@singpolyma.net> at
<https://lists.gnu.org/archive/html/guix-devel/2023-01/msg00035.html>.

* guix/derivations.scm (read-derivation)[outputs->alist]: Treat the
empty hash case as non-fixed-output whether or not the hash algorithm is
the empty string, and preserve the hash algorithm in <derivation-output>.
* tests/derivations.scm ("'download' built-in builder, no fixed-output hash")
("fixed-output-derivation?, no hash", "read-derivation with hash = #f"): New tests.
2023-01-09 17:40:53 +01:00
Ludovic Courtès
007e697560
substitute: Parse '_NIX_OPTIONS' once.
* guix/scripts/substitute.scm (find-daemon-option): Arrange to call
'daemon-options' only once.
2023-01-09 17:40:53 +01:00
Ludovic Courtès
04f247be81
refresh: Add CLI tests.
* guix/import/test.scm, tests/guix-refresh.sh: New files.
* Makefile.am (MODULES, SH_TESTS): Add them.
2023-01-08 16:11:45 +01:00
Ludovic Courtès
2e9c0e1ff6
import: stackage: Catch networking errors in predicate.
* guix/import/stackage.scm (stackage-lts-package?): Wrap body in
'false-if-networking-error'.
2023-01-08 16:11:45 +01:00
Ludovic Courtès
472dd29f37
gnu-maintenance: 'gnu' and 'gnu-ftp' predicates catch networking errors.
Previously, in a networking-less environment such as 'guix shell -C -D
guix', 'guix refresh --list-updaters' would crash due to a
'gettaddrinfo-error' exception in these predicates.

* guix/gnu-maintenance.scm (%gnu-updater)[pred]: Wrap in
'false-if-networking-error'.
(%gnu-ftp-updater)[pred]: Likewise.
2023-01-08 16:11:45 +01:00
Ludovic Courtès
f3edf29c67
gnu-maintenance: Factorize 'false-if-networking-failure'.
* guix/import/utils.scm (call-with-networking-exception-handler): New
procedure.
(false-if-networking-error): New macro.
* guix/gnu-maintenance.scm (import-html-updatable-release): Use it
instead of inline code.
2023-01-08 16:11:45 +01:00
Mathieu Othacehe
8b665a4ff3
substitutes: Log the failing queries.
* guix/substitutes.scm (%debug?): New variable.
(handle-narinfo-response): Log the failing queries if the %debug? parameter is
set.
2023-01-07 14:27:17 +01:00
Mathieu Othacehe
62f9f34525
scripts: publish: Add a custom baking header.
Log the not-found responses and their reason (baking or not) to stdout. Also
send the X-Baking custom header so that the client can be informed of the
cause of the failure.

* guix/scripts/publish.scm (not-found): Add a baking? argument to add the
X-Baking HTTP header to the response if baking is in progress.  Also, log the
404 responses to stdout, indicating if it is due to baking or not.
(render-narinfo/cached): Pass the baking? argument.
2023-01-07 14:11:45 +01:00
Ludovic Courtès
b5e3701f1a
environment: Avoid false positive on 'PS1' check.
* guix/scripts/environment.scm (validate-child-shell-environment): Do
not warn when 'PS1' refers to 'GUIX_ENVIRONMENT'.
2023-01-05 15:01:29 +01:00
Ludovic Courtès
632e2f7ce1
environment: Simplify 'PS1' suggestion on '--check'.
* guix/scripts/environment.scm (validate-child-shell-environment): In
'PS1' suggestion, remove 'export' and avoid 'if'.
2023-01-05 15:01:29 +01:00
Ludovic Courtès
2c757e8fb4
home: '--version' really says "guix home".
* guix/scripts/home.scm (%options): Fix argument to 'show-version-and-exit'.
2023-01-05 13:12:24 +01:00
Ludovic Courtès
473692b812
refresh: Always return an <update-spec> for each command-line option.
This fixes a regression introduced in
8aeccc6240 whereby packages specified via
-e, -r, or -m, as well as packages *not* specified on the command line,
would all lead to a wrong-type error.

Reported by Ricardo Wurmus <rekado@elephly.net> at
<https://lists.gnu.org/archive/html/guix-devel/2022-12/msg00311.html>.

* guix/scripts/refresh.scm (<update-spec>): Move above.  Rename
constructor to '%update-spec' and add separate 'update-spec' procedure
with optional #:version parameter.
(options->update-specs): Always return a list of <update-spec> and
update docstring accordingly.  Rename 'args-packages' to 'update-specs'
and ensure it's a list of <update-spec>; handle 'manifest' arguments
here.
2023-01-03 12:25:48 +01:00
Ludovic Courtès
11235dd85a
refresh: Honor user-provided target version and report downgrades.
Previously, 'guix refresh guile=3.0.0' would print:

  3.0.8 is already the latest version of guile

With this change, it prints:

  guile would be downgraded from 3.0.8 to 3.0.0

This is a followup to 8aeccc6240.

* guix/scripts/refresh.scm (check-for-package-update): Take an
<update-spec> instead of a <package>.  Report downgrades as such when
UPDATE-SPEC specifies a target version.
(guix-refresh): Adjust caller.
2023-01-03 12:25:48 +01:00
Ludovic Courtès
a330bfdf5b
upstream: Allow downgrades.
Previously, 'guix refresh -u guile=3.0.0' would do nothing.  With this
change, it actually downgrades 'guile'.

This is a followup to 8aeccc6240.

* guix/upstream.scm (package-update): Ignore 'version>?' check
when #:version is passed.  Warn about downgrades.
2023-01-03 12:25:48 +01:00
Ludovic Courtès
c6ac47afdf
ui: It's 2023 now!
* guix/ui.scm (show-version-and-exit): Change year to 2023.
2023-01-03 12:25:48 +01:00
Lars-Dominik Braun
c329eeb3a8
import/cran: Depend on gfortran if .f files are detected too.
There was an inconsistency between tarball-needs-fortran? and
directory-needs-fortran?.

* guix/import/cran.scm (directory-needs-fortran?): Match .f files too.
2022-12-31 19:41:53 +01:00
Ricardo Wurmus
d4ed8dc3c5
import/cran: Use multiple values instead of a list of lists.
* guix/import/cran.scm (source-dir->dependencies): Return multiple values.
(description->package): Bind two values.
2022-12-31 14:48:46 +01:00
Ricardo Wurmus
4d13926064
import/utils: recursive-import: Pass on lookup-node's version argument.
* guix/import/utils.scm (recursive-import)<lookup-node>: Replace the #:VERSION
keyword from RECURSIVE-IMPORT's arguments with the value of VERSION passed to
LOOKUP-NODE.
2022-12-31 14:48:46 +01:00