diff mbox series

[1/1] package/bash: fix strtoimax builtin inclusion logic

Message ID 20230207112644.2467564-1-vfazio@xes-inc.com
State Accepted
Headers show
Series [1/1] package/bash: fix strtoimax builtin inclusion logic | expand

Commit Message

Vincent Fazio Feb. 7, 2023, 11:26 a.m. UTC
From: Vincent Fazio <vfazio@gmail.com>

Backport fixes from upstream to fix an issue where the strtoimax builtin
got built when not necessary.

This resolves bash static builds issues when using musl and uClibc.

Fixes:
 http://autobuild.buildroot.org/results/f8c/f8cb91f7f9ac6a46bb2ecfc22c1e42cf699f28d3//
 http://autobuild.buildroot.org/results/b0e/b0e5fcab9eeb799e31bca27fcb7280b728349bc6//

Upstream:
  https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=43e861c2cd840946a81dfd0386966eb4f3a17ce9

Signed-off-by: Vincent Fazio <vfazio@gmail.com>
---
 ...vert-condition-for-strtoimax-builtin.patch | 60 +++++++++++++++++++
 1 file changed, 60 insertions(+)
 create mode 100644 package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch

Comments

Yann E. MORIN Feb. 7, 2023, 11:48 a.m. UTC | #1
Vincent, All,

On 2023-02-07 05:26 -0600, Vincent Fazio spake thusly:
> From: Vincent Fazio <vfazio@gmail.com>
> 
> Backport fixes from upstream to fix an issue where the strtoimax builtin
> got built when not necessary.
> 
> This resolves bash static builds issues when using musl and uClibc.
> 
> Fixes:
>  http://autobuild.buildroot.org/results/f8c/f8cb91f7f9ac6a46bb2ecfc22c1e42cf699f28d3//
>  http://autobuild.buildroot.org/results/b0e/b0e5fcab9eeb799e31bca27fcb7280b728349bc6//
> 
> Upstream:
>   https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=43e861c2cd840946a81dfd0386966eb4f3a17ce9
> 
> Signed-off-by: Vincent Fazio <vfazio@gmail.com>

