[PATCH 1/2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]
Sunil Pandey
skpgkp2@gmail.com
Fri May 10 01:11:11 GMT 2024
On Thu, May 9, 2024 at 2:22 PM H.J. Lu <hjl.tools@gmail.com> wrote:
> From: Sergei Trofimovich <slyich@gmail.com>
>
> 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 <psmith@gnu.org>
> CC: Siddhesh Poyarekar <siddhesh@gotplt.org>
> Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
> Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
> (cherry picked from commit 2d7ed98add14f75041499ac189696c9bd3d757fe)
> ---
> Makeconfig | 18 +++++++++++++++++-
> Makerules | 4 ++--
> elf/rtld-Rules | 2 +-
> 3 files changed, 20 insertions(+), 4 deletions(-)
>
> diff --git a/Makeconfig b/Makeconfig
> index f252842979..6adb65fca4 100644
> --- a/Makeconfig
> +++ b/Makeconfig
> @@ -42,6 +42,22 @@ else
> 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)
> @@ -892,7 +908,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
> diff --git a/Makerules b/Makerules
> index 1e9c18f0d8..e07a42e20c 100644
> --- a/Makerules
> +++ b/Makerules
> @@ -805,7 +805,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.
> %/:
> @@ -822,7 +822,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 :=
> diff --git a/elf/rtld-Rules b/elf/rtld-Rules
> index 7e0254cc41..3b73937d4d 100644
> --- 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 :=
> --
> 2.45.0
>
>
LGTM
Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>
--Sunil
More information about the Libc-stable
mailing list