浏览代码

bash: fix linking for static builds with uClibc toolchains

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>
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Vicente Olivert Riera 10 年之前
父节点
当前提交
9623ff651f
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      package/bash/bash.mk

+ 11 - 0
package/bash/bash.mk

@@ -28,6 +28,17 @@ BASH_MAKE = $(MAKE1)
 # The static build needs some trickery
 # The static build needs some trickery
 ifeq ($(BR2_PREFER_STATIC_LIB),y)
 ifeq ($(BR2_PREFER_STATIC_LIB),y)
 BASH_CONF_OPTS += --enable-static-link --without-bash-malloc
 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
 endif
 
 
 # Make /bin/sh -> bash (no other shell, better than busybox shells)
 # Make /bin/sh -> bash (no other shell, better than busybox shells)