[dpdk-dev] Fix bash path in shebangs

Message ID 20170727204146.9574-1-asomers@gmail.com (mailing list archive)
State Changes Requested, archived
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

asomers@gmail.com July 27, 2017, 8:41 p.m. UTC
  From: Alan Somers <asomers@gmail.com>

"/bin/bash" is a Linuxism.  "/usr/bin/env bash" is portable.

Signed-off-by: Alan Somers <asomers@gmail.com>
---
 examples/performance-thread/l3fwd-thread/test.sh | 2 +-
 usertools/dpdk-setup.sh                          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
  

Comments

Bruce Richardson July 28, 2017, 9:28 a.m. UTC | #1
On Thu, Jul 27, 2017 at 02:41:46PM -0600, asomers@gmail.com wrote:
> From: Alan Somers <asomers@gmail.com>
> 
> "/bin/bash" is a Linuxism.  "/usr/bin/env bash" is portable.
> 
> Signed-off-by: Alan Somers <asomers@gmail.com>
> ---
>  examples/performance-thread/l3fwd-thread/test.sh | 2 +-
>  usertools/dpdk-setup.sh                          | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/examples/performance-thread/l3fwd-thread/test.sh b/examples/performance-thread/l3fwd-thread/test.sh
> index b7718b622..eb1fe2dc2 100755
> --- a/examples/performance-thread/l3fwd-thread/test.sh
> +++ b/examples/performance-thread/l3fwd-thread/test.sh
> @@ -1,4 +1,4 @@
> -#!/bin/bash
> +#!/usr/bin/env bash
>  
>  case "$1" in
>  
This script doesn't look to be using any bash specific features to me,
so a better fix might be to change it to use /bin/sh rather than
requiring bash itself. [Needs testing, to check there isn't something
bash-specific hidden away, obviously]

> diff --git a/usertools/dpdk-setup.sh b/usertools/dpdk-setup.sh
> index c4fec5a63..ebf36f830 100755
> --- a/usertools/dpdk-setup.sh
> +++ b/usertools/dpdk-setup.sh
> @@ -1,4 +1,4 @@
> -#! /bin/bash
> +#! /usr/bin/env bash
>  
>  #   BSD LICENSE
>  #
> -- 
Not sure having this linux-specific is a problem for dpdk-setup.sh,
since I don't think large parts of that script work with BSD anyway,
e.g. it assumes a linux hugetlbfs filesystem for hugepage setup. Not
that there is any harm in making the change you suggest either.

/Bruce
  
asomers@gmail.com July 31, 2017, 3:11 p.m. UTC | #2
On Fri, Jul 28, 2017 at 3:28 AM, Bruce Richardson
<bruce.richardson@intel.com> wrote:
> On Thu, Jul 27, 2017 at 02:41:46PM -0600, asomers@gmail.com wrote:
>> From: Alan Somers <asomers@gmail.com>
>>
>> "/bin/bash" is a Linuxism.  "/usr/bin/env bash" is portable.
>>
>> Signed-off-by: Alan Somers <asomers@gmail.com>
>> ---
>>  examples/performance-thread/l3fwd-thread/test.sh | 2 +-
>>  usertools/dpdk-setup.sh                          | 2 +-
>>  2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/examples/performance-thread/l3fwd-thread/test.sh b/examples/performance-thread/l3fwd-thread/test.sh
>> index b7718b622..eb1fe2dc2 100755
>> --- a/examples/performance-thread/l3fwd-thread/test.sh
>> +++ b/examples/performance-thread/l3fwd-thread/test.sh
>> @@ -1,4 +1,4 @@
>> -#!/bin/bash
>> +#!/usr/bin/env bash
>>
>>  case "$1" in
>>
> This script doesn't look to be using any bash specific features to me,
> so a better fix might be to change it to use /bin/sh rather than
> requiring bash itself. [Needs testing, to check there isn't something
> bash-specific hidden away, obviously]

True.  Unfortunately, I can't test it right now because I can't get
DPDK to build on either Linux or FreeBSD, and I'm out of time to debug
the build failures for now.  Would you like me to resubmit the patch,
altered to use /bin/sh, without testing?

>
>> diff --git a/usertools/dpdk-setup.sh b/usertools/dpdk-setup.sh
>> index c4fec5a63..ebf36f830 100755
>> --- a/usertools/dpdk-setup.sh
>> +++ b/usertools/dpdk-setup.sh
>> @@ -1,4 +1,4 @@
>> -#! /bin/bash
>> +#! /usr/bin/env bash
>>
>>  #   BSD LICENSE
>>  #
>> --
> Not sure having this linux-specific is a problem for dpdk-setup.sh,
> since I don't think large parts of that script work with BSD anyway,
> e.g. it assumes a linux hugetlbfs filesystem for hugepage setup. Not
> that there is any harm in making the change you suggest either.

