[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