[1/2] ninja: Allow to limit the parallel build processes.

Message ID 20201226170924.12208-1-stefan.schantl@ipfire.org
State Accepted
Commit 9c51467d05d765fad1788be478b41412192af8d9
Headers
Series [1/2] ninja: Allow to limit the parallel build processes. |

Commit Message

Stefan Schantl Dec. 26, 2020, 5:09 p.m. UTC
  When run, ninja normally runs a maximum number of processes in parallel.
By default this is the number of cores on the system plus two. In some cases this can
overheat a CPU or run a system out of memory. If run from the command line, passing a
-jN parameter will limit the number of parallel processes, but some packages embed the
execution of ninja and do not pass a -j parameter.

Using this optional procedure allows us to limit the number of parallel processes
via an environment variable, NINJAJOBS.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
---
 lfs/ninja | 8 ++++++++
 1 file changed, 8 insertions(+)
  

Patch

diff --git a/lfs/ninja b/lfs/ninja
index c968345f4..ed9f8b778 100644
--- a/lfs/ninja
+++ b/lfs/ninja
@@ -71,6 +71,14 @@  $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
 
+	# Allow to limit the paralell build processes ninja will do.
+	cd $(DIR_APP) && sed -i '/int Guess/a \
+				int   j = 0;\
+				char* jobs = getenv( "NINJAJOBS" );\
+				if ( jobs != NULL ) j = atoi( jobs );\
+				if ( j > 0 ) return j;\
+			' src/ninja.cc
+
 	# Configure and bootstrap the build environment
 	cd $(DIR_APP) && python3 configure.py --bootstrap --verbose