Message ID | 20221010003515.796446-1-james.hilliard1@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [1/1] package/glibc: fix make-4.4 compatibility | expand |
James, All, On 2022-10-09 18:35 -0600, James Hilliard spake thusly: > Backport a patch fixing compatibility with upcoming make 4.4. > > Fixes: > - http://autobuild.buildroot.net/results/5a3/5a3f6414d75fbc8a272258bf3bdb6f4fe7e6da34 > - http://autobuild.buildroot.net/results/481/481c4617813da031beddaf00b97440071f646809 > - http://autobuild.buildroot.net/results/cf1/cf152e7a95bec3b6ebd0209dd716cbec56f9d477 > > Signed-off-by: James Hilliard <james.hilliard1@gmail.com> Applied to master, thanks. I'm afraid we'll get more packages that will suffer from that, but it at least looks like our own Makefile is immune to it: QUIET := $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),-q) which seems to be the only place we act on MAKEFLAGS. Hmm Or maybe not, after all. Can we have somthing like: --some-option=some-string which can be written as: --some-option some-string in which case our code would hit the "some-string" and interpret it as silent... Regards, Yann E. MORIN. > --- > ...KEFLAGS-assignment-for-upcoming-make.patch | 117 ++++++++++++++++++ > 1 file changed, 117 insertions(+) > create mode 100644 package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch > > diff --git a/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch b/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch > new file mode 100644 > index 0000000000..0c82d7abbe > --- /dev/null > +++ b/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch > @@ -0,0 +1,117 @@ > +From 2d7ed98add14f75041499ac189696c9bd3d757fe Mon Sep 17 00:00:00 2001 > +From: Sergei Trofimovich <slyich@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 <psmith@gnu.org> > +CC: Siddhesh Poyarekar <siddhesh@gotplt.org> > +Signed-off-by: Sergei Trofimovich <slyich@gmail.com> > +Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> > +Signed-off-by: James Hilliard <james.hilliard1@gmail.com> > +[james.hilliard1@gmail.com: backport from upstream commit > +2d7ed98add14f75041499ac189696c9bd3d757fe] > +--- > + 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)) > + > + # 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 := > +-- > +2.34.1 > + > -- > 2.34.1 > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
On Fri, Oct 14, 2022 at 4:26 PM Yann E. MORIN <yann.morin.1998@free.fr> wrote: > > James, All, > > On 2022-10-09 18:35 -0600, James Hilliard spake thusly: > > Backport a patch fixing compatibility with upcoming make 4.4. > > > > Fixes: > > - http://autobuild.buildroot.net/results/5a3/5a3f6414d75fbc8a272258bf3bdb6f4fe7e6da34 > > - http://autobuild.buildroot.net/results/481/481c4617813da031beddaf00b97440071f646809 > > - http://autobuild.buildroot.net/results/cf1/cf152e7a95bec3b6ebd0209dd716cbec56f9d477 > > > > Signed-off-by: James Hilliard <james.hilliard1@gmail.com> > > Applied to master, thanks. > > I'm afraid we'll get more packages that will suffer from that, but it > at least looks like our own Makefile is immune to it: > > QUIET := $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),-q) > > which seems to be the only place we act on MAKEFLAGS. > > Hmm Or maybe not, after all. Can we have somthing like: > > --some-option=some-string > which can be written as: > --some-option some-string > > in which case our code would hit the "some-string" and interpret it as > silent... This should fix any issues with QUIET: https://patchwork.ozlabs.org/project/buildroot/patch/20221014230905.3091021-1-james.hilliard1@gmail.com/ Also MAKE1 is broken, this should fix it: https://patchwork.ozlabs.org/project/buildroot/patch/20221015005611.4054933-1-james.hilliard1@gmail.com/ > > Regards, > Yann E. MORIN. > > > --- > > ...KEFLAGS-assignment-for-upcoming-make.patch | 117 ++++++++++++++++++ > > 1 file changed, 117 insertions(+) > > create mode 100644 package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch > > > > diff --git a/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch b/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch > > new file mode 100644 > > index 0000000000..0c82d7abbe > > --- /dev/null > > +++ b/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch > > @@ -0,0 +1,117 @@ > > +From 2d7ed98add14f75041499ac189696c9bd3d757fe Mon Sep 17 00:00:00 2001 > > +From: Sergei Trofimovich <slyich@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 <psmith@gnu.org> > > +CC: Siddhesh Poyarekar <siddhesh@gotplt.org> > > +Signed-off-by: Sergei Trofimovich <slyich@gmail.com> > > +Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> > > +Signed-off-by: James Hilliard <james.hilliard1@gmail.com> > > +[james.hilliard1@gmail.com: backport from upstream commit > > +2d7ed98add14f75041499ac189696c9bd3d757fe] > > +--- > > + 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)) > > + > > + # 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 := > > +-- > > +2.34.1 > > + > > -- > > 2.34.1 > > > > _______________________________________________ > > buildroot mailing list > > buildroot@buildroot.org > > https://lists.buildroot.org/mailman/listinfo/buildroot > > -- > .-----------------.--------------------.------------------.--------------------. > | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | > | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | > | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | > | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | > '------------------------------^-------^------------------^--------------------'
diff --git a/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch b/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch new file mode 100644 index 0000000000..0c82d7abbe --- /dev/null +++ b/package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch @@ -0,0 +1,117 @@ +From 2d7ed98add14f75041499ac189696c9bd3d757fe Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyich@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 <psmith@gnu.org> +CC: Siddhesh Poyarekar <siddhesh@gotplt.org> +Signed-off-by: Sergei Trofimovich <slyich@gmail.com> +Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> +Signed-off-by: James Hilliard <james.hilliard1@gmail.com> +[james.hilliard1@gmail.com: backport from upstream commit +2d7ed98add14f75041499ac189696c9bd3d757fe] +--- + 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)) + + # 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 := +-- +2.34.1 +
Backport a patch fixing compatibility with upcoming make 4.4. Fixes: - http://autobuild.buildroot.net/results/5a3/5a3f6414d75fbc8a272258bf3bdb6f4fe7e6da34 - http://autobuild.buildroot.net/results/481/481c4617813da031beddaf00b97440071f646809 - http://autobuild.buildroot.net/results/cf1/cf152e7a95bec3b6ebd0209dd716cbec56f9d477 Signed-off-by: James Hilliard <james.hilliard1@gmail.com> --- ...KEFLAGS-assignment-for-upcoming-make.patch | 117 ++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 package/glibc/0002-Makerules-fix-MAKEFLAGS-assignment-for-upcoming-make.patch