All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yann E. MORIN <yann.morin.1998@free.fr>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v2] qt5webengine: propagate parallel flag to ninja
Date: Sat, 30 Jun 2018 19:07:08 +0200	[thread overview]
Message-ID: <20180630170708.GG2384@scaer> (raw)
In-Reply-To: <20180629143521.9018-1-gael.portay@savoirfairelinux.com>

Ga?l, All,

On 2018-06-29 10:35 -0400, Ga?l PORTAY spake thusly:
> WebEngine is a big project to build. It uses ninja which is a build
> system that does everything in parallel[1].
> 
> 	Builds are always run in parallel, based by default on the number of
> 	CPUs your system has. Underspecified build dependencies will result in
> 	incorrect builds.
> 
> QtWebEngine does not propagate the parallel flag from the running
> instance of make to ninja. Thus, all the machine cores are used to build
> this single project.
> 
> 	make -j 10 -> ninja -j # all cores
> 
> This behavior disrupts powerful machines which are setup to build many
> projects in parallel. Even worse, the build fails on machines where the
> ratio CPU-cores / amount of RAM (including swap) is not appropriate. g++
> may have not enough of memory to build all those files in parallel.
> 
> Unfortunatly, the target `run_ninja' is hardcoded in the Makefile
> src/core/Makefile.run_gn; there is no way to propagate flags using a
> variable through the make command-line.
> 
> 	run_ninja:
> 	        /home/gportay/src/buildroot/output-qt5.11/build/qt5webengine-5.11.1/src/3rdparty/ninja/ninja
> -C /home/gportay/src/buildroot/output-qt5.11/build/qt5webengine-5.11.1/src/core/release QtWebEngineCore
> 
> Luckily, the Qt gn_run.pro[2] can hardcode ninja extra flags through the
> variable NINJAFLAGS when the Makefile is generated (which is performed
> during the build and not during configure step).
> 
> This commit sets the NINJAFLAGS using the variable PARALLEL_JOBS to limit
> the number of cores used by ninja.
> 
> Fixes:
> 	virtual memory exhausted: Cannot allocate memory
> 
> [1]: https://ninja-build.org/manual.html#_comparison_to_make
> [2]: https://github.com/qt/qtwebengine/blob/v5.11.1/src/core/gn_run.pro#L49-L53
> 
> CC: Damien Riegel <damien.riegel@savoirfairelinux.com>
> CC: Jean-Fran?ois T?tu <jean-francois.tetu@savoirfairelinux.com>
> Signed-off-by: Ga?l PORTAY <gael.portay@savoirfairelinux.com>

Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr>

Regards,
Yann E. MORIN.

> ---
> Changes since v1:
>  - Use PARALLEL_JOBS instead of BR2_JLEVEL
>  - Reword commit message
> 
>  package/qt5/qt5webengine/qt5webengine.mk | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
> index 08120421d6..2c622c91ba 100644
> --- a/package/qt5/qt5webengine/qt5webengine.mk
> +++ b/package/qt5/qt5webengine/qt5webengine.mk
> @@ -48,6 +48,8 @@ define QT5WEBENGINE_PYTHON2_SYMLINK
>  endef
>  QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK
>  
> +QT5WEBENGINE_ENV += NINJAFLAGS="-j$(PARALLEL_JOBS)"
> +
>  ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y)
>  define QT5WEBENGINE_CREATE_HOST_PKG_CONFIG
>  	sed s%@HOST_DIR@%$(HOST_DIR)%g $(QT5WEBENGINE_PKGDIR)/host-pkg-config.in > $(@D)/host-bin/host-pkg-config
> -- 
> 2.17.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

  reply	other threads:[~2018-06-30 17:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-29 14:35 [Buildroot] [PATCH v2] qt5webengine: propagate parallel flag to ninja Gaël PORTAY
2018-06-30 17:07 ` Yann E. MORIN [this message]
2018-07-01  9:05 ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180630170708.GG2384@scaer \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.