Git commit 27505b67a2775cdb04c46b438e54b06158d6b658 by Michael Pyne. Committed on 08/07/2020 at 03:22. Pushed by mpyne into branch 'auto-detect-nr-cpus'.
rc-file: Update num-cpus to be num-cores, use env vars. M +6 -4 doc/index.docbook M +1 -1 kdesrc-build-setup M +1 -1 kdesrc-buildrc-kf5-sample M +2 -2 modules/ksb/BuildContext.pm M +1 -1 modules/ksb/FirstRun.pm M +5 -2 qt5-build-include https://invent.kde.org/sdk/kdesrc-build/commit/27505b67a2775cdb04c46b438e54b06158d6b658 diff --git a/doc/index.docbook b/doc/index.docbook index bc60de9..df3c703 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -503,7 +503,7 @@ compile jobs you wish to allow. A higher number (up to the number of logical CP your system has available) leads to quicker builds, but requires more system resources. </para> -<tip><para>&kdesrc-build; sets the option <option><link linkend="conf-num-cpus">num-cpus</link></option> to +<tip><para>&kdesrc-build; sets the option <option><link linkend="conf-num-cores">num-cores</link></option> to the detected number of available processing cores. You can use this value in your own configuration file to avoid having to set it manually. </para></tip> @@ -512,7 +512,9 @@ in your own configuration file to avoid having to set it manually. <title>Configuring Make to use all available CPUs, with exceptions</title> <screen> global - make-options -j <literal>${num-cpus}</literal> + # This environment variable is automatically used by make, including + # make commands not run by kdesrc-build directly, such as Qt's configure + set-env MAKEFLAGS -j<literal>${num-cores}</literal> … end global @@ -2622,8 +2624,8 @@ module if it normally would have tried anyways.</entry> due to fixes in the underlying build system.</entry> </row> -<row id="conf-num-cpus"> -<entry>num-cpus</entry> +<row id="conf-num-cores"> +<entry>num-cores</entry> <entry>Cannot be overridden</entry> <entry> <para>This option is automatically set by &kdesrc-build; to the number of diff --git a/kdesrc-build-setup b/kdesrc-build-setup index 838165a..6d2fd47 100755 --- a/kdesrc-build-setup +++ b/kdesrc-build-setup @@ -368,7 +368,7 @@ print $output <<EOF; # Use multiple cores for building. Other options to GNU make may also be # set. - make-options -j \${num-cpus} + make-options -j \${num-cores} # kdesrc-build can install a sample .xsession file for "Custom" # (or "XSession") logins, diff --git a/kdesrc-buildrc-kf5-sample b/kdesrc-buildrc-kf5-sample index 823b1bf..136a992 100644 --- a/kdesrc-buildrc-kf5-sample +++ b/kdesrc-buildrc-kf5-sample @@ -14,7 +14,7 @@ global # logs will be kept under this directory as well. source-dir ~/kde/src - make-options -j ${num-cpus} + make-options -j ${num-cores} end global # Instead of specifying modules here, the current best practice is to refer to diff --git a/modules/ksb/BuildContext.pm b/modules/ksb/BuildContext.pm index 3ceaf01..6a5179e 100644 --- a/modules/ksb/BuildContext.pm +++ b/modules/ksb/BuildContext.pm @@ -173,8 +173,8 @@ sub new assert_isa($self, 'ksb::BuildContext'); # Make the number of CPUs available to the rc-file by turning it into a pre-set option - my $nproc = int (eval { (filter_program_output(undef, 'nproc'))[0] } // 4); - $self->setOption('num-cpus', $nproc); + my $nproc = int (eval { (filter_program_output(undef, 'nproc'))[0] } // 3) + 1; + $self->setOption('num-cores', $nproc); return $self; } diff --git a/modules/ksb/FirstRun.pm b/modules/ksb/FirstRun.pm index 04ec9ac..c631efb 100644 --- a/modules/ksb/FirstRun.pm +++ b/modules/ksb/FirstRun.pm @@ -527,7 +527,7 @@ global include-dependencies true cmake-options -DCMAKE_BUILD_TYPE=RelWithDebInfo - make-options -j ${num-cpus} + make-options -j ${num-cores} end global # With base options set, the remainder of the file is used to define modules to build, in the diff --git a/qt5-build-include b/qt5-build-include index d756301..28ea98f 100644 --- a/qt5-build-include +++ b/qt5-build-include @@ -16,7 +16,10 @@ module-set qt5-set prefix ${qtdir} configure-flags -release -reduce-relocations -force-debug-info -separate-debug-info - make-options -j ${num-cpus} + + # Applies to every make command run for Qt build, including Qt's own attempts to + # run make from its configure script. + set-env MAKEFLAGS -j${num-cores} end module-set # qtwebengine is essentially the Chromium Embedded Framework with Qt bindings @@ -26,5 +29,5 @@ end module-set # also ensure you don't outstrip your available RAM with too high of a # parallelism (-j flag). options qtwebengine - make-options NINJAFLAGS=-j4 + set-env NINJAFLAGS -j4 end options
