aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Packham <judge.packham@gmail.com>2023-07-15 19:21:23 +1200
committerChris Packham <judge.packham@gmail.com>2023-07-21 16:47:34 +1200
commite63c40854c977f488bee159a8f8ebf5fc06c8666 (patch)
tree96260cced7981a028daaefe45b185326da67b9b2
parentbedec42b53b89377e2375786596608f75f4e48fe (diff)
downloadcrosstool-ng-e63c40854c977f488bee159a8f8ebf5fc06c8666.tar.gz
crosstool-ng-e63c40854c977f488bee159a8f8ebf5fc06c8666.tar.bz2
crosstool-ng-e63c40854c977f488bee159a8f8ebf5fc06c8666.zip
provide a workaround for a glibc and GNU make incompatibility
Versions of GNU make newer than 4.4 trigger a hang in versions of glibc older than 2.31. As distros update to the newer GNU make version we'll start seeing more and more reports of this hang. Fortunately we already carry GNU make as a comp tool so all we need to do is select the right version when needed. Fixes #1946, #1932, #1975 Signed-off-by: Chris Packham <judge.packham@gmail.com>
-rw-r--r--config/configure.in.in3
-rw-r--r--config/libc/glibc.in9
-rw-r--r--configure.ac7
-rw-r--r--packages/make/4.3/version.desc2
-rw-r--r--packages/make/package.desc1
5 files changed, 21 insertions, 1 deletions
diff --git a/config/configure.in.in b/config/configure.in.in
index c67fd35f..fe232ef3 100644
--- a/config/configure.in.in
+++ b/config/configure.in.in
@@ -30,6 +30,9 @@ config CONFIGURE_has_make_3_81_or_newer
config CONFIGURE_has_make_4_0_or_newer
@KCONFIG_make_4_0_or_newer@
+config CONFIGURE_has_make_4_4_or_newer
+ @KCONFIG_make_4_4_or_newer@
+
config CONFIGURE_has_libtool_2_4_or_newer
@KCONFIG_libtool_2_4_or_newer@
diff --git a/config/libc/glibc.in b/config/libc/glibc.in
index c5de44ce..81261cdc 100644
--- a/config/libc/glibc.in
+++ b/config/libc/glibc.in
@@ -64,6 +64,15 @@ config GLIBC_DEP_MAKE_4_0
select COMP_TOOLS_MAKE
select MAKE_GNUMAKE_SYMLINK # Override old host make in .build/tools/bin
+# Glibc versions older than 2.31 have a bug that triggers with GNU make 4.4 or newer
+# where the build process hangs indefinitely
+config GLIBC_DEP_MAKE_4_3
+ def_bool y
+ depends on GLIBC_older_than_2_32 && CONFIGURE_has_make_4_4_or_newer
+ select COMP_TOOLS_MAKE
+ select MAKE_GNUMAKE_SYMLINK
+ select MAKE_REQUIRE_older_than_4_4
+
# Glibc 2.31 removed support for pre-v8 SPARC in 32-bit mode (64-bit mode always
# required UltraSPARC)
config GLIBC_SPARC_ALLOW_V7
diff --git a/configure.ac b/configure.ac
index 9469d217..ffd768a4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -210,6 +210,13 @@ CTNG_PROG_VERSION_REQ_ANY([MAKE],
[^GNU Make [4-9]\.],
[make_4_0_or_newer])
+CTNG_PROG_VERSION_REQ_ANY([MAKE],
+ [GNU make >= 4.4],
+ [make],
+ [gmake make],
+ [^GNU Make (4\.[4-9]|[5-9]\.)],
+ [make_4_4_or_newer])
+
# Check other companion tools that we may or may not build.
CTNG_PROG_VERSION_REQ_ANY([LIBTOOL],
[GNU libtool >= 2.4],
diff --git a/packages/make/4.3/version.desc b/packages/make/4.3/version.desc
index fcfe3891..e497b2f5 100644
--- a/packages/make/4.3/version.desc
+++ b/packages/make/4.3/version.desc
@@ -1 +1 @@
-obsolete='yes'
+# Not obsolete. Needed for a workaround for older glibc versions
diff --git a/packages/make/package.desc b/packages/make/package.desc
index bd789ade..657a674a 100644
--- a/packages/make/package.desc
+++ b/packages/make/package.desc
@@ -2,5 +2,6 @@ repository='git https://git.savannah.gnu.org/git/make.git'
bootstrap='autoreconf -i'
mirrors='$(CT_Mirrors GNU make)'
relevantpattern='*.*|.'
+milestones='4.3 4.4'
archive_formats='.tar.lz .tar.gz'
signature_format='packed/.sig'