# [PATCH] Use SHELL_PATH

7 messages from 2008-07-16 to 2008-07-17. Participants: SungHyun Nam, Sverre Rabbelier, Johannes Schindelin, Junio C Hamano.
Thread: https://gitlist.dev/t/14475

## SungHyun Nam, 2008-07-16 01:31

Subject: [PATCH] Use SHELL_PATH
Message-ID: <g5jj21$bsp$1@ger.gmane.org>
URL: https://gitlist.dev/e/g5jj21%24bsp%241%40ger.gmane.org

```

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

```

## Sverre Rabbelier, 2008-07-16 10:47

Subject: Re: [PATCH] Use SHELL_PATH
Message-ID: <bd6139dc0807160347n2ebcd64fy7a15fe94bfabe580@mail.gmail.com>
URL: https://gitlist.dev/e/bd6139dc0807160347n2ebcd64fy7a15fe94bfabe580%40mail.gmail.com
In-Reply-To: <g5jj21$bsp$1@ger.gmane.org>

```
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?

-- 
Cheers,

Sverre Rabbelier

```

## Johannes Schindelin, 2008-07-16 11:00

Subject: Re: [PATCH] Use SHELL_PATH
Message-ID: <alpine.DEB.1.00.0807161259150.8503@eeepc-johanness>
URL: https://gitlist.dev/e/alpine.DEB.1.00.0807161259150.8503%40eeepc-johanness
In-Reply-To: <bd6139dc0807160347n2ebcd64fy7a15fe94bfabe580@mail.gmail.com>

```
Hi,

On Wed, 16 Jul 2008, Sverre Rabbelier wrote:

> 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, 2008-07-16 15:46

Subject: Re: [PATCH] Use SHELL_PATH
Message-ID: <7vr69tu91e.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vr69tu91e.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <bd6139dc0807160347n2ebcd64fy7a15fe94bfabe580@mail.gmail.com>

```
"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...

```

## Junio C Hamano, 2008-07-16 16:05

Subject: Re: [PATCH] Use SHELL_PATH
Message-ID: <7vej5tu84y.fsf@gitster.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vej5tu84y.fsf%40gitster.siamese.dyndns.org
In-Reply-To: <7vr69tu91e.fsf@gitster.siamese.dyndns.org>

```
Junio C Hamano <gitster@pobox.com> writes:

> 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(-)

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, 2008-07-17 00:32

Subject: Re: [PATCH] Use SHELL_PATH
Message-ID: <487E932A.5080502@gmail.com>
URL: https://gitlist.dev/e/487E932A.5080502%40gmail.com
In-Reply-To: <7vr69tu91e.fsf@gitster.siamese.dyndns.org>

```
Junio C Hamano wrote:
> "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, 2008-07-17 00:38

Subject: Re: [PATCH] Use SHELL_PATH
Message-ID: <487E94A0.1040801@gmail.com>
URL: https://gitlist.dev/e/487E94A0.1040801%40gmail.com
In-Reply-To: <487E932A.5080502@gmail.com>

```
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

```
