]> code.ossystems Code Review - openembedded-core.git/commitdiff
systemd.bbclass: Allow enabling of parameterised services
authorBob Ham <bob.ham@collabora.com>
Thu, 19 Nov 2015 11:24:00 +0000 (11:24 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Wed, 9 Dec 2015 08:47:27 +0000 (08:47 +0000)
Currently the systemd.class will check whether a service exists when it is
requested to enabled it.  However, its check does not take into account that a
service like 'foo@eth0.service' can be enabled from a service named
'foo@.service'.  This patch alters the check function in systemd.class to look
for 'foo@.service' if the normal check fails.

Signed-off-by: Bob Ham <bob.ham@collabora.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/systemd.bbclass

index 46e72c7a4a894b298ed694efac09c05a56d41170..db7873fbe2bb374870b5f82600ee0286ebf380c2 100644 (file)
@@ -59,6 +59,8 @@ systemd_populate_packages[vardepsexclude] += "OVERRIDES"
 
 
 python systemd_populate_packages() {
+    import re
+
     if not bb.utils.contains('DISTRO_FEATURES', 'systemd', True, False, d):
         return
 
@@ -144,10 +146,22 @@ python systemd_populate_packages() {
         for pkg_systemd in systemd_packages.split():
             for service in get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd).split():
                 path_found = ''
+
+                # Deal with adding, for example, 'ifplugd@eth0.service' from
+                # 'ifplugd@.service'
+                base = None
+                if service.find('@') != -1:
+                    base = re.sub('@[^.]+.', '@.', service)
+
                 for path in searchpaths:
                     if os.path.exists(oe.path.join(d.getVar("D", True), path, service)):
                         path_found = path
                         break
+                    elif base is not None:
+                        if os.path.exists(oe.path.join(d.getVar("D", True), path, base)):
+                            path_found = path
+                            break
+
                 if path_found != '':
                     systemd_add_files_and_parse(pkg_systemd, path_found, service, keys)
                 else: