systat: systemd never enables the service

Submitted by Stefano Babic on May 31, 2019, 8:54 a.m. | Patch ID: 161827

Details

Message ID 20190531085447.827-1-sbabic@denx.de
State Not Applicable
Headers show

Commit Message

Stefano Babic May 31, 2019, 8:54 a.m.
Even if SYSTEMD_AUTO_ENABLE is set to "enable", the service is never
activated by systemd. The cause is the postinst function in the recipe:

 pkg_postinst_${PN} () {
         if [ -n "$D" ]; then
                 exit 0
         fi
         if [ -e /etc/init.d/populate-volatile.sh ]; then
                 /etc/init.d/populate-volatile.sh update
         fi
 }

This generates with activated systemd the following postinst script:

	set -e
	        if [ -n "$D" ]; then
	                exit 0
	        fi
	        if [ -e /etc/init.d/populate-volatile.sh ]; then
	                /etc/init.d/populate-volatile.sh update
	        fi
	OPTS=""

	if [ -n "$D" ]; then
	    OPTS="--root=$D"
	fi

	if type systemctl >/dev/null 2>/dev/null; then
		if [ -z "$D" ]; then
			systemctl daemon-reload
		fi

		systemctl $OPTS enable sysstat.service

		if [ -z "$D" -a "enable" = "enable" ]; then
			systemctl --no-block restart sysstat.service
		fi
	fi

Due to the exit statement, systemctl is never called and the service is
never enabled in rootfs.
Invert the logic for the check to let run the rest of postinst script.

Signed-off-by: Stefano Babic <sbabic@denx.de>
---
 meta/recipes-extended/sysstat/sysstat.inc | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

Patch hide | download patch | download mbox

diff --git a/meta/recipes-extended/sysstat/sysstat.inc b/meta/recipes-extended/sysstat/sysstat.inc
index 0bc7e14d36..850a6d1465 100644
--- a/meta/recipes-extended/sysstat/sysstat.inc
+++ b/meta/recipes-extended/sysstat/sysstat.inc
@@ -51,12 +51,11 @@  do_install() {
 }
 
 pkg_postinst_${PN} () {
-        if [ -n "$D" ]; then
-                exit 0
-        fi
-        if [ -e /etc/init.d/populate-volatile.sh ]; then
-                /etc/init.d/populate-volatile.sh update
-        fi
+	if [  ! -n "$D" ]; then
+		if [ -e /etc/init.d/populate-volatile.sh ]; then
+			/etc/init.d/populate-volatile.sh update
+		fi
+	fi
 }
 
 

Comments

Khem Raj June 17, 2019, 5:44 a.m.
this is wrong ml for this package, please send this to oe-core ml.

On Fri, May 31, 2019 at 2:04 AM Stefano Babic <sbabic@denx.de> wrote:
>
> Even if SYSTEMD_AUTO_ENABLE is set to "enable", the service is never
> activated by systemd. The cause is the postinst function in the recipe:
>
>  pkg_postinst_${PN} () {
>          if [ -n "$D" ]; then
>                  exit 0
>          fi
>          if [ -e /etc/init.d/populate-volatile.sh ]; then
>                  /etc/init.d/populate-volatile.sh update
>          fi
>  }
>
> This generates with activated systemd the following postinst script:
>
>         set -e
>                 if [ -n "$D" ]; then
>                         exit 0
>                 fi
>                 if [ -e /etc/init.d/populate-volatile.sh ]; then
>                         /etc/init.d/populate-volatile.sh update
>                 fi
>         OPTS=""
>
>         if [ -n "$D" ]; then
>             OPTS="--root=$D"
>         fi
>
>         if type systemctl >/dev/null 2>/dev/null; then
>                 if [ -z "$D" ]; then
>                         systemctl daemon-reload
>                 fi
>
>                 systemctl $OPTS enable sysstat.service
>
>                 if [ -z "$D" -a "enable" = "enable" ]; then
>                         systemctl --no-block restart sysstat.service
>                 fi
>         fi
>
> Due to the exit statement, systemctl is never called and the service is
> never enabled in rootfs.
> Invert the logic for the check to let run the rest of postinst script.
>
> Signed-off-by: Stefano Babic <sbabic@denx.de>
> ---
>  meta/recipes-extended/sysstat/sysstat.inc | 11 +++++------
>  1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/meta/recipes-extended/sysstat/sysstat.inc b/meta/recipes-extended/sysstat/sysstat.inc
> index 0bc7e14d36..850a6d1465 100644
> --- a/meta/recipes-extended/sysstat/sysstat.inc
> +++ b/meta/recipes-extended/sysstat/sysstat.inc
> @@ -51,12 +51,11 @@ do_install() {
>  }
>
>  pkg_postinst_${PN} () {
> -        if [ -n "$D" ]; then
> -                exit 0
> -        fi
> -        if [ -e /etc/init.d/populate-volatile.sh ]; then
> -                /etc/init.d/populate-volatile.sh update
> -        fi
> +       if [  ! -n "$D" ]; then
> +               if [ -e /etc/init.d/populate-volatile.sh ]; then
> +                       /etc/init.d/populate-volatile.sh update
> +               fi
> +       fi
>  }
>
>
> --
> 2.17.1
>
> --
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
Stefano Babic June 18, 2019, 9:47 a.m.
On 17/06/19 07:44, Khem Raj wrote:
> this is wrong ml for this package, please send this to oe-core ml.

