guix-commits
[Top][All Lists]
Advanced

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

01/05: services: shepherd: Make 'shepherd-configuration-file' non-monadi


From: Ludovic Courtès
Subject: 01/05: services: shepherd: Make 'shepherd-configuration-file' non-monadic.
Date: Sat, 20 Jan 2018 18:24:10 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 33033a620e64d64bc549b4472e2f4db61e801d18
Author: Ludovic Courtès <address@hidden>
Date:   Sat Jan 20 23:17:23 2018 +0100

    services: shepherd: Make 'shepherd-configuration-file' non-monadic.
    
    Suggested by atw on #guix.
    
    * gnu/services/shepherd.scm (shepherd-service-file): Use 'scheme-file'
    instead of 'gexp->file'.
    (shepherd-configuration-file): Likewise, and adjust to non-monadic
    style.
    (shepherd-boot-gexp): Adjust accordingly.
    * guix/scripts/system.scm (upgrade-shepherd-services): Use
    'lower-object' in addition to 'shepherd-service-file'.
---
 gnu/services/shepherd.scm | 36 ++++++++++++++++++------------------
 guix/scripts/system.scm   |  6 ++++--
 2 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index 7281746..f7c6983 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 Ludovic Courtès <address@hidden>
+;;; Copyright © 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2017 Clément Lassieur <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -66,7 +66,7 @@
 
 
 (define (shepherd-boot-gexp services)
-  (mlet %store-monad ((shepherd-conf (shepherd-configuration-file services)))
+  (with-monad %store-monad
     (return #~(begin
                 ;; Keep track of the booted system.
                 (false-if-exception (delete-file "/run/booted-system"))
@@ -84,7 +84,8 @@
 
                 ;; Start shepherd.
                 (execl #$(file-append shepherd "/bin/shepherd")
-                       "shepherd" "--config" #$shepherd-conf)))))
+                       "shepherd" "--config"
+                       #$(shepherd-configuration-file services))))))
 
 (define shepherd-root-service-type
   (service-type
@@ -203,25 +204,24 @@ stored."
 
 (define (shepherd-service-file service)
   "Return a file defining SERVICE."
-  (gexp->file (shepherd-service-file-name service)
-              (with-imported-modules %default-imported-modules
-                #~(begin
-                    (use-modules #$@(shepherd-service-modules service))
-
-                    (make <service>
-                      #:docstring '#$(shepherd-service-documentation service)
-                      #:provides '#$(shepherd-service-provision service)
-                      #:requires '#$(shepherd-service-requirement service)
-                      #:respawn? '#$(shepherd-service-respawn? service)
-                      #:start #$(shepherd-service-start service)
-                      #:stop #$(shepherd-service-stop service))))))
+  (scheme-file (shepherd-service-file-name service)
+               (with-imported-modules %default-imported-modules
+                 #~(begin
+                     (use-modules #$@(shepherd-service-modules service))
+
+                     (make <service>
+                       #:docstring '#$(shepherd-service-documentation service)
+                       #:provides '#$(shepherd-service-provision service)
+                       #:requires '#$(shepherd-service-requirement service)
+                       #:respawn? '#$(shepherd-service-respawn? service)
+                       #:start #$(shepherd-service-start service)
+                       #:stop #$(shepherd-service-stop service))))))
 
 (define (shepherd-configuration-file services)
   "Return the shepherd configuration file for SERVICES."
   (assert-valid-graph services)
 
-  (mlet %store-monad ((files (mapm %store-monad
-                                   shepherd-service-file services)))
+  (let ((files (map shepherd-service-file services)))
     (define config
       #~(begin
           (use-modules (srfi srfi-34)
@@ -252,7 +252,7 @@ stored."
                                        (filter shepherd-service-auto-start?
                                                services)))))))
 
-    (gexp->file "shepherd.conf" config)))
+    (scheme-file "shepherd.conf" config)))
 
 (define* (shepherd-service-lookup-procedure services
                                             #:optional
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 55a02fb..999ffb0 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <address@hidden>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <address@hidden>
 ;;; Copyright © 2016 Alex Kost <address@hidden>
 ;;; Copyright © 2016, 2017 Chris Marusich <address@hidden>
 ;;; Copyright © 2017 Mathieu Othacehe <address@hidden>
@@ -331,7 +331,9 @@ bring the system down."
             (let ((to-load-names  (map shepherd-service-canonical-name 
to-load))
                   (to-start       (filter shepherd-service-auto-start? 
to-load)))
               (info (G_ "loading new services:~{ ~a~}...~%") to-load-names)
-              (mlet %store-monad ((files (mapm %store-monad 
shepherd-service-file
+              (mlet %store-monad ((files (mapm %store-monad
+                                               (compose lower-object
+                                                        shepherd-service-file)
                                                to-load)))
                 ;; Here we assume that FILES are exactly those that were 
computed
                 ;; as part of the derivation that built OS, which is normally 
the



reply via email to

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