[OE-core] [PATCH 2/2] gnutls: don't use HOSTTOOLS_DIR/bash as a shell on target

Ross Burton ross.burton at intel.com
Thu Jul 25 15:20:23 UTC 2019


The libopts configure script looks for a shell on the build host and assumes
it's good for the target. However in our builds it find $HOSTTOOLS_DIR/bash
which isn't useful, so patch out the detection and force $base_bindir/sh.

Signed-off-by: Ross Burton <ross.burton at intel.com>
---
 .../gnutls/gnutls/posix-shell.patch           | 39 +++++++++++++++++++
 meta/recipes-support/gnutls/gnutls_3.6.8.bb   |  4 ++
 2 files changed, 43 insertions(+)
 create mode 100644 meta/recipes-support/gnutls/gnutls/posix-shell.patch

diff --git a/meta/recipes-support/gnutls/gnutls/posix-shell.patch b/meta/recipes-support/gnutls/gnutls/posix-shell.patch
new file mode 100644
index 00000000000..938e2d1e18f
--- /dev/null
+++ b/meta/recipes-support/gnutls/gnutls/posix-shell.patch
@@ -0,0 +1,39 @@
+Don't embed the path to the build-time POSIX shell as this will be
+$TMPDIR/hosttools/bash, which is no good on the target.
+
+Instead default to /bin/sh but allow it to be set in the environment.
+
+This isn't really upstreamable but I filed a bug at
+https://gitlab.com/gnutls/gnutls/issues/807 and hope a proper fix will be
+integrated.
+
+Upstream-Status: Inappropriate
+Signed-off-by: Ross Burton <ross.burton at intel.com>
+
+diff --git a/src/libopts/m4/libopts.m4 b/src/libopts/m4/libopts.m4
+index c6ad738..a62faca 100644
+--- a/src/libopts/m4/libopts.m4
++++ b/src/libopts/m4/libopts.m4
+@@ -112,21 +112,7 @@ AC_DEFUN([INVOKE_LIBOPTS_MACROS_FIRST],[
+   AC_CHECK_FUNCS([mmap canonicalize_file_name snprintf strdup strchr \
+                  strrchr strsignal fchmod fstat chmod])
+   AC_PROG_SED
+-  [while :
+-  do
+-      POSIX_SHELL=`which bash`
+-      test -x "$POSIX_SHELL" && break
+-      POSIX_SHELL=`which dash`
+-      test -x "$POSIX_SHELL" && break
+-      POSIX_SHELL=/usr/xpg4/bin/sh
+-      test -x "$POSIX_SHELL" && break
+-      POSIX_SHELL=`/bin/sh -c '
+-          exec 2>/dev/null
+-          if ! true ; then exit 1 ; fi
+-          echo /bin/sh'`
+-      test -x "$POSIX_SHELL" && break
+-      ]AC_MSG_ERROR([cannot locate a working POSIX shell])[
+-  done]
++  POSIX_SHELL="${POSIX_SHELL:-/bin/sh}"
+   AC_DEFINE_UNQUOTED([POSIX_SHELL], ["${POSIX_SHELL}"],
+            [define to a working POSIX compliant shell])
+   AC_SUBST([POSIX_SHELL])
diff --git a/meta/recipes-support/gnutls/gnutls_3.6.8.bb b/meta/recipes-support/gnutls/gnutls_3.6.8.bb
index 6c6c520e8ce..c927063f0a3 100644
--- a/meta/recipes-support/gnutls/gnutls_3.6.8.bb
+++ b/meta/recipes-support/gnutls/gnutls_3.6.8.bb
@@ -19,6 +19,7 @@ SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
 
 SRC_URI = "https://www.gnupg.org/ftp/gcrypt/gnutls/v${SHRT_VER}/gnutls-${PV}.tar.xz \
            file://arm_eabi.patch \
+           file://posix-shell.patch \
 "
 
 SRC_URI[md5sum] = "9dcf0aa45d1a42e1b3ca5d39ec7c61a8"
@@ -47,6 +48,9 @@ EXTRA_OECONF = " \
     --with-default-trust-store-file=${sysconfdir}/ssl/certs/ca-certificates.crt \
 "
 
+# Otherwise the tools try and use HOSTTOOLS_DIR/bash as a shell.
+export POSIX_SHELL="${base_bindir}/sh"
+
 LDFLAGS_append_libc-musl = " -largp"
 
 do_configure_prepend() {
-- 
2.20.1



More information about the Openembedded-core mailing list