Message ID | 20240402081738.1051560-1-martin@geanix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Makefile: preserve --jobserver-auth argument when calling ninja | expand |
Queued, thanks. Paolo
Am 02.04.24 um 10:17 schrieb Martin Hundebøll: > Qemu wraps its call to ninja in a Makefile. Since ninja, as opposed to > make, utilizes all CPU cores by default, the qemu Makefile translates > the absense of a `-jN` argument into `-j1`. This breaks jobserver > functionality, so update the -jN mangling to take the --jobserver-auth > argument into considerationa too. > > Signed-off-by: Martin Hundebøll <martin@geanix.com> > --- > Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index 8f36990335..183756018f 100644 > --- a/Makefile > +++ b/Makefile > @@ -142,7 +142,7 @@ 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)))) \ > + $(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)) Hi, unfortunately, this patch breaks build when specifying just '-j' as a make flag (i.e. without a number), because it will now end up being passed to ninja: > $ make -j > changing dir to build for make ""... > make[1]: Entering directory '/home/febner/repos/qemu/build' > ninja: fatal: invalid -j parameter Best Regards, Fiona
On Fri, Apr 12, 2024 at 1:52 PM Fiona Ebner <f.ebner@proxmox.com> wrote: > > Am 02.04.24 um 10:17 schrieb Martin Hundebøll: > > Qemu wraps its call to ninja in a Makefile. Since ninja, as opposed to > > make, utilizes all CPU cores by default, the qemu Makefile translates > > the absense of a `-jN` argument into `-j1`. This breaks jobserver > > functionality, so update the -jN mangling to take the --jobserver-auth > > argument into considerationa too. > > > > Signed-off-by: Martin Hundebøll <martin@geanix.com> > > --- > > Makefile | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/Makefile b/Makefile > > index 8f36990335..183756018f 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -142,7 +142,7 @@ 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)))) \ > > + $(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)) > > Hi, > > unfortunately, this patch breaks build when specifying just '-j' as a > make flag (i.e. without a number), because it will now end up being > passed to ninja: Yep, I've sent a pull request with the fix. Paolo
diff --git a/Makefile b/Makefile index 8f36990335..183756018f 100644 --- a/Makefile +++ b/Makefile @@ -142,7 +142,7 @@ 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)))) \ + $(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))
Qemu wraps its call to ninja in a Makefile. Since ninja, as opposed to make, utilizes all CPU cores by default, the qemu Makefile translates the absense of a `-jN` argument into `-j1`. This breaks jobserver functionality, so update the -jN mangling to take the --jobserver-auth argument into considerationa too. Signed-off-by: Martin Hundebøll <martin@geanix.com> --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)