Add "depends-ms" dependency option for milestone dependencies.
authorDavin McCall <davmac@davmac.org>
Mon, 2 Oct 2017 19:20:51 +0000 (20:20 +0100)
committerDavin McCall <davmac@davmac.org>
Mon, 2 Oct 2017 19:20:51 +0000 (20:20 +0100)
README
doc/manpages/dinit.8
src/load_service.cc

diff --git a/README b/README
index 6c7bd26d7757818b7c3399d64d7f0a4d4669f5b7..665e5a072983f8cc697eb4fc36ea2e94bd27477f 100644 (file)
--- a/README
+++ b/README
@@ -142,6 +142,7 @@ command = ...
 logfile = ...
 options = ...
 depends-on = (service name)
+depends-ms = (service name)
 waits-for = (service name)
 
 command = (external script or executable, and arguments)
@@ -198,6 +199,13 @@ depends-on = (service name)
    executed until the named service has started. If the named service is
    stopped then this service will also be stopped.
 
+depends-ms = (service name)
+   Indicates a "milestone dependency" on the named service. This service
+   requires the named service to start before it starts itself. Once the
+   named service has started, it remains active due to the dependency, but if
+   it stops for any reason then the dependency link is broken until the next
+   time this service is started.
+
 waits-for = (service name)
    When this service is started, wait for the named service to finish
    starting (or to fail starting) before commencing the start procedure
index e54a46a7310facc4474754918b281206d893cc7b..21349a540aa284357dfc6405f771e5f2c78dcfd7 100644 (file)
@@ -168,6 +168,12 @@ the named service; the command to start this service will not be executed
 until the named service has started. If the named service is stopped then
 this service will also be stopped.
 .TP
+\fBdepends-ms\fR = \fIservice-name\fR
+This service has a "milestone" dependcy on the named service. Starting this
+service will start the named service; the command to start this service will
+not be executed until the named service has started. If the named service is
+stopped then the dependency is dropped until this service is next started.
+.TP
 \fBwaits-for\fR = \fIservice-name\fR
 When this service is started, wait for the named service to finish starting
 (or to fail starting) before commencing the start procedure for this service.
index 45c6c189b2313a061427f854ab38b4102e475ccd..4937dee19b758ff8ad00241e7ccfda68aaa423b8 100644 (file)
@@ -476,6 +476,10 @@ service_record * dirload_service_set::load_service(const char * name)
                     string dependency_name = read_setting_value(i, end);
                     depends.emplace_back(load_service(dependency_name.c_str()), dependency_type::REGULAR);
                 }
+                else if (setting == "depends-ms") {
+                    string dependency_name = read_setting_value(i, end);
+                    depends.emplace_back(load_service(dependency_name.c_str()), dependency_type::MILESTONE);
+                }
                 else if (setting == "waits-for") {
                     string dependency_name = read_setting_value(i, end);
                     depends.emplace_back(load_service(dependency_name.c_str()), dependency_type::WAITS_FOR);