diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-06-19 15:50:50 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-07-03 01:41:06 +0200 |
commit | e7ab3d33aec3993737cdbc4396a9c44a54a3ce84 (patch) | |
tree | 3f0d9a7d2fb75b2d3665065b6d22a04aa3d0b3d0 | |
parent | 4745be8514c6f99216c9636e0060f41818401f3e (diff) | |
download | guix-e7ab3d33aec3993737cdbc4396a9c44a54a3ce84.tar guix-e7ab3d33aec3993737cdbc4396a9c44a54a3ce84.tar.gz |
challenge: Do nothing when passed zero arguments.
Previously, 'guix challenge' without arguments would list live store
items that had been locally built. This was deemed confusing,
especially since 'list-live' is an expensive operation.
* guix/scripts/challenge.scm (guix-challenge): Warn and exit with 0 when
FILES is empty.
* doc/guix.texi (Invoking guix challenge): Update accordingly.
-rw-r--r-- | doc/guix.texi | 38 | ||||
-rw-r--r-- | guix/scripts/challenge.scm | 5 |
2 files changed, 25 insertions, 18 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index cf373b6cbd..9d9cb3dc07 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -14941,7 +14941,9 @@ any given store item. The command output looks like this: @smallexample -$ guix challenge --substitute-urls="https://@value{SUBSTITUTE-SERVER-1} https://guix.example.org" +$ guix challenge \ + --substitute-urls="https://@value{SUBSTITUTE-SERVER-1} https://guix.example.org" \ + openssl git pius coreutils grep updating substitutes from 'https://@value{SUBSTITUTE-SERVER-1}'... 100.0% updating substitutes from 'https://guix.example.org'... 100.0% /gnu/store/@dots{}-openssl-1.0.2d contents differ: @@ -14968,18 +14970,20 @@ updating substitutes from 'https://guix.example.org'... 100.0% @dots{} -6,406 store items were analyzed: - - 4,749 (74.1%) were identical - - 525 (8.2%) differed - - 1,132 (17.7%) were inconclusive +5 store items were analyzed: + - 2 (40.0%) were identical + - 3 (60.0%) differed + - 0 (0.0%) were inconclusive @end smallexample @noindent -In this example, @command{guix challenge} first scans the store to -determine the set of locally-built derivations---as opposed to store -items that were downloaded from a substitute server---and then queries -all the substitute servers. It then reports those store items for which -the servers obtained a result different from the local build. +In this example, @command{guix challenge} queries all the substitute +servers for each of the fives packages specified on the command line. +It then reports those store items for which the servers obtained a +result different from the local build (if it exists) and/or different +from one another; here, the @samp{local hash} lines indicate that a +local build result was available for each of these packages and shows +its hash. @cindex non-determinism, in package builds As an example, @code{guix.example.org} always gets a different answer. @@ -15035,19 +15039,21 @@ whether @code{@value{SUBSTITUTE-SERVER-1}} and other substitute servers obtain t same build result as you did with: @example -$ guix challenge @var{package} +guix challenge @var{package} @end example -@noindent -where @var{package} is a package specification such as -@code{guile@@2.0} or @code{glibc:debug}. - The general syntax is: @example -guix challenge @var{options} [@var{packages}@dots{}] +guix challenge @var{options} @var{argument}@dots{} @end example +@noindent +where @var{argument} is a package specification such as +@code{guile@@2.0} or @code{glibc:debug} or, alternatively, a store file +name as returned, for example, by @command{guix build} or @command{guix +gc --list-live}. + When a difference is found between the hash of a locally-built item and that of a server-provided substitute, or among substitutes provided by different servers, the command displays it as in the example above and diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm index 5c0f837d13..f1e5f67dab 100644 --- a/guix/scripts/challenge.scm +++ b/guix/scripts/challenge.scm @@ -537,8 +537,9 @@ Challenge the substitutes for PACKAGE... provided by one or more servers.\n")) (current-terminal-columns (terminal-columns))) (let ((files (match files (() - (filter (cut locally-built? store <>) - (live-paths store))) + (warning + (G_ "no arguments specified, nothing to do~%")) + (exit 0)) (x files)))) (set-build-options store |