summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xmeta/recipes-core/systemd/systemd-systemctl/systemctl13
1 files changed, 10 insertions, 3 deletions
diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl b/meta/recipes-core/systemd/systemd-systemctl/systemctl
index 6aa2e20465..577c373181 100755
--- a/meta/recipes-core/systemd/systemd-systemctl/systemctl
+++ b/meta/recipes-core/systemd/systemd-systemctl/systemctl
@@ -182,12 +182,19 @@ class SystemdUnit():
182 182
183 raise SystemdUnitNotFoundError(self.root, unit) 183 raise SystemdUnitNotFoundError(self.root, unit)
184 184
185 def _process_deps(self, config, service, location, prop, dirstem): 185 def _process_deps(self, config, service, location, prop, dirstem, instance):
186 systemdir = self.root / SYSCONFDIR / "systemd" / "system" 186 systemdir = self.root / SYSCONFDIR / "systemd" / "system"
187 187
188 target = ROOT / location.relative_to(self.root) 188 target = ROOT / location.relative_to(self.root)
189 try: 189 try:
190 for dependent in config.get('Install', prop): 190 for dependent in config.get('Install', prop):
191 # determine whether or not dependent is a template with an actual
192 # instance (i.e. a '@%i')
193 dependent_is_template = re.match(r"[^@]+@(?P<instance>[^\.]*)\.", dependent)
194 if dependent_is_template:
195 # if so, replace with the actual instance to achieve
196 # svc-wants@a.service.wants/svc-wanted-by@a.service
197 dependent = re.sub(dependent_is_template.group('instance'), instance, dependent, 1)
191 wants = systemdir / "{}.{}".format(dependent, dirstem) / service 198 wants = systemdir / "{}.{}".format(dependent, dirstem) / service
192 add_link(wants, target) 199 add_link(wants, target)
193 200
@@ -227,8 +234,8 @@ class SystemdUnit():
227 else: 234 else:
228 service = self.unit 235 service = self.unit
229 236
230 self._process_deps(config, service, path, 'WantedBy', 'wants') 237 self._process_deps(config, service, path, 'WantedBy', 'wants', instance)
231 self._process_deps(config, service, path, 'RequiredBy', 'requires') 238 self._process_deps(config, service, path, 'RequiredBy', 'requires', instance)
232 239
233 try: 240 try:
234 for also in config.get('Install', 'Also'): 241 for also in config.get('Install', 'Also'):