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

Burton, Ross ross.burton at intel.com
Wed Jan 22 17:56:52 UTC 2014


Whoops, this fell out of my inbox.   Whilst the is-active check now
means that the service is restarted on upgrades, if the package is
being installed it's now not started if AUTO_ENABLE is set to true.

I think the logic should be "$D unset and (auto enable or is-active)"

Ross

On 19 November 2013 02:26, Li Zhijian <lizhijian at cn.fujitsu.com> wrote:
> 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
>
>
>
> _______________________________________________
> 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