[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