Patchwork update-rc.d.bbclass: Fix host/target test in postinst

login
register
mail settings
Submitter Jacob Kroon
Date Oct. 26, 2013, 10:36 p.m.
Message ID <1382827017-724-1-git-send-email-jacob.kroon@gmail.com>
Download mbox | patch
Permalink /patch/60527/
State New
Headers show

Comments

Jacob Kroon - Oct. 26, 2013, 10:36 p.m.
When running the postinst script I get a shell warning:

sh: argument expected

and the service is never stopped. This patch fixes the warning
message and stops the service.

Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com>
---
 meta/classes/update-rc.d.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
Hans Beckérus - Oct. 27, 2013, 7:18 a.m.
On 2013-10-27 12:36, Jacob Kroon wrote:
> When running the postinst script I get a shell warning:
>
> sh: argument expected
>
> and the service is never stopped. This patch fixes the warning
> message and stops the service.
This patch does not look right to me?
If length of $(D) is zero the condition will *always* be true. Instead of actually testing the existence of "${INIT_D_DIR}/${INITSCRIPT_NAME}" it is now simply converted to a string. What did I miss ;)

Thanks.
Hans

> Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com>
> ---
>  meta/classes/update-rc.d.bbclass | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass
> index e14659d..835b717 100644
> --- a/meta/classes/update-rc.d.bbclass
> +++ b/meta/classes/update-rc.d.bbclass
> @@ -16,7 +16,7 @@ updatercd_postinst() {
>  # test if there is a previous init script there, ie, we are updating the package
>  # if so, we stop the service and remove it before we install from the new package
>  if type update-rc.d >/dev/null 2>/dev/null; then
> -	if [ -z "$D" -a `test -f "${INIT_D_DIR}/${INITSCRIPT_NAME}"` ]; then
> +	if [ -z "$D" -a "test -f ${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
>  		${INIT_D_DIR}/${INITSCRIPT_NAME} stop
>  	fi
>  	if [ -n "$D" ]; then
Jacob Kroon - Oct. 27, 2013, 7:25 a.m.
Hi Hans,
I'm far from being a scripting-expert, so I just did what I could in order
to get rid of the warning and stop the service.
Sending this patch was just a way to raise some attention to the bug and
get some discussion going :-)
If there are other ways one should proceed instead of sending "broken"
patches to the mailing list I will do so in the future.
Regards
Jacob


On Sun, Oct 27, 2013 at 8:18 AM, Hans Beckerus <hans.beckerus@gmail.com>wrote:

> On 2013-10-27 12:36, Jacob Kroon wrote:
> > When running the postinst script I get a shell warning:
> >
> > sh: argument expected
> >
> > and the service is never stopped. This patch fixes the warning
> > message and stops the service.
> This patch does not look right to me?
> If length of $(D) is zero the condition will *always* be true. Instead of
> actually testing the existence of "${INIT_D_DIR}/${INITSCRIPT_NAME}" it is
> now simply converted to a string. What did I miss ;)
>
> Thanks.
> Hans
>
> > Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com>
> > ---
> >  meta/classes/update-rc.d.bbclass | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/meta/classes/update-rc.d.bbclass
> b/meta/classes/update-rc.d.bbclass
> > index e14659d..835b717 100644
> > --- a/meta/classes/update-rc.d.bbclass
> > +++ b/meta/classes/update-rc.d.bbclass
> > @@ -16,7 +16,7 @@ updatercd_postinst() {
> >  # test if there is a previous init script there, ie, we are updating
> the package
> >  # if so, we stop the service and remove it before we install from the
> new package
> >  if type update-rc.d >/dev/null 2>/dev/null; then
> > -     if [ -z "$D" -a `test -f "${INIT_D_DIR}/${INITSCRIPT_NAME}"` ];
> then
> > +     if [ -z "$D" -a "test -f ${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
> >               ${INIT_D_DIR}/${INITSCRIPT_NAME} stop
> >       fi
> >       if [ -n "$D" ]; then
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
Hans Beckérus - Oct. 27, 2013, 7:51 a.m.
On 2013-10-27 8:25, Jacob Kroon wrote:
> Hi Hans,
> I'm far from being a scripting-expert, so I just did what I could in order to 
> get rid of the warning and stop the service.
> Sending this patch was just a way to raise some attention to the bug and get 
> some discussion going :-)
No problem ;)
Try this instead

