[oe-commits] [openembedded-core] 04/05: systemd-systemctl-native: handle Install wildcards

git at git.openembedded.org git at git.openembedded.org
Thu Nov 8 07:34:59 UTC 2018


This is an automated email from the git hooks/post-receive script.

rpurdie pushed a commit to branch master-next
in repository openembedded-core.

commit 01887d8bbc14d33d98badfad35367311ca2e82e1
Author: Brad Bishop <bradleyb at fuzziesquirrel.com>
AuthorDate: Mon Nov 5 19:23:07 2018 -0500

    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 at .service
    
      [Install]
      WantedBy=bar@%i.target
    
    Using the real systemctl something like:
    
      $ systemctl enable foo at baz.service
    
    will create a symlink in /etc/systemd/system/bar at baz.target.wants.
    Detect wildcards in templates and make the appropriate substitution.
    
    Signed-off-by: Brad Bishop <bradleyb at fuzziesquirrel.com>
    Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
 meta/recipes-core/systemd/systemd-systemctl/systemctl | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl b/meta/recipes-core/systemd/systemd-systemctl/systemctl
index 6e5a1b7..2bc6489 100755
--- a/meta/recipes-core/systemd/systemd-systemctl/systemctl
+++ b/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"

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Openembedded-commits mailing list