* [PATCH 1/1] systemd.bbclass: only restart the service when it is running at systemd_postinst
@ 2013-11-04 10:38 Li Zhijian
2013-11-05 10:11 ` Li Zhijian
0 siblings, 1 reply; 2+ messages in thread
From: Li Zhijian @ 2013-11-04 10:38 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
From: Li Zhijian <lizhijian@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@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
+ # if service is running, restart it
systemctl restart ${SYSTEMD_SERVICE}
fi
fi
--
1.7.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 1/1] systemd.bbclass: only restart the service when it is running at systemd_postinst
2013-11-04 10:38 [PATCH 1/1] systemd.bbclass: only restart the service when it is running at systemd_postinst Li Zhijian
@ 2013-11-05 10:11 ` Li Zhijian
0 siblings, 0 replies; 2+ messages in thread
From: Li Zhijian @ 2013-11-05 10:11 UTC (permalink / raw)
To: Patches and discussions about the oe-core layer
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@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@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)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-11-05 10:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-04 10:38 [PATCH 1/1] systemd.bbclass: only restart the service when it is running at systemd_postinst Li Zhijian
2013-11-05 10:11 ` Li Zhijian
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox