aboutsummaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
* cpio: Properly handle Unicode characters in file names.Maxim Cournoyer2023-02-25
| | | | | | | | | | Fixes <https://issues.guix.gnu.org/61722>. * guix/cpio.scm (file->cpio-header): Compute the file name length in bytes rather than in characters. (file->cpio-header*, special-file->cpio-header*): Likewise. (write-cpio-archive): Likewise, and write the file name as UTF-8 bytes, not textually, to avoid encoding it as ISO-8859-1.
* offload: Increase initial SSH connection timeout.Maxim Cournoyer2023-02-24
| | | | | | | | | Fixes <https://issues.guix.gnu.org/61646>. * guix/scripts/offload.scm (open-ssh-session): Increase connection timeout from 10 s to 30 s. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* scripts: home: Move ensure-profile-directory to a better place.Andrew Tropin2023-02-24
| | | | | | | | | | | | The profile directory is usually created by daemon, when user opens a connection. Ideally, we would like to remove ensure-profile-directory call at all, but daemon doesn't handle case with custom $GUIX_STATE_DIRECTORY yet. More information in: <https://issues.guix.gnu.org/61717> * guix/scripts/home.scm (process-action): Move ensure-profile-directory call to the place, where connection to the daemon is already open. Reported-by: wolf <wolf@wolfsden.cz>
* git: Make better use of the better progress bar.Tobias Geerinckx-Rice2023-02-19
| | | | | | | | | Commit 189525412e3d803f3f77e15ec4a62aaa57f65a2d introduced ‘high-resolution’ Unicode progress bars, but these require more granular calls to reach their full potential. * guix/git.scm (show-progress): Derive the number of PROGRESS-BAR updates from its maximum resolution, rather than hard-coding 100.
* git: Factor out INDEXER-PROGRESS-TOTAL-OBJECTS access.Tobias Geerinckx-Rice2023-02-19
| | | | * guix/git.scm (show-progress): Reuse the result of the first call.
* ssh: Factor out progress % calculation.Tobias Geerinckx-Rice2023-02-19
| | | | * guix/ssh.scm (notify-transfer-progress): Trust its % argument.
* pack: Add UTF-8 locales to RPM pack builder.Maxim Cournoyer2023-02-23
| | | | | | | | | | | | | It's necessary as 'generate-header' call ends up calling 'find-files', which could fail to read file names containing non-ascii characters, as spotted in the wild: building /gnu/store/...-jami-rpm-pack.rpm.drv... find-files: ./gnu/store/...-nss-certs-3.81/etc/ssl/certs/NetLock_Arany_=Class_Gold=_F??tan??s??tv??ny.pem: No such file or directory * guix/scripts/pack.scm (rpm-archive): Expand set-utf8-locale helper in the builder gexp.
* pack: Register extra /usr/share sub-directories as FHS.Maxim Cournoyer2023-02-22
| | | | | * guix/rpm.scm (%fhs-directories): Add extra FHS directories. They were found to conflict while testing a 'guix pack' built Jami RPM.
* pack: Add RPM format.Maxim Cournoyer2023-02-19
| | | | | | | | | | | | * guix/rpm.scm: New file. * guix/scripts/pack.scm (rpm-archive): New procedure. (%formats): Register it. (show-formats): Add it. (guix-pack): Register supported extra-options for the rpm format. * tests/pack.scm (rpm-for-tests): New variable. ("rpm archive can be installed/uninstalled"): New test. * tests/rpm.scm: New test. * doc/guix.texi (Invoking guix pack): Document it.
* pack: Extract populate-profile-root from self-contained-tarball/builder.Maxim Cournoyer2023-02-19
| | | | | | | | | | | | | | | | | | This allows more code to be reused between the various archive writers. * guix/scripts/pack.scm (set-utf8-locale): New top-level procedure, extracted from... (populate-profile-root): New procedure, extracted from... (self-contained-tarball/builder): ... here. Add #:target argument. Call populate-profile-root. [LOCALSTATEDIR?]: Set db.sqlite file permissions. (self-contained-tarball): Call self-contained-tarball/builder with the TARGET argument, and set #:local-build? to #f for the gexp-derivation call. Remove now extraneous #:target and #:references-graphs arguments from the gexp->derivation call. (debian-archive): Call self-contained-tarball/builder with the #:target argument. Fix indentation. Remove now extraneous #:target and #:references-graphs arguments from the gexp->derivation call.
* gexp: computed-file: Honor %guile-for-build.Maxim Cournoyer2023-02-19
| | | | * guix/gexp.scm (computed-file-compiler): Honor %guile-for-build.
* pack: Use let-keywords instead of keyword-ref.Maxim Cournoyer2023-02-19
| | | | | * guix/scripts/pack.scm: (debian-archive): Bind extra-options keyword arguments via let-keywords.
* guix: Show better progress bars.Julien Lepiller2023-02-19
| | | | | | | | | | | | | Style provides information on the characters to use before and after the progress bar content (`[` and `]` for the ascii style), as well as the character for filled step (`#` for ascii style). When supported, it provides intermediate steps. This is used for unicode style, to show better precision. * guix/progress.scm (<progress-bar-style>): New record type. (ascii-bar-style, unicode-bar-style): New variables. (progress-bar): Draw progress depending on style. When supported, use unicode style. Fall back to ascii style.
* import/cran: Remove directory-needs-zlib? in favor of ↵Ricardo Wurmus2023-02-18
| | | | | | | | 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?.
* import/cran: Add generic way to detect needed libraries.Ricardo Wurmus2023-02-18
| | | | | * guix/import/cran.scm (needed-libraries-in-directory): New procedure. (libraries-pattern, packages-for-matches): New variables.
* import/cran: Process all vignette builders.Ricardo Wurmus2023-02-18
| | | | | | * guix/import/cran.scm (needs-knitr?): Remove procedure. (vignette-builders): New procedure. (description->package): Use vignette-builders instead of needs-knitr?.
* import/cran: Add name mapping for libjpeg.Ricardo Wurmus2023-02-18
| | | | | * guix/import/cran.scm (transform-sysname): Add mapping from libjpeg to libjpeg-turbo.
* import/cran: Add directory-needs-esbuild?.Ricardo Wurmus2023-02-18
| | | | | * guix/import/cran.scm (directory-needs-esbuild?): New procedure. (source-dir->dependencies): Use it.
* licenses: Update NPSL (nmap licence).Tobias Geerinckx-Rice2023-02-12
| | | | | | | | | | | | 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.
* build-system: Add tree-sitter-build-system.Pierre Langlois2023-02-12
| | | | | | | | | * 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>
* syscalls: 'with-file-lock' removes lock file upon exit.Ludovic Courtès2023-02-12
| | | | | | | | | 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.
* download: Add bordeaux.guix.gnu.org as a content addressed mirror.Christopher Baines2023-02-11
| | | | | | | | | | | | | | | | | 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>
* status: Print a hint when a 'package-cache' hook fails to build.Ludovic Courtès2023-02-11
| | | | | | | * 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.
* utils: Add target-little-endian?.Philip McGrath2023-02-11
| | | | | | | | * 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>
* build-system: Always pass #:graft? #f to 'gexp->derivation'.Ludovic Courtès2023-02-03
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* container: Correctly report exit status.Ludovic Courtès2023-01-30
| | | | | | | | | * 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.
* build-system: copy: Add substitutable keyword.Jonathan Brielmaier2023-01-29
| | | | * guix/build-system/copy.scm (copy-build): Add substitutable keyword.
* download: Remove dead SourceForge mirrors.Tobias Geerinckx-Rice2023-01-22
| | | | | * guix/download.scm (%mirrors): Remove dl.sourceforge.net subdomains that no longer resolve.
* inferior: Use 'spawn' on Guile 3.0.9+.Ludovic Courtès2023-01-26
| | | | | * guix/inferior.scm (open-bidirectional-pipe): When 'spawn' is defined, use it instead of 'primitive-fork'.
* ui: Add "error-reporting wrapper" for 'mkdir'.Ludovic Courtès2023-01-25
| | | | | * guix/ui.scm <top level>: Change 'mkdir' to use an error-reporting wrapper.
* channels: 'channel->code' emits 'channel' field only when necessary.Ludovic Courtès2023-01-23
| | | | | * guix/channels.scm (channel->code): Emit 'commit' field only when it is true.
* import: opam: Do not crash when description is missing.Ludovic Courtès2023-01-23
| | | | | | | | 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.
* platforms: Raise an exception when no suitable platform is found.Maxim Cournoyer2023-01-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* debug-link: Protect against dangling symlinks.Ludovic Courtès2023-01-17
| | | | | | | | 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'.
* build-system/meson: Add mips64el cross compilation support.Mathieu Othacehe2023-01-17
| | | | * guix/build-system/meson.scm (make-machine-alist): Add it.
* scripts: repl: Add -i, --interactive flag.Antero Mejr2023-01-16
| | | | | | | | * 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>
* scripts: repl: Add --list-types flag.Antero Mejr2023-01-16
| | | | | | | * 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>
* transformations: Let users know when '--with-latest' has no effect.Ludovic Courtès2023-01-16
| | | | | * guix/transformations.scm (package-with-upstream-version): Print a message when VERSION is false and SOURCE has the same version as P.
* transformations: Add '--with-version'.Ludovic Courtès2023-01-16
| | | | | | | | | | | | | | | This is a followup to 8aeccc6240ec45f0bc7bed655e0c8149ae4253eb. * 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.
* guix graph: '--path' defaults to "out" in the case of multiple outputs.Ludovic Courtès2023-01-16
| | | | | | | | | | | | | | | 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.
* guix graph: 'guix graph --path' correctly handles multiple outputs.Ludovic Courtès2023-01-16
| | | | | | | | | | | | | | 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.
* environment: Fix '--emulate-fhs' option overriding $PATH.John Kehayias2023-01-15
| | | | | | | | | | | | | 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>
* guix: dune-build-system: Do not use `test-target' argument.pukkamustard2023-01-15
| | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* import/cran: Fix Bioconductor updater.Ricardo Wurmus2023-01-09
| | | | | * guix/import/cran.scm (latest-bioconductor-release): Use LATEST-VERSION instead of VERSION, which is always #F.
* read-print: Do not use extended notation when printing '1+', '1-', etc.Ludovic Courtès2023-01-09
| | | | | | | * 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.
* derivations: 'read-derivation' correctly handles case with empty hash.Ludovic Courtès2023-01-09
| | | | | | | | | | | 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.
* substitute: Parse '_NIX_OPTIONS' once.Ludovic Courtès2023-01-09
| | | | | * guix/scripts/substitute.scm (find-daemon-option): Arrange to call 'daemon-options' only once.
* refresh: Add CLI tests.Ludovic Courtès2023-01-08
| | | | | * guix/import/test.scm, tests/guix-refresh.sh: New files. * Makefile.am (MODULES, SH_TESTS): Add them.
* import: stackage: Catch networking errors in predicate.Ludovic Courtès2023-01-08
| | | | | * guix/import/stackage.scm (stackage-lts-package?): Wrap body in 'false-if-networking-error'.
* gnu-maintenance: 'gnu' and 'gnu-ftp' predicates catch networking errors.Ludovic Courtès2023-01-08
| | | | | | | | | | 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.