summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/systemd
diff options
context:
space:
mode:
authorTomas Novotny <tomas@novotny.cz>2016-02-26 15:57:40 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-02-28 11:33:07 +0000
commitb33efa964a227366e3f91ec6995484b6fbf37c97 (patch)
tree2fbee1a167ec958e5225921448902831c2ad8921 /meta/recipes-core/systemd
parent8caa5921da97d8d4e8434e1381da43697e6232a2 (diff)
downloadpoky-b33efa964a227366e3f91ec6995484b6fbf37c97.tar.gz
systemctl: handle RequiredBy dependencies
Install section of a systemd service may contain RequiredBy dependency, which is not handled currently. This means that symlinks to enable the service are not created and the service may not be started. Also fix debug output (all dependencies were printed instead of the one which was enabled or disabled). (From OE-Core rev: 6f4d9d9675ce39f5154de30b2921ada019a93d0f) Signed-off-by: Tomas Novotny <tomas@novotny.cz> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/systemd')
-rwxr-xr-xmeta/recipes-core/systemd/systemd-systemctl/systemctl61
1 files changed, 37 insertions, 24 deletions
diff --git a/meta/recipes-core/systemd/systemd-systemctl/systemctl b/meta/recipes-core/systemd/systemd-systemctl/systemctl
index 697fbd59df..1164dd4950 100755
--- a/meta/recipes-core/systemd/systemd-systemctl/systemctl
+++ b/meta/recipes-core/systemd/systemd-systemctl/systemctl
@@ -125,33 +125,46 @@ for service in $services; do
125 | tr ',' '\n' \ 125 | tr ',' '\n' \
126 | grep "$unit_types_re") 126 | grep "$unit_types_re")
127 127
128 for r in $wanted_by; do 128 required_by=$(sed '/^RequiredBy[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file" \
129 echo "WantedBy=$r found in $service" 129 | tr ',' '\n' \
130 if [ "$action" = "enable" ]; then 130 | grep "$unit_types_re")
131 enable_service=$service 131
132 if [ "$service_template" = true -a "$instance_specified" = false ]; then 132 for dependency in WantedBy RequiredBy; do
133 default_instance=$(sed '/^DefaultInstance[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file") 133 if [ "$dependency" = "WantedBy" ]; then
134 if [ -z $default_instance ]; then 134 suffix="wants"
135 echo "Template unit without instance or DefaultInstance directive, nothing to enable" 135 dependency_list="$wanted_by"
136 continue 136 elif [ "$dependency" = "RequiredBy" ]; then
137 else 137 suffix="requires"
138 echo "Found DefaultInstance $default_instance, enabling it" 138 dependency_list="$required_by"
139 enable_service=$(echo $service | sed "s/@/@$(echo $default_instance | sed 's/\\/\\\\/g')/") 139 fi
140 for r in $dependency_list; do
141 echo "$dependency=$r found in $service"
142 if [ "$action" = "enable" ]; then
143 enable_service=$service
144 if [ "$service_template" = true -a "$instance_specified" = false ]; then
145 default_instance=$(sed '/^DefaultInstance[[:space:]]*=/s,[^=]*=,,p;d' "$ROOT/$service_file")
146 if [ -z $default_instance ]; then
147 echo "Template unit without instance or DefaultInstance directive, nothing to enable"
148 continue
149 else
150 echo "Found DefaultInstance $default_instance, enabling it"
151 enable_service=$(echo $service | sed "s/@/@$(echo $default_instance | sed 's/\\/\\\\/g')/")
152 fi
140 fi 153 fi
141 fi 154 mkdir -p $ROOT/etc/systemd/system/$r.$suffix
142 mkdir -p $ROOT/etc/systemd/system/$r.wants 155 ln -s $service_file $ROOT/etc/systemd/system/$r.$suffix/$enable_service
143 ln -s $service_file $ROOT/etc/systemd/system/$r.wants/$enable_service 156 echo "Enabled $enable_service for $r."
144 echo "Enabled $enable_service for $wanted_by."
145 else
146 if [ "$service_template" = true -a "$instance_specified" = false ]; then
147 disable_service="$ROOT/etc/systemd/system/$r.wants/`echo $service | sed 's/@/@*/'`"
148 else 157 else
149 disable_service="$ROOT/etc/systemd/system/$r.wants/$service" 158 if [ "$service_template" = true -a "$instance_specified" = false ]; then
159 disable_service="$ROOT/etc/systemd/system/$r.$suffix/`echo $service | sed 's/@/@*/'`"
160 else
161 disable_service="$ROOT/etc/systemd/system/$r.$suffix/$service"
162 fi
163 rm -f $disable_service
164 [ -d $ROOT/etc/systemd/system/$r.$suffix ] && rmdir --ignore-fail-on-non-empty -p $ROOT/etc/systemd/system/$r.$suffix
165 echo "Disabled ${disable_service##$ROOT/etc/systemd/system/$r.$suffix/} for $r."
150 fi 166 fi
151 rm -f $disable_service 167 done
152 [ -d $ROOT/etc/systemd/system/$r.wants ] && rmdir --ignore-fail-on-non-empty -p $ROOT/etc/systemd/system/$r.wants
153 echo "Disabled ${disable_service##$ROOT/etc/systemd/system/$r.wants/} for $wanted_by."
154 fi
155 done 168 done
156 169
157 # create the required symbolic 'Alias' links 170 # create the required symbolic 'Alias' links