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.
This commit is contained in:
Ludovic Courtès 2019-04-23 14:48:56 +02:00
parent 9fb1ca0808
commit 95ef8b85b1
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 15 additions and 1 deletions

View File

@ -25124,6 +25124,12 @@ shepherd, The GNU Shepherd Manual}). @xref{Slots of services, the
@item @code{requirements} (default: @code{'()}) @item @code{requirements} (default: @code{'()})
List of symbols denoting the Shepherd services this one depends on. 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}) @item @code{respawn?} (default: @code{#t})
Whether to restart the service when it stops, for instance when the Whether to restart the service when it stops, for instance when the
underlying process dies. underlying process dies.

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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 © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; ;;;
@ -44,6 +44,7 @@
shepherd-service-provision shepherd-service-provision
shepherd-service-canonical-name shepherd-service-canonical-name
shepherd-service-requirement shepherd-service-requirement
shepherd-service-one-shot?
shepherd-service-respawn? shepherd-service-respawn?
shepherd-service-start shepherd-service-start
shepherd-service-stop 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 (provision shepherd-service-provision) ;list of symbols
(requirement shepherd-service-requirement ;list of symbols (requirement shepherd-service-requirement ;list of symbols
(default '())) (default '()))
(one-shot? shepherd-service-one-shot? ;Boolean
(default #f))
(respawn? shepherd-service-respawn? ;Boolean (respawn? shepherd-service-respawn? ;Boolean
(default #t)) (default #t))
(start shepherd-service-start) ;g-expression (procedure) (start shepherd-service-start) ;g-expression (procedure)
@ -238,6 +241,11 @@ stored."
#:docstring '#$(shepherd-service-documentation service) #:docstring '#$(shepherd-service-documentation service)
#:provides '#$(shepherd-service-provision service) #:provides '#$(shepherd-service-provision service)
#:requires '#$(shepherd-service-requirement 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) #:respawn? '#$(shepherd-service-respawn? service)
#:start #$(shepherd-service-start service) #:start #$(shepherd-service-start service)
#:stop #$(shepherd-service-stop service) #:stop #$(shepherd-service-stop service)