From: Li Zhijian <[email protected]>
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 <[email protected]>
---
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 3700b2e..1feac06 100644
--- a/meta/classes/systemd.bbclass
+++ b/meta/classes/systemd.bbclass
@@ -32,7 +32,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 is-active ${SYSTEMD_SERVICE} &>/dev/null;
then
+ # if service is active, restart it
systemctl restart ${SYSTEMD_SERVICE}
fi
fi
--
1.7.1
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core