summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2011-03-18 05:26:25 +0100
committerLennart Poettering <lennart@poettering.net>2011-03-18 05:26:25 +0100
commit9700edb4e836f95815ee3237e5bc8d224b5014d7 (patch)
treee637a6dee71b95315c54c3a65fc1eade9a350397
parenta0e155d440173ba524918cb3800350b452952082 (diff)
service: pull in sysv facility targets from the sysv units, not the other way round
For an explanation see: http://lists.freedesktop.org/archives/systemd-devel/2011-March/001692.html
-rw-r--r--TODO2
-rw-r--r--src/service.c25
2 files changed, 17 insertions, 10 deletions
diff --git a/TODO b/TODO
index 297d616e8d..4916da2b63 100644
--- a/TODO
+++ b/TODO
@@ -25,6 +25,8 @@ F15:
* NM should pull in network.target, ntpd should pull in rtc-set.target.
+* fix sysv parser to add right wants dependencies
+
* document default dependencies
Features:
diff --git a/src/service.c b/src/service.c
index f0c72f2c27..1735a96c80 100644
--- a/src/service.c
+++ b/src/service.c
@@ -655,16 +655,21 @@ static int service_load_sysv_path(Service *s, const char *path) {
if (unit_name_to_type(m) == UNIT_SERVICE)
r = unit_add_name(u, m);
- else {
- r = unit_add_dependency_by_name(u, UNIT_BEFORE, m, NULL, true);
-
- if (s->sysv_enabled) {
- int k;
-
- if ((k = unit_add_dependency_by_name_inverse(u, UNIT_WANTS, m, NULL, true)) < 0)
- r = k;
- }
- }
+ else
+ /* NB: SysV targets
+ * which are provided
+ * by a service are
+ * pulled in by the
+ * services, as an
+ * indication that the
+ * generic service is
+ * now available. This
+ * is strictly
+ * one-way. The
+ * targets do NOT pull
+ * in the SysV
+ * services! */
+ r = unit_add_two_dependencies_by_name(u, UNIT_BEFORE, UNIT_WANTS, m, NULL, true);
if (r < 0)
log_error("[%s:%u] Failed to add LSB Provides name %s, ignoring: %s", path, line, m, strerror(-r));