summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-08-02 22:57:09 +0200
committerLudovic Courtès <ludo@gnu.org>2016-08-02 23:43:29 +0200
commitaa1e73a996ad170fecac848f203528aeb3d2173e (patch)
treeb4ae5b79d7294cd8da9e6f9a8c8fa82afcb8c655
parente8b652d46b451f4fdb81a483234e0757bf5ed3de (diff)
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.
-rw-r--r--guix/scripts/system.scm14
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."