]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/build/build.py
BaseTools: DataType - cleanup list constants
[mirror_edk2.git] / BaseTools / Source / Python / build / build.py
index 4aca280984625e4fd7dc938b2ed57e1a6efec362..56de2f60809fc000948e472fdb9d9d08a3a9f352 100644 (file)
@@ -53,7 +53,7 @@ import Common.EdkLogger
 import Common.GlobalData as GlobalData\r
 from GenFds.GenFds import GenFds\r
 \r
-from collections import OrderedDict\r
+from collections import OrderedDict,defaultdict\r
 \r
 # Version and Copyright\r
 VersionNumber = "0.60" + ' ' + gBUILD_VERSION\r
@@ -524,8 +524,7 @@ class BuildTask:
                     BuildTask._Thread.acquire(True)\r
 \r
                     # start a new build thread\r
-                    Bo = BuildTask._ReadyQueue.keys()[0]\r
-                    Bt = BuildTask._ReadyQueue.pop(Bo)\r
+                    Bo,Bt = BuildTask._ReadyQueue.popitem()\r
 \r
                     # move into running queue\r
                     BuildTask._RunningQueueLock.acquire()\r
@@ -1000,7 +999,7 @@ class Build():
             GlobalData.gGlobalDefines['TOOL_CHAIN_TAG'] = self.ToolChainList[0]\r
         if self.ToolChainFamily:\r
             GlobalData.gGlobalDefines['FAMILY'] = self.ToolChainFamily[0]\r
-        if 'PREBUILD' in GlobalData.gCommandLineDefines.keys():\r
+        if 'PREBUILD' in GlobalData.gCommandLineDefines:\r
             self.Prebuild   = GlobalData.gCommandLineDefines.get('PREBUILD')\r
         else:\r
             self.Db.InitDatabase()\r
@@ -1041,7 +1040,7 @@ class Build():
             self.Prebuild += self.PassCommandOption(self.BuildTargetList, self.ArchList, self.ToolChainList, self.PlatformFile, self.Target)\r
 \r
     def InitPostBuild(self):\r
-        if 'POSTBUILD' in GlobalData.gCommandLineDefines.keys():\r
+        if 'POSTBUILD' in GlobalData.gCommandLineDefines:\r
             self.Postbuild = GlobalData.gCommandLineDefines.get('POSTBUILD')\r
         else:\r
             Platform = self.Db._MapPlatform(str(self.PlatformFile))\r
@@ -1423,9 +1422,7 @@ class Build():
     def _RebaseModule (self, MapBuffer, BaseAddress, ModuleList, AddrIsOffset = True, ModeIsSmm = False):\r
         if ModeIsSmm:\r
             AddrIsOffset = False\r
-        InfFileNameList = ModuleList.keys()\r
-        #InfFileNameList.sort()\r
-        for InfFile in InfFileNameList:\r
+        for InfFile in ModuleList:\r
             sys.stdout.write (".")\r
             sys.stdout.flush()\r
             ModuleInfo = ModuleList[InfFile]\r
@@ -1526,7 +1523,7 @@ class Build():
             # First get the XIP base address for FV map file.\r
             GuidPattern = re.compile("[-a-fA-F0-9]+")\r
             GuidName = re.compile("\(GUID=[-a-fA-F0-9]+")\r
-            for FvName in Wa.FdfProfile.FvDict.keys():\r
+            for FvName in Wa.FdfProfile.FvDict:\r
                 FvMapBuffer = os.path.join(Wa.FvDir, FvName + '.Fv.map')\r
                 if not os.path.exists(FvMapBuffer):\r
                     continue\r
@@ -1590,25 +1587,23 @@ class Build():
                     if not ImageClass.IsValid:\r
                         EdkLogger.error("build", FILE_PARSE_FAILURE, ExtraData=ImageClass.ErrorInfo)\r
                     ImageInfo = PeImageInfo(Module.Name, Module.Guid, Module.Arch, Module.OutputDir, Module.DebugDir, ImageClass)\r
-                    if Module.ModuleType in ['PEI_CORE', 'PEIM', 'COMBINED_PEIM_DRIVER', 'PIC_PEIM', 'RELOCATABLE_PEIM', 'DXE_CORE']:\r
+                    if Module.ModuleType in [SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM, EDK_COMPONENT_TYPE_COMBINED_PEIM_DRIVER, EDK_COMPONENT_TYPE_PIC_PEIM, EDK_COMPONENT_TYPE_RELOCATABLE_PEIM, SUP_MODULE_DXE_CORE]:\r
                         PeiModuleList[Module.MetaFile] = ImageInfo\r
                         PeiSize += ImageInfo.Image.Size\r