Yep, that's what I figured.

-Alan
  
Bruce Richardson July 31, 2017, 3:22 p.m. UTC | #3
On Mon, Jul 31, 2017 at 09:11:11AM -0600, alan somers wrote:
> On Fri, Jul 28, 2017 at 3:28 AM, Bruce Richardson
> <bruce.richardson@intel.com> wrote:
> > On Thu, Jul 27, 2017 at 02:41:46PM -0600, asomers@gmail.com wrote:
> >> From: Alan Somers <asomers@gmail.com>
> >>
> >> "/bin/bash" is a Linuxism.  "/usr/bin/env bash" is portable.
> >>
> >> Signed-off-by: Alan Somers <asomers@gmail.com>
> >> ---
> >>  examples/performance-thread/l3fwd-thread/test.sh | 2 +-
> >>  usertools/dpdk-setup.sh                          | 2 +-
> >>  2 files changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/examples/performance-thread/l3fwd-thread/test.sh b/examples/performance-thread/l3fwd-thread/test.sh
> >> index b7718b622..eb1fe2dc2 100755
> >> --- a/examples/performance-thread/l3fwd-thread/test.sh
> >> +++ b/examples/performance-thread/l3fwd-thread/test.sh
> >> @@ -1,4 +1,4 @@
> >> -#!/bin/bash
> >> +#!/usr/bin/env bash
> >>
> >>  case "$1" in
> >>
> > This script doesn't look to be using any bash specific features to me,
> > so a better fix might be to change it to use /bin/sh rather than
> > requiring bash itself. [Needs testing, to check there isn't something
> > bash-specific hidden away, obviously]
> 
> True.  Unfortunately, I can't test it right now because I can't get
> DPDK to build on either Linux or FreeBSD, and I'm out of time to debug
> the build failures for now.  Would you like me to resubmit the patch,
> altered to use /bin/sh, without testing?
> 
> >
I'm not sure it's that important a change that we need to rush into
doing so.

What difficulties are you having getting DPDK to build? Is it just
platform setup issues?

/Bruce
  
asomers@gmail.com July 31, 2017, 4:18 p.m. UTC | #4
On Mon, Jul 31, 2017 at 9:22 AM, Bruce Richardson
<bruce.richardson@intel.com> wrote:
> On Mon, Jul 31, 2017 at 09:11:11AM -0600, alan somers wrote:
>> On Fri, Jul 28, 2017 at 3:28 AM, Bruce Richardson
>> <bruce.richardson@intel.com> wrote:
>> > On Thu, Jul 27, 2017 at 02:41:46PM -0600, asomers@gmail.com wrote:
>> >> From: Alan Somers <asomers@gmail.com>
>> >>
>> >> "/bin/bash" is a Linuxism.  "/usr/bin/env bash" is portable.
>> >>
>> >> Signed-off-by: Alan Somers <asomers@gmail.com>
>> >> ---
>> >>  examples/performance-thread/l3fwd-thread/test.sh | 2 +-
>> >>  usertools/dpdk-setup.sh                          | 2 +-
>> >>  2 files changed, 2 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/examples/performance-thread/l3fwd-thread/test.sh b/examples/performance-thread/l3fwd-thread/test.sh
>> >> index b7718b622..eb1fe2dc2 100755
>> >> --- a/examples/performance-thread/l3fwd-thread/test.sh
>> >> +++ b/examples/performance-thread/l3fwd-thread/test.sh
>> >> @@ -1,4 +1,4 @@
>> >> -#!/bin/bash
>> >> +#!/usr/bin/env bash
>> >>
>> >>  case "$1" in
>> >>
>> > This script doesn't look to be using any bash specific features to me,
>> > so a better fix might be to change it to use /bin/sh rather than
>> > requiring bash itself. [Needs testing, to check there isn't something
>> > bash-specific hidden away, obviously]
>>
>> True.  Unfortunately, I can't test it right now because I can't get
>> DPDK to build on either Linux or FreeBSD, and I'm out of time to debug
>> the build failures for now.  Would you like me to resubmit the patch,
>> altered to use /bin/sh, without testing?
>>
>> >
> I'm not sure it's that important a change that we need to rush into
> doing so.
>
> What difficulties are you having getting DPDK to build? Is it just
> platform setup issues?

