[OE-core] [PATCH v2] systemd.bbclass: only restart the service when it is active at systemd_postinst

Li Zhijian lizhijian at cn.fujitsu.com
Tue Nov 19 02:26:54 UTC 2013


ping...

-- 
Best regards.
Li Zhijian

 |-----Original Message-----
 |From: openembedded-core-bounces at lists.openembedded.org
 |[mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf Of
 |Li Zhijian
 |Sent: Tuesday, November 05, 2013 6:14 PM
 |To: Patches and discussions about the oe-core layer
 |Subject: [OE-core] [PATCH v2] systemd.bbclass: only restart the service
 |when it is active at systemd_postinst
 |
 |From: Li Zhijian <lizhijian at 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 <lizhijian at 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 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
 |Openembedded-core at lists.openembedded.org
 |http://lists.openembedded.org/mailman/listinfo/openembedded-core






More information about the Openembedded-core mailing list