if [ -z "$D" -a -f "${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
                echo stop
fi

Thanks.
Hans

> If there are other ways one should proceed instead of sending "broken" patches 
> to the mailing list I will do so in the future.
> Regards
> Jacob
>
>
> On Sun, Oct 27, 2013 at 8:18 AM, Hans Beckerus <hans.beckerus@gmail.com 
> <mailto:hans.beckerus@gmail.com>> wrote:
>
>     On 2013-10-27 12:36, Jacob Kroon wrote:
>      > When running the postinst script I get a shell warning:
>      >
>      > sh: argument expected
>      >
>      > and the service is never stopped. This patch fixes the warning
>      > message and stops the service.
>     This patch does not look right to me?
>     If length of $(D) is zero the condition will *always* be true. Instead of
>     actually testing the existence of "${INIT_D_DIR}/${INITSCRIPT_NAME}" it is
>     now simply converted to a string. What did I miss ;)
>
>     Thanks.
>     Hans
>
>      > Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com
>     <mailto:jacob.kroon@gmail.com>>
>      > ---
>      >  meta/classes/update-rc.d.bbclass | 2 +-
>      >  1 file changed, 1 insertion(+), 1 deletion(-)
>      >
>      > diff --git a/meta/classes/update-rc.d.bbclass
>     b/meta/classes/update-rc.d.bbclass
>      > index e14659d..835b717 100644
>      > --- a/meta/classes/update-rc.d.bbclass
>      > +++ b/meta/classes/update-rc.d.bbclass
>      > @@ -16,7 +16,7 @@ updatercd_postinst() {
>      >  # test if there is a previous init script there, ie, we are updating the
>     package
>      >  # if so, we stop the service and remove it before we install from the
>     new package
>      >  if type update-rc.d >/dev/null 2>/dev/null; then
>      > -     if [ -z "$D" -a `test -f "${INIT_D_DIR}/${INITSCRIPT_NAME}"` ]; then
>      > +     if [ -z "$D" -a "test -f ${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
>      >               ${INIT_D_DIR}/${INITSCRIPT_NAME} stop
>      >       fi
>      >       if [ -n "$D" ]; then
>
>     _______________________________________________
>     Openembedded-core mailing list
>     Openembedded-core@lists.openembedded.org
>     <mailto:Openembedded-core@lists.openembedded.org>
>     http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
>
>
>
> -- 
>    -- Jacob
Hans Beckérus - Oct. 27, 2013, 8:17 a.m.
> 27 okt 2013 kl. 08:51 skrev Hans Beckerus <hans.beckerus@gmail.com>:
> 
>> On 2013-10-27 8:25, Jacob Kroon wrote:
>> Hi Hans,
>> I'm far from being a scripting-expert, so I just did what I could in order to 
>> get rid of the warning and stop the service.
>> Sending this patch was just a way to raise some attention to the bug and get 
>> some discussion going :-)
> No problem ;)
> Try this instead
> 
> if [ -z "$D" -a -f "${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
>                echo stop
> fi
> 
...and of course replace the 'echo stop' with the previous real call to the init script. This was only to test the syntax.

> Thanks.
> Hans
> 
>> If there are other ways one should proceed instead of sending "broken" patches 
>> to the mailing list I will do so in the future.
>> Regards
>> Jacob
>> 
>> 
>> On Sun, Oct 27, 2013 at 8:18 AM, Hans Beckerus <hans.beckerus@gmail.com 
>> <mailto:hans.beckerus@gmail.com>> wrote:
>> 
>>>    On 2013-10-27 12:36, Jacob Kroon wrote:
>>> When running the postinst script I get a shell warning:
>>> 
>>> sh: argument expected
>>> 
>>> and the service is never stopped. This patch fixes the warning
>>> message and stops the service.
>>    This patch does not look right to me?
>>    If length of $(D) is zero the condition will *always* be true. Instead of
>>    actually testing the existence of "${INIT_D_DIR}/${INITSCRIPT_NAME}" it is
>>    now simply converted to a string. What did I miss ;)
>> 
>>    Thanks.
>>    Hans
>> 
>>> Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com
>>    <mailto:jacob.kroon@gmail.com>>
>>> ---
>>> meta/classes/update-rc.d.bbclass | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>> 
>>> diff --git a/meta/classes/update-rc.d.bbclass
>>    b/meta/classes/update-rc.d.bbclass
>>> index e14659d..835b717 100644
>>> --- a/meta/classes/update-rc.d.bbclass
>>> +++ b/meta/classes/update-rc.d.bbclass
>>> @@ -16,7 +16,7 @@ updatercd_postinst() {
>>> # test if there is a previous init script there, ie, we are updating the
>>    package
>>> # if so, we stop the service and remove it before we install from the
>>    new package
>>> if type update-rc.d >/dev/null 2>/dev/null; then
>>> -     if [ -z "$D" -a `test -f "${INIT_D_DIR}/${INITSCRIPT_NAME}"` ]; then
>>> +     if [ -z "$D" -a "test -f ${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
>>>              ${INIT_D_DIR}/${INITSCRIPT_NAME} stop
>>>      fi
>>>      if [ -n "$D" ]; then
>> 
>>    _______________________________________________
>>    Openembedded-core mailing list
>>    Openembedded-core@lists.openembedded.org
>>    <mailto:Openembedded-core@lists.openembedded.org>
>>    http://lists.openembedded.org/mailman/listinfo/openembedded-core
>> 
>> 
>> 
>> 
>> -- 
>>   -- Jacob
>
Martin Jansa - Oct. 27, 2013, 3:08 p.m.
On Sun, Oct 27, 2013 at 12:36:57AM +0200, Jacob Kroon wrote:
> When running the postinst script I get a shell warning:
> 
> sh: argument expected
> 
> and the service is never stopped. This patch fixes the warning
> message and stops the service.
> 
> Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com>
> ---
>  meta/classes/update-rc.d.bbclass | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass
> index e14659d..835b717 100644
> --- a/meta/classes/update-rc.d.bbclass
> +++ b/meta/classes/update-rc.d.bbclass
> @@ -16,7 +16,7 @@ updatercd_postinst() {
>  # test if there is a previous init script there, ie, we are updating the package
>  # if so, we stop the service and remove it before we install from the new package
>  if type update-rc.d >/dev/null 2>/dev/null; then
> -	if [ -z "$D" -a `test -f "${INIT_D_DIR}/${INITSCRIPT_NAME}"` ]; then
> +	if [ -z "$D" -a "test -f ${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then

I guess you want

+	if [ -z "$D" -a -f "${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then

here

>  		${INIT_D_DIR}/${INITSCRIPT_NAME} stop
>  	fi
>  	if [ -n "$D" ]; then
> -- 
> 1.8.3.1
> 
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core

Patch

diff --git a/meta/classes/update-rc.d.bbclass b/meta/classes/update-rc.d.bbclass
index e14659d..835b717 100644
--- a/meta/classes/update-rc.d.bbclass
+++ b/meta/classes/update-rc.d.bbclass
@@ -16,7 +16,7 @@  updatercd_postinst() {
 # test if there is a previous init script there, ie, we are updating the package
 # if so, we stop the service and remove it before we install from the new package
 if type update-rc.d >/dev/null 2>/dev/null; then
-	if [ -z "$D" -a `test -f "${INIT_D_DIR}/${INITSCRIPT_NAME}"` ]; then
+	if [ -z "$D" -a "test -f ${INIT_D_DIR}/${INITSCRIPT_NAME}" ]; then
 		${INIT_D_DIR}/${INITSCRIPT_NAME} stop
 	fi
 	if [ -n "$D" ]; then