diff options
| -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 |
