Re: [systemd-devel] [PATCH v2] sysv-generator: Skip init scripts for existing native services

2015-02-11 Thread Lennart Poettering
On Fri, 06.02.15 09:55, Martin Pitt (martin.p...@ubuntu.com) wrote:

 Hello all,
 
 this update now uses the logic from src/shared/install.h, and also
 documents the rationale better: The primary reason is to actually
 respect a disabled native unit instead of re-enabling it through the
 backdoor via a corresponding enabled sysv init script.

Thanks, applied!

Lennart

-- 
Lennart Poettering, Red Hat
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


[systemd-devel] [PATCH v2] sysv-generator: Skip init scripts for existing native services

2015-02-06 Thread Martin Pitt
Hello all,

this update now uses the logic from src/shared/install.h, and also
documents the rationale better: The primary reason is to actually
respect a disabled native unit instead of re-enabling it through the
backdoor via a corresponding enabled sysv init script.

Thanks for considering,

Martin
-- 
Martin Pitt| http://www.piware.de
Ubuntu Developer (www.ubuntu.com)  | Debian Developer  (www.debian.org)
From 1629649e70bca3c7a7f5efec0211cb0c7dd14a58 Mon Sep 17 00:00:00 2001
From: Martin Pitt martin.p...@ubuntu.com
Date: Wed, 2 Jul 2014 22:00:00 +0200
Subject: [PATCH] sysv-generator: Skip init scripts for existing native
 services

This avoids taking the SysV init script enablement state into account if we
have native units. Otherwise systemctl disable on native unit would not
be respected in the presence of an enabled SysV script.

Also, there's no need to do all the parsing and creation of service files if we
already have a native systemd unit for the processed SysV init script.
---
 src/sysv-generator/sysv-generator.c |  8 +++-
 test/sysv-generator-test.py | 12 
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c
index 673f04d..6e39b44 100644
--- a/src/sysv-generator/sysv-generator.c
+++ b/src/sysv-generator/sysv-generator.c
@@ -768,6 +768,11 @@ static int enumerate_sysv(LookupPaths lp, Hashmap *all_services) {
 if (!fpath)
 return log_oom();
 
+if (unit_file_get_state(UNIT_FILE_SYSTEM, NULL, name) = 0) {
+log_debug(Native unit for %s already exists, skipping, name);
+continue;
+}
+
 service = new0(SysvStub, 1);
 if (!service)
 return log_oom();
@@ -852,7 +857,8 @@ static int set_dependencies_from_rcnd(LookupPaths lp, Hashmap *all_services) {
 
 service = hashmap_get(all_services, name);
 if (!service){
-log_warning(Could not find init script for %s, name);
+log_debug(Ignoring %s symlink in %s, not generating %s.,
+  de-d_name, rcnd_table[i].path, name);
 continue;
 }
 
diff --git a/test/sysv-generator-test.py b/test/sysv-generator-test.py
index 5098519..09f5c01 100644
--- a/test/sysv-generator-test.py
+++ b/test/sysv-generator-test.py
@@ -367,6 +367,18 @@ class SysvGeneratorTest(unittest.TestCase):
 self.assert_enabled('foo.bak.service', [])
 self.assert_enabled('foo.old.service', [])
 
+def test_existing_native_unit(self):
+'''existing native unit'''
+
+with open(os.path.join(self.unit_dir, 'foo.service'), 'w') as f:
+f.write('[Unit]\n')
+
+self.add_sysv('foo.sh', {'Provides': 'foo bar'}, enable=True)
+err, results = self.run_generator()
+self.assertEqual(list(results), [])
+# no enablement or alias links, as native unit is disabled
+self.assertEqual(os.listdir(self.out_dir), [])
+
 
 if __name__ == '__main__':
 unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout, verbosity=2))
-- 
2.1.4

___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel