Francois Gouget : testbot/build: Automatically use all the CPUs for builds.

Alexandre Julliard julliard at winehq.org
Wed Oct 10 14:52:51 CDT 2012


Module: tools
Branch: master
Commit: 64f949e902377278c6882c2b356eb66368b87d02
URL:    http://source.winehq.org/git/tools.git/?a=commit;h=64f949e902377278c6882c2b356eb66368b87d02

Author: Francois Gouget <fgouget at 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);




More information about the wine-cvs mailing list