-                    elif Module.ModuleType in ['BS_DRIVER', 'DXE_DRIVER', 'UEFI_DRIVER']:\r
+                    elif Module.ModuleType in [EDK_COMPONENT_TYPE_BS_DRIVER, SUP_MODULE_DXE_DRIVER, SUP_MODULE_UEFI_DRIVER]:\r
                         BtModuleList[Module.MetaFile] = ImageInfo\r
                         BtSize += ImageInfo.Image.Size\r
-                    elif Module.ModuleType in ['DXE_RUNTIME_DRIVER', 'RT_DRIVER', 'DXE_SAL_DRIVER', 'SAL_RT_DRIVER']:\r
+                    elif Module.ModuleType in [SUP_MODULE_DXE_RUNTIME_DRIVER, EDK_COMPONENT_TYPE_RT_DRIVER, SUP_MODULE_DXE_SAL_DRIVER, EDK_COMPONENT_TYPE_SAL_RT_DRIVER]:\r
                         RtModuleList[Module.MetaFile] = ImageInfo\r
                         #IPF runtime driver needs to be at 2 page alignment.\r
                         if IsIpfPlatform and ImageInfo.Image.Size % 0x2000 != 0:\r
                             ImageInfo.Image.Size = (ImageInfo.Image.Size / 0x2000 + 1) * 0x2000\r
                         RtSize += ImageInfo.Image.Size\r
-                    elif Module.ModuleType in ['SMM_CORE', 'DXE_SMM_DRIVER', 'MM_STANDALONE', 'MM_CORE_STANDALONE']:\r
+                    elif Module.ModuleType in [SUP_MODULE_SMM_CORE, SUP_MODULE_DXE_SMM_DRIVER, SUP_MODULE_MM_STANDALONE, SUP_MODULE_MM_CORE_STANDALONE]:\r
                         SmmModuleList[Module.MetaFile] = ImageInfo\r
                         SmmSize += ImageInfo.Image.Size\r
-                        if Module.ModuleType == 'DXE_SMM_DRIVER':\r
-                            PiSpecVersion = '0x00000000'\r
-                            if 'PI_SPECIFICATION_VERSION' in Module.Module.Specification:\r
-                                PiSpecVersion = Module.Module.Specification['PI_SPECIFICATION_VERSION']\r
+                        if Module.ModuleType == SUP_MODULE_DXE_SMM_DRIVER:\r
+                            PiSpecVersion = Module.Module.Specification.get('PI_SPECIFICATION_VERSION', '0x00000000')\r
                             # for PI specification < PI1.1, DXE_SMM_DRIVER also runs as BOOT time driver.\r
                             if int(PiSpecVersion, 16) < 0x0001000A:\r
                                 BtModuleList[Module.MetaFile] = ImageInfo\r
@@ -1621,12 +1616,12 @@ class Build():
             if OutputImageFile != '':\r
                 ModuleIsPatch = False\r
                 for Pcd in Module.ModulePcdList:\r
-                    if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE and Pcd.TokenCName in TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_LIST:\r
+                    if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE and Pcd.TokenCName in TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SET:\r
                         ModuleIsPatch = True\r
                         break\r
                 if not ModuleIsPatch:\r
                     for Pcd in Module.LibraryPcdList:\r
-                        if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE and Pcd.TokenCName in TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_LIST:\r
+                        if Pcd.Type == TAB_PCDS_PATCHABLE_IN_MODULE and Pcd.TokenCName in TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SET:\r
                             ModuleIsPatch = True\r
                             break\r
 \r
@@ -1965,15 +1960,14 @@ class Build():
                     self._SaveMapFile (MapBuffer, Wa)\r
 \r
     def _GenFfsCmd(self):\r
-        CmdListDict = {}\r
+        # convert dictionary of Cmd:(Inf,Arch) \r
+        # to a new dictionary of (Inf,Arch):Cmd,Cmd,Cmd...\r
+        CmdSetDict = defaultdict(set)\r
         GenFfsDict = GenFds.GenFfsMakefile('', GlobalData.gFdfParser, self, self.ArchList, GlobalData)\r
         for Cmd in GenFfsDict:\r
             tmpInf, tmpArch = GenFfsDict[Cmd]\r
-            if (tmpInf, tmpArch) not in CmdListDict.keys():\r
-                CmdListDict[tmpInf, tmpArch] = [Cmd]\r
-            else:\r
-                CmdListDict[tmpInf, tmpArch].append(Cmd)\r
-        return CmdListDict\r
+            CmdSetDict[tmpInf, tmpArch].add(Cmd)\r
+        return CmdSetDict\r
 \r
     ## Build a platform in multi-thread mode\r
     #\r