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{'()}) | @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. | ||||||
|  |  | ||||||
|  | @ -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) | ||||||
|  |  | ||||||
		Reference in a new issue