summaryrefslogtreecommitdiffstats
path: root/poky
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2018-11-05 19:23:07 -0500
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2018-11-18 20:53:30 -0500
commitec8c565f230f6b078b574ab888f56d44fff0dc60 (patch)
tree6710f456cf979e8425f8bf6c8d7ae3cc197bb65b /poky
parent6f8dcde58e2226d5a46f41ab53225134d0e60b4e (diff)
downloadtalos-openbmc-ec8c565f230f6b078b574ab888f56d44fff0dc60.tar.gz
talos-openbmc-ec8c565f230f6b078b574ab888f56d44fff0dc60.zip
systemd-systemctl-native: handle Install wildcards
Handle the %i wildcard appearing in a dependency in the Install section of a template unit, e.g. $ cat foo@.service [Install] WantedBy=bar@%i.target Using the real systemctl something like: $ systemctl enable foo@baz.service will create a symlink in /etc/systemd/system/bar@baz.target.wants. Detect wildcards in templates and make the appropriate substitution. (From OE-Core rev: 22ed19292d160461042d4a2294fe2ec0b953873e) (From poky rev: 17726d083408ad0740ef914d2cfee589d7f6b800) Change-Id: I06824ed36a42c691bec7610999135752c2d90ce9 Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'poky')
-rwxr-xr-xpoky/meta/recipes-core/systemd/systemd-systemctl/systemctl15
1 files changed, 8 insertions, 7 deletions
diff --git a/poky/meta/recipes-core/systemd/systemd-systemctl/systemctl b/poky/meta/recipes-core/systemd/systemd-systemctl/systemctl
index 6e5a1b718..2bc648961 100755
--- a/poky/meta/recipes-core/systemd/systemd-systemctl/systemctl
+++ b/poky/meta/recipes-core/systemd/systemd-systemctl/systemctl
@@ -84,11 +84,7 @@ for service in $services; do
else
echo "Try to find location of template $service_base_file of instance $service..."
service_template=true
- if [ -z `echo $service | sed 's/^.\+@\(.*\)\.[^.]\+/\1/'` ]; then
- instance_specified=false
- else
- instance_specified=true
- fi
+ instance_specified=`echo $service | sed 's/^.\+@\(.*\)\.[^.]\+/\1/'`
fi
# find service file
@@ -139,9 +135,14 @@ for service in $services; do
fi
for r in $dependency_list; do
echo "$dependency=$r found in $service"
+ if [ -n "$instance_specified" ]; then
+ # substitute wildcards in the dependency
+ r=`echo $r | sed "s/%i/$instance_specified/g"`
+ fi
+
if [ "$action" = "enable" ]; then
enable_service=$service
- if [ "$service_template" = true -a "$instance_specified" = false ]; then
+ if [ "$service_template" = true -a -z "$instance_specified" ]; then
default_instance=$(sed '/^DefaultInstance[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file")
if [ -z $default_instance ]; then
echo "Template unit without instance or DefaultInstance directive, nothing to enable"
@@ -155,7 +156,7 @@ for service in $services; do
ln -s $service_file $ROOT/etc/systemd/system/$r.$suffix/$enable_service
echo "Enabled $enable_service for $r."
else
- if [ "$service_template" = true -a "$instance_specified" = false ]; then
+ if [ "$service_template" = true -a -z "$instance_specified" ]; then
disable_service="$ROOT/etc/systemd/system/$r.$suffix/`echo $service | sed 's/@/@*/'`"
else
disable_service="$ROOT/etc/systemd/system/$r.$suffix/$service"
OpenPOWER on IntegriCloud