summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-04-23 14:48:56 +0200
committerLudovic Courtès <ludo@gnu.org>2019-04-23 16:38:11 +0200
commit95ef8b85b16f19557ea07d0d0cbf856f85657368 (patch)
treef45f2e796bb1ce3de3be064e6a4ae74631f89626
parent9fb1ca080861c8418a1cc6710bf0dfef1ee77248 (diff)
downloadpatches-95ef8b85b16f19557ea07d0d0cbf856f85657368.tar
patches-95ef8b85b16f19557ea07d0d0cbf856f85657368.tar.gz
services: shepherd: Support one-shot services.
* gnu/services/shepherd.scm (<shepherd-service>)[one-shot?]: New field. (shepherd-service-file): Pass #:one-shot? to the <service> constructor. * doc/guix.texi (Shepherd Services): Document it.
-rw-r--r--doc/guix.texi6
-rw-r--r--gnu/services/shepherd.scm10
2 files changed, 15 insertions, 1 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 3ec1cf852a..955fd1f172 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -25124,6 +25124,12 @@ shepherd, The GNU Shepherd Manual}). @xref{Slots of services, the
@item @code{requirements} (default: @code{'()})
List of symbols denoting the Shepherd services this one depends on.
+@cindex one-shot services, for the Shepherd
+@item @code{one-shot?} (default: @code{#f})
+Whether this service is @dfn{one-shot}. One-shot services stop immediately
+after their @code{start} action has completed. @xref{Slots of services,,,
+shepherd, The GNU Shepherd Manual}, for more info.
+
@item @code{respawn?} (default: @code{#t})
Whether to restart the service when it stops, for instance when the
underlying process dies.
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 12d649f542..21baacbaf7 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
;;;
@@ -44,6 +44,7 @@
shepherd-service-provision
shepherd-service-canonical-name
shepherd-service-requirement
+ shepherd-service-one-shot?
shepherd-service-respawn?
shepherd-service-start
shepherd-service-stop
@@ -149,6 +150,8 @@ DEFAULT is given, use it as the service's default value."
(provision shepherd-service-provision) ;list of symbols
(requirement shepherd-service-requirement ;list of symbols
(default '()))
+ (one-shot? shepherd-service-one-shot? ;Boolean
+ (default #f))
(respawn? shepherd-service-respawn? ;Boolean
(default #t))
(start shepherd-service-start) ;g-expression (procedure)
@@ -238,6 +241,11 @@ stored."
#:docstring '#$(shepherd-service-documentation service)
#:provides '#$(shepherd-service-provision service)
#:requires '#$(shepherd-service-requirement service)
+
+ ;; The 'one-shot?' slot is new in Shepherd 0.6.0.
+ ;; Older versions ignore it.
+ #:one-shot? '#$(shepherd-service-one-shot? service)
+
#:respawn? '#$(shepherd-service-respawn? service)
#:start #$(shepherd-service-start service)
#:stop #$(shepherd-service-stop service)