From ae43e491cb0d873108ea03baae108a7280f45e2b Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Fri, 27 Jun 2014 23:02:04 +0200 Subject: [PATCH] insserv-generator: ignore non-existing SysV init scripts Update insserv generator to not create any drop-in files for services where the corresponding SysV init script does not exist. --- debian/changelog | 2 ++ debian/patches/insserv.conf-generator.patch | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 5423bcf60..f6f1e7d85 100644 --- a/debian/changelog +++ b/debian/changelog @@ -7,6 +7,8 @@ systemd (204-13) UNRELEASED; urgency=medium the modalias rule. Thanks to Tommaso Colombo for the analysis. * Cherry-pick upstream fix which prevents systemd from entering an infinite loop when trying to break an ordering cycle. (Closes: #752259) + * Update insserv generator to not create any drop-in files for services + where the corresponding SysV init script does not exist. -- Michael Biebl Fri, 27 Jun 2014 22:37:23 +0200 diff --git a/debian/patches/insserv.conf-generator.patch b/debian/patches/insserv.conf-generator.patch index 9392af03d..909131801 100644 --- a/debian/patches/insserv.conf-generator.patch +++ b/debian/patches/insserv.conf-generator.patch @@ -17,8 +17,8 @@ It has the following modifications: --- Makefile.am | 9 + src/insserv-generator/Makefile | 28 +++ - src/insserv-generator/insserv-generator.c | 310 ++++++++++++++++++++++++++++++ - 3 files changed, 347 insertions(+) + src/insserv-generator/insserv-generator.c | 321 ++++++++++++++++++++++++++++++ + 3 files changed, 358 insertions(+) create mode 100644 src/insserv-generator/Makefile create mode 100644 src/insserv-generator/insserv-generator.c @@ -85,10 +85,10 @@ index 0000000..9d07505 +.PHONY: all clean diff --git a/src/insserv-generator/insserv-generator.c b/src/insserv-generator/insserv-generator.c new file mode 100644 -index 0000000..af5267c +index 0000000..904e8cb --- /dev/null +++ b/src/insserv-generator/insserv-generator.c -@@ -0,0 +1,310 @@ +@@ -0,0 +1,321 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** @@ -271,6 +271,7 @@ index 0000000..af5267c + STRV_FOREACH (j, parsed+1) { + _cleanup_free_ char *unit = NULL; + _cleanup_free_ char *dep = NULL; ++ _cleanup_free_ char *initscript = NULL; + + /* targets should not pull in and activate other targets so skip them */ + if (*j[0] == '$') @@ -283,6 +284,16 @@ index 0000000..af5267c + if ((sysv_translate_facility(name, NULL, &dep) < 0) || !dep) + continue; + ++ /* don't create any drop-in configs if the ++ * corresponding SysV init script does not exist */ ++ initscript = strjoin("/etc/init.d/", name, NULL); ++ if (access(initscript, F_OK) < 0) { ++ strcat(initscript, ".sh"); ++ if (access(initscript, F_OK) < 0) { ++ continue; ++ } ++ } ++ + unit = strjoin(arg_dest, "/", dep, ".d/50-",basename(filename),"-",parsed[0],".conf", NULL); + if (!unit) + return log_oom();