summaryrefslogtreecommitdiff
path: root/guix/scripts
AgeCommit message (Collapse)Author
2023-03-21scripts: refresh: Add -T option.jgart
* doc/guix.texi (Invoking guix refresh): Document the -T option. * guix/scripts/refresh.scm (%options): Add the -T flag. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-03-17pack: "fakechroot" engine passes the recursive RUNPATH to ld.so.Ludovic Courtès
This is a followup to 58abd5873985e0cd9a2926867bf697c5e7bc01f9, which did not fully address <https://issues.guix.gnu.org/43491>. * guix/scripts/pack.scm (wrapped-package)[build](runpath): Rewrite in terms of 'file-needed/recursive'.
2023-03-13environment: Clear 'TERM' when checking environment.Winter
* guix/scripts/environment.scm (child-shell-environment): Set 'TERM' to the empty string. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-03-13guix: Strip #:use-module lists.Ludovic Courtès
This was obtained by setting up this environment: guix shell -D guix --with-input=guile@3.0.9=guile-next \ --with-commit=guile-next=e2ed33ef0445c867fe56c247054aa67e834861f2 -- make -j5 then adding 'unused-module' to (@@ (guix build compiler) %warnings), building, and checking all the "unused module" warnings and removing those that were definitely unused.
2023-03-06scripts: environment: Fix ordering issue with CWD and --expose.Josselin Poiret
Fixes <https://issues.guix.gnu.org/46782>. * guix/scripts/environment.scm (launch-environment/container): Move the CWD mapping to the front of the file system mappings. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2023-02-27ui: 'display-hint' quotes extra arguments for Texinfo.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/61201>. Previously, common practice was to splice arbitrary strings (user names, file names, etc.) into Texinfo snippets passed to 'display-hint'. This is unsafe in the general case because at signs and braces need to be escaped to produced valid Texinfo. This commit addresses that. * guix/ui.scm (texinfo-quote): New procedure. (display-hint): When ARGUMENTS is non-empty, pass it to 'texinfo-quote' and call 'format'. (report-unbound-variable-error, check-module-matches-file) (display-collision-resolution-hint, run-guix-command): Remove explicit 'format' call; pass 'format' arguments as extra arguments to 'display-hint'. * gnu/services/monitoring.scm (zabbix-front-end-config): Likewise. * guix/scripts.scm (warn-about-disk-space): Likewise. * guix/scripts/build.scm (%standard-cross-build-options) (%standard-native-build-options): Likewise. * guix/scripts/describe.scm (display-checkout-info): Likewise. * guix/scripts/environment.scm (suggest-command-name): Likewise. * guix/scripts/home.scm (process-command): Likewise. * guix/scripts/home/edit.scm (service-type-not-found): Likewise. * guix/scripts/import.scm (guix-import): Likewise. * guix/scripts/package.scm (display-search-path-hint): Likewise. * guix/scripts/pull.scm (build-and-install): Likewise. * guix/scripts/shell.scm (auto-detect-manifest): Likewise. * guix/scripts/system.scm (check-file-system-availability): Likewise. (guix-system): Likewise. * guix/scripts/system/edit.scm (service-type-not-found): Likewise. * guix/status.scm (print-build-event): Likewise.
2023-02-27scripts: repl: Extend REPL %load-path with all channels.Simon Tournier
Fixes <https://bugs.gnu.org/61343>. Reported by 宋文武 <iyzsong@envs.net>. * guix/scripts/repl.scm (define-command): Before starting the REPL, call 'current-profile' to populate (%package-module-path). Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-02-27pack: Make sure tests can run without a world rebuild.Ludovic Courtès
Commit 68380db4c40a2ee1156349a87254fd7b1f1a52d5 moved from 'gexp->derivation', which as a side effect, would lead tests to require a "world rebuild"--specifically, they'd have to build (default-guile). This was mitigated by 68775338a510f84e63657ab09242d79e726fa457, but that change introduced another regression. * guix/scripts/pack.scm (populate-profile-root): Define 'bootstrap?'. Pass #:guile to 'computed-file', with a value depending on 'bootstrap?'. * tests/pack.scm ("self-contained-tarball + localstatedir") ("docker-image + localstatedir", "squashfs-image + localstatedir") ("deb archive with symlinks and control files") ("rpm archive can be installed/uninstalled"): Use a <profile> record instead of a derivation.
2023-02-24offload: Increase initial SSH connection timeout.Maxim Cournoyer
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>
2023-02-24scripts: home: Move ensure-profile-directory to a better place.Andrew Tropin
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>
2023-02-23pack: Add UTF-8 locales to RPM pack builder.Maxim Cournoyer
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.
2023-02-19pack: Add RPM format.Maxim Cournoyer
* 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.
2023-02-19pack: Extract populate-profile-root from self-contained-tarball/builder.Maxim Cournoyer
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.
2023-02-19pack: Use let-keywords instead of keyword-ref.Maxim Cournoyer
* guix/scripts/pack.scm: (debian-archive): Bind extra-options keyword arguments via let-keywords.
2023-01-30container: Correctly report exit status.Ludovic Courtès
* 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-16scripts: repl: Add -i, --interactive flag.Antero Mejr
* 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-16scripts: repl: Add --list-types flag.Antero Mejr
* 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-16guix graph: '--path' defaults to "out" in the case of multiple outputs.Ludovic Courtès
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-16guix graph: 'guix graph --path' correctly handles multiple outputs.Ludovic Courtès
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-15environment: Fix '--emulate-fhs' option overriding $PATH.John Kehayias
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-09substitute: Parse '_NIX_OPTIONS' once.Ludovic Courtès
* guix/scripts/substitute.scm (find-daemon-option): Arrange to call 'daemon-options' only once.
2023-01-07scripts: publish: Add a custom baking header.Mathieu Othacehe
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-05environment: Avoid false positive on 'PS1' check.Ludovic Courtès
* guix/scripts/environment.scm (validate-child-shell-environment): Do not warn when 'PS1' refers to 'GUIX_ENVIRONMENT'.
2023-01-05environment: Simplify 'PS1' suggestion on '--check'.Ludovic Courtès
* guix/scripts/environment.scm (validate-child-shell-environment): In 'PS1' suggestion, remove 'export' and avoid 'if'.
2023-01-05home: '--version' really says "guix home".Ludovic Courtès
* guix/scripts/home.scm (%options): Fix argument to 'show-version-and-exit'.
2023-01-03refresh: Always return an <update-spec> for each command-line option.Ludovic Courtès
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.
2023-01-03refresh: Honor user-provided target version and report downgrades.Ludovic Courtès
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.
2022-12-31import/cran: Allow custom license prefix.Lars-Dominik Braun
* 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.
2022-12-26refresh: Allow updating to a specific version.Hartmut Goebel
* 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.
2022-12-26shell: Make --help show --system and --list-systems.Yarl Baudig
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>
2022-12-21guix system: Skip initrd modules check when using --target.Maxim Cournoyer
* guix/scripts/system.scm (perform-action): Do not call CHECK-INITRD-MODULES when the %current-target-system parameter is set.
2022-12-09environment: '-C' doesn't throw when the NSS is dysfunctional.Ludovic Courtès
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'.
2022-12-05substitute: Fix typo in 'open-connection-for-uri/cached' docstring.Ludovic Courtès
* guix/scripts/substitute.scm (open-connection-for-uri/cached): Fix docstring.
2022-11-23offload: Increase default 'overload-threshold' value.Ludovic Courtès
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.
2022-11-22reconfigure: Use SRFI-71 instead of SRFI-11.Ludovic Courtès
* guix/scripts/system/reconfigure.scm (upgrade-shepherd-services) (channel-relations): Use SRFI-71.
2022-11-22offload: Gracefully handle 'guix repl' protocol errors.Ludovic Courtès
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*'.
2022-11-20style: '-f' reads input files as UTF-8 by default.Ludovic Courtès
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'.
2022-11-20scripts: Use translations for guix.pot for service descriptions.pelzflorian (Florian Pelz)
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.
2022-11-19scripts: describe: Add branch information to recutils output.jgart
* guix/scripts/describe.scm (channel->recutils): Add branch information. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-11-19scripts: describe: Add branch information to json output.jgart
* guix/scripts/describe.scm (channel->json): Add branch information. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-11-19pack: Remove use of GOOPS in 'deb' backend.Ludovic Courtès
* guix/scripts/pack.scm (debian-archive)[build]: Remove use of (oop goops). Introduce 'keyword-ref' and use it instead of 'get-keyword'.
2022-11-15shell: Detect --symlink spec problems early.Maxim Cournoyer
* 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.
2022-11-15guix: shell: Add '--symlink' option.Maxim Cournoyer
* 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.
2022-11-06guix gc: Add '--vacuum-database'.Efraim Flashner
* 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.
2022-11-06shell: Fix '--emulate-fhs' sometimes not including 'glibc-for-fhs'.John Kehayias
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>
2022-10-22Remove now unnecessary uses of (guix grafts).Ludovic Courtès
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).
2022-10-20environment: Update docstring of 'launch-environment'.Ludovic Courtès
This is a followup to 78d55b703d155d36520e1c93dc08a6502c56bd55. Reported by Maxim Cournoyer. * guix/scripts/environment.scm (launch-environment): Update docstring.
2022-10-17guix: Fix typos.Julien Lepiller
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.
2022-10-13shell: Handle '--emulate-fhs' in 'guix shell', not in 'guix environment'.Ludovic Courtès
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'.
2022-10-13environment: Add '--emulate-fhs'.John Kehayias
* 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>