~ruther/guix-local

7cffaeb60473e25a7ef8c1a8cb36e1531191873a — Ludovic Courtès 10 years ago 7b9a66e
challenge: Really exit with non-zero upon hash mismatch.

Reported by John Darrington.

* guix/scripts/challenge.scm (guix-challenge): Add an explicit 'exit'
call when ISSUES is empty.
* scripts/guix.in: Add comment about 'exit'.
* doc/guix.texi (Invoking guix challenge): Mention the behavior and exit
code.
3 files changed, 14 insertions(+), 2 deletions(-)

M doc/guix.texi
M guix/scripts/challenge.scm
M scripts/guix.in
M doc/guix.texi => doc/guix.texi +6 -1
@@ 5582,7 5582,7 @@ $ guix challenge @var{package}

@noindent
where @var{package} is a package specification such as
@code{guile-2.0} or @code{glibc:debug}.
@code{guile@@2.0} or @code{glibc:debug}.

The general syntax is:



@@ 5590,6 5590,11 @@ The general syntax is:
guix challenge @var{options} [@var{packages}@dots{}]
@end example

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
exits with a non-zero return code.

The one option that matters is:

@table @code

M guix/scripts/challenge.scm => guix/scripts/challenge.scm +3 -1
@@ 233,9 233,11 @@ Challenge the substitutes for PACKAGE... provided by one or more servers.\n"))

           (run-with-store store
             (mlet* %store-monad ((items  (mapm %store-monad
                                               ensure-store-item files))
                                                ensure-store-item files))
                                  (issues (discrepancies items urls)))
               (for-each summarize-discrepancy issues)
               (unless (null? issues)
                 (exit 1))
               (return (null? issues)))
             #:system system)))))))


M scripts/guix.in => scripts/guix.in +5 -0
@@ 64,4 64,9 @@
      (apply guix-main (command-line))))

  (maybe-augment-load-paths!)

  ;; XXX: It would be more convenient to change it to:
  ;;   (exit (run-guix-main))
  ;; but since the 'guix' command is not updated by 'guix pull', we cannot
  ;; really do it now.
  (run-guix-main))