]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/build/build.py
BaseTools: Enable block queue log agent.
[mirror_edk2.git] / BaseTools / Source / Python / build / build.py
index f80060a127e8c01e3329d4c88ded19e7c116e808..4de3f43c27100cf189e44998ac9189ffba0d541c 100644 (file)
@@ -709,7 +709,7 @@ class Build():
         self.FvList         = BuildOptions.FvImage\r
         self.CapList        = BuildOptions.CapName\r
         self.SilentMode     = BuildOptions.SilentMode\r
-        self.ThreadNumber   = BuildOptions.ThreadNumber\r
+        self.ThreadNumber   = 1\r
         self.SkipAutoGen    = BuildOptions.SkipAutoGen\r
         self.Reparse        = BuildOptions.Reparse\r
         self.SkuId          = BuildOptions.SkuId\r
@@ -882,19 +882,6 @@ class Build():
                 ToolChainFamily.append(ToolDefinition[TAB_TOD_DEFINES_FAMILY][Tool])\r
         self.ToolChainFamily = ToolChainFamily\r
 \r
-        if self.ThreadNumber is None:\r
-            self.ThreadNumber = self.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER]\r
-            if self.ThreadNumber == '':\r
-                self.ThreadNumber = 0\r
-            else:\r
-                self.ThreadNumber = int(self.ThreadNumber, 0)\r
-\r
-        if self.ThreadNumber == 0:\r
-            try:\r
-                self.ThreadNumber = multiprocessing.cpu_count()\r
-            except (ImportError, NotImplementedError):\r
-                self.ThreadNumber = 1\r
-\r
         if not self.PlatformFile:\r
             PlatformFile = self.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_ACTIVE_PLATFORM]\r
             if not PlatformFile:\r
@@ -912,7 +899,7 @@ class Build():
                                     ExtraData="No active platform specified in target.txt or command line! Nothing can be built.\n")\r
 \r
             self.PlatformFile = PathClass(NormFile(PlatformFile, self.WorkspaceDir), self.WorkspaceDir)\r
-\r
+        self.ThreadNumber   = ThreadNum()\r
     ## Initialize build configuration\r
     #\r
     #   This method will parse DSC file and merge the configurations from\r
@@ -2056,12 +2043,13 @@ class Build():
                     data_pipe_file = os.path.join(Pa.BuildDir, "GlobalVar_%s_%s.bin" % (str(Pa.Guid),Pa.Arch))\r
                     Pa.DataPipe.dump(data_pipe_file)\r
                     autogen_rt, errorcode = self.StartAutoGen(mqueue, Pa.DataPipe, self.SkipAutoGen, PcdMaList,self.share_data)\r
-                    self.Progress.Stop("done!")\r
-                    self.AutoGenTime += int(round((time.time() - AutoGenStart)))\r
+\r
                     if not autogen_rt:\r
                         self.AutoGenMgr.TerminateWorkers()\r
                         self.AutoGenMgr.join(0.1)\r
                         raise FatalError(errorcode)\r
+                self.AutoGenTime += int(round((time.time() - AutoGenStart)))\r
+                self.Progress.Stop("done!")\r
                 for Arch in Wa.ArchList:\r
                     MakeStart = time.time()\r
                     for Ma in self.BuildModules:\r
@@ -2297,7 +2285,21 @@ def LogBuildTime(Time):
         return TimeDurStr\r
     else:\r
         return None\r
+def ThreadNum():\r
+    ThreadNumber = BuildOption.ThreadNumber\r
+    if ThreadNumber is None:\r
+        ThreadNumber = TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER]\r
+        if ThreadNumber == '':\r
+            ThreadNumber = 0\r
+        else:\r
+            ThreadNumber = int(ThreadNumber, 0)\r
 \r
+    if ThreadNumber == 0:\r
+        try:\r
+            ThreadNumber = multiprocessing.cpu_count()\r
+        except (ImportError, NotImplementedError):\r
+            ThreadNumber = 1\r
+    return ThreadNumber\r
 ## Tool entrance method\r
 #\r
 # This method mainly dispatch specific methods per the command line options.\r
@@ -2307,13 +2309,14 @@ def LogBuildTime(Time):
 #   @retval 0     Tool was successful\r
 #   @retval 1     Tool failed\r
 #\r
+LogQMaxSize = ThreadNum() * 10\r
 def Main():\r
     StartTime = time.time()\r
 \r
     #\r
     # Create a log Queue\r
     #\r
-    LogQ = mp.Queue()\r
+    LogQ = mp.Queue(LogQMaxSize)\r
     # Initialize log system\r
     EdkLogger.LogClientInitialize(LogQ)\r
     GlobalData.gCommand = sys.argv[1:]\r