]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/build/build.py
BaseTools: enhance error handling for option --binary-source
[mirror_edk2.git] / BaseTools / Source / Python / build / build.py
index 8cf139c77cff8e1eacf5334ba04a314dc53a915f..e4adee2bebca101623369b7e4857a4c342ca6981 100644 (file)
@@ -2,7 +2,7 @@
 # build a platform or a module\r
 #\r
 #  Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>\r
-#  Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
 #\r
 #  This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
@@ -26,6 +26,7 @@ import platform
 import traceback\r
 import encodings.ascii\r
 import itertools\r
+import multiprocessing\r
 \r
 from struct import *\r
 from threading import *\r
@@ -761,6 +762,8 @@ class Build():
         self.SkipAutoGen    = BuildOptions.SkipAutoGen\r
         self.Reparse        = BuildOptions.Reparse\r
         self.SkuId          = BuildOptions.SkuId\r
+        if self.SkuId:\r
+            GlobalData.gSKUID_CMD = self.SkuId\r
         self.ConfDirectory = BuildOptions.ConfDirectory\r
         self.SpawnMode      = True\r
         self.BuildReport    = BuildReport(BuildOptions.ReportFile, BuildOptions.ReportType)\r
@@ -791,12 +794,18 @@ class Build():
             if not os.path.isabs(BinCacheSource):\r
                 BinCacheSource = mws.join(self.WorkspaceDir, BinCacheSource)\r
             GlobalData.gBinCacheSource = BinCacheSource\r
+        else:\r
+            if GlobalData.gBinCacheSource != None:\r
+                EdkLogger.error("build", OPTION_VALUE_INVALID, ExtraData="Invalid value of option --binary-source.")\r
 \r
         if GlobalData.gBinCacheDest:\r
             BinCacheDest = os.path.normpath(GlobalData.gBinCacheDest)\r
             if not os.path.isabs(BinCacheDest):\r
                 BinCacheDest = mws.join(self.WorkspaceDir, BinCacheDest)\r
             GlobalData.gBinCacheDest = BinCacheDest\r
+        else:\r
+            if GlobalData.gBinCacheDest != None:\r
+                EdkLogger.error("build", OPTION_VALUE_INVALID, ExtraData="Invalid value of option --binary-destination.")\r
 \r
         if self.ConfDirectory:\r
             # Get alternate Conf location, if it is absolute, then just use the absolute directory name\r
@@ -934,7 +943,10 @@ class Build():
                 self.ThreadNumber = int(self.ThreadNumber, 0)\r
 \r
         if self.ThreadNumber == 0:\r
-            self.ThreadNumber = 1\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[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM]\r