Patchwork systemctl: Support all unit types in the directives.

login
register
mail settings
Submitter Randy Witt
Date June 21, 2013, 4:12 a.m.
Message ID <1371787977-20263-1-git-send-email-rewitt@declaratino.com>
Download mbox | patch
Permalink /patch/52197/
State Accepted
Commit 44c5b770ab11d0020cd6fff8936215d627d483e9
Headers show

Comments

Randy Witt - June 21, 2013, 4:12 a.m.
The Alias and WantedBy directives can accept all valid unit types when
using the systemctl from systemd. And since the systemctl script should
match the behavior of systemd as much as possible, add the current set
of unit types listed at
http://www.freedesktop.org/software/systemd/man/systemd.unit.html
to the Alias and WantedBy directives.

The deficiency was exposed when trying to use:
    Alias=default.target
in a foo.target. No symlink was created by running
"systemctl enable foo.target" during the package's postinst.

Signed-off-by: Randy Witt <rewitt@declaratino.com>
---
 meta/recipes-core/systemd/systemd-systemctl/systemctl | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Patch

diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl b/meta/recipes-core/systemd/systemd-systemctl/systemctl
index 8abbdf6..f786656 100755
--- a/meta/recipes-core/systemd/systemd-systemctl/systemctl
+++ b/meta/recipes-core/systemd/systemd-systemctl/systemctl
@@ -77,10 +77,14 @@  for service in $services; do
 	fi
 	echo "Found $service in $service_file"
 
+	# If any new unit types are added to systemd they should be added
+	# to this regular expression.
+	unit_types_re='\.\(service\|socket\|device\|mount\|automount\|swap\|target\|path\|timer\|snapshot\)$'
+
 	# create the required symbolic links
 	wanted_by=$(sed '/^WantedBy[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
 		        | tr ',' '\n' \
-		        | grep '\(\.target$\)\|\(\.service$\)')
+		        | grep "$unit_types_re")
 
 	for r in $wanted_by; do
 		echo "WantedBy=$r found in $service"
@@ -98,7 +102,7 @@  for service in $services; do
 	# create the required symbolic 'Alias' links
 	alias=$(sed '/^Alias[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
 		        | tr ',' '\n' \
-		        | grep '\.service$')
+		        | grep "$unit_types_re")
 
 	for r in $alias; do
 		if [ "$action" = "enable" ]; then