From 4ce15271dad3520e5de2500c609b05d5a511e453 Mon Sep 17 00:00:00 2001 From: Bob Ham Date: Thu, 19 Nov 2015 11:24:00 +0000 Subject: systemd.bbclass: Allow enabling of parameterised services 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 Signed-off-by: Ross Burton --- meta/classes/systemd.bbclass | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass index 46e72c7a4a..db7873fbe2 100644 --- a/meta/classes/systemd.bbclass +++ b/meta/classes/systemd.bbclass @@ -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: -- cgit 1.2.3-korg