As seen IRL, I've done some small changes:

  - patch configure after the m4 file
  - add blurb in commit log to explain that

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  ...vert-condition-for-strtoimax-builtin.patch | 60 +++++++++++++++++++
>  1 file changed, 60 insertions(+)
>  create mode 100644 package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch
> 
> diff --git a/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch b/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch
> new file mode 100644
> index 0000000000..2ee9e1ad5a
> --- /dev/null
> +++ b/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch
> @@ -0,0 +1,60 @@
> +From 754e0d1edc1c01b18f4890de7c58f7610e589d76 Mon Sep 17 00:00:00 2001
> +From: Vincent Fazio <vfazio@gmail.com>
> +Date: Tue, 7 Feb 2023 03:55:28 -0600
> +Subject: [PATCH] configure: invert condition for strtoimax builtin
> +
> +Previously, bash would attempt to build a replacement for strtoimax if
> +it found that the C library had the function already declared.
> +
> +This caused build errors when linking against static libraries that did
> +not define the function as a weak alias but, in reality, was a logic
> +error since bash should only provide it's own implementation if one is
> +not provided by the C library.
> +
> +Now, fix this by inverting the logic.
> +
> +Upstream:
> +  https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=43e861c2cd840946a81dfd0386966eb4f3a17ce9
> +
> +Signed-off-by: Vincent Fazio <vfazio@gmail.com>
> +---
> + configure       | 6 +++++-
> + m4/strtoimax.m4 | 5 ++++-
> + 2 files changed, 9 insertions(+), 2 deletions(-)
> +
> +diff --git a/configure b/configure
> +index 47313753..6039cee7 100755
> +--- a/configure
> ++++ b/configure
> +@@ -20443,7 +20443,11 @@ fi
> + 
> + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5
> + printf "%s\n" "$bash_cv_func_strtoimax" >&6; }
> +-if test $bash_cv_func_strtoimax = yes; then
> ++if test "$ac_cv_have_decl_strtoimax" = "yes" ; then
> ++printf "%s\n" "#define HAVE_DECL_STRTOIMAX 1" >>confdefs.h
> ++
> ++fi
> ++if test $bash_cv_func_strtoimax = no; then
> + case " $LIBOBJS " in
> +   *" strtoimax.$ac_objext "* ) ;;
> +   *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext"
> +diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4
> +index 30985723..fa43ac7b 100644
> +--- a/m4/strtoimax.m4
> ++++ b/m4/strtoimax.m4
> +@@ -29,7 +29,10 @@ AC_CACHE_VAL(bash_cv_func_strtoimax,
> +   fi
> + ])
> + AC_MSG_RESULT($bash_cv_func_strtoimax)
> +-if test $bash_cv_func_strtoimax = yes; then
> ++if test "$ac_cv_have_decl_strtoimax" = "yes" ; then
> ++AC_DEFINE([HAVE_DECL_STRTOIMAX], [1])
> ++fi
> ++if test $bash_cv_func_strtoimax = no; then
> + AC_LIBOBJ(strtoimax)
> + fi
> + ])
> +-- 
> +2.25.1
> +
> -- 
> 2.25.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch b/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch
new file mode 100644
index 0000000000..2ee9e1ad5a
--- /dev/null
+++ b/package/bash/0003-configure-invert-condition-for-strtoimax-builtin.patch
@@ -0,0 +1,60 @@ 
+From 754e0d1edc1c01b18f4890de7c58f7610e589d76 Mon Sep 17 00:00:00 2001
+From: Vincent Fazio <vfazio@gmail.com>
+Date: Tue, 7 Feb 2023 03:55:28 -0600
+Subject: [PATCH] configure: invert condition for strtoimax builtin
+
+Previously, bash would attempt to build a replacement for strtoimax if
+it found that the C library had the function already declared.
+
+This caused build errors when linking against static libraries that did
+not define the function as a weak alias but, in reality, was a logic
+error since bash should only provide it's own implementation if one is
+not provided by the C library.
+
+Now, fix this by inverting the logic.
+
+Upstream:
+  https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=43e861c2cd840946a81dfd0386966eb4f3a17ce9
+
+Signed-off-by: Vincent Fazio <vfazio@gmail.com>
+---
+ configure       | 6 +++++-
+ m4/strtoimax.m4 | 5 ++++-
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/configure b/configure
+index 47313753..6039cee7 100755
+--- a/configure
++++ b/configure
+@@ -20443,7 +20443,11 @@ fi
+ 
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bash_cv_func_strtoimax" >&5
+ printf "%s\n" "$bash_cv_func_strtoimax" >&6; }
+-if test $bash_cv_func_strtoimax = yes; then
++if test "$ac_cv_have_decl_strtoimax" = "yes" ; then
++printf "%s\n" "#define HAVE_DECL_STRTOIMAX 1" >>confdefs.h
++
++fi
++if test $bash_cv_func_strtoimax = no; then
+ case " $LIBOBJS " in
+   *" strtoimax.$ac_objext "* ) ;;
+   *) LIBOBJS="$LIBOBJS strtoimax.$ac_objext"
+diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4
+index 30985723..fa43ac7b 100644
+--- a/m4/strtoimax.m4
++++ b/m4/strtoimax.m4
+@@ -29,7 +29,10 @@ AC_CACHE_VAL(bash_cv_func_strtoimax,
+   fi
+ ])
+ AC_MSG_RESULT($bash_cv_func_strtoimax)
+-if test $bash_cv_func_strtoimax = yes; then
++if test "$ac_cv_have_decl_strtoimax" = "yes" ; then
++AC_DEFINE([HAVE_DECL_STRTOIMAX], [1])
++fi
++if test $bash_cv_func_strtoimax = no; then
+ AC_LIBOBJ(strtoimax)
+ fi
+ ])
+-- 
+2.25.1
+