public inbox for libc-stable@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Make release branches compatible with make-4.4
@ 2024-05-09 21:22 H.J. Lu
  2024-05-09 21:22 ` [PATCH 1/2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564] H.J. Lu
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: H.J. Lu @ 2024-05-09 21:22 UTC (permalink / raw)
  To: libc-stable; +Cc: skpgkp2

Update makefiles in release branches so that they can be built with
make-4.4.  These patches are only needed for 2.31 or older branches
since 2.32 and newer don't have this issue.

Fixes BZ #31330.

H.J. Lu (1):
  Don't make errlist.o[s].d depend on errlist-compat.h

Sergei Trofimovich (1):
  Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]

 Makeconfig           | 18 +++++++++++++++++-
 Makerules            |  4 ++--
 elf/rtld-Rules       |  2 +-
 sysdeps/gnu/Makefile |  3 +--
 4 files changed, 21 insertions(+), 6 deletions(-)

-- 
2.45.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]
  2024-05-09 21:22 [PATCH 0/2] Make release branches compatible with make-4.4 H.J. Lu
@ 2024-05-09 21:22 ` H.J. Lu
  2024-05-10  1:11   ` Sunil Pandey
  2024-05-09 21:22 ` [PATCH 2/2] Don't make errlist.o[s].d depend on errlist-compat.h H.J. Lu
  2024-05-10  1:10 ` [PATCH 0/2] Make release branches compatible with make-4.4 Sunil Pandey
  2 siblings, 1 reply; 6+ messages in thread
From: H.J. Lu @ 2024-05-09 21:22 UTC (permalink / raw)
  To: libc-stable
  Cc: skpgkp2, Sergei Trofimovich, Paul Smith, Siddhesh Poyarekar,
	Siddhesh Poyarekar

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))
 \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 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


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/2] Don't make errlist.o[s].d depend on errlist-compat.h
  2024-05-09 21:22 [PATCH 0/2] Make release branches compatible with make-4.4 H.J. Lu
  2024-05-09 21:22 ` [PATCH 1/2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564] H.J. Lu
@ 2024-05-09 21:22 ` H.J. Lu
  2024-05-10  1:11   ` Sunil Pandey
  2024-05-10  1:10 ` [PATCH 0/2] Make release branches compatible with make-4.4 Sunil Pandey
  2 siblings, 1 reply; 6+ messages in thread
From: H.J. Lu @ 2024-05-09 21:22 UTC (permalink / raw)
  To: libc-stable; +Cc: skpgkp2

stdio-common/errlist.o.d and stdio-common/errlist.os.d aren't generated
alongside with stdio-common/errlist-compat.h.  Don't make them depend on
stdio-common/errlist-compat.h to avoid infinite loop with make-4.4.  This
fixes BZ #31330.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
---
 sysdeps/gnu/Makefile | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile
index 97fcb6fb90..26dc91d90a 100644
--- a/sysdeps/gnu/Makefile
+++ b/sysdeps/gnu/Makefile
@@ -54,8 +54,7 @@ $(objpfx)errlist-compat.h: $(objpfx)errlist-compat.c
 generated += errlist-compat.c errlist-compat.h
 
 # This will force the generation above to happy if need be.
-$(foreach o,$(object-suffixes) $(object-suffixes:=.d),\
-	  $(objpfx)errlist$o): $(objpfx)errlist-compat.h
+$(foreach o,$(object-suffixes),$(objpfx)errlist$o): $(objpfx)errlist-compat.h
 endif
 
 ifeq ($(subdir),login)
-- 
2.45.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/2] Make release branches compatible with make-4.4
  2024-05-09 21:22 [PATCH 0/2] Make release branches compatible with make-4.4 H.J. Lu
  2024-05-09 21:22 ` [PATCH 1/2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564] H.J. Lu
  2024-05-09 21:22 ` [PATCH 2/2] Don't make errlist.o[s].d depend on errlist-compat.h H.J. Lu
@ 2024-05-10  1:10 ` Sunil Pandey
  2 siblings, 0 replies; 6+ messages in thread
