guix-commits
[Top][All Lists]
Advanced

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

[shepherd] 02/06: service: 'start-service' returns #f when dependencies


From: Ludovic Courtès
Subject: [shepherd] 02/06: service: 'start-service' returns #f when dependencies failed to start.
Date: Wed, 14 Jun 2023 12:46:24 -0400 (EDT)

civodul pushed a commit to branch master
in repository shepherd.

commit bf86a26854cc5c274d2eaa5e70ac9a82bcace29f
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Wed Jun 14 17:45:53 2023 +0200

    service: 'start-service' returns #f when dependencies failed to start.
    
    * modules/shepherd/service.scm (start-service): Return #f when PROBLEMS
    is non-empty.  Update docstring.
    * doc/shepherd.texi (Interacting with Services): Update accordingly.
---
 doc/shepherd.texi            |  2 +-
 modules/shepherd/service.scm | 14 ++++++++------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/doc/shepherd.texi b/doc/shepherd.texi
index 75fcb49..6d7ddfd 100644
--- a/doc/shepherd.texi
+++ b/doc/shepherd.texi
@@ -943,7 +943,7 @@ The procedures below let you change the state of a service.
 
 @deffn {Procedure} start-service @var{service} . @var{args}
 Start @var{service} and its dependencies, passing @var{args} to its
-@code{start} method.
+@code{start} method.  Return its running value, @code{#f} on failure.
 @end deffn
 
 @deffn {Procedure} stop-service @var{service} . @var{args}
diff --git a/modules/shepherd/service.scm b/modules/shepherd/service.scm
index 2559499..0980ac4 100644
--- a/modules/shepherd/service.scm
+++ b/modules/shepherd/service.scm
@@ -829,17 +829,19 @@ while starting ~a: ~s")
 
 (define (start-service service . args)
   "Start @var{service} and its dependencies, passing @var{args} to its
-@code{start} method."
+@code{start} method.  Return its running value, @code{#f} on failure."
   ;; It is not running; go ahead and launch it.
   (let ((problems
         ;; Resolve all dependencies.
         (start-in-parallel (service-requirement service))))
     (if (pair? problems)
-        (for-each (lambda (problem)
-                   (local-output (l10n "Service ~a depends on ~a.")
-                                 (service-canonical-name service)
-                                 problem))
-                  problems)
+        (begin
+          (for-each (lambda (problem)
+                     (local-output (l10n "Service ~a depends on ~a.")
+                                   (service-canonical-name service)
+                                   problem))
+                    problems)
+          #f)
         ;; Start the service itself.
         (let ((reply (make-channel)))
           (put-message (service-control service) `(start ,reply))



reply via email to

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