[OE-core] [PATCH 1/1] systemd.bbclass: only restart the service when it is running at systemd_postinst
Li Zhijian
lizhijian at cn.fujitsu.com
Tue Nov 5 10:11:44 UTC 2013
This patch is incorrect, please ignore it
i would send v2 soon.
at 2013/11/4 18:38, Li Zhijian wrote:
> 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 8084251..9fef667 100644
> --- a/meta/classes/systemd.bbclass
> +++ b/meta/classes/systemd.bbclass
> @@ -30,7 +30,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 status ${SYSTEMD_SERVICE} &>/dev/null ]; then
Should be:
if [ -z "$D" ] && systemctl status ${SYSTEMD_SERVICE} &>/dev/null; then
--
Best regards.
Li Zhijian
> + # if service is running, restart it
> systemctl restart ${SYSTEMD_SERVICE}
> fi
> fi
--
Best regards.
Li Zhijian (8555)
More information about the Openembedded-core
mailing list