From: Li Zhijian <lizhij...@cn.fujitsu.com> If systemd_postinst is installed as a delayed package scriptlet (installed to /etc/rpm-postints/${PN}) which would be executed at the first time of OS startup. And then this script would block when it is trying to call systemctl to restart service.
It seems that it is not a good timing to restart service at run-postinsts. I test serval services which has supported systemd(uuidd/avahi-daemon), all of them will block the startup. Steps to reproduce: 1) Installed systemd_postinst as a delayed package scriptlet i.e. Append Following lines to meta/recipes-core/busybox/busybox.inc pkg_postinst_${PN}-syslog () { if [ "x$D" != "x" ] ; then exit 1 fi } 2) build a rootfs # bitbake core-image-minimal 3) startup this rootfs OS would block at /etc/rpm-postinsts/busybox-syslog, like follows [ ***] A start job is running ro Run pending postinsts This patch can fix the block problem, and make the service is consistent with the original status Signed-off-by: Li Zhijian <lizhij...@cn.fujitsu.com> --- meta/classes/systemd.bbclass | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/meta/classes/systemd.bbclass b/meta/classes/systemd.bbclass index 8084251..9fef667 100644 --- a/meta/classes/systemd.bbclass +++ b/meta/classes/systemd.bbclass @@ -30,7 +30,8 @@ fi 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 + if [ -z "$D" ] && [ systemctl status ${SYSTEMD_SERVICE} &>/dev/null ]; then + # if service is running, restart it systemctl restart ${SYSTEMD_SERVICE} fi fi -- 1.7.1 _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core