diff options
| -rw-r--r-- | meta/classes-recipe/systemd.bbclass | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/meta/classes-recipe/systemd.bbclass b/meta/classes-recipe/systemd.bbclass index c167689d2a..14fef2d7a6 100644 --- a/meta/classes-recipe/systemd.bbclass +++ b/meta/classes-recipe/systemd.bbclass | |||
| @@ -68,6 +68,28 @@ systemd_populate_packages[vardeps] += "systemd_prerm systemd_postinst" | |||
| 68 | systemd_populate_packages[vardepsexclude] += "OVERRIDES" | 68 | systemd_populate_packages[vardepsexclude] += "OVERRIDES" |
| 69 | 69 | ||
| 70 | 70 | ||
| 71 | def systemd_service_path(service, searchpaths, d): | ||
| 72 | path_found = '' | ||
| 73 | |||
| 74 | # Deal with adding, for example, 'ifplugd@eth0.service' from | ||
| 75 | # 'ifplugd@.service' | ||
| 76 | base = None | ||
| 77 | at = service.find('@') | ||
| 78 | if at != -1: | ||
| 79 | ext = service.rfind('.') | ||
| 80 | base = service[:at] + '@' + service[ext:] | ||
| 81 | |||
| 82 | for path in searchpaths: | ||
| 83 | if os.path.lexists(oe.path.join(d.getVar("D"), path, service)): | ||
| 84 | path_found = path | ||
| 85 | break | ||
| 86 | elif base is not None: | ||
| 87 | if os.path.exists(oe.path.join(d.getVar("D"), path, base)): | ||
| 88 | path_found = path | ||
| 89 | break | ||
| 90 | |||
| 91 | return path_found, base | ||
| 92 | |||
| 71 | python systemd_populate_packages() { | 93 | python systemd_populate_packages() { |
| 72 | import re | 94 | import re |
| 73 | import shlex | 95 | import shlex |
| @@ -158,24 +180,7 @@ python systemd_populate_packages() { | |||
| 158 | # scan for all in SYSTEMD_SERVICE[] | 180 | # scan for all in SYSTEMD_SERVICE[] |
| 159 | for pkg_systemd in systemd_packages.split(): | 181 | for pkg_systemd in systemd_packages.split(): |
| 160 | for service in get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd).split(): | 182 | for service in get_package_var(d, 'SYSTEMD_SERVICE', pkg_systemd).split(): |
| 161 | path_found = '' | 183 | path_found, base = systemd_service_path(service, searchpaths, d) |
| 162 | |||
| 163 | # Deal with adding, for example, 'ifplugd@eth0.service' from | ||
| 164 | # 'ifplugd@.service' | ||
| 165 | base = None | ||
| 166 | at = service.find('@') | ||
| 167 | if at != -1: | ||
| 168 | ext = service.rfind('.') | ||
| 169 | base = service[:at] + '@' + service[ext:] | ||
| 170 | |||
| 171 | for path in searchpaths: | ||
| 172 | if os.path.lexists(oe.path.join(d.getVar("D"), path, service)): | ||
| 173 | path_found = path | ||
| 174 | break | ||
| 175 | elif base is not None: | ||
| 176 | if os.path.exists(oe.path.join(d.getVar("D"), path, base)): | ||
| 177 | path_found = path | ||
| 178 | break | ||
| 179 | 184 | ||
| 180 | if path_found != '': | 185 | if path_found != '': |
| 181 | systemd_add_files_and_parse(pkg_systemd, path_found, service) | 186 | systemd_add_files_and_parse(pkg_systemd, path_found, service) |
