public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Siddhesh Poyarekar <siddhesh@gotplt.org>
To: Sergei Trofimovich <slyich@gmail.com>, libc-alpha@sourceware.org
Cc: Paul Smith <psmith@gnu.org>
Subject: Re: [PATCH v3] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]
Date: Tue, 13 Sep 2022 10:21:36 -0400	[thread overview]
Message-ID: <c879587c-79d8-05c2-49b0-c155e4ade9c6@gotplt.org> (raw)
In-Reply-To: <20220912230758.7370-1-slyich@gmail.com>



On 2022-09-12 19:07, Sergei Trofimovich wrote:
> 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.
> 
> CC: Paul Smith <psmith@gnu.org>
> CC: Siddhesh Poyarekar <siddhesh@gotplt.org>
> Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
> ---

LGTM.  I'll commit this in a while.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>

> Change since v2:
> - Used more robust '$(firstword' for suggested by Paul Smith.
> Change since v1:
> - Fixed $(MAKEFLAGS) introspection to avoid false positives on long
>    options.
> - Fixed 'Makefules' typo in the subject line.
>   Makeconfig     | 18 +++++++++++++++++-
>   Makerules      |  4 ++--
>   elf/rtld-Rules |  2 +-
>   3 files changed, 20 insertions(+), 4 deletions(-)
> 
> diff --git a/Makeconfig b/Makeconfig
> index f8164a0025..842f49eb58 100644
> --- 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
> diff --git a/Makerules b/Makerules
> index d1e139d03c..09c0cf8357 100644
> --- 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))
>   \f
>   # 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 ca00dd1fe2..3c5e273f2b 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	:=

      reply	other threads:[~2022-09-13 14:21 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-09 11:50 [PATCH] Makefules: fix MAKEFLAGS assignment for upcoming make-4.4 Sergei Trofimovich
2022-09-12 20:27 ` Siddhesh Poyarekar
2022-09-12 21:27   ` [PATCH v2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564] Sergei Trofimovich
2022-09-12 22:47     ` Paul Smith
2022-09-12 23:07       ` [PATCH v3] " Sergei Trofimovich
2022-09-13 14:21         ` Siddhesh Poyarekar [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c879587c-79d8-05c2-49b0-c155e4ade9c6@gotplt.org \
    --to=siddhesh@gotplt.org \
    --cc=libc-alpha@sourceware.org \
    --cc=psmith@gnu.org \
    --cc=slyich@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).