On Linux, I fail for lack of numa.h.  The docs say to install
libnuma-devel, but that package doesn't exist on my distro (Ubuntu
16.04).  On FreeBSD, I get this compile error
/usr/home/alans/freebsd/head/sys/vm/vm_phys.h:120:2: error: use of undeclared
      identifier 'vm_cnt'
        vm_cnt.v_free_count += adj;

On FreeBSD stable/11, I get a litany of errors, beginning with:
n file included from contigmem.c:49:
In file included from ./machine/bus.h:6:
In file included from ./x86/bus.h:1038:
In file included from ./machine/bus_dma.h:32:
./x86/bus_dma.h:43:1: error: static declaration of 'bus_dmamap_create' follows
      non-static declaration
bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
^
/usr/home/alans/freebsd/stable_11/sys/sys/bus_dma.h:262:5: note: previous
      declaration is here
int bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp);

And on FreeBSD stable/10, I get a make error:
make[6]: "/usr/home/alans/freebsd/stable_10/sys/conf/kern.mk" line 43:
Malformed conditional (${MK_FORMAT_EXTENSIONS} == "no")

-Alan
  
Wiles, Keith July 31, 2017, 5:06 p.m. UTC | #5
> On Jul 31, 2017, at 11:18 AM, alan somers <asomers@gmail.com> wrote:
> 
> On Mon, Jul 31, 2017 at 9:22 AM, Bruce Richardson
> <bruce.richardson@intel.com> wrote:
>> On Mon, Jul 31, 2017 at 09:11:11AM -0600, alan somers wrote:
>>> On Fri, Jul 28, 2017 at 3:28 AM, Bruce Richardson
>>> <bruce.richardson@intel.com> wrote:
>>>> On Thu, Jul 27, 2017 at 02:41:46PM -0600, asomers@gmail.com wrote:
>>>>> From: Alan Somers <asomers@gmail.com>
>>>>> 
>>>>> "/bin/bash" is a Linuxism.  "/usr/bin/env bash" is portable.
>>>>> 
>>>>> Signed-off-by: Alan Somers <asomers@gmail.com>
>>>>> ---
>>>>> examples/performance-thread/l3fwd-thread/test.sh | 2 +-
>>>>> usertools/dpdk-setup.sh                          | 2 +-
>>>>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>>>> 
>>>>> diff --git a/examples/performance-thread/l3fwd-thread/test.sh b/examples/performance-thread/l3fwd-thread/test.sh
>>>>> index b7718b622..eb1fe2dc2 100755
>>>>> --- a/examples/performance-thread/l3fwd-thread/test.sh
>>>>> +++ b/examples/performance-thread/l3fwd-thread/test.sh
>>>>> @@ -1,4 +1,4 @@
>>>>> -#!/bin/bash
>>>>> +#!/usr/bin/env bash
>>>>> 
>>>>> case "$1" in
>>>>> 
>>>> This script doesn't look to be using any bash specific features to me,
>>>> so a better fix might be to change it to use /bin/sh rather than
>>>> requiring bash itself. [Needs testing, to check there isn't something
>>>> bash-specific hidden away, obviously]
>>> 
>>> True.  Unfortunately, I can't test it right now because I can't get
>>> DPDK to build on either Linux or FreeBSD, and I'm out of time to debug
>>> the build failures for now.  Would you like me to resubmit the patch,
>>> altered to use /bin/sh, without testing?
>>> 
>>>> 
>> I'm not sure it's that important a change that we need to rush into
>> doing so.
>> 
>> What difficulties are you having getting DPDK to build? Is it just
>> platform setup issues?
> 
> On Linux, I fail for lack of numa.h.  The docs say to install
> libnuma-devel, but that package doesn't exist on my distro (Ubuntu
> 16.04).  On FreeBSD, I get this compile error
> /usr/home/alans/freebsd/head/sys/vm/vm_phys.h:120:2: error: use of undeclared
>      identifier 'vm_cnt'
>        vm_cnt.v_free_count += adj;

On my Ubuntu 17.04 the package is called libnuma-dev 

> 
> On FreeBSD stable/11, I get a litany of errors, beginning with:
> n file included from contigmem.c:49:
> In file included from ./machine/bus.h:6:
> In file included from ./x86/bus.h:1038:
> In file included from ./machine/bus_dma.h:32:
> ./x86/bus_dma.h:43:1: error: static declaration of 'bus_dmamap_create' follows
>      non-static declaration
> bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp)
> ^
> /usr/home/alans/freebsd/stable_11/sys/sys/bus_dma.h:262:5: note: previous
>      declaration is here
> int bus_dmamap_create(bus_dma_tag_t dmat, int flags, bus_dmamap_t *mapp);
> 
> And on FreeBSD stable/10, I get a make error:
> make[6]: "/usr/home/alans/freebsd/stable_10/sys/conf/kern.mk" line 43:
> Malformed conditional (${MK_FORMAT_EXTENSIONS} == "no")
> 
> -Alan

