]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/DataPipe.py
BaseTools: Enable Multiple Process AutoGen
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / DataPipe.py
index 5bcc39bd380d13fca4baa4012b0292bdfe5d62a4..62992080567f1bbafc0947e6555d7cb1a4511225 100644 (file)
@@ -11,6 +11,7 @@ import Common.GlobalData as GlobalData
 import os\r
 import pickle\r
 from pickle import HIGHEST_PROTOCOL\r
+from Common import EdkLogger\r
 \r
 class PCD_DATA():\r
     def __init__(self,TokenCName,TokenSpaceGuidCName,Type,DatumType,SkuInfoList,DefaultValue,\r
@@ -34,6 +35,7 @@ class DataPipe(object):
     def __init__(self, BuildDir=None):\r
         self.data_container = {}\r
         self.BuildDir = BuildDir\r
+        self.dump_file = ""\r
 \r
 class MemoryDataPipe(DataPipe):\r
 \r
@@ -41,6 +43,7 @@ class MemoryDataPipe(DataPipe):
         return self.data_container.get(key)\r
 \r
     def dump(self,file_path):\r
+        self.dump_file = file_path\r
         with open(file_path,'wb') as fd:\r
             pickle.dump(self.data_container,fd,pickle.HIGHEST_PROTOCOL)\r
 \r
@@ -71,7 +74,7 @@ class MemoryDataPipe(DataPipe):
         for m in PlatformInfo.Platform.Modules:\r
             m_pcds =  PlatformInfo.Platform.Modules[m].Pcds\r
             if m_pcds:\r
-                ModulePcds[(m.File,m.Root)] = [PCD_DATA(\r
+                ModulePcds[(m.File,m.Root,m.Arch)] = [PCD_DATA(\r
             pcd.TokenCName,pcd.TokenSpaceGuidCName,pcd.Type,\r
             pcd.DatumType,pcd.SkuInfoList,pcd.DefaultValue,\r
             pcd.MaxDatumSize,pcd.UserDefinedDefaultStoresFlag,pcd.validateranges,\r
@@ -83,11 +86,18 @@ class MemoryDataPipe(DataPipe):
 \r
         #Module's Library Instance\r
         ModuleLibs = {}\r
+        libModules = {}\r
         for m in PlatformInfo.Platform.Modules:\r
             module_obj = BuildDB.BuildObject[m,PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain]\r
             Libs = GetModuleLibInstances(module_obj, PlatformInfo.Platform, BuildDB.BuildObject, PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain)\r
-            ModuleLibs[(m.File,m.Root,module_obj.Arch)] = [(l.MetaFile.File,l.MetaFile.Root,l.Arch) for l in Libs]\r
+            for lib in Libs:\r
+                try:\r
+                    libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)].append((m.File,m.Root,module_obj.Arch,m.Path))\r
+                except:\r
+                    libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)] = [(m.File,m.Root,module_obj.Arch,m.Path)]\r
+            ModuleLibs[(m.File,m.Root,module_obj.Arch,m.Path)] = [(l.MetaFile.File,l.MetaFile.Root,l.Arch,l.MetaFile.Path) for l in Libs]\r
         self.DataContainer = {"DEPS":ModuleLibs}\r
+        self.DataContainer = {"REFS":libModules}\r
 \r
         #Platform BuildOptions\r
 \r
@@ -143,5 +153,8 @@ class MemoryDataPipe(DataPipe):
 \r
         self.DataContainer = {"GuidDict": PlatformInfo.Platform._GuidDict}\r
 \r
+        self.DataContainer = {"DatabasePath":GlobalData.gDatabasePath}\r
         self.DataContainer = {"FdfParser": True if GlobalData.gFdfParser else False}\r
 \r
+        self.DataContainer = {"LogLevel": EdkLogger.GetLevel()}\r
+        self.DataContainer = {"LogFile": GlobalData.gOptions.LogFile if GlobalData.gOptions.LogFile is not None else ""}\r