threads / patch / 14475

patchUse SHELL_PATH

Subject: [PATCH] Use SHELL_PATH

## tl;dr

7 messages between Jul 16, 2008 and Jul 17, 2008. Diffs are folded; open one to read it.

replies: 6people: 4as markdown or json

SungHyun Nam· Jul 16, 2008, 01:31 UTC · lore
Signed-off-by: SungHyun Nam <goweol@gmail.com>
---
  t/Makefile |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to t/Makefile +1 −1
diff --git a/t/Makefile b/t/Makefile
index a778865..0d65ced 100644
--- a/t/Makefile
+++ b/t/Makefile
@@ -26,7 +26,7 @@ clean:
  	$(RM) -r 'trash directory' test-results

  aggregate-results:
-	./aggregate-results.sh test-results/t*-*
+	'$(SHELL_PATH_SQ)' ./aggregate-results.sh test-results/t*-*

  # we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
  full-svn-test:
-- 
1.5.6.3.350.g6c11a
Sverre Rabbelier· Jul 16, 2008, 10:47 UTC · re: SungHyun Nam · lore

Re: [PATCH] Use SHELL_PATH

On Wed, Jul 16, 2008 at 3:31 AM, SungHyun Nam <goweol@gmail.com> wrote:
Show 21 quoted lines
>
> Signed-off-by: SungHyun Nam <goweol@gmail.com>
> ---
>  t/Makefile |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/t/Makefile b/t/Makefile
> index a778865..0d65ced 100644
> --- a/t/Makefile
> +++ b/t/Makefile
> @@ -26,7 +26,7 @@ clean:
>        $(RM) -r 'trash directory' test-results
>
>  aggregate-results:
> -       ./aggregate-results.sh test-results/t*-*
> +       '$(SHELL_PATH_SQ)' ./aggregate-results.sh test-results/t*-*
>
>  # we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
>  full-svn-test:
> --
> 1.5.6.3.350.g6c11a

It is not clear to me what this patch does, there is no justification in the commit msg either. Instead you say what is being done, which we can see from the commit diff. Please clarify?

-- 
Cheers,

Sverre Rabbelier
Johannes Schindelin· Jul 16, 2008, 11:00 UTC · re: Sverre Rabbelier · lore

Re: [PATCH] Use SHELL_PATH

Hi,
On Wed, 16 Jul 2008, Sverre Rabbelier wrote:
Show 26 quoted lines
> On Wed, Jul 16, 2008 at 3:31 AM, SungHyun Nam <goweol@gmail.com> wrote:
> >
> > Signed-off-by: SungHyun Nam <goweol@gmail.com>
> > ---
> >  t/Makefile |    2 +-
> >  1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/t/Makefile b/t/Makefile
> > index a778865..0d65ced 100644
> > --- a/t/Makefile
> > +++ b/t/Makefile
> > @@ -26,7 +26,7 @@ clean:
> >        $(RM) -r 'trash directory' test-results
> >
> >  aggregate-results:
> > -       ./aggregate-results.sh test-results/t*-*
> > +       '$(SHELL_PATH_SQ)' ./aggregate-results.sh test-results/t*-*
> >
> >  # we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
> >  full-svn-test:
> > --
> > 1.5.6.3.350.g6c11a
> 
> It is not clear to me what this patch does, there is no justification
> in the commit msg either. Instead you say what is being done, which we
> can see from the commit diff. Please clarify?

My _guess_ is that this comes from a platform like Solaris, where /bin/sh is not even POSIX. And I'd expect aggregate-results to use some non-trivial shell constructs which break with such a broken shell.

But I completely agree, the commit message desperately wants to include some justification.

Ciao, Dscho

Junio C Hamano· Jul 16, 2008, 15:46 UTC · re: Sverre Rabbelier · lore

Re: [PATCH] Use SHELL_PATH

"Sverre Rabbelier" <alturin@gmail.com> writes:
Show 26 quoted lines
> On Wed, Jul 16, 2008 at 3:31 AM, SungHyun Nam <goweol@gmail.com> wrote:
>>
>> Signed-off-by: SungHyun Nam <goweol@gmail.com>
>> ---
>>  t/Makefile |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/t/Makefile b/t/Makefile
>> index a778865..0d65ced 100644
>> --- a/t/Makefile
>> +++ b/t/Makefile
>> @@ -26,7 +26,7 @@ clean:
>>        $(RM) -r 'trash directory' test-results
>>
>>  aggregate-results:
>> -       ./aggregate-results.sh test-results/t*-*
>> +       '$(SHELL_PATH_SQ)' ./aggregate-results.sh test-results/t*-*
>>
>>  # we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
>>  full-svn-test:
>> --
>> 1.5.6.3.350.g6c11a
>
> It is not clear to me what this patch does, there is no justification
> in the commit msg either. Instead you say what is being done, which we
> can see from the commit diff. Please clarify?