Regards,
Keith
  
asomers@gmail.com July 31, 2017, 7:08 p.m. UTC | #6
On Mon, Jul 31, 2017 at 11:06 AM, Wiles, Keith <keith.wiles@intel.com> wrote:
>
>> On Jul 31, 2017, at 11:18 AM, alan somers <asomers@gmail.com> wrote:
>>
>> On Mon, Jul 31, 2017 at 9:22 AM, Bruce Richardson
>> <bruce.richardson@intel.com> wrote:
>>> On Mon, Jul 31, 2017 at 09:11:11AM -0600, alan somers wrote:
>>>> On Fri, Jul 28, 2017 at 3:28 AM, Bruce Richardson
>>>> <bruce.richardson@intel.com> wrote:
>>>>> On Thu, Jul 27, 2017 at 02:41:46PM -0600, asomers@gmail.com wrote:
>>>>>> From: Alan Somers <asomers@gmail.com>
>>>>>>
>>>>>> "/bin/bash" is a Linuxism.  "/usr/bin/env bash" is portable.
>>>>>>
>>>>>> Signed-off-by: Alan Somers <asomers@gmail.com>
>>>>>> ---
>>>>>> examples/performance-thread/l3fwd-thread/test.sh | 2 +-
>>>>>> usertools/dpdk-setup.sh                          | 2 +-
>>>>>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/examples/performance-thread/l3fwd-thread/test.sh b/examples/performance-thread/l3fwd-thread/test.sh
>>>>>> index b7718b622..eb1fe2dc2 100755
>>>>>> --- a/examples/performance-thread/l3fwd-thread/test.sh
>>>>>> +++ b/examples/performance-thread/l3fwd-thread/test.sh
>>>>>> @@ -1,4 +1,4 @@
>>>>>> -#!/bin/bash
>>>>>> +#!/usr/bin/env bash
>>>>>>
>>>>>> case "$1" in
>>>>>>
>>>>> This script doesn't look to be using any bash specific features to me,
>>>>> so a better fix might be to change it to use /bin/sh rather than
>>>>> requiring bash itself. [Needs testing, to check there isn't something
>>>>> bash-specific hidden away, obviously]
>>>>
>>>> True.  Unfortunately, I can't test it right now because I can't get
>>>> DPDK to build on either Linux or FreeBSD, and I'm out of time to debug
>>>> the build failures for now.  Would you like me to resubmit the patch,
>>>> altered to use /bin/sh, without testing?
>>>>
>>>>>
>>> I'm not sure it's that important a change that we need to rush into
>>> doing so.
>>>
>>> What difficulties are you having getting DPDK to build? Is it just
>>> platform setup issues?
>>
>> On Linux, I fail for lack of numa.h.  The docs say to install
>> libnuma-devel, but that package doesn't exist on my distro (Ubuntu
>> 16.04).  On FreeBSD, I get this compile error
>> /usr/home/alans/freebsd/head/sys/vm/vm_phys.h:120:2: error: use of undeclared
>>      identifier 'vm_cnt'
>>        vm_cnt.v_free_count += adj;
>
> On my Ubuntu 17.04 the package is called libnuma-dev

Thanks.  That gets dpdk to build.  But the performance-thread
directory still doesn't.  I could dig futher, but I'm really out of
time for this task.  That's why I suggest just changing the shebang to
find bash from the PATH, rather than use a different shell entirely.

-alan
  

Patch

diff --git a/examples/performance-thread/l3fwd-thread/test.sh b/examples/performance-thread/l3fwd-thread/test.sh
index b7718b622..eb1fe2dc2 100755
--- a/examples/performance-thread/l3fwd-thread/test.sh
+++ b/examples/performance-thread/l3fwd-thread/test.sh
@@ -1,4 +1,4 @@ 
-#!/bin/bash
+#!/usr/bin/env bash
 
 case "$1" in
 
diff --git a/usertools/dpdk-setup.sh b/usertools/dpdk-setup.sh
index c4fec5a63..ebf36f830 100755
--- a/usertools/dpdk-setup.sh
+++ b/usertools/dpdk-setup.sh
@@ -1,4 +1,4 @@ 
-#! /bin/bash
+#! /usr/bin/env bash
 
 #   BSD LICENSE
 #