diff mbox

[v4] bash: fix linking for static builds with uClibc toolchains

Message ID 1413970840-17304-1-git-send-email-Vincent.Riera@imgtec.com
State Accepted
Headers show

Commit Message

Vicente Olivert Riera Oct. 22, 2014, 9:40 a.m. UTC
bash fails to link for static builds with uClibc toolchains due to
getenv redefinitions. This is caused because bash is unable to check if
getenv is already defined when cross-compiling, so it defaults to 'yes':

configure:14438: WARNING: cannot check getenv redefinition if cross
compiling -- defaulting to yes

We can avoid this redefinition by passing bash_cv_getenv_redef=no to the
configure script.

Related:
	http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html

Fixes:
	http://autobuild.buildroot.net/results/a20/a2007e6dbcfe53e7cd837ae642869ee26376826a/

Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
 package/bash/bash.mk |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

Comments

Markos Chandras Oct. 22, 2014, 10:39 a.m. UTC | #1
On 10/22/2014 10:40 AM, Vicente Olivert Riera wrote:
> bash fails to link for static builds with uClibc toolchains due to
> getenv redefinitions. This is caused because bash is unable to check if
> getenv is already defined when cross-compiling, so it defaults to 'yes':
> 
> configure:14438: WARNING: cannot check getenv redefinition if cross
> compiling -- defaulting to yes
> 
> We can avoid this redefinition by passing bash_cv_getenv_redef=no to the
> configure script.
> 
> Related:
> 	http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html
> 
> Fixes:
> 	http://autobuild.buildroot.net/results/a20/a2007e6dbcfe53e7cd837ae642869ee26376826a/
> 
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> ---
It's best if you write something here ^^^ (below the ---, notes section)
when you send a new version of the patch so we now what changed from the
previous version, because it's not always obvious what changed between
the different versions.

For example


Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
---
Changes since v3:
- Added foo

Changes since v2:
- Added bar

Changes since v1:
- More foobar
Vicente Olivert Riera Oct. 22, 2014, 10:42 a.m. UTC | #2
Dear Markos Chandras,

On 10/22/2014 11:39 AM, Markos Chandras wrote:
> On 10/22/2014 10:40 AM, Vicente Olivert Riera wrote:
>> bash fails to link for static builds with uClibc toolchains due to
>> getenv redefinitions. This is caused because bash is unable to check if
>> getenv is already defined when cross-compiling, so it defaults to 'yes':
>>
>> configure:14438: WARNING: cannot check getenv redefinition if cross
>> compiling -- defaulting to yes
>>
>> We can avoid this redefinition by passing bash_cv_getenv_redef=no to the
>> configure script.
>>
>> Related:
>> 	http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html
>>
>> Fixes:
>> 	http://autobuild.buildroot.net/results/a20/a2007e6dbcfe53e7cd837ae642869ee26376826a/
>>
>> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
>> ---
> It's best if you write something here ^^^ (below the ---, notes section)
> when you send a new version of the patch so we now what changed from the
> previous version, because it's not always obvious what changed between
> the different versions.
>
> For example
>
>
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> ---
> Changes since v3:
> - Added foo
>
> Changes since v2:
> - Added bar
>
> Changes since v1:
> - More foobar
>

Good advice; I'll take it into account for future patches. Thank you!

Best regards,
Arnout Vandecappelle Oct. 22, 2014, 4:27 p.m. UTC | #3
On 22/10/14 11:40, Vicente Olivert Riera wrote:
> bash fails to link for static builds with uClibc toolchains due to
> getenv redefinitions. This is caused because bash is unable to check if
> getenv is already defined when cross-compiling, so it defaults to 'yes':
> 
> configure:14438: WARNING: cannot check getenv redefinition if cross
> compiling -- defaulting to yes
> 
> We can avoid this redefinition by passing bash_cv_getenv_redef=no to the
> configure script.
> 
> Related:
> 	http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html
> 
> Fixes:
> 	http://autobuild.buildroot.net/results/a20/a2007e6dbcfe53e7cd837ae642869ee26376826a/
> 
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>

Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>

 Small additional remark...

> ---
>  package/bash/bash.mk |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/package/bash/bash.mk b/package/bash/bash.mk
> index 34a3a73..5eec3cc 100644
> --- a/package/bash/bash.mk
> +++ b/package/bash/bash.mk
> @@ -28,6 +28,17 @@ BASH_MAKE = $(MAKE1)
>  # The static build needs some trickery
>  ifeq ($(BR2_PREFER_STATIC_LIB),y)
>  BASH_CONF_OPTS += --enable-static-link --without-bash-malloc
> +# bash wants to redefine the getenv() function. To check whether this is
> +# possible, AC_TRY_RUN is used which is not possible in
> +# cross-compilation.
> +# On uClibc, redefining getenv is not possible; on glibc and musl it is.

 I failed to notice earlier: glibc is not available on static builds so it
doesn't make a lot of sense to mention it here.


 Regards,
 Arnout

> +# Related:
> +# http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html
> +ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
> +BASH_CONF_ENV += bash_cv_getenv_redef=no
> +else
> +BASH_CONF_ENV += bash_cv_getenv_redef=yes
> +endif
>  endif
>  
>  # Make /bin/sh -> bash (no other shell, better than busybox shells)
>
Thomas Petazzoni Oct. 25, 2014, 10:45 a.m. UTC | #4
Dear Vicente Olivert Riera,

On Wed, 22 Oct 2014 10:40:40 +0100, Vicente Olivert Riera wrote:
> bash fails to link for static builds with uClibc toolchains due to
> getenv redefinitions. This is caused because bash is unable to check if
> getenv is already defined when cross-compiling, so it defaults to 'yes':
> 
> configure:14438: WARNING: cannot check getenv redefinition if cross
> compiling -- defaulting to yes
> 
> We can avoid this redefinition by passing bash_cv_getenv_redef=no to the
> configure script.
> 
> Related:
> 	http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html
> 
> Fixes:
> 	http://autobuild.buildroot.net/results/a20/a2007e6dbcfe53e7cd837ae642869ee26376826a/
> 
> Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
> ---
>  package/bash/bash.mk |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)

Applied, thanks.

Thomas
diff mbox

Patch

diff --git a/package/bash/bash.mk b/package/bash/bash.mk
index 34a3a73..5eec3cc 100644
--- a/package/bash/bash.mk
+++ b/package/bash/bash.mk
@@ -28,6 +28,17 @@  BASH_MAKE = $(MAKE1)
 # The static build needs some trickery
 ifeq ($(BR2_PREFER_STATIC_LIB),y)
 BASH_CONF_OPTS += --enable-static-link --without-bash-malloc
+# bash wants to redefine the getenv() function. To check whether this is
+# possible, AC_TRY_RUN is used which is not possible in
+# cross-compilation.
+# On uClibc, redefining getenv is not possible; on glibc and musl it is.
+# Related:
+# http://lists.gnu.org/archive/html/bug-bash/2012-03/msg00052.html
+ifeq ($(BR2_TOOLCHAIN_USES_UCLIBC),y)
+BASH_CONF_ENV += bash_cv_getenv_redef=no
+else
+BASH_CONF_ENV += bash_cv_getenv_redef=yes
+endif
 endif
 
 # Make /bin/sh -> bash (no other shell, better than busybox shells)