summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/systemd/systemd-systemctl/systemctl
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-core/systemd/systemd-systemctl/systemctl')
-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