[gnome-continuous-yocto/gnomeostree-3.28-rocko: 31/218] systemd: allow dots in arguments to template units



commit 63f07325fa9f624b03994fab04ba451075feca82
Author: Martin Hundebøll <mnhu prevas dk>
Date:   Thu Nov 23 13:24:10 2017 +0100

    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.
    
    (From OE-Core rev: e6fcc7d31b9105e518cf8a69d04f60291b7dd8fb)
    
    Signed-off-by: Martin Hundebøll <mnhu prevas dk>
    Signed-off-by: Ross Burton <ross burton intel com>
    (cherry picked from commit 4704bd91458a728f28cbdc57dcf78f5d04cfd0cd)
    Signed-off-by: Armin Kuster <akuster808 gmail com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 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 c4b4bb9..1b13432 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)):


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]