Since SYSTEMD_SERVICE_ESCAPED may contain both system and user services
we need to filter out user services in call to systemctl. Introduce
helper systemd_filter_services() which takes space-separated list of
services and returns services of requested type.

Signed-off-by: Artur Kowalski <[email protected]>
---
 meta/classes-recipe/systemd.bbclass | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/meta/classes-recipe/systemd.bbclass 
b/meta/classes-recipe/systemd.bbclass
index 592f15a4b7..177ee5d974 100644
--- a/meta/classes-recipe/systemd.bbclass
+++ b/meta/classes-recipe/systemd.bbclass
@@ -37,17 +37,19 @@ if systemctl >/dev/null 2>/dev/null; then
        fi
 
        if [ "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then
-               for service in ${SYSTEMD_SERVICE_ESCAPED}; do
+               for service in 
${@systemd_filter_services("${SYSTEMD_SERVICE_ESCAPED}", False, d)}; do
                        systemctl ${OPTS} enable "$service"
                done
        fi
 
        if [ -z "$D" ]; then
                systemctl daemon-reload
-               systemctl preset ${SYSTEMD_SERVICE_ESCAPED}
+               [ -n "${@systemd_filter_services("${SYSTEMD_SERVICE_ESCAPED}", 
False, d)}" ] && \
+                       systemctl preset 
${@systemd_filter_services("${SYSTEMD_SERVICE_ESCAPED}", False, d)}
 
                if [ "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then
-                       systemctl --no-block restart ${SYSTEMD_SERVICE_ESCAPED}
+                       [ -n 
"${@systemd_filter_services("${SYSTEMD_SERVICE_ESCAPED}", False, d)}" ] && \
+                               systemctl --no-block restart 
${@systemd_filter_services("${SYSTEMD_SERVICE_ESCAPED}", False, d)}
                fi
        fi
 fi
@@ -56,9 +58,10 @@ fi
 systemd_prerm() {
 if systemctl >/dev/null 2>/dev/null; then
        if [ -z "$D" ]; then
-               systemctl stop ${SYSTEMD_SERVICE_ESCAPED}
-
-               systemctl disable ${SYSTEMD_SERVICE_ESCAPED}
+               if [ -n 
"${@systemd_filter_services("${SYSTEMD_SERVICE_ESCAPED}", False, d)}" ]; then
+                       systemctl stop 
${@systemd_filter_services("${SYSTEMD_SERVICE_ESCAPED}", False, d)}
+                       systemctl disable 
${@systemd_filter_services("${SYSTEMD_SERVICE_ESCAPED}", False, d)}
+               fi
        fi
 fi
 }
-- 
2.47.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#209798): 
https://lists.openembedded.org/g/openembedded-core/message/209798
Mute This Topic: https://lists.openembedded.org/mt/110606434/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to