Ouch...thanks Khem, I will repost.

Stefano

> 
> On Fri, May 31, 2019 at 2:04 AM Stefano Babic <sbabic@denx.de> wrote:
>>
>> Even if SYSTEMD_AUTO_ENABLE is set to "enable", the service is never
>> activated by systemd. The cause is the postinst function in the recipe:
>>
>>  pkg_postinst_${PN} () {
>>          if [ -n "$D" ]; then
>>                  exit 0
>>          fi
>>          if [ -e /etc/init.d/populate-volatile.sh ]; then
>>                  /etc/init.d/populate-volatile.sh update
>>          fi
>>  }
>>
>> This generates with activated systemd the following postinst script:
>>
>>         set -e
>>                 if [ -n "$D" ]; then
>>                         exit 0
>>                 fi
>>                 if [ -e /etc/init.d/populate-volatile.sh ]; then
>>                         /etc/init.d/populate-volatile.sh update
>>                 fi
>>         OPTS=""
>>
>>         if [ -n "$D" ]; then
>>             OPTS="--root=$D"
>>         fi
>>
>>         if type systemctl >/dev/null 2>/dev/null; then
>>                 if [ -z "$D" ]; then
>>                         systemctl daemon-reload
>>                 fi
>>
>>                 systemctl $OPTS enable sysstat.service
>>
>>                 if [ -z "$D" -a "enable" = "enable" ]; then
>>                         systemctl --no-block restart sysstat.service
>>                 fi
>>         fi
>>
>> Due to the exit statement, systemctl is never called and the service is
>> never enabled in rootfs.
>> Invert the logic for the check to let run the rest of postinst script.
>>
>> Signed-off-by: Stefano Babic <sbabic@denx.de>
>> ---
>>  meta/recipes-extended/sysstat/sysstat.inc | 11 +++++------
>>  1 file changed, 5 insertions(+), 6 deletions(-)
>>
>> diff --git a/meta/recipes-extended/sysstat/sysstat.inc b/meta/recipes-extended/sysstat/sysstat.inc
>> index 0bc7e14d36..850a6d1465 100644
>> --- a/meta/recipes-extended/sysstat/sysstat.inc
>> +++ b/meta/recipes-extended/sysstat/sysstat.inc
>> @@ -51,12 +51,11 @@ do_install() {
>>  }
>>
>>  pkg_postinst_${PN} () {
>> -        if [ -n "$D" ]; then
>> -                exit 0
>> -        fi
>> -        if [ -e /etc/init.d/populate-volatile.sh ]; then
>> -                /etc/init.d/populate-volatile.sh update
>> -        fi
>> +       if [  ! -n "$D" ]; then
>> +               if [ -e /etc/init.d/populate-volatile.sh ]; then
>> +                       /etc/init.d/populate-volatile.sh update
>> +               fi
>> +       fi
>>  }
>>
>>
>> --
>> 2.17.1
>>
>> --
>> _______________________________________________
>> Openembedded-devel mailing list
>> Openembedded-devel@lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-devel