It wants to make sure that the shell specified from the toplevel Makefile (or from make command line) is used to run the aggregation script. It is often necessary when platform /bin/sh is not quite POSIX (e.g. the script in question uses arithmetic expansion "$(( $var1 + $var2 ))").

Just saying "Use specified shell to run shell scripts" on the title line would be sufficient, but I wonder if this is the only remaining place...

Junio C Hamano· Jul 16, 2008, 16:05 UTC · re: Junio C Hamano · lore

Re: [PATCH] Use SHELL_PATH

Junio C Hamano <gitster@pobox.com> writes:
Show 7 quoted lines
> It wants to make sure that the shell specified from the toplevel Makefile
> (or from make command line) is used to run the aggregation script.  It is
> often necessary when platform /bin/sh is not quite POSIX (e.g. the script
> in question uses arithmetic expansion "$(( $var1 + $var2 ))").
>
> Just saying "Use specified shell to run shell scripts" on the title line
> would be sufficient, but I wonder if this is the only remaining place...

People on funny platforms might find this one useful, which is consistent with the way the patch under discussion called the shell. This lets you to say

	SHELL_PATH = /Program Files/GNU/Bash
or something silly like that ;-)
 Makefile |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Show changes to Makefile +1 −1
diff --git a/Makefile b/Makefile
index 9b52071..a2b2627 100644
--- a/Makefile
+++ b/Makefile
@@ -153,7 +153,7 @@ all::
 # broken, or spawning external process is slower than built-in grep git has).
 
 GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
-	@$(SHELL_PATH) ./GIT-VERSION-GEN
+	@'$(SHELL_PATH_SQ)' ./GIT-VERSION-GEN
 -include GIT-VERSION-FILE
 
 uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
SungHyun Nam· Jul 17, 2008, 00:32 UTC · re: Junio C Hamano · lore

Re: [PATCH] Use SHELL_PATH

Junio C Hamano wrote:
Show 34 quoted lines
> "Sverre Rabbelier" <alturin@gmail.com> writes:
> 
>> On Wed, Jul 16, 2008 at 3:31 AM, SungHyun Nam <goweol@gmail.com> wrote:
>>> Signed-off-by: SungHyun Nam <goweol@gmail.com>
>>> ---
>>>  t/Makefile |    2 +-
>>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/t/Makefile b/t/Makefile
>>> index a778865..0d65ced 100644
>>> --- a/t/Makefile
>>> +++ b/t/Makefile
>>> @@ -26,7 +26,7 @@ clean:
>>>        $(RM) -r 'trash directory' test-results
>>>
>>>  aggregate-results:
>>> -       ./aggregate-results.sh test-results/t*-*
>>> +       '$(SHELL_PATH_SQ)' ./aggregate-results.sh test-results/t*-*
>>>
>>>  # we can test NO_OPTIMIZE_COMMITS independently of LC_ALL
>>>  full-svn-test:
>>> --
>>> 1.5.6.3.350.g6c11a
>> It is not clear to me what this patch does, there is no justification
>> in the commit msg either. Instead you say what is being done, which we
>> can see from the commit diff. Please clarify?
> 
> It wants to make sure that the shell specified from the toplevel Makefile
> (or from make command line) is used to run the aggregation script.  It is
> often necessary when platform /bin/sh is not quite POSIX (e.g. the script
> in question uses arithmetic expansion "$(( $var1 + $var2 ))").
> 
> Just saying "Use specified shell to run shell scripts" on the title line
> would be sufficient, but I wonder if this is the only remaining place...

For the 'make test', yes, it's the only remaining place to me. Well, I skip the cvs/svn/.. tests which I never use. And I need this patch for the Solaris.

And I also need to run a script function below between 'make all' and 'make test/install'. I hope GIT does this. Of course, GIT's Makefile would use SHELL_PATH and PERL_PATH.

git_fix_interpreter()
{
     p="/usr/local/bin/perl"
     if test -x "$p"
     then
         for f in $(find . -name '*.perl')
         do
             e=$(dirname $f)/$(basename $f .perl)
             [ -f "$e" -a -x "$e" ] \
                 && "$p" -pi -e 
's@^#!/usr/(bin/perl.*)$@#!/usr/local/\1@g' "$e"
         done
     fi
     if test -x /bin/bash
     then
         for f in $(find . -name '*.sh')
         do
             e=$(dirname $f)/$(basename $f .sh)
             [ -f "$e" -a -x "$e" ] \
                 && "$p" -pi -e 's@^#!/bin/sh(.*)$@#!/bin/bash\1@g' "$e"
         done
     fi
}
SungHyun Nam· Jul 17, 2008, 00:38 UTC · re: SungHyun Nam · lore

Re: [PATCH] Use SHELL_PATH

SungHyun Nam wrote:
> And I also need to run a script function below between 'make all'
> and 'make test/install'. I hope GIT does this. Of course, GIT's
> Makefile would use SHELL_PATH and PERL_PATH.

Oops! I'm sorry! Ignore this part. GIT alreay does it, just i didn't realize that.

Regards, namsh

← back to recent threads