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:
		
							parent
							
								
									9fb1ca0808
								
							
						
					
					
						commit
						95ef8b85b1
					
				
					 2 changed files with 15 additions and 1 deletions
				
			
		|  | @ -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. | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
		Reference in a new issue