When searching for options like -n in MAKEFLAGS, current code may result
in a false positive match when make is invoked with long options like
--no-print-directory. This has been observed with certain versions of
host make (e.g. 3.82) while building the Qemu package in buildroot.
Filter out such long options before searching for one-character options.
Signed-off-by: Alexey Neyman <stilor@att.net>
---
Makefile | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/Makefile b/Makefile
index 6c36330eef..401c623a65 100644
--- a/Makefile
+++ b/Makefile
@@ -129,9 +129,11 @@ endif
# 4. Rules to bridge to other makefiles
ifneq ($(NINJA),)
-MAKE.n = $(findstring n,$(firstword $(MAKEFLAGS)))
-MAKE.k = $(findstring k,$(firstword $(MAKEFLAGS)))
-MAKE.q = $(findstring q,$(firstword $(MAKEFLAGS)))
+# Filter out long options to avoid flags like --no-print-directory which
+# may result in false positive match for MAKE.n
+MAKE.n = $(findstring n,$(firstword $(filter-out --%,$(MAKEFLAGS))))
+MAKE.k = $(findstring k,$(firstword $(filter-out --%,$(MAKEFLAGS))))
+MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS))))
MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq)
NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \
$(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
--
2.27.0
Patch ping... On 7/21/21 9:05 PM, Alexey Neyman wrote: > When searching for options like -n in MAKEFLAGS, current code may result > in a false positive match when make is invoked with long options like > --no-print-directory. This has been observed with certain versions of > host make (e.g. 3.82) while building the Qemu package in buildroot. > > Filter out such long options before searching for one-character options. > > Signed-off-by: Alexey Neyman <stilor@att.net> > --- > Makefile | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/Makefile b/Makefile > index 6c36330eef..401c623a65 100644 > --- a/Makefile > +++ b/Makefile > @@ -129,9 +129,11 @@ endif > # 4. Rules to bridge to other makefiles > > ifneq ($(NINJA),) > -MAKE.n = $(findstring n,$(firstword $(MAKEFLAGS))) > -MAKE.k = $(findstring k,$(firstword $(MAKEFLAGS))) > -MAKE.q = $(findstring q,$(firstword $(MAKEFLAGS))) > +# Filter out long options to avoid flags like --no-print-directory which > +# may result in false positive match for MAKE.n > +MAKE.n = $(findstring n,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > +MAKE.k = $(findstring k,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > +MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq) > NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \ > $(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \
On Sat, 24 Jul 2021 at 07:16, Alexey Neyman <stilor@att.net> wrote: > > Patch ping... Ccing Paolo as author of this bit of code... > On 7/21/21 9:05 PM, Alexey Neyman wrote: > > When searching for options like -n in MAKEFLAGS, current code may result > > in a false positive match when make is invoked with long options like > > --no-print-directory. This has been observed with certain versions of > > host make (e.g. 3.82) while building the Qemu package in buildroot. > > > > Filter out such long options before searching for one-character options. > > > > Signed-off-by: Alexey Neyman <stilor@att.net> > > --- > > Makefile | 8 +++++--- > > 1 file changed, 5 insertions(+), 3 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 6c36330eef..401c623a65 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -129,9 +129,11 @@ endif > > # 4. Rules to bridge to other makefiles > > > > ifneq ($(NINJA),) > > -MAKE.n = $(findstring n,$(firstword $(MAKEFLAGS))) > > -MAKE.k = $(findstring k,$(firstword $(MAKEFLAGS))) > > -MAKE.q = $(findstring q,$(firstword $(MAKEFLAGS))) > > +# Filter out long options to avoid flags like --no-print-directory which > > +# may result in false positive match for MAKE.n > > +MAKE.n = $(findstring n,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > > +MAKE.k = $(findstring k,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > > +MAKE.q = $(findstring q,$(firstword $(filter-out --%,$(MAKEFLAGS)))) > > MAKE.nq = $(if $(word 2, $(MAKE.n) $(MAKE.q)),nq) > > NINJAFLAGS = $(if $V,-v) $(if $(MAKE.n), -n) $(if $(MAKE.k), -k0) \ > > $(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \ > -- PMM
© 2016 - 2024 Red Hat, Inc.