diff options
author | Martin Hundebøll <mnhu@prevas.dk> | 2017-11-23 13:24:10 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-12-09 14:36:56 +0000 |
commit | 4704bd91458a728f28cbdc57dcf78f5d04cfd0cd (patch) | |
tree | 5d36c334d8f6c64666908b57dad2311be8916432 | |
parent | 5caf53cddceafe55d25a9e53843bbcc2012db829 (diff) | |
download | openembedded-core-4704bd91458a728f28cbdc57dcf78f5d04cfd0cd.tar.gz openembedded-core-4704bd91458a728f28cbdc57dcf78f5d04cfd0cd.tar.bz2 openembedded-core-4704bd91458a728f28cbdc57dcf78f5d04cfd0cd.zip |
systemd: allow dots in arguments to template units
When installing systemd template units with an argument, the current code
removes characters between the '@' and the '.' from service names in
SYSTEMD_SERVICE_${PN}, e.g.:
getty@tty1.service -> getty@.service
This fails for services with dots in the argument (which is perfectly
legal in systemd), since the code searches only until the first dot.
E.g.:
vlan@eth0.1.service -> vlan@1.service
This is obviously wrong, and fails in systemd_populate_packages(), where
it fails to find the unit file.
Fix this by reworking the removal of the argument part of the service
name, so that parts before '@' and after teh last '.' are used as base
name.
Signed-off-by: Martin Hundebøll <mnhu@prevas.dk>
Signed-off-by: Ross Burton <ross.burton@intel.com>
-rw-r--r-- | meta/classes/systemd.bbclass | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass index c4b4bb9b70..1b134322fb 100644 --- a/meta/classes/systemd.bbclass +++ b/meta/classes/systemd.bbclass @@ -154,8 +154,10 @@ python systemd_populate_packages() { # Deal with adding, for example, 'ifplugd@eth0.service' from # 'ifplugd@.service' base = None - if service.find('@') != -1: - base = re.sub('@[^.]+.', '@.', service) + at = service.find('@') + if at != -1: + ext = service.rfind('.') + base = service[:at] + '@' + service[ext:] for path in searchpaths: if os.path.exists(oe.path.join(d.getVar("D"), path, service)): |