[gnome-continuous-yocto/gnomeostree-3.28-rocko: 3488/8267] systemd.bbclass: don't block on service restart



commit 2965ccfcdb5a5aefb94e6ec8e24832471f47239f
Author: Mark Asselstine <mark asselstine windriver com>
Date:   Thu Nov 24 23:17:14 2016 -0500

    systemd.bbclass: don't block on service restart
    
    The current class works fine when a recipe uses SYSTEMD_AUTO_ENABLE
    'enable' and has no on device pkg_postinst(), ie when the postinst is
    run as part of rootfs creation.  However, when there is a component of
    pkg_postinst() that is run on device the 'systemctl restart' is run as
    part of the run_postinsts.service at boot. This results in the boot
    spinning indefinitely with:
    
    [ *** ] A start job is running for Run pending postinsts (7s / no limit)
    
    The issue could potentially be that the packages service has an
    'After' clause which comes later in the boot, beyond
    run_postinsts.service, creating a chicken before the egg
    scenario. Even service files without an 'After' clause cause this
    situation however. Despite this not being the cause of the issue this
    fix will prevent this scenario from happenning.
    
    Using strace we are able to find that during boot, when
    run_postinsts.service is running attempting to start or restart any
    service will result in the call get stuck on poll(). Since the
    run_postinsts.service does not monitor the outcome of the call to
    restart we can work around this by using '--no-block'.
    
    (From OE-Core rev: 6ad6a0084a73088fc2a27ab9958e5c46d6e094fc)
    
    Signed-off-by: Mark Asselstine <mark asselstine windriver com>
    Signed-off-by: Ross Burton <ross burton intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 meta/classes/systemd.bbclass |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass
index 7e51ed6..99a08a0 100644
--- a/meta/classes/systemd.bbclass
+++ b/meta/classes/systemd.bbclass
@@ -36,7 +36,7 @@ if type systemctl >/dev/null 2>/dev/null; then
        systemctl $OPTS ${SYSTEMD_AUTO_ENABLE} ${SYSTEMD_SERVICE}
 
        if [ -z "$D" -a "${SYSTEMD_AUTO_ENABLE}" = "enable" ]; then
-               systemctl restart ${SYSTEMD_SERVICE}
+               systemctl --no-block restart ${SYSTEMD_SERVICE}
        fi
 fi
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]