Thanks for the patch set Martin!

On 2023-08-28 08:48, Martin Hundeb?ll via lists.openembedded.org wrote:
If the jobserver class is enabled, the PARALLEL_MAKE variable is unset in
favor of configuring a shared jobserver in the MAKEFLAGS variable. However,
the qemu makefile translates the missing `-j<N>` argument to `-j1` when
calling into meson / ninja. Avoid this by setting `-j` without a value.
For normal/GNU make, this can result in a fork bomb, but for ninja, it
simply makes it use the jobserver fifa instead.
small typo: s/fifa/fifo/

Signed-off-by: Martin Hundebøll<mar...@geanix.com>
---
  meta/recipes-devtools/qemu/qemu.inc | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/meta/recipes-devtools/qemu/qemu.inc 
b/meta/recipes-devtools/qemu/qemu.inc
index ea02bf0c73..7da05fcbf4 100644
--- a/meta/recipes-devtools/qemu/qemu.inc
+++ b/meta/recipes-devtools/qemu/qemu.inc
@@ -110,6 +110,11 @@ EXTRA_OECONF = " \
      ${PACKAGECONFIG_CONFARGS} \
      "
+# Avoid the qemu makefile treating a missing `-j<N>` argument as `-j1` when
+# calling meson / ninja. This happens when the `jobserver` class is used, since
+# it manages parallelism in the MAKEFLAGS variable instead of PARALLEL_MAKE.
+EXTRA_OEMAKE:append ="${@' -j' if d.getVar('JOBSERVER_FIFO') else ''}"
+

Is there, or should there be, an upstream bug report/PR for this?

To save other from checking, this is from 2020:
qemu.git on master
❯ git blame Makefile | rg j1
09e93326e44 (Paolo Bonzini          2020-08-13 09:28:11 -0400 145)         $(filter-out -j, $(lastword -j1 $(filter -l% -j%, $(MAKEFLAGS)))) \

09e93326e4 build: replace ninjatool with ninja
https://gitlab.com/qemu-project/qemu/-/commit/09e93326e4


I've applied the patch set and will do a few builds on a old 24 core system and maybe other systems.

Do you have any information on the impact when using the job server?

I suspect that adding openssl to an image might be a good use case since it's is a highly parallel build. Are there other packages that don't depend on openssl that typically run at the same time and can use loads of cores for a long time? If not, I may try out a Nodejs + chromium + webkitgtk + ??? build!


../Randy

  B = "${WORKDIR}/build"
#EXTRA_OECONF:append = " --python=${HOSTTOOLS_DIR}/python3"




--
# Randy MacLeod
# Wind River Linux
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#186926): 
https://lists.openembedded.org/g/openembedded-core/message/186926
Mute This Topic: https://lists.openembedded.org/mt/101009095/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to