diff options
Diffstat (limited to 'meta/recipes-core')
-rwxr-xr-x | meta/recipes-core/systemd/systemd-systemctl/systemctl | 61 |
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 |