Archived
1
0
Fork 0

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.
This commit is contained in:
Ludovic Courtès 2020-08-31 15:09:55 +02:00
parent a4e81ff325
commit 7e90e28a15
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -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