diff options
author | Ludovic Courtès <ludo@gnu.org> | 2016-08-02 22:57:09 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2016-08-02 23:43:29 +0200 |
commit | aa1e73a996ad170fecac848f203528aeb3d2173e (patch) | |
tree | b4ae5b79d7294cd8da9e6f9a8c8fa82afcb8c655 /guix | |
parent | e8b652d46b451f4fdb81a483234e0757bf5ed3de (diff) | |
download | gnu-guix-aa1e73a996ad170fecac848f203528aeb3d2173e.tar gnu-guix-aa1e73a996ad170fecac848f203528aeb3d2173e.tar.gz |
guix system: Properly report Shepherd errors when upgrading services.
Fixes regression introduced in 8bf92e3904cb656d4c2160fc8befebaf21a65492.
Reported by myglc2 <myglc2@gmail.com> in <http://bugs.gnu.org/24135>.
* guix/scripts/system.scm (with-shepherd-error-handling): Rename 'body'
to 'mbody'. Expand to a monadic procedure that runs MBODY.
Diffstat (limited to 'guix')
-rw-r--r-- | guix/scripts/system.scm | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index e2c6b2efee..992acdbca2 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -236,11 +236,15 @@ BODY..., and restore them." (with-monad %store-monad (return #f))))) -(define-syntax-rule (with-shepherd-error-handling body ...) - (warn-on-system-error - (guard (c ((shepherd-error? c) - (report-shepherd-error c))) - body ...))) +(define-syntax-rule (with-shepherd-error-handling mbody ...) + "Catch and report Shepherd errors that arise when binding MBODY, a monadic +expression in %STORE-MONAD." + (lambda (store) + (warn-on-system-error + (guard (c ((shepherd-error? c) + (report-shepherd-error c))) + (values (run-with-store store (begin mbody ...)) + store))))) (define (report-shepherd-error error) "Report ERROR, a '&shepherd-error' error condition object." |