* [PATCH] Makefile: fix use of -j without an argument
@ 2024-04-11 15:09 Matheus Tavares Bernardino
2024-04-11 15:29 ` Philippe Mathieu-Daudé
2024-04-12 8:02 ` Paolo Bonzini
0 siblings, 2 replies; 6+ messages in thread
From: Matheus Tavares Bernardino @ 2024-04-11 15:09 UTC (permalink / raw
To: qemu-devel; +Cc: pbonzini, martin, Alex Bennée, Thomas Huth
Our Makefile massages the given make arguments to invoke ninja
accordingly. One key difference is that ninja will parallelize by
default, whereas make only does so with -j<n> or -j. The make man page
says that "if the -j option is given without an argument, make will not
limit the number of jobs that can run simultaneously". We use to support
that by replacing -j with "" (empty string) when calling ninja, so that
it would do its auto-parallelization based on the number of CPU cores.
This was accidentally broken at d1ce2cc95b (Makefile: preserve
--jobserver-auth argument when calling ninja, 2024-04-02),
causing `make -j` to fail:
$ make -j V=1
/usr/bin/ninja -v -j -d keepdepfile all | cat
make -C contrib/plugins/ V="1" TARGET_DIR="contrib/plugins/" all
ninja: fatal: invalid -j parameter
make: *** [Makefile:161: run-ninja] Error
Let's fix that and indent the touched code for better readability.
Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
---
Makefile | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 183756018f..d299c14dab 100644
--- a/Makefile
+++ b/Makefile
@@ -142,8 +142,12 @@ 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) \
- $(or $(filter -l% -j%, $(MAKEFLAGS)), $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
- -d keepdepfile
+ $(if $(filter -j, $(MAKEFLAGS)) \
+ ,, \
+ $(or \
+ $(filter -l% -j%, $(MAKEFLAGS)), \
+ $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
+ ) -d keepdepfile
ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))
--
2.37.2
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] Makefile: fix use of -j without an argument
2024-04-11 15:09 [PATCH] Makefile: fix use of -j without an argument Matheus Tavares Bernardino
@ 2024-04-11 15:29 ` Philippe Mathieu-Daudé
2024-04-11 15:38 ` Matheus Tavares Bernardino
2024-04-12 8:02 ` Paolo Bonzini
1 sibling, 1 reply; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-04-11 15:29 UTC (permalink / raw
To: Matheus Tavares Bernardino, qemu-devel
Cc: pbonzini, martin, Alex Bennée, Thomas Huth,
Martin Hundebøll
Hi Matheus,
On 11/4/24 17:09, Matheus Tavares Bernardino wrote:
> Our Makefile massages the given make arguments to invoke ninja
> accordingly. One key difference is that ninja will parallelize by
> default, whereas make only does so with -j<n> or -j. The make man page
> says that "if the -j option is given without an argument, make will not
> limit the number of jobs that can run simultaneously". We use to support
> that by replacing -j with "" (empty string) when calling ninja, so that
> it would do its auto-parallelization based on the number of CPU cores.
>
> This was accidentally broken at d1ce2cc95b (Makefile: preserve
> --jobserver-auth argument when calling ninja, 2024-04-02),
> causing `make -j` to fail:
>
> $ make -j V=1
> /usr/bin/ninja -v -j -d keepdepfile all | cat
> make -C contrib/plugins/ V="1" TARGET_DIR="contrib/plugins/" all
> ninja: fatal: invalid -j parameter
> make: *** [Makefile:161: run-ninja] Error
>
> Let's fix that and indent the touched code for better readability.
>
> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> ---
> Makefile | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 183756018f..d299c14dab 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -142,8 +142,12 @@ 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) \
> - $(or $(filter -l% -j%, $(MAKEFLAGS)), $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
> - -d keepdepfile
> + $(if $(filter -j, $(MAKEFLAGS)) \
> + ,, \
> + $(or \
> + $(filter -l% -j%, $(MAKEFLAGS)), \
> + $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
> + ) -d keepdepfile
> ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
> ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))
>
Apparently Martin sent the same patch (although not as nicely
indented) and Paolo queued it:
https://lore.kernel.org/qemu-devel/20240402081738.1051560-1-martin@geanix.com/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Makefile: fix use of -j without an argument
2024-04-11 15:29 ` Philippe Mathieu-Daudé
@ 2024-04-11 15:38 ` Matheus Tavares Bernardino
2024-04-11 17:08 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 6+ messages in thread
From: Matheus Tavares Bernardino @ 2024-04-11 15:38 UTC (permalink / raw
To: Philippe Mathieu-Daudé
Cc: Matheus Tavares Bernardino, qemu-devel, pbonzini, martin,
Alex Bennée, Thomas Huth
Hi, Philippe
On Thu, 11 Apr 2024 17:29:58 +0200 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org> wrote:
>
> Hi Matheus,
>
> On 11/4/24 17:09, Matheus Tavares Bernardino wrote:
> > Our Makefile massages the given make arguments to invoke ninja
> > accordingly. One key difference is that ninja will parallelize by
> > default, whereas make only does so with -j<n> or -j. The make man page
> > says that "if the -j option is given without an argument, make will not
> > limit the number of jobs that can run simultaneously". We use to support
> > that by replacing -j with "" (empty string) when calling ninja, so that
> > it would do its auto-parallelization based on the number of CPU cores.
> >
> > This was accidentally broken at d1ce2cc95b (Makefile: preserve
> > --jobserver-auth argument when calling ninja, 2024-04-02),
> > causing `make -j` to fail:
> >
> > $ make -j V=1
> > /usr/bin/ninja -v -j -d keepdepfile all | cat
> > make -C contrib/plugins/ V="1" TARGET_DIR="contrib/plugins/" all
> > ninja: fatal: invalid -j parameter
> > make: *** [Makefile:161: run-ninja] Error
> >
> > Let's fix that and indent the touched code for better readability.
> >
> > Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
> > ---
> > Makefile | 8 ++++++--
> > 1 file changed, 6 insertions(+), 2 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index 183756018f..d299c14dab 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -142,8 +142,12 @@ 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) \
> > - $(or $(filter -l% -j%, $(MAKEFLAGS)), $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
> > - -d keepdepfile
> > + $(if $(filter -j, $(MAKEFLAGS)) \
> > + ,, \
> > + $(or \
> > + $(filter -l% -j%, $(MAKEFLAGS)), \
> > + $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
> > + ) -d keepdepfile
> > ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
> > ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))
> >
>
> Apparently Martin sent the same patch (although not as nicely
> indented) and Paolo queued it:
> https://lore.kernel.org/qemu-devel/20240402081738.1051560-1-martin@geanix.com/
Actually, this patch is a follow-up to that one, fixing a feature that was
accidentally broken.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Makefile: fix use of -j without an argument
2024-04-11 15:38 ` Matheus Tavares Bernardino
@ 2024-04-11 17:08 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 6+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-04-11 17:08 UTC (permalink / raw
To: Matheus Tavares Bernardino
Cc: qemu-devel, pbonzini, martin, Alex Bennée, Thomas Huth
On 11/4/24 17:38, Matheus Tavares Bernardino wrote:
> Hi, Philippe
>
> On Thu, 11 Apr 2024 17:29:58 +0200 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org> wrote:
>>
>> Hi Matheus,
>>
>> On 11/4/24 17:09, Matheus Tavares Bernardino wrote:
>>> Our Makefile massages the given make arguments to invoke ninja
>>> accordingly. One key difference is that ninja will parallelize by
>>> default, whereas make only does so with -j<n> or -j. The make man page
>>> says that "if the -j option is given without an argument, make will not
>>> limit the number of jobs that can run simultaneously". We use to support
>>> that by replacing -j with "" (empty string) when calling ninja, so that
>>> it would do its auto-parallelization based on the number of CPU cores.
>>>
>>> This was accidentally broken at d1ce2cc95b (Makefile: preserve
>>> --jobserver-auth argument when calling ninja, 2024-04-02),
>>> causing `make -j` to fail:
>>>
>>> $ make -j V=1
>>> /usr/bin/ninja -v -j -d keepdepfile all | cat
>>> make -C contrib/plugins/ V="1" TARGET_DIR="contrib/plugins/" all
>>> ninja: fatal: invalid -j parameter
>>> make: *** [Makefile:161: run-ninja] Error
>>>
>>> Let's fix that and indent the touched code for better readability.
>>>
>>> Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
>>> ---
>>> Makefile | 8 ++++++--
>>> 1 file changed, 6 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/Makefile b/Makefile
>>> index 183756018f..d299c14dab 100644
>>> --- a/Makefile
>>> +++ b/Makefile
>>> @@ -142,8 +142,12 @@ 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) \
>>> - $(or $(filter -l% -j%, $(MAKEFLAGS)), $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
>>> - -d keepdepfile
>>> + $(if $(filter -j, $(MAKEFLAGS)) \
>>> + ,, \
>>> + $(or \
>>> + $(filter -l% -j%, $(MAKEFLAGS)), \
>>> + $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
>>> + ) -d keepdepfile
>>> ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
>>> ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))
>>>
>>
>> Apparently Martin sent the same patch (although not as nicely
>> indented) and Paolo queued it:
>> https://lore.kernel.org/qemu-devel/20240402081738.1051560-1-martin@geanix.com/
>
> Actually, this patch is a follow-up to that one, fixing a feature that was
> accidentally broken.
Oops sorry I missed that, I was not expecting this patch to be merged
in 9.0 :/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Makefile: fix use of -j without an argument
2024-04-11 15:09 [PATCH] Makefile: fix use of -j without an argument Matheus Tavares Bernardino
2024-04-11 15:29 ` Philippe Mathieu-Daudé
@ 2024-04-12 8:02 ` Paolo Bonzini
1 sibling, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2024-04-12 8:02 UTC (permalink / raw
To: Matheus Tavares Bernardino
Cc: qemu-devel, martin, Alex Bennée, Thomas Huth
On Thu, Apr 11, 2024 at 5:46 PM Matheus Tavares Bernardino
<quic_mathbern@quicinc.com> wrote:
> + $(if $(filter -j, $(MAKEFLAGS)) \
> + ,, \
> + $(or \
> + $(filter -l% -j%, $(MAKEFLAGS)), \
> + $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
> + ) -d keepdepfile
This is more easily written as $(filter-out -j, $(or ...)).
I've sent a v2.
Paolo
> ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
> ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))
>
> --
> 2.37.2
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Makefile: fix use of -j without an argument
[not found] <CABgObfa5NVGTTC_D09tomXf6FhYnbCt6wY_K_L32cWLXOhaJgg@mail.gmail.com>
@ 2024-04-12 11:56 ` Matheus Tavares Bernardino
0 siblings, 0 replies; 6+ messages in thread
From: Matheus Tavares Bernardino @ 2024-04-12 11:56 UTC (permalink / raw
To: Paolo Bonzini
Cc: Matheus Tavares Bernardino, qemu-devel, martin, Alex Bennée,
Thomas Huth
On Fri, 12 Apr 2024 10:02:54 +0200 Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> On Thu, Apr 11, 2024 at 5:46 PM Matheus Tavares Bernardino
> <quic_mathbern@quicinc.com> wrote:
> > + $(if $(filter -j, $(MAKEFLAGS)) \
> > + ,, \
> > + $(or \
> > + $(filter -l% -j%, $(MAKEFLAGS)), \
> > + $(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1)) \
> > + ) -d keepdepfile
>
> This is more easily written as $(filter-out -j, $(or ...)).
>
> I've sent a v2.
Thanks!
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-04-12 11:57 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-11 15:09 [PATCH] Makefile: fix use of -j without an argument Matheus Tavares Bernardino
2024-04-11 15:29 ` Philippe Mathieu-Daudé
2024-04-11 15:38 ` Matheus Tavares Bernardino
2024-04-11 17:08 ` Philippe Mathieu-Daudé
2024-04-12 8:02 ` Paolo Bonzini
[not found] <CABgObfa5NVGTTC_D09tomXf6FhYnbCt6wY_K_L32cWLXOhaJgg@mail.gmail.com>
2024-04-12 11:56 ` Matheus Tavares Bernardino
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.