Browse Source

package/glibc: drop dependency of utilities on bash

The dependency was added because ldd uses bash-specific syntax to
localize messages. Add a post-patch hook, instead, to replace the
occurrences of $"foo" by "foo", simply, so the code becomes POSIX
sh compliant if bash is not selected.

Also set the configuration environment accordingly to replace the
/bin/bash hashbang by /bin/sh.

Signed-off-by: Carlos Santos <unixmania@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Carlos Santos 5 years ago
parent
commit
862cda57e5
2 changed files with 10 additions and 5 deletions
  1. 0 4
      package/glibc/Config.in
  2. 10 1
      package/glibc/glibc.mk

+ 0 - 4
package/glibc/Config.in

@@ -11,10 +11,6 @@ endif
 
 
 config BR2_PACKAGE_GLIBC_UTILS
 config BR2_PACKAGE_GLIBC_UTILS
 	bool "Install glibc utilities"
 	bool "Install glibc utilities"
-	depends on BR2_PACKAGE_BASH
 	help
 	help
 	  Enabling this option will compile and install the getconf,
 	  Enabling this option will compile and install the getconf,
 	  ldconfig, ldd and locale glibc utilities for the target.
 	  ldconfig, ldd and locale glibc utilities for the target.
-
-comment "glibc utilities need bash"
-	depends on !BR2_PACKAGE_BASH

+ 10 - 1
package/glibc/glibc.mk

@@ -74,10 +74,19 @@ endef
 endif
 endif
 
 
 GLIBC_CONF_ENV = \
 GLIBC_CONF_ENV = \
-	ac_cv_path_BASH_SHELL=/bin/bash \
+	ac_cv_path_BASH_SHELL=/bin/$(if $(BR2_PACKAGE_BASH),bash,sh) \
 	libc_cv_forced_unwind=yes \
 	libc_cv_forced_unwind=yes \
 	libc_cv_ssp=no
 	libc_cv_ssp=no
 
 
+# POSIX shell does not support localization, so remove the corresponding
+# syntax from ldd if bash is not selected.
+ifeq ($(BR2_PACKAGE_BASH),)
+define GLIBC_LDD_NO_BASH
+	$(SED) 's/$$"/"/g' $(@D)/elf/ldd.bash.in
+endef
+GLIBC_POST_PATCH_HOOKS += GLIBC_LDD_NO_BASH
+endif
+
 # Override the default library locations of /lib64/<abi> and
 # Override the default library locations of /lib64/<abi> and
 # /usr/lib64/<abi>/ for RISC-V.
 # /usr/lib64/<abi>/ for RISC-V.
 ifeq ($(BR2_riscv),y)
 ifeq ($(BR2_riscv),y)