From: Sunil Pandey @ 2024-05-10  1:10 UTC (permalink / raw)
  To: H.J. Lu; +Cc: libc-stable

[-- Attachment #1: Type: text/plain, Size: 705 bytes --]

On Thu, May 9, 2024 at 2:22 PM H.J. Lu <hjl.tools@gmail.com> wrote:

> Update makefiles in release branches so that they can be built with
> make-4.4.  These patches are only needed for 2.31 or older branches
> since 2.32 and newer don't have this issue.
>
> Fixes BZ #31330.
>
> H.J. Lu (1):
>   Don't make errlist.o[s].d depend on errlist-compat.h
>
> Sergei Trofimovich (1):
>   Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]
>
>  Makeconfig           | 18 +++++++++++++++++-
>  Makerules            |  4 ++--
>  elf/rtld-Rules       |  2 +-
>  sysdeps/gnu/Makefile |  3 +--
>  4 files changed, 21 insertions(+), 6 deletions(-)
>
> --
> 2.45.0
>
> LGTM

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]
  2024-05-09 21:22 ` [PATCH 1/2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564] H.J. Lu
@ 2024-05-10  1:11   ` Sunil Pandey
  0 siblings, 0 replies; 6+ messages in thread
From: Sunil Pandey @ 2024-05-10  1:11 UTC (permalink / raw)
  To: H.J. Lu
  Cc: libc-stable, Sergei Trofimovich, Paul Smith, Siddhesh Poyarekar,
	Siddhesh Poyarekar

[-- Attachment #1: Type: text/plain, Size: 4351 bytes --]

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] Don't make errlist.o[s].d depend on errlist-compat.h
  2024-05-09 21:22 ` [PATCH 2/2] Don't make errlist.o[s].d depend on errlist-compat.h H.J. Lu
@ 2024-05-10  1:11   ` Sunil Pandey
  0 siblings, 0 replies; 6+ messages in thread
From: Sunil Pandey @ 2024-05-10  1:11 UTC (permalink / raw)
  To: H.J. Lu; +Cc: libc-stable

[-- Attachment #1: Type: text/plain, Size: 1150 bytes --]

On Thu, May 9, 2024 at 2:22 PM H.J. Lu <hjl.tools@gmail.com> wrote:

> stdio-common/errlist.o.d and stdio-common/errlist.os.d aren't generated
> alongside with stdio-common/errlist-compat.h.  Don't make them depend on
> stdio-common/errlist-compat.h to avoid infinite loop with make-4.4.  This
> fixes BZ #31330.
>
> Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
> ---
>  sysdeps/gnu/Makefile | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile
> index 97fcb6fb90..26dc91d90a 100644
> --- a/sysdeps/gnu/Makefile
> +++ b/sysdeps/gnu/Makefile
> @@ -54,8 +54,7 @@ $(objpfx)errlist-compat.h: $(objpfx)errlist-compat.c
>  generated += errlist-compat.c errlist-compat.h
>
>  # This will force the generation above to happy if need be.
> -$(foreach o,$(object-suffixes) $(object-suffixes:=.d),\
> -         $(objpfx)errlist$o): $(objpfx)errlist-compat.h
> +$(foreach o,$(object-suffixes),$(objpfx)errlist$o):
> $(objpfx)errlist-compat.h
>  endif
>
>  ifeq ($(subdir),login)
> --
> 2.45.0
>
>
LGTM
Reviewed-by: Sunil K Pandey <skpgkp2@gmail.com>

--Sunil

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-05-10  1:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-09 21:22 [PATCH 0/2] Make release branches compatible with make-4.4 H.J. Lu
2024-05-09 21:22 ` [PATCH 1/2] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564] H.J. Lu
2024-05-10  1:11   ` Sunil Pandey
2024-05-09 21:22 ` [PATCH 2/2] Don't make errlist.o[s].d depend on errlist-compat.h H.J. Lu
2024-05-10  1:11   ` Sunil Pandey
2024-05-10  1:10 ` [PATCH 0/2] Make release branches compatible with make-4.4 Sunil Pandey

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).