From: Lincoln Ramsay <[email protected]>

Templated systemd service files can have an instance starting with
a number, but the poky systemctl replacement for building a rootfs
crafts a regex replacement pattern that uses \1, which is not
terminated, and when combined with the instance name leads to an
invalid expression.

For example, installing [email protected] will cause a call to
re.sub with replacement \11a, which tries to use the 11th match,
while the pattern only has 1 match.

There is a terminated alternative syntax that avoids this issue.
\g<1> achieves the same result but doesn't break when the result
is \g<1>1a.

Signed-off-by: Lincoln Ramsay <[email protected]>
---
 meta/recipes-core/systemd/systemd-systemctl/systemctl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl 
b/meta/recipes-core/systemd/systemd-systemctl/systemctl
index 514f747fe6..7fe751b397 100755
--- a/meta/recipes-core/systemd/systemd-systemctl/systemctl
+++ b/meta/recipes-core/systemd/systemd-systemctl/systemctl
@@ -202,7 +202,7 @@ class SystemdUnit():
         try:
             for dependent in config.get('Install', prop):
                 # expand any %i to instance (ignoring escape sequence %%)
-                dependent = re.sub("([^%](%%)*)%i", "\\1{}".format(instance), 
dependent)
+                dependent = re.sub("([^%](%%)*)%i", 
"\\g<1>{}".format(instance), dependent)
                 wants = systemdir / "{}.{}".format(dependent, dirstem) / 
service
                 add_link(wants, target)
 
-- 
2.25.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#183986): 
https://lists.openembedded.org/g/openembedded-core/message/183986
Mute This Topic: https://lists.openembedded.org/mt/99996661/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to