guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: guix system: Return two values when failing to talk to shepherd.


From: Ludovic Courtès
Subject: 01/01: guix system: Return two values when failing to talk to shepherd.
Date: Thu, 6 Oct 2016 21:00:06 +0000 (UTC)

civodul pushed a commit to branch master
in repository guix.

commit af0ba938255bb412ad021c19e651e632abd0103c
Author: Ludovic Courtès <address@hidden>
Date:   Thu Oct 6 22:56:27 2016 +0200

    guix system: Return two values when failing to talk to shepherd.
    
    Before that, when 'guix system reconfigure' failed to talk to shepherd
    and a 'system-error' was raised, we would get a "too few values returned
    to continuation" error, which would prevent GRUB from being installed.
    
    Reported by fps on #guix.
    
    * guix/scripts/system.scm (warn-on-system-error): Remove.
    (with-shepherd-error-handling): Inline former 'warn-on-system-error'.
    Return two values when 'system-error' is raised.
---
 guix/scripts/system.scm |   25 ++++++++++---------------
 1 file changed, 10 insertions(+), 15 deletions(-)

diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index a2cd97a..0519ab8 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -227,25 +227,20 @@ BODY..., and restore them."
         (set! %load-path path)
         (set! %load-compiled-path cpath)))))
 
-(define-syntax-rule (warn-on-system-error body ...)
-  (catch 'system-error
-    (lambda ()
-      body ...)
-    (lambda (key proc format-string format-args errno . rest)
-      (warning (_ "while talking to shepherd: ~a~%")
-               (apply format #f format-string format-args))
-      (with-monad %store-monad
-        (return #f)))))
-
 (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)
-                (values (report-shepherd-error c) store)))
-       (values (run-with-store store (begin mbody ...))
-               store)))))
+    (catch 'system-error
+      (lambda ()
+        (guard (c ((shepherd-error? c)
+                   (values (report-shepherd-error c) store)))
+          (values (run-with-store store (begin mbody ...))
+                  store)))
+      (lambda (key proc format-string format-args errno . rest)
+        (warning (_ "while talking to shepherd: ~a~%")
+                 (apply format #f format-string format-args))
+        (values #f store)))))
 
 (define (report-shepherd-error error)
   "Report ERROR, a '&shepherd-error' error condition object."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]