diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-08-31 15:09:55 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-08-31 15:50:35 +0200 |
commit | 7e90e28a156ddc25e3822b931a608890caf3efee (patch) | |
tree | cf539c38300610c4f552e8b519f7399612332536 | |
parent | a4e81ff325aa1e0381ec73a57e41a208317b60d6 (diff) | |
download | guix-7e90e28a156ddc25e3822b931a608890caf3efee.tar guix-7e90e28a156ddc25e3822b931a608890caf3efee.tar.gz |
guix system: Clarify what happens where service upgrade fails.
* guix/scripts/system.scm (report-shepherd-error): Use 'warning' instead
of 'report-error'. Add extra 'warning' and 'display-hint' calls.
-rw-r--r-- | guix/scripts/system.scm | 47 |
1 files changed, 26 insertions, 21 deletions
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 7d6fc63a98..3222a53c8f 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -271,28 +271,33 @@ expression in %STORE-MONAD." (define (report-shepherd-error error) "Report ERROR, a '&shepherd-error' error condition object." - (cond ((service-not-found-error? error) - (report-error (G_ "service '~a' could not be found~%") - (service-not-found-error-service error))) - ((action-not-found-error? error) - (report-error (G_ "service '~a' does not have an action '~a'~%") - (action-not-found-error-service error) - (action-not-found-error-action error))) - ((action-exception-error? error) - (report-error (G_ "exception caught while executing '~a' \ + (when error + (cond ((service-not-found-error? error) + (warning (G_ "service '~a' could not be found~%") + (service-not-found-error-service error))) + ((action-not-found-error? error) + (warning (G_ "service '~a' does not have an action '~a'~%") + (action-not-found-error-service error) + (action-not-found-error-action error))) + ((action-exception-error? error) + (warning (G_ "exception caught while executing '~a' \ on service '~a':~%") - (action-exception-error-action error) - (action-exception-error-service error)) - (print-exception (current-error-port) #f - (action-exception-error-key error) - (action-exception-error-arguments error))) - ((unknown-shepherd-error? error) - (report-error (G_ "something went wrong: ~s~%") - (unknown-shepherd-error-sexp error))) - ((shepherd-error? error) - (report-error (G_ "shepherd error~%"))) - ((not error) ;not an error - #t))) + (action-exception-error-action error) + (action-exception-error-service error)) + (print-exception (current-error-port) #f + (action-exception-error-key error) + (action-exception-error-arguments error))) + ((unknown-shepherd-error? error) + (warning (G_ "something went wrong: ~s~%") + (unknown-shepherd-error-sexp error))) + ((shepherd-error? error) + (warning (G_ "shepherd error~%")))) + + ;; Don't leave users out in the cold and explain what that means and what + ;; they can do. + (warning (G_ "some services could not be upgraded~%")) + (display-hint (G_ "To allow changes to all the system services to take +effect, you will need to reboot.")))) (define-syntax-rule (unless-file-not-found exp) (catch 'system-error |