summaryrefslogtreecommitdiff
path: root/src/sysv-generator
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2016-05-30 18:06:04 +0200
committerLennart Poettering <lennart@poettering.net>2016-05-30 18:06:04 +0200
commit788d2b088b13a2444b9eb2ea82c0cc57d9f0980f (patch)
tree31bda686b24cc6d8ef6388ee83ee58b306ebc927 /src/sysv-generator
parent3c6f7c340237262b560586cf7cf06be957d4352f (diff)
sysv-generator: don't create Conflicts= deps towards shutdown.target anymore
This is redundant as SysV services get DefaultDependencides=yes anyway, and thus conflict with shutdown.target anyway. Hence, let's simplify our code here.
Diffstat (limited to 'src/sysv-generator')
-rw-r--r--src/sysv-generator/sysv-generator.c64
1 files changed, 9 insertions, 55 deletions
diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c
index 6a90ca562b..4e12071e93 100644
--- a/src/sysv-generator/sysv-generator.c
+++ b/src/sysv-generator/sysv-generator.c
@@ -42,32 +42,19 @@
#include "unit-name.h"
#include "util.h"
-typedef enum RunlevelType {
- RUNLEVEL_UP,
- RUNLEVEL_DOWN
-} RunlevelType;
-
static const struct {
const char *path;
const char *target;
- const RunlevelType type;
} rcnd_table[] = {
/* Standard SysV runlevels for start-up */
- { "rc1.d", SPECIAL_RESCUE_TARGET, RUNLEVEL_UP },
- { "rc2.d", SPECIAL_MULTI_USER_TARGET, RUNLEVEL_UP },
- { "rc3.d", SPECIAL_MULTI_USER_TARGET, RUNLEVEL_UP },
- { "rc4.d", SPECIAL_MULTI_USER_TARGET, RUNLEVEL_UP },
- { "rc5.d", SPECIAL_GRAPHICAL_TARGET, RUNLEVEL_UP },
-
- /* Standard SysV runlevels for shutdown */
- { "rc0.d", SPECIAL_POWEROFF_TARGET, RUNLEVEL_DOWN },
- { "rc6.d", SPECIAL_REBOOT_TARGET, RUNLEVEL_DOWN }
-
- /* Note that the order here matters, as we read the
- directories in this order, and we want to make sure that
- sysv_start_priority is known when we first load the
- unit. And that value we only know from S links. Hence
- UP must be read before DOWN */
+ { "rc1.d", SPECIAL_RESCUE_TARGET },
+ { "rc2.d", SPECIAL_MULTI_USER_TARGET },
+ { "rc3.d", SPECIAL_MULTI_USER_TARGET },
+ { "rc4.d", SPECIAL_MULTI_USER_TARGET },
+ { "rc5.d", SPECIAL_GRAPHICAL_TARGET },
+
+ /* We ignore the SysV runlevels for shutdown here, as SysV services get default dependencies anyway, and that
+ * means they are shut down anyway at system power off if running. */
};
static const char *arg_dest = "/tmp";
@@ -82,7 +69,6 @@ typedef struct SysvStub {
char **after;
char **wants;
char **wanted_by;
- char **conflicts;
bool has_lsb;
bool reload;
bool loaded;
@@ -100,7 +86,6 @@ static void free_sysvstub(SysvStub *s) {
strv_free(s->after);
strv_free(s->wants);
strv_free(s->wanted_by);
- strv_free(s->conflicts);
free(s);
}
@@ -199,8 +184,6 @@ static int generate_unit_file(SysvStub *s) {
fprintf(f, "After=%s\n", *p);
STRV_FOREACH(p, s->wants)
fprintf(f, "Wants=%s\n", *p);
- STRV_FOREACH(p, s->conflicts)
- fprintf(f, "Conflicts=%s\n", *p);
fprintf(f,
"\n[Service]\n"
@@ -835,7 +818,6 @@ static int enumerate_sysv(const LookupPaths *lp, Hashmap *all_services) {
static int set_dependencies_from_rcnd(const LookupPaths *lp, Hashmap *all_services) {
Set *runlevel_services[ELEMENTSOF(rcnd_table)] = {};
- _cleanup_set_free_ Set *shutdown_services = NULL;
_cleanup_strv_free_ char **sysvrcnd_path = NULL;
SysvStub *service;
unsigned i;
@@ -906,8 +888,7 @@ static int set_dependencies_from_rcnd(const LookupPaths *lp, Hashmap *all_servic
if (de->d_name[0] == 'S') {
- if (rcnd_table[i].type == RUNLEVEL_UP)
- service->sysv_start_priority = MAX(a*10 + b, service->sysv_start_priority);
+ service->sysv_start_priority = MAX(a*10 + b, service->sysv_start_priority);
r = set_ensure_allocated(&runlevel_services[i], NULL);
if (r < 0) {
@@ -921,20 +902,6 @@ static int set_dependencies_from_rcnd(const LookupPaths *lp, Hashmap *all_servic
goto finish;
}
- } else if (de->d_name[0] == 'K' &&
- (rcnd_table[i].type == RUNLEVEL_DOWN)) {
-
- r = set_ensure_allocated(&shutdown_services, NULL);
- if (r < 0) {
- log_oom();
- goto finish;
- }
-
- r = set_put(shutdown_services, service);
- if (r < 0) {
- log_oom();
- goto finish;
- }
}
}
}
@@ -955,19 +922,6 @@ static int set_dependencies_from_rcnd(const LookupPaths *lp, Hashmap *all_servic
}
}
- SET_FOREACH(service, shutdown_services, j) {
- r = strv_extend(&service->before, SPECIAL_SHUTDOWN_TARGET);
- if (r < 0) {
- log_oom();
- goto finish;
- }
- r = strv_extend(&service->conflicts, SPECIAL_SHUTDOWN_TARGET);
- if (r < 0) {
- log_oom();
- goto finish;
- }
- }
-
r = 0;
finish: