summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/AutoGen/DataPipe.py
diff options
context:
space:
mode:
authorFeng, Bob C <bob.c.feng@intel.com>2019-07-30 17:15:31 +0800
committerFeng, Bob C <bob.c.feng@intel.com>2019-08-09 23:15:53 +0800
commit673d09a2ddfacbc8414ca703519f32c1e48ca5b7 (patch)
tree017e1ca7fe245f45932531c09972b88dcce4bb4c /BaseTools/Source/Python/AutoGen/DataPipe.py
parente8449e1d8e3b40186eb16ff25242397cffb00a63 (diff)
downloadedk2-673d09a2ddfacbc8414ca703519f32c1e48ca5b7.tar.gz
edk2-673d09a2ddfacbc8414ca703519f32c1e48ca5b7.tar.bz2
edk2-673d09a2ddfacbc8414ca703519f32c1e48ca5b7.zip
BaseTools: Enable Multiple Process AutoGen
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875 Assign the Module AutoGen tasks into multiple sub process. Cc: Liming Gao <liming.gao@intel.com> Signed-off-by: Bob Feng <bob.c.feng@intel.com> Acked-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Acked-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/AutoGen/DataPipe.py')
-rw-r--r--BaseTools/Source/Python/AutoGen/DataPipe.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/BaseTools/Source/Python/AutoGen/DataPipe.py b/BaseTools/Source/Python/AutoGen/DataPipe.py
index 5bcc39bd38..6299208056 100644
--- a/BaseTools/Source/Python/AutoGen/DataPipe.py
+++ b/BaseTools/Source/Python/AutoGen/DataPipe.py
@@ -11,6 +11,7 @@ import Common.GlobalData as GlobalData
import os
import pickle
from pickle import HIGHEST_PROTOCOL
+from Common import EdkLogger
class PCD_DATA():
def __init__(self,TokenCName,TokenSpaceGuidCName,Type,DatumType,SkuInfoList,DefaultValue,
@@ -34,6 +35,7 @@ class DataPipe(object):
def __init__(self, BuildDir=None):
self.data_container = {}
self.BuildDir = BuildDir
+ self.dump_file = ""
class MemoryDataPipe(DataPipe):
@@ -41,6 +43,7 @@ class MemoryDataPipe(DataPipe):
return self.data_container.get(key)
def dump(self,file_path):
+ self.dump_file = file_path
with open(file_path,'wb') as fd:
pickle.dump(self.data_container,fd,pickle.HIGHEST_PROTOCOL)
@@ -71,7 +74,7 @@ class MemoryDataPipe(DataPipe):
for m in PlatformInfo.Platform.Modules:
m_pcds = PlatformInfo.Platform.Modules[m].Pcds
if m_pcds:
- ModulePcds[(m.File,m.Root)] = [PCD_DATA(
+ ModulePcds[(m.File,m.Root,m.Arch)] = [PCD_DATA(
pcd.TokenCName,pcd.TokenSpaceGuidCName,pcd.Type,
pcd.DatumType,pcd.SkuInfoList,pcd.DefaultValue,
pcd.MaxDatumSize,pcd.UserDefinedDefaultStoresFlag,pcd.validateranges,
@@ -83,11 +86,18 @@ class MemoryDataPipe(DataPipe):
#Module's Library Instance
ModuleLibs = {}
+ libModules = {}
for m in PlatformInfo.Platform.Modules:
module_obj = BuildDB.BuildObject[m,PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain]
Libs = GetModuleLibInstances(module_obj, PlatformInfo.Platform, BuildDB.BuildObject, PlatformInfo.Arch,PlatformInfo.BuildTarget,PlatformInfo.ToolChain)
- ModuleLibs[(m.File,m.Root,module_obj.Arch)] = [(l.MetaFile.File,l.MetaFile.Root,l.Arch) for l in Libs]
+ for lib in Libs:
+ try:
+ libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)].append((m.File,m.Root,module_obj.Arch,m.Path))
+ except:
+ libModules[(lib.MetaFile.File,lib.MetaFile.Root,lib.Arch,lib.MetaFile.Path)] = [(m.File,m.Root,module_obj.Arch,m.Path)]
+ 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]
self.DataContainer = {"DEPS":ModuleLibs}
+ self.DataContainer = {"REFS":libModules}
#Platform BuildOptions
@@ -143,5 +153,8 @@ class MemoryDataPipe(DataPipe):
self.DataContainer = {"GuidDict": PlatformInfo.Platform._GuidDict}
+ self.DataContainer = {"DatabasePath":GlobalData.gDatabasePath}
self.DataContainer = {"FdfParser": True if GlobalData.gFdfParser else False}
+ self.DataContainer = {"LogLevel": EdkLogger.GetLevel()}
+ self.DataContainer = {"LogFile": GlobalData.gOptions.LogFile if GlobalData.gOptions.LogFile is not None else ""}