Module: tools Branch: master Commit: 64f949e902377278c6882c2b356eb66368b87d02 URL: http://source.winehq.org/git/tools.git/?a=commit;h=64f949e902377278c6882c2b3...
Author: Francois Gouget fgouget@codeweavers.com Date: Wed Oct 10 01:14:43 2012 +0200
testbot/build: Automatically use all the CPUs for builds.
---
testbot/bin/BuildSingleTest.pl | 22 ++++++++++++++++++---- testbot/bin/Reconfig.pl | 26 ++++++++++++++++++++------ 2 files changed, 38 insertions(+), 10 deletions(-)
diff --git a/testbot/bin/BuildSingleTest.pl b/testbot/bin/BuildSingleTest.pl index a8adc4e..af28f88 100755 --- a/testbot/bin/BuildSingleTest.pl +++ b/testbot/bin/BuildSingleTest.pl @@ -148,6 +148,18 @@ sub ApplyPatch $NeedConfigure); }
+my $ncpus; +sub CountCPUs() +{ + if (open(my $fh, "<", "/proc/cpuinfo")) + { + # Linux + map { $ncpus++ if (/^processor/); } <$fh>; + close($fh); + } + $ncpus ||= 1; +} + sub BuildTestExecutable { my ($BaseName, $PatchType, $Bits, $NeedConfigure, $NeedMakefile, @@ -178,7 +190,7 @@ sub BuildTestExecutable return !1; }
- system("make -C $DataDir/build-mingw${Bits}/include " . + system("make -j$ncpus -C $DataDir/build-mingw${Bits}/include " . ">> $LogDir/BuildSingleTest.log 2>&1"); if ($? != 0) { @@ -197,7 +209,7 @@ sub BuildTestExecutable } else { - system("make -C $DataDir/build-mingw${Bits}/$PatchType/$BaseName " . + system("make -j$ncpus -C $DataDir/build-mingw${Bits}/$PatchType/$BaseName " . "lib$BaseName.a >> $LogDir/BuildSingleTest.log 2>&1"); if ($? != 0) { @@ -220,7 +232,7 @@ sub BuildTestExecutable if ($NeedBuildDeps) { InfoMsg "Making build dependencies\n"; - system("cd $DataDir/build-mingw${Bits}; make __builddeps__ >> $LogDir/BuildSingleTest.log 2>&1"); + system("cd $DataDir/build-mingw${Bits}; make -j$ncpus __builddeps__ >> $LogDir/BuildSingleTest.log 2>&1"); if ($? != 0) { LogMsg "Making build dependencies failed\n"; @@ -238,7 +250,7 @@ sub BuildTestExecutable unlink($TestExecutable);
InfoMsg "Making test executable\n"; - system("make -C $TestsDir >> $LogDir/BuildSingleTest.log 2>&1"); + system("make -j$ncpus -C $TestsDir >> $LogDir/BuildSingleTest.log 2>&1"); if ($? != 0) { LogMsg "Make failed\n"; @@ -334,6 +346,8 @@ if ($NeedMakefile < 0) exit(1); }
+CountCPUs(); + if ($Run32 && ! BuildTestExecutable($BaseName, $PatchType, 32, $NeedConfigure, 0 < $NeedMakefile, $NeedMakeInclude, $NeedBuildDeps, diff --git a/testbot/bin/Reconfig.pl b/testbot/bin/Reconfig.pl index f2e07a3..fe789f0 100755 --- a/testbot/bin/Reconfig.pl +++ b/testbot/bin/Reconfig.pl @@ -63,15 +63,27 @@ sub GitPull return 1; }
+my $ncpus; +sub CountCPUs() +{ + if (open(my $fh, "<", "/proc/cpuinfo")) + { + # Linux + map { $ncpus++ if (/^processor/); } <$fh>; + close($fh); + } + $ncpus ||= 1; +} + sub BuildNative { mkdir "$DataDir/build-native" if (! -d "$DataDir/build-native"); system("cd $DataDir/build-native && " . "rm -rf * && " . "../wine-git/configure --enable-win64 --without-x --without-freetype " . - ">> $LogDir/Reconfig.log 2>&1 &&" . - "make depend >> $LogDir/Reconfig.log 2>&1 &&" . - "make __tooldeps__ >> $LogDir/Reconfig.log 2>&1"); + ">> $LogDir/Reconfig.log 2>&1 && " . + "make -j$ncpus depend >> $LogDir/Reconfig.log 2>&1 && " . + "make -j$ncpus __tooldeps__ >> $LogDir/Reconfig.log 2>&1");
if ($? != 0) { @@ -91,9 +103,9 @@ sub BuildCross system("cd $DataDir/build-mingw$Bits && " . "rm -rf * && " . "../wine-git/configure --host=$Host --with-wine-tools=../build-native " . - "--without-x --without-freetype >> $LogDir/Reconfig.log 2>&1 &&" . - "make depend >> $LogDir/Reconfig.log 2>&1 &&" . - "make programs/winetest >> $LogDir/Reconfig.log 2>&1"); + "--without-x --without-freetype >> $LogDir/Reconfig.log 2>&1 && " . + "make -j$ncpus depend >> $LogDir/Reconfig.log 2>&1 && " . + "make -j$ncpus programs/winetest >> $LogDir/Reconfig.log 2>&1"); if ($? != 0) { LogMsg "Build cross ($Bits bits) failed\n"; @@ -114,6 +126,8 @@ if (! GitPull()) exit(1); }
+CountCPUs(); + if (! BuildNative()) { exit(1);