summaryrefslogtreecommitdiff
path: root/guix/scripts
AgeCommit message (Expand)Author
2023-01-30container: 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. Ludovic Courtès
2023-01-16scripts: 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> Antero Mejr
2023-01-16scripts: 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> Antero Mejr
2023-01-16guix 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. Ludovic Courtès
2023-01-16guix 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. Ludovic Courtès
2023-01-15environment: 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> John Kehayias
2023-01-09substitute: Parse '_NIX_OPTIONS' once....* guix/scripts/substitute.scm (find-daemon-option): Arrange to call 'daemon-options' only once. Ludovic Courtès
2023-01-07scripts: 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. Mathieu Othacehe
2023-01-05environment: Avoid false positive on 'PS1' check....* guix/scripts/environment.scm (validate-child-shell-environment): Do not warn when 'PS1' refers to 'GUIX_ENVIRONMENT'. Ludovic Courtès
2023-01-05environment: Simplify 'PS1' suggestion on '--check'....* guix/scripts/environment.scm (validate-child-shell-environment): In 'PS1' suggestion, remove 'export' and avoid 'if'. Ludovic Courtès
2023-01-05home: '--version' really says "guix home"....* guix/scripts/home.scm (%options): Fix argument to 'show-version-and-exit'. Ludovic Courtès
2023-01-03refresh: Always return an <update-spec> for each command-line option....This fixes a regression introduced in 8aeccc6240ec45f0bc7bed655e0c8149ae4253eb 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. Ludovic Courtès
2023-01-03refresh: 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 8aeccc6240ec45f0bc7bed655e0c8149ae4253eb. * 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. Ludovic Courtès
2022-12-31import/cran: Allow custom license prefix....* guix/import/cran.scm (string-licenses): Add license-prefix argument. (string->license): Ditto. (description->package): Ditto. (cran->guix-package): Ditto. (cran-recursive-import): Ditto. * guix/scripts/import/cran.scm (%options): Add new option -p/--license-prefix. (show-help): Document it. (parse-options): Pass it to importer. * doc/guix.texi (Invoking guix import): Document it. Lars-Dominik Braun
2022-12-26refresh: Allow updating to a specific version....* guix/scripts/refresh.scm (options->packages)[args-packages]: Handle version specification in package name arguments. (update-package): Add #:version argument and pass it on to called functions. (guix-refresh): When updating, pass the specified version (if any) to update-package. [package-list-without-versions, package-list-with-versions]: New functions. Hartmut Goebel
2022-12-26shell: Make --help show --system and --list-systems....These options are callable and documented in the manual but not shown by --help. * guix/scripts/shell.scm: Make --help show --system and --list-systems. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Yarl Baudig
2022-12-21guix system: Skip initrd modules check when using --target....* guix/scripts/system.scm (perform-action): Do not call CHECK-INITRD-MODULES when the %current-target-system parameter is set. Maxim Cournoyer
2022-12-09environment: '-C' doesn't throw when the NSS is dysfunctional....Previously, if the name service switch was dysfunctional, as can happen on foreign distros lacking nscd, "guix shell -C" would crash with a backtrace on the uncaught 'getpwuid' exception. To address that, catch the exception and deal with it gracefully. Reported by remsd1 on #guix. * guix/scripts/environment.scm (launch-environment/container): Wrap 'getpwuid' call in 'false-if-exception'. Ludovic Courtès
2022-12-05substitute: Fix typo in 'open-connection-for-uri/cached' docstring....* guix/scripts/substitute.scm (open-connection-for-uri/cached): Fix docstring. Ludovic Courtès
2022-11-23offload: Increase default 'overload-threshold' value....When offloading to a single machine, the previous default value would lead 'guix offload' to wait possibly for several minutes between subsequent builds until normalized load would finally go below 0.6. Increasing it mitigates that. * guix/scripts/offload.scm (<build-machine>)[overload-threshold]: Bump to 0.8. * doc/guix.texi (Daemon Offload Setup): Likewise. Ludovic Courtès
2022-11-22reconfigure: Use SRFI-71 instead of SRFI-11....* guix/scripts/system/reconfigure.scm (upgrade-shepherd-services) (channel-relations): Use SRFI-71. Ludovic Courtès
2022-11-22offload: Gracefully handle 'guix repl' protocol errors....Fixes <https://issues.guix.gnu.org/59447>. Reported by Mathieu Othacehe <othacehe@gnu.org>. Previously, if a machine had a buggy 'guix repl', 'guix offload' would crash with a backtrace instead of just ignoring the machine. * guix/scripts/offload.scm (remote-inferior*): New procedure. (check-machine-availability)[if-true]: New procedure. Use 'remote-inferior*' and 'if-true'. (check-machine-status): Use 'remote-inferior*'. Ludovic Courtès
2022-11-20style: '-f' reads input files as UTF-8 by default....Reported by mirai on #guix. * guix/scripts/style.scm (format-whole-file): Wrap body in 'with-fluids'. Pass #:guess-encoding to 'call-with-input-file'. Ludovic Courtès
2022-11-20scripts: Use translations for guix.pot for service descriptions....Previously, service descriptions appeared in both guix.pot and packages.pot, but only translations of packages.pot were used. Now, translations are only done with guix.pot. This is better, because translators are more likely to translate guix.pot, and is also easier, because files in gnu/{home/,}services need to be in po/guix/POTFILES.in anyway and po/guix/Makevars already acts on the 'description' keyword because of lint checkers. * guix/scripts/home.scm (service-type-description-string): Use translations from guix.pot. * guix/scripts/system/search.scm (service-type-description-string) (service-type->recutils): Likewise. * po/packages/POTFILES.in: Move files in gnu/services to ... * po/guix/POTFILES.in: ... here. pelzflorian (Florian Pelz)
2022-11-19scripts: describe: Add branch information to recutils output....* guix/scripts/describe.scm (channel->recutils): Add branch information. Signed-off-by: Ludovic Courtès <ludo@gnu.org> jgart
2022-11-19scripts: describe: Add branch information to json output....* guix/scripts/describe.scm (channel->json): Add branch information. Signed-off-by: Ludovic Courtès <ludo@gnu.org> jgart
2022-11-19pack: Remove use of GOOPS in 'deb' backend....* guix/scripts/pack.scm (debian-archive)[build]: Remove use of (oop goops). Introduce 'keyword-ref' and use it instead of 'get-keyword'. Ludovic Courtès
2022-11-15shell: Detect --symlink spec problems early....* guix/scripts/pack.scm (symlink-spec-option-parser): Remove extraneous char-set. Raise an exception when the target is an absolute file name. (guix-pack): Move with-error-handler earlier. * guix/scripts/shell.scm (guix-shell): Likewise. * guix/scripts/environment.scm (guix-environment): Wrap the whole guix-environment* call with the with-error-handling handler. * tests/guix-environment-container.sh: Add tests. * tests/guix-pack.sh: Adjust symlink spec. Maxim Cournoyer
2022-11-15guix: shell: Add '--symlink' option....* guix/scripts/pack.scm (%options): Extract symlink parsing logic to... (symlink-spec-option-parser): ... here. (self-contained-tarball/builder): Add a comment mentioning why a relative file name is used for the link target. * guix/scripts/environment.scm (show-environment-options-help): Document new --symlink option. (%default-options): Add default value for symlinks. (%options): Register new symlink option. (launch-environment/container): Add #:symlinks argument and extend doc, and create symlinks using evaluate-populate-directive. (guix-environment*): Pass symlinks arguments to launch-environment/container. * doc/guix.texi (Invoking guix shell): Document it. * tests/guix-shell.sh: Add a --symlink (negative) test. * tests/guix-environment-container.sh: Add tests. Maxim Cournoyer
2022-11-06guix gc: Add '--vacuum-database'....* guix/scripts/gc.scm (show-help, %options): Add '--vacuum-database'. * guix/store/database.scm (vacuum-database): New procedure. * doc/guix.texi (Invoking guix gc): Document the option. Efraim Flashner
2022-11-06shell: Fix '--emulate-fhs' sometimes not including 'glibc-for-fhs'....Fixes <https://issues.guix.gnu.org/58861>. Previously the order of the options giving to 'guix shell' could mean that the 'glibc-for-fhs' package included with the '--emulate-fhs' option would not appear in the container. For example, using the development option with a package using the 'gnu-build-system', e.g. 'guix shell -CFD hello', would include the regular 'glibc' package. The option ordered mattered: 'guix shell -CD hello -F' would include the expected 'glibc-for-fhs'. We fix this by having 'glibc-for-fhs' added to the package list just before calling 'options-with-caching' so the option order given by the user does not matter. * guix/scripts/shell.scm (%options): Move the '--emulate-fhs' (expression . ...) component from here... (parse-args): ... to here. * tests/guix-environment-container.sh: Add a test to check that 'glibc-for-fhs' is in the container even when 'glibc' is included in the 'guix shell' package list. Signed-off-by: Ludovic Courtès <ludo@gnu.org> John Kehayias
2022-10-22Remove now unnecessary uses of (guix grafts)....These modules would use (guix grafts) just to access '%graft?' and related bindings, which are now in (guix store). * gnu/ci.scm, guix/gexp.scm, guix/lint.scm, guix/scripts.scm, guix/scripts/archive.scm, guix/scripts/build.scm, guix/scripts/challenge.scm, guix/scripts/deploy.scm, guix/scripts/environment.scm, guix/scripts/home.scm, guix/scripts/pack.scm, guix/scripts/package.scm, guix/scripts/pull.scm, guix/scripts/size.scm, guix/scripts/system.scm, guix/scripts/weather.scm, tests/builders.scm, tests/channels.scm, tests/cpan.scm, tests/derivations.scm, tests/gexp.scm, tests/graph.scm, tests/guix-daemon.sh, tests/monads.scm, tests/pack.scm, tests/packages.scm, tests/profiles.scm, tests/system.scm: Remove #:use-module (guix grafts). Ludovic Courtès
2022-10-20environment: Update docstring of 'launch-environment'....This is a followup to 78d55b703d155d36520e1c93dc08a6502c56bd55. Reported by Maxim Cournoyer. * guix/scripts/environment.scm (launch-environment): Update docstring. Ludovic Courtès
2022-10-17guix: Fix typos....These typos were found and reported through weblate. * gnu/packages/audio.scm (wildmidi)[description]: Fix typo. * gnu/packages/games.scm (cgoban)[description]: Fix typo. * gnu/services/version-control.scm (gitolite-service-type)[description]: Fix typo. * gnu/installer/newt/substitutes.scm (run-substitutes-page): Remove full stop at end of title. * gnu/machine/ssh.scm (machine-ssh-configuration-system): Move punctuation outside of quotes. * guix/scripts/home.scm (process-action): Remove trailing space before newline. * guix/scripts/system.scm (show-help): Fix typo. * guix/scripts/environment.scm (with-store/maybe): Fix typo. Julien Lepiller
2022-10-13shell: Handle '--emulate-fhs' in 'guix shell', not in 'guix environment'....Previously, using 'guix shell -CF coreutils' twice (such that the profile is cache) would result in: guix shell: error: '--profile' cannot be used with package options This patch fixes it by moving argument handling to (guix scripts shell), before 'options-with-caching' is called. * guix/scripts/environment.scm (show-environment-options-help) (%options): Remove '--emulate-fhs'. (guix-environment*): Pass OPTS as-is to 'options/resolve-packages'. * guix/scripts/shell.scm (show-help, %options): Add '--emulate-fhs'. Add the (expression . ...) component to RESULT right from the argument handler. * tests/guix-environment-container.sh: Change '--emulate-fhs' tests to use 'guix shell' instead of 'guix environment'. Ludovic Courtès
2022-10-13environment: Add '--emulate-fhs'....* guix/scripts/environment.scm (show-environment-options-help, %options): Add '--emulate-fhs'. (setup-fhs): New procedure. Setup for the Filesystem Hierarchy Standard (FHS) container. Defines and uses FHS-SYMLINKS and LINK-CONTENTS to create FHS expected directories and creates /etc/ld.so.conf. (launch-environment): Add 'emulate-fhs?' key and implement it to set $PATH and generate /etc/ld.so.cache before calling COMMAND. (launch-environment/container): Add 'emulate-fhs?' and 'setup-hook' keys and implement them. Define and use FHS-MAPPINGS, to set up additional bind mounts in the container to follow FHS expectations. (guix-environment*): Add glibc-for-fhs to the container packages when 'emulate-fhs?' key is in OPTS. * doc/guix.texi (Invoking guix shell): Document '--emulate-fhs'. (Invoking guix environment): Document '--emulate-fhs'. * tests/guix-environment-container.sh: Add tests for '--emulate-fhs'. Co-authored-by: Ludovic Courtès <ludo@gnu.org> John Kehayias
2022-10-11Revert "guix system: Remove unused 'read-operating-system' procedure."...This reverts commit d11a432adffe9308eafec6b77cddd3145029109e. The 'read-operating-system' is used in Emacs-Guix. Ludovic Courtès
2022-10-11guix import: Add a blank line after each package definition....Starting from commit 371a83b764c4993d198666e1674454eecbefcdf1, 'guix import crate -r' (or similar) would no longer print a blank line in between definitions. This patch fixes it. Reported by jgart <jgart@dismail.de>. * guix/scripts/import.scm (guix-import): Add second 'newline' call. Ludovic Courtès
2022-10-04deploy: Fix error message....* guix/scripts/deploy.scm (guix-deploy): Fix error message. Andrew Tropin
2022-09-30scripts: build: Format strings before calling display-hint....* guix/scripts/build.scm(%standard-cross-build-options): Format hint string. %standard-cross-build-options: Ditto. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org> Zhu Zihao
2022-09-28substitute: Retry downloading when a nar is unavailable....Fixes <https://issues.guix.gnu.org/57978> Reported by Attila Lendvai <attila@lendvai.name>. Previously, if a narinfo was available but its corresponding nar was missing (for instance because the narinfo was cached and the server became unreachable in the meantime), 'guix substitute --substitute' would try to download the nar from its preferred location and abort when that fails. This change forces one retry with each of the URLs. * guix/scripts/substitute.scm (download-nar): Do not catch 'http-get-error?' exceptions. (system-error?, network-error?, process-substitution/fallback): New procedures. (process-substitution): Call 'process-substitution/fallback' upon 'network-error?'. * tests/substitute.scm ("substitute, first URL has narinfo but lacks nar, second URL unauthorized") ("substitute, first URL has narinfo but nar is 404, both URLs authorized") ("substitute, first URL has narinfo but nar is 404, one URL authorized") ("substitute, narinfo is available but nar is missing"): New tests. Ludovic Courtès
2022-09-28substitute: Split nar download....* guix/scripts/substitute.scm (download-nar): New procedure, with most of the code moved from... (process-substitution): ... here. Call it. Ludovic Courtès
2022-09-24gnu: Add compression module....Move the compression record to a dedicated module so that it can be used outside (guix scripts pack) module. * guix/scripts/pack.scm (<compressor>, %compressors, lookup-compressor): Move it to ... * gnu/compression.scm: ... this new file. * gnu/ci.scm: Adapt it. * local.mk (GNU_SYSTEM_MODULES): Add it. Mathieu Othacehe
2022-09-20home: import: Use (guix read-print) to render the config file....* guix/scripts/home/import.scm (manifest+configuration-files->code): Insert calls to 'comment' and 'vertical-space'. (import-manifest): Use 'pretty-print-with-comments/splice' instead of a loop on 'pretty-print'. * tests/home-import.scm (remove-recursively): New procedure. (eval-test-with-home-environment): Use it. Ludovic Courtès
2022-09-20weather: Actually show the weather....* guix/scripts/weather.scm (report-server-coverage): Show a weather icon. Ludovic Courtès
2022-09-17import: gem: Support importing a specific version of a gem....* guix/import/gem.scm: (rubygems-fetch, gem->guix-package) (gem-recursive-import): Fix to fetch the specified version of the gem. * guix/scripts/import/gem.scm (show-help): Update the help message. (guix-import-gem): Modify so the version number to be passed to subsequent procedures. * tests/gem.scm: Add tests. * doc/guix.texi (Invoking guix import): Document. Signed-off-by: Christopher Baines <mail@cbaines.net> Taiju HIGASHI
2022-08-31pull: Create a version 3 manifest....This makes the profile readable by older Guix instances. This is a followup to c9fbd40785a99e13a59d8e530830ce85220a9871. Fixes <https://issues.guix.gnu.org/57306>. Reported by Arun Isaac <arunisaac@systemreboot.net>. * guix/profiles.scm (%manifest-format-version): Export. * guix/scripts/package.scm (build-and-use-profile): Add #:format-version and pass it to 'profile-derivation'. * guix/scripts/pull.scm (build-and-install): Pass #:format-version 3. Ludovic Courtès
2022-08-31reconfigure: Use 'current-channels' to obtain provenance data....This reinstates a modified version of b08439809f0868a74d0bd0e14d45cb3e5dd46a8c, which contained a thinko. Previously, build-time metadata from (guix config) would be ignored when available--e.g., when running /run/current-system/profile/bin/guix. This is a followup to 316fc2acbb112bfa572ae30f95a93bcd56621234. * guix/scripts/system/reconfigure.scm (check-forward-update): Use 'current-channels' rather than 'current-profile' + 'profile-channels'. Ludovic Courtès
2022-08-30scripts: system: Check the image operating-system....* guix/scripts/system.scm (process-action): Check that the provided image has a defined operating-system. Mathieu Othacehe
2022-08-30guix system: Use standard cross and native build options....This change prevents guix system from erroring out with an ugly backtrace when it's passed an invalid value to the “--system” or “--target” option. It also adds the “--list-systems” and “--list-targets” options. The manual section about guix system doesn't mention the “--target” option, so add it there. * guix/scripts/system (show-help): Call show-cross-build-options-help and show-native-build-options-help. (%options): Remove own implementation of “system” and “target” options and use the ones in %standard-cross-build-options and %standard-native-build-options. * doc/guix.texi (Invoking guix system): Document “--target” option. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org> Thiago Jung Bauermann