ping... -- Best regards. Li Zhijian
|-----Original Message----- |From: openembedded-core-boun...@lists.openembedded.org |[mailto:openembedded-core-boun...@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 <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 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@lists.openembedded.org |http://lists.openembedded.org/mailman/listinfo/openembedded-core _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core