commit:     ea8fa9252382082ed364952b839e68abb7fa66d0
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 19 01:09:37 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Sep 19 01:09:47 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ea8fa925

sys-libs/glibc: fix build w/ make-4.4 (make-9999)

Closes: https://bugs.gentoo.org/869263
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/2.35/glibc-2.35-make-4.4-MAKEFLAGS.patch | 102 +++++++++++++++++++++
 sys-libs/glibc/glibc-2.35-r10.ebuild               |   2 +
 sys-libs/glibc/glibc-2.36-r1.ebuild                |   2 +
 3 files changed, 106 insertions(+)

diff --git a/sys-libs/glibc/files/2.35/glibc-2.35-make-4.4-MAKEFLAGS.patch 
b/sys-libs/glibc/files/2.35/glibc-2.35-make-4.4-MAKEFLAGS.patch
new file mode 100644
index 000000000000..51fbe5f54074
--- /dev/null
+++ b/sys-libs/glibc/files/2.35/glibc-2.35-make-4.4-MAKEFLAGS.patch
@@ -0,0 +1,102 @@
+https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2d7ed98add14f75041499ac189696c9bd3d757fe
+https://bugs.gentoo.org/869263
+
+From 2d7ed98add14f75041499ac189696c9bd3d757fe Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <sly...@gmail.com>
+Date: Tue, 13 Sep 2022 13:39:13 -0400
+Subject: [PATCH] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4
+ [BZ# 29564]
+
+make-4.4 will add long flags to MAKEFLAGS variable:
+
+    * WARNING: Backward-incompatibility!
+      Previously only simple (one-letter) options were added to the MAKEFLAGS
+      variable that was visible while parsing makefiles.  Now, all options
+      are available in MAKEFLAGS.
+
+This causes locale builds to fail when long options are used:
+
+    $ make --shuffle
+    ...
+    make  -C localedata install-locales
+    make: invalid shuffle mode: '1662724426r'
+
+The change fixes it by passing eash option via whitespace and dashes.
+That way option is appended to both single-word form and whitespace
+separated form.
+
+While at it fixed --silent mode detection in $(MAKEFLAGS) by filtering
+out --long-options. Otherwise options like --shuffle flag enable silent
+mode unintentionally. $(silent-make) variable consolidates the checks.
+
+Resolves: BZ# 29564
+
+CC: Paul Smith <psm...@gnu.org>
+CC: Siddhesh Poyarekar <siddh...@gotplt.org>
+Signed-off-by: Sergei Trofimovich <sly...@gmail.com>
+Reviewed-by: Siddhesh Poyarekar <siddh...@sourceware.org>
+--- a/Makeconfig
++++ b/Makeconfig
+@@ -43,6 +43,22 @@ else
+ $(error objdir must be defined by the build-directory Makefile)
+ endif
+ 
++# Did we request 'make -s' run? "yes" or "no".
++# Starting from make-4.4 MAKEFLAGS now contains long
++# options like '--shuffle'. To detect presence of 's'
++# we pick first word with short options. Long options
++# are guaranteed to come after whitespace. We use '-'
++# prefix to always have a word before long options
++# even if no short options were passed.
++# Typical MAKEFLAGS values to watch for:
++#   "rs --shuffle=42" (silent)
++#   " --shuffle" (not silent)
++ifeq ($(findstring s, $(firstword -$(MAKEFLAGS))),)
++silent-make := no
++else
++silent-make := yes
++endif
++
+ # Root of the sysdeps tree.
+ sysdep_dir := $(..)sysdeps
+ export sysdep_dir := $(sysdep_dir)
+@@ -917,7 +933,7 @@ endif
+ # umpteen zillion filenames along with it (we use `...' instead)
+ # but we don't want this echoing done when the user has said
+ # he doesn't want to see commands echoed by using -s.
+-ifneq "$(findstring s,$(MAKEFLAGS))" ""       # if -s
++ifeq ($(silent-make),yes)                     # if -s
+ +cmdecho      := echo >/dev/null
+ else                                          # not -s
+ +cmdecho      := echo
+--- a/Makerules
++++ b/Makerules
+@@ -794,7 +794,7 @@ endif
+ # Maximize efficiency by minimizing the number of rules.
+ .SUFFIXES:    # Clear the suffix list.  We don't use suffix rules.
+ # Don't define any builtin rules.
+-MAKEFLAGS := $(MAKEFLAGS)r
++MAKEFLAGS := $(MAKEFLAGS) -r
+ 
+ # Generic rule for making directories.
+ %/:
+@@ -811,7 +811,7 @@ MAKEFLAGS := $(MAKEFLAGS)r
+ .PRECIOUS: $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
+ 
+ # Use the verbose option of ar and tar when not running silently.
+-ifeq  "$(findstring s,$(MAKEFLAGS))" ""       # if not -s
++ifeq ($(silent-make),no)                      # if not -s
+ verbose := v
+ else                                          # -s
+ verbose       :=
+--- a/elf/rtld-Rules
++++ b/elf/rtld-Rules
+@@ -52,7 +52,7 @@ $(objpfx)rtld-libc.a: $(foreach dir,$(rtld-subdirs),\
+       mv -f $@T $@
+ 
+ # Use the verbose option of ar and tar when not running silently.
+-ifeq  "$(findstring s,$(MAKEFLAGS))" ""       # if not -s
++ifeq ($(silent-make),no)                      # if not -s
+ verbose := v
+ else                                          # -s
+ verbose       :=

diff --git a/sys-libs/glibc/glibc-2.35-r10.ebuild 
b/sys-libs/glibc/glibc-2.35-r10.ebuild
index 9304559b29e4..c07be651ccb0 100644
--- a/sys-libs/glibc/glibc-2.35-r10.ebuild
+++ b/sys-libs/glibc/glibc-2.35-r10.ebuild
@@ -882,6 +882,8 @@ src_prepare() {
                fi
        fi
 
+       eapply "${FILESDIR}"/2.35/glibc-2.35-make-4.4-MAKEFLAGS.patch
+
        if use clone3 ; then
                append-cppflags -DGENTOO_USE_CLONE3
        else

diff --git a/sys-libs/glibc/glibc-2.36-r1.ebuild 
b/sys-libs/glibc/glibc-2.36-r1.ebuild
index 5ca8bd820bbd..3b5e0a61d825 100644
--- a/sys-libs/glibc/glibc-2.36-r1.ebuild
+++ b/sys-libs/glibc/glibc-2.36-r1.ebuild
@@ -888,6 +888,8 @@ src_prepare() {
                einfo "Done."
        fi
 
+       eapply "${FILESDIR}"/2.35/glibc-2.35-make-4.4-MAKEFLAGS.patch
+
        default
 
        gnuconfig_update

Reply via email to