chiark / gitweb /
sysv: add basic.target dependencies only for normal init scripts
authorLennart Poettering <lennart@poettering.net>
Wed, 7 Apr 2010 18:28:44 +0000 (20:28 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 7 Apr 2010 18:28:44 +0000 (20:28 +0200)
service.c

index c5e3bc13b4191ab878c747a5782c1572cef39cc7..8a0034936f57baeadc7eaed8675bcc167a08ff06 100644 (file)
--- a/service.c
+++ b/service.c
@@ -592,9 +592,17 @@ static int service_load_sysv_path(Service *s, const char *path, UnitLoadState *n
         if ((r = sysv_exec_commands(s)) < 0)
                 goto finish;
 
         if ((r = sysv_exec_commands(s)) < 0)
                 goto finish;
 
-        if ((r = unit_add_dependency_by_name(u, UNIT_REQUIRES, SPECIAL_BASIC_TARGET)) < 0 ||
-            (r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_BASIC_TARGET)) < 0)
-                goto finish;
+        if (!s->sysv_runlevels || chars_intersect("12345", s->sysv_runlevels)) {
+                /* If there a runlevels configured for this service
+                 * but none of the standard ones, then we assume this
+                 * is some special kind of service (which might be
+                 * needed for early boot) and don't create any links
+                 * to it. */
+
+                if ((r = unit_add_dependency_by_name(u, UNIT_REQUIRES, SPECIAL_BASIC_TARGET)) < 0 ||
+                    (r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_BASIC_TARGET)) < 0)
+                        goto finish;
+        }
 
         *new_state = UNIT_LOADED;
         r = 0;
 
         *new_state = UNIT_LOADED;
         r = 0;