BaseTools: Workspace classes refactor properties

1) use decorators
2) also change some private functions to public when all callers are
external
3) change external callers to use functions instead of directly
accessing private data.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
Carsey, Jaben
2018-09-11 06:18:05 +08:00
committed by Yonghong Zhu
parent 6c204ed4f2
commit 71cac3f791
7 changed files with 228 additions and 235 deletions

View File

@ -341,9 +341,7 @@ class FfsInfStatement(FfsInfStatementClassObject):
self.InfModule = Inf self.InfModule = Inf
self.PcdIsDriver = Inf.PcdIsDriver self.PcdIsDriver = Inf.PcdIsDriver
self.IsBinaryModule = Inf.IsBinaryModule self.IsBinaryModule = Inf.IsBinaryModule
Inf._GetDepex() if len(Inf.Depex.data) > 0 and len(Inf.DepexExpression.data) > 0:
Inf._GetDepexExpression()
if len(Inf._Depex.data) > 0 and len(Inf._DepexExpression.data) > 0:
self.Depex = True self.Depex = True
GenFdsGlobalVariable.VerboseLogger("BaseName : %s" % self.BaseName) GenFdsGlobalVariable.VerboseLogger("BaseName : %s" % self.BaseName)

View File

@ -99,21 +99,22 @@ class DecBuildData(PackageBuildClassObject):
self._CommonIncludes = None self._CommonIncludes = None
self._LibraryClasses = None self._LibraryClasses = None
self._Pcds = None self._Pcds = None
self.__Macros = None self._MacroDict = None
self._PrivateProtocols = None self._PrivateProtocols = None
self._PrivatePpis = None self._PrivatePpis = None
self._PrivateGuids = None self._PrivateGuids = None
self._PrivateIncludes = None self._PrivateIncludes = None
## Get current effective macros ## Get current effective macros
def _GetMacros(self): @property
if self.__Macros is None: def _Macros(self):
self.__Macros = {} if self._MacroDict is None:
self.__Macros.update(GlobalData.gGlobalDefines) self._MacroDict = dict(GlobalData.gGlobalDefines)
return self.__Macros return self._MacroDict
## Get architecture ## Get architecture
def _GetArch(self): @property
def Arch(self):
return self._Arch return self._Arch
## Retrieve all information in [Defines] section ## Retrieve all information in [Defines] section
@ -129,7 +130,8 @@ class DecBuildData(PackageBuildClassObject):
self._Header = 'DUMMY' self._Header = 'DUMMY'
## Retrieve package name ## Retrieve package name
def _GetPackageName(self): @property
def PackageName(self):
if self._PackageName is None: if self._PackageName is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -138,7 +140,8 @@ class DecBuildData(PackageBuildClassObject):
return self._PackageName return self._PackageName
## Retrieve file guid ## Retrieve file guid
def _GetFileGuid(self): @property
def PackageName(self):
if self._Guid is None: if self._Guid is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -147,7 +150,8 @@ class DecBuildData(PackageBuildClassObject):
return self._Guid return self._Guid
## Retrieve package version ## Retrieve package version
def _GetVersion(self): @property
def Version(self):
if self._Version is None: if self._Version is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -156,7 +160,8 @@ class DecBuildData(PackageBuildClassObject):
return self._Version return self._Version
## Retrieve protocol definitions (name/value pairs) ## Retrieve protocol definitions (name/value pairs)
def _GetProtocol(self): @property
def Protocols(self):
if self._Protocols is None: if self._Protocols is None:
# #
# tdict is a special kind of dict, used for selecting correct # tdict is a special kind of dict, used for selecting correct
@ -198,7 +203,8 @@ class DecBuildData(PackageBuildClassObject):
return self._Protocols return self._Protocols
## Retrieve PPI definitions (name/value pairs) ## Retrieve PPI definitions (name/value pairs)
def _GetPpi(self): @property
def Ppis(self):
if self._Ppis is None: if self._Ppis is None:
# #
# tdict is a special kind of dict, used for selecting correct # tdict is a special kind of dict, used for selecting correct
@ -240,7 +246,8 @@ class DecBuildData(PackageBuildClassObject):
return self._Ppis return self._Ppis
## Retrieve GUID definitions (name/value pairs) ## Retrieve GUID definitions (name/value pairs)
def _GetGuid(self): @property
def Guids(self):
if self._Guids is None: if self._Guids is None:
# #
# tdict is a special kind of dict, used for selecting correct # tdict is a special kind of dict, used for selecting correct
@ -282,7 +289,8 @@ class DecBuildData(PackageBuildClassObject):
return self._Guids return self._Guids
## Retrieve public include paths declared in this package ## Retrieve public include paths declared in this package
def _GetInclude(self): @property
def Includes(self):
if self._Includes is None or self._CommonIncludes is None: if self._Includes is None or self._CommonIncludes is None:
self._CommonIncludes = [] self._CommonIncludes = []
self._Includes = [] self._Includes = []
@ -317,7 +325,8 @@ class DecBuildData(PackageBuildClassObject):
return self._Includes return self._Includes
## Retrieve library class declarations (not used in build at present) ## Retrieve library class declarations (not used in build at present)
def _GetLibraryClass(self): @property
def LibraryClasses(self):
if self._LibraryClasses is None: if self._LibraryClasses is None:
# #
# tdict is a special kind of dict, used for selecting correct # tdict is a special kind of dict, used for selecting correct
@ -341,7 +350,8 @@ class DecBuildData(PackageBuildClassObject):
return self._LibraryClasses return self._LibraryClasses
## Retrieve PCD declarations ## Retrieve PCD declarations
def _GetPcds(self): @property
def Pcds(self):
if self._Pcds is None: if self._Pcds is None:
self._Pcds = OrderedDict() self._Pcds = OrderedDict()
self._Pcds.update(self._GetPcd(MODEL_PCD_FIXED_AT_BUILD)) self._Pcds.update(self._GetPcd(MODEL_PCD_FIXED_AT_BUILD))
@ -351,7 +361,6 @@ class DecBuildData(PackageBuildClassObject):
self._Pcds.update(self._GetPcd(MODEL_PCD_DYNAMIC_EX)) self._Pcds.update(self._GetPcd(MODEL_PCD_DYNAMIC_EX))
return self._Pcds return self._Pcds
def ProcessStructurePcd(self, StructurePcdRawDataSet): def ProcessStructurePcd(self, StructurePcdRawDataSet):
s_pcd_set = OrderedDict() s_pcd_set = OrderedDict()
for s_pcd, LineNo in StructurePcdRawDataSet: for s_pcd, LineNo in StructurePcdRawDataSet:
@ -446,22 +455,9 @@ class DecBuildData(PackageBuildClassObject):
EdkLogger.error("build", PCD_STRUCTURE_PCD_ERROR, "The structure Pcd %s.%s header file is not found in %s line %s \n" % (struct_pcd.TokenSpaceGuidCName, struct_pcd.TokenCName, struct_pcd.DefinitionPosition[0], struct_pcd.DefinitionPosition[1] )) EdkLogger.error("build", PCD_STRUCTURE_PCD_ERROR, "The structure Pcd %s.%s header file is not found in %s line %s \n" % (struct_pcd.TokenSpaceGuidCName, struct_pcd.TokenCName, struct_pcd.DefinitionPosition[0], struct_pcd.DefinitionPosition[1] ))
return Pcds return Pcds
@property @property
def CommonIncludes(self): def CommonIncludes(self):
if self._CommonIncludes is None: if self._CommonIncludes is None:
self.Includes self.Includes
return self._CommonIncludes return self._CommonIncludes
_Macros = property(_GetMacros)
Arch = property(_GetArch)
PackageName = property(_GetPackageName)
Guid = property(_GetFileGuid)
Version = property(_GetVersion)
Protocols = property(_GetProtocol)
Ppis = property(_GetPpi)
Guids = property(_GetGuid)
Includes = property(_GetInclude)
LibraryClasses = property(_GetLibraryClass)
Pcds = property(_GetPcds)

View File

@ -222,6 +222,7 @@ class DscBuildData(PlatformBuildClassObject):
self.WorkspaceDir = os.getenv("WORKSPACE") if os.getenv("WORKSPACE") else "" self.WorkspaceDir = os.getenv("WORKSPACE") if os.getenv("WORKSPACE") else ""
self.DefaultStores = None self.DefaultStores = None
self.SkuIdMgr = SkuClass(self.SkuName, self.SkuIds) self.SkuIdMgr = SkuClass(self.SkuName, self.SkuIds)
@property @property
def OutputPath(self): def OutputPath(self):
if os.getenv("WORKSPACE"): if os.getenv("WORKSPACE"):
@ -273,10 +274,9 @@ class DscBuildData(PlatformBuildClassObject):
self._RFCLanguages = None self._RFCLanguages = None
self._ISOLanguages = None self._ISOLanguages = None
self._VpdToolGuid = None self._VpdToolGuid = None
self.__Macros = None self._MacroDict = None
self.DefaultStores = None self.DefaultStores = None
## handle Override Path of Module ## handle Override Path of Module
def _HandleOverridePath(self): def _HandleOverridePath(self):
RecordList = self._RawData[MODEL_META_DATA_COMPONENT, self._Arch] RecordList = self._RawData[MODEL_META_DATA_COMPONENT, self._Arch]
@ -296,16 +296,18 @@ class DscBuildData(PlatformBuildClassObject):
GlobalData.gOverrideDir[ModuleFile.Key] = SourceOverridePath GlobalData.gOverrideDir[ModuleFile.Key] = SourceOverridePath
## Get current effective macros ## Get current effective macros
def _GetMacros(self): @property
if self.__Macros is None: def _Macros(self):
self.__Macros = {} if self._MacroDict is None:
self.__Macros.update(GlobalData.gPlatformDefines) self._MacroDict = {}
self.__Macros.update(GlobalData.gGlobalDefines) self._MacroDict.update(GlobalData.gPlatformDefines)
self.__Macros.update(GlobalData.gCommandLineDefines) self._MacroDict.update(GlobalData.gGlobalDefines)
return self.__Macros self._MacroDict.update(GlobalData.gCommandLineDefines)
return self._MacroDict
## Get architecture ## Get architecture
def _GetArch(self): @property
def Arch(self):
return self._Arch return self._Arch
## Retrieve all information in [Defines] section ## Retrieve all information in [Defines] section
@ -410,7 +412,8 @@ class DscBuildData(PlatformBuildClassObject):
self._Header = 'DUMMY' self._Header = 'DUMMY'
## Retrieve platform name ## Retrieve platform name
def _GetPlatformName(self): @property
def PlatformName(self):
if self._PlatformName is None: if self._PlatformName is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -418,8 +421,13 @@ class DscBuildData(PlatformBuildClassObject):
EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No PLATFORM_NAME", File=self.MetaFile) EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No PLATFORM_NAME", File=self.MetaFile)
return self._PlatformName return self._PlatformName
@property
def Platform(self):
return self.PlatformName
## Retrieve file guid ## Retrieve file guid
def _GetFileGuid(self): @property
def Guid(self):
if self._Guid is None: if self._Guid is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -428,7 +436,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._Guid return self._Guid
## Retrieve platform version ## Retrieve platform version
def _GetVersion(self): @property
def Version(self):
if self._Version is None: if self._Version is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -437,7 +446,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._Version return self._Version
## Retrieve platform description file version ## Retrieve platform description file version
def _GetDscSpec(self): @property
def DscSpecification(self):
if self._DscSpecification is None: if self._DscSpecification is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -446,7 +456,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._DscSpecification return self._DscSpecification
## Retrieve OUTPUT_DIRECTORY ## Retrieve OUTPUT_DIRECTORY
def _GetOutpuDir(self): @property
def OutputDirectory(self):
if self._OutputDirectory is None: if self._OutputDirectory is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -455,7 +466,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._OutputDirectory return self._OutputDirectory
## Retrieve SUPPORTED_ARCHITECTURES ## Retrieve SUPPORTED_ARCHITECTURES
def _GetSupArch(self): @property
def SupArchList(self):
if self._SupArchList is None: if self._SupArchList is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -464,7 +476,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._SupArchList return self._SupArchList
## Retrieve BUILD_TARGETS ## Retrieve BUILD_TARGETS
def _GetBuildTarget(self): @property
def BuildTargets(self):
if self._BuildTargets is None: if self._BuildTargets is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -472,14 +485,17 @@ class DscBuildData(PlatformBuildClassObject):
EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No BUILD_TARGETS", File=self.MetaFile) EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No BUILD_TARGETS", File=self.MetaFile)
return self._BuildTargets return self._BuildTargets
def _GetPcdInfoFlag(self): @property
def PcdInfoFlag(self):
if self._PcdInfoFlag is None or self._PcdInfoFlag.upper() == 'FALSE': if self._PcdInfoFlag is None or self._PcdInfoFlag.upper() == 'FALSE':
return False return False
elif self._PcdInfoFlag.upper() == 'TRUE': elif self._PcdInfoFlag.upper() == 'TRUE':
return True return True
else: else:
return False return False
def _GetVarCheckFlag(self):
@property
def VarCheckFlag(self):
if self._VarCheckFlag is None or self._VarCheckFlag.upper() == 'FALSE': if self._VarCheckFlag is None or self._VarCheckFlag.upper() == 'FALSE':
return False return False
elif self._VarCheckFlag.upper() == 'TRUE': elif self._VarCheckFlag.upper() == 'TRUE':
@ -488,7 +504,8 @@ class DscBuildData(PlatformBuildClassObject):
return False return False
# # Retrieve SKUID_IDENTIFIER # # Retrieve SKUID_IDENTIFIER
def _GetSkuName(self): @property
def SkuName(self):
if self._SkuName is None: if self._SkuName is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -497,10 +514,12 @@ class DscBuildData(PlatformBuildClassObject):
return self._SkuName return self._SkuName
## Override SKUID_IDENTIFIER ## Override SKUID_IDENTIFIER
def _SetSkuName(self, Value): @SkuName.setter
def SkuName(self, Value):
self._SkuName = Value self._SkuName = Value
def _GetFdfFile(self): @property
def FlashDefinition(self):
if self._FlashDefinition is None: if self._FlashDefinition is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -508,7 +527,8 @@ class DscBuildData(PlatformBuildClassObject):
self._FlashDefinition = '' self._FlashDefinition = ''
return self._FlashDefinition return self._FlashDefinition
def _GetPrebuild(self): @property
def Prebuild(self):
if self._Prebuild is None: if self._Prebuild is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -516,7 +536,8 @@ class DscBuildData(PlatformBuildClassObject):
self._Prebuild = '' self._Prebuild = ''
return self._Prebuild return self._Prebuild
def _GetPostbuild(self): @property
def Postbuild(self):
if self._Postbuild is None: if self._Postbuild is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -525,7 +546,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._Postbuild return self._Postbuild
## Retrieve FLASH_DEFINITION ## Retrieve FLASH_DEFINITION
def _GetBuildNumber(self): @property
def BuildNumber(self):
if self._BuildNumber is None: if self._BuildNumber is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -534,7 +556,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._BuildNumber return self._BuildNumber
## Retrieve MAKEFILE_NAME ## Retrieve MAKEFILE_NAME
def _GetMakefileName(self): @property
def MakefileName(self):
if self._MakefileName is None: if self._MakefileName is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -543,7 +566,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._MakefileName return self._MakefileName
## Retrieve BsBaseAddress ## Retrieve BsBaseAddress
def _GetBsBaseAddress(self): @property
def BsBaseAddress(self):
if self._BsBaseAddress is None: if self._BsBaseAddress is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -552,7 +576,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._BsBaseAddress return self._BsBaseAddress
## Retrieve RtBaseAddress ## Retrieve RtBaseAddress
def _GetRtBaseAddress(self): @property
def RtBaseAddress(self):
if self._RtBaseAddress is None: if self._RtBaseAddress is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -561,7 +586,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._RtBaseAddress return self._RtBaseAddress
## Retrieve the top address for the load fix address ## Retrieve the top address for the load fix address
def _GetLoadFixAddress(self): @property
def LoadFixAddress(self):
if self._LoadFixAddress is None: if self._LoadFixAddress is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -591,7 +617,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._LoadFixAddress return self._LoadFixAddress
## Retrieve RFCLanguage filter ## Retrieve RFCLanguage filter
def _GetRFCLanguages(self): @property
def RFCLanguages(self):
if self._RFCLanguages is None: if self._RFCLanguages is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -600,15 +627,18 @@ class DscBuildData(PlatformBuildClassObject):
return self._RFCLanguages return self._RFCLanguages
## Retrieve ISOLanguage filter ## Retrieve ISOLanguage filter
def _GetISOLanguages(self): @property
def ISOLanguages(self):
if self._ISOLanguages is None: if self._ISOLanguages is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
if self._ISOLanguages is None: if self._ISOLanguages is None:
self._ISOLanguages = [] self._ISOLanguages = []
return self._ISOLanguages return self._ISOLanguages
## Retrieve the GUID string for VPD tool ## Retrieve the GUID string for VPD tool
def _GetVpdToolGuid(self): @property
def VpdToolGuid(self):
if self._VpdToolGuid is None: if self._VpdToolGuid is None:
if self._Header is None: if self._Header is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -617,7 +647,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._VpdToolGuid return self._VpdToolGuid
## Retrieve [SkuIds] section information ## Retrieve [SkuIds] section information
def _GetSkuIds(self): @property
def SkuIds(self):
if self._SkuIds is None: if self._SkuIds is None:
self._SkuIds = OrderedDict() self._SkuIds = OrderedDict()
RecordList = self._RawData[MODEL_EFI_SKU_ID, self._Arch] RecordList = self._RawData[MODEL_EFI_SKU_ID, self._Arch]
@ -669,7 +700,8 @@ class DscBuildData(PlatformBuildClassObject):
return self.DefaultStores return self.DefaultStores
## Retrieve [Components] section information ## Retrieve [Components] section information
def _GetModules(self): @property
def Modules(self):
if self._Modules is not None: if self._Modules is not None:
return self._Modules return self._Modules
@ -768,13 +800,15 @@ class DscBuildData(PlatformBuildClassObject):
return self._Modules return self._Modules
## Retrieve all possible library instances used in this platform ## Retrieve all possible library instances used in this platform
def _GetLibraryInstances(self): @property
def LibraryInstances(self):
if self._LibraryInstances is None: if self._LibraryInstances is None:
self._GetLibraryClasses() self.LibraryClasses
return self._LibraryInstances return self._LibraryInstances
## Retrieve [LibraryClasses] information ## Retrieve [LibraryClasses] information
def _GetLibraryClasses(self): @property
def LibraryClasses(self):
if self._LibraryClasses is None: if self._LibraryClasses is None:
self._LibraryInstances = [] self._LibraryInstances = []
# #
@ -922,6 +956,7 @@ class DscBuildData(PlatformBuildClassObject):
if isinstance(pcd, StructurePcd) and pcd.SkuOverrideValues: if isinstance(pcd, StructurePcd) and pcd.SkuOverrideValues:
Pcds[pcdname].SkuOverrideValues = {skuid:pcd.SkuOverrideValues[skuid] for skuid in pcd.SkuOverrideValues if skuid in available_sku} Pcds[pcdname].SkuOverrideValues = {skuid:pcd.SkuOverrideValues[skuid] for skuid in pcd.SkuOverrideValues if skuid in available_sku}
return Pcds return Pcds
def CompleteHiiPcdsDefaultStores(self, Pcds): def CompleteHiiPcdsDefaultStores(self, Pcds):
HiiPcd = [Pcds[pcd] for pcd in Pcds if Pcds[pcd].Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]] HiiPcd = [Pcds[pcd] for pcd in Pcds if Pcds[pcd].Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]]
DefaultStoreMgr = DefaultStore(self.DefaultStores) DefaultStoreMgr = DefaultStore(self.DefaultStores)
@ -1102,7 +1137,8 @@ class DscBuildData(PlatformBuildClassObject):
return PcdValue return PcdValue
## Retrieve all PCD settings in platform ## Retrieve all PCD settings in platform
def _GetPcds(self): @property
def Pcds(self):
if self._Pcds is None: if self._Pcds is None:
self._Pcds = OrderedDict() self._Pcds = OrderedDict()
self.__ParsePcdFromCommandLine() self.__ParsePcdFromCommandLine()
@ -1127,7 +1163,8 @@ class DscBuildData(PlatformBuildClassObject):
return self._Pcds return self._Pcds
## Retrieve [BuildOptions] ## Retrieve [BuildOptions]
def _GetBuildOptions(self): @property
def BuildOptions(self):
if self._BuildOptions is None: if self._BuildOptions is None:
self._BuildOptions = OrderedDict() self._BuildOptions = OrderedDict()
# #
@ -1226,7 +1263,6 @@ class DscBuildData(PlatformBuildClassObject):
Pcd.PcdFieldValueFromComm[field][2] = FieldValues[field][1][1] Pcd.PcdFieldValueFromComm[field][2] = FieldValues[field][1][1]
return StruPcds return StruPcds
def OverrideByCommOverAll(self,AllPcds): def OverrideByCommOverAll(self,AllPcds):
def CheckStructureInComm(commpcds): def CheckStructureInComm(commpcds):
if not commpcds: if not commpcds:
@ -2799,7 +2835,8 @@ class DscBuildData(PlatformBuildClassObject):
Module.MetaFile = FilePath Module.MetaFile = FilePath
self.Modules.append(Module) self.Modules.append(Module)
def _GetToolChainFamily(self): @property
def ToolChainFamily(self):
self._ToolChainFamily = TAB_COMPILER_MSFT self._ToolChainFamily = TAB_COMPILER_MSFT
BuildConfigurationFile = os.path.normpath(os.path.join(GlobalData.gConfDirectory, "target.txt")) BuildConfigurationFile = os.path.normpath(os.path.join(GlobalData.gConfDirectory, "target.txt"))
if os.path.isfile(BuildConfigurationFile) == True: if os.path.isfile(BuildConfigurationFile) == True:
@ -2834,6 +2871,7 @@ class DscBuildData(PlatformBuildClassObject):
if (Name, Guid) not in self.Pcds: if (Name, Guid) not in self.Pcds:
self.Pcds[Name, Guid] = PcdClassObject(Name, Guid, '', '', '', '', '', {}, False, None) self.Pcds[Name, Guid] = PcdClassObject(Name, Guid, '', '', '', '', '', {}, False, None)
self.Pcds[Name, Guid].DefaultValue = Value self.Pcds[Name, Guid].DefaultValue = Value
@property @property
def DecPcds(self): def DecPcds(self):
if self._DecPcds is None: if self._DecPcds is None:
@ -2849,34 +2887,3 @@ class DscBuildData(PlatformBuildClassObject):
PkgSet.update(ModuleData.Packages) PkgSet.update(ModuleData.Packages)
self._DecPcds, self._GuidDict = GetDeclaredPcd(self, self._Bdb, self._Arch, self._Target, self._Toolchain, PkgSet) self._DecPcds, self._GuidDict = GetDeclaredPcd(self, self._Bdb, self._Arch, self._Target, self._Toolchain, PkgSet)
return self._DecPcds return self._DecPcds
_Macros = property(_GetMacros)
Arch = property(_GetArch)
Platform = property(_GetPlatformName)
PlatformName = property(_GetPlatformName)
Guid = property(_GetFileGuid)
Version = property(_GetVersion)
DscSpecification = property(_GetDscSpec)
OutputDirectory = property(_GetOutpuDir)
SupArchList = property(_GetSupArch)
BuildTargets = property(_GetBuildTarget)
SkuName = property(_GetSkuName, _SetSkuName)
PcdInfoFlag = property(_GetPcdInfoFlag)
VarCheckFlag = property(_GetVarCheckFlag)
FlashDefinition = property(_GetFdfFile)
Prebuild = property(_GetPrebuild)
Postbuild = property(_GetPostbuild)
BuildNumber = property(_GetBuildNumber)
MakefileName = property(_GetMakefileName)
BsBaseAddress = property(_GetBsBaseAddress)
RtBaseAddress = property(_GetRtBaseAddress)
LoadFixAddress = property(_GetLoadFixAddress)
RFCLanguages = property(_GetRFCLanguages)
ISOLanguages = property(_GetISOLanguages)
VpdToolGuid = property(_GetVpdToolGuid)
SkuIds = property(_GetSkuIds)
Modules = property(_GetModules)
LibraryInstances = property(_GetLibraryInstances)
LibraryClasses = property(_GetLibraryClasses)
Pcds = property(_GetPcds)
BuildOptions = property(_GetBuildOptions)
ToolChainFamily = property(_GetToolChainFamily)

View File

@ -157,40 +157,42 @@ class InfBuildData(ModuleBuildClassObject):
self._BuildOptions = None self._BuildOptions = None
self._Depex = None self._Depex = None
self._DepexExpression = None self._DepexExpression = None
self.__Macros = None self._MacroDict = None
## Get current effective macros ## Get current effective macros
def _GetMacros(self): @property
if self.__Macros is None: def _Macros(self):
self.__Macros = {} if self._MacroDict is None:
self._MacroDict = {}
# EDK_GLOBAL defined macros can be applied to EDK module # EDK_GLOBAL defined macros can be applied to EDK module
if self.AutoGenVersion < 0x00010005: if self.AutoGenVersion < 0x00010005:
self.__Macros.update(GlobalData.gEdkGlobal) self._MacroDict.update(GlobalData.gEdkGlobal)
self.__Macros.update(GlobalData.gGlobalDefines) self._MacroDict.update(GlobalData.gGlobalDefines)
return self.__Macros return self._MacroDict
## Get architecture ## Get architecture
def _GetArch(self): @property
def Arch(self):
return self._Arch return self._Arch
## Return the name of platform employing this module ## Return the name of platform employing this module
def _GetPlatform(self): @property
def Platform(self):
return self._Platform return self._Platform
def _GetHeaderComments(self):
@property
def HeaderComments(self):
if not self._HeaderComments: if not self._HeaderComments:
self._HeaderComments = [] self._HeaderComments = [a[0] for a in self._RawData[MODEL_META_DATA_HEADER_COMMENT]]
RecordList = self._RawData[MODEL_META_DATA_HEADER_COMMENT]
for Record in RecordList:
self._HeaderComments.append(Record[0])
return self._HeaderComments return self._HeaderComments
def _GetTailComments(self):
@property
def TailComments(self):
if not self._TailComments: if not self._TailComments:
self._TailComments = [] self._TailComments = [a[0] for a in self._RawData[MODEL_META_DATA_TAIL_COMMENT]]
RecordList = self._RawData[MODEL_META_DATA_TAIL_COMMENT]
for Record in RecordList:
self._TailComments.append(Record[0])
return self._TailComments return self._TailComments
## Retrieve all information in [Defines] section ## Retrieve all information in [Defines] section
# #
# (Retriving all [Defines] information in one-shot is just to save time.) # (Retriving all [Defines] information in one-shot is just to save time.)
@ -371,7 +373,8 @@ class InfBuildData(ModuleBuildClassObject):
self._Header_ = 'DUMMY' self._Header_ = 'DUMMY'
## Retrieve file version ## Retrieve file version
def _GetInfVersion(self): @property
def AutoGenVersion(self):
if self._AutoGenVersion is None: if self._AutoGenVersion is None:
RecordList = self._RawData[MODEL_META_DATA_HEADER, self._Arch, self._Platform] RecordList = self._RawData[MODEL_META_DATA_HEADER, self._Arch, self._Platform]
for Record in RecordList: for Record in RecordList:
@ -389,7 +392,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._AutoGenVersion return self._AutoGenVersion
## Retrieve BASE_NAME ## Retrieve BASE_NAME
def _GetBaseName(self): @property
def BaseName(self):
if self._BaseName is None: if self._BaseName is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -398,7 +402,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._BaseName return self._BaseName
## Retrieve DxsFile ## Retrieve DxsFile
def _GetDxsFile(self): @property
def DxsFile(self):
if self._DxsFile is None: if self._DxsFile is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -407,7 +412,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._DxsFile return self._DxsFile
## Retrieve MODULE_TYPE ## Retrieve MODULE_TYPE
def _GetModuleType(self): @property
def ModuleType(self):
if self._ModuleType is None: if self._ModuleType is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -418,7 +424,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._ModuleType return self._ModuleType
## Retrieve COMPONENT_TYPE ## Retrieve COMPONENT_TYPE
def _GetComponentType(self): @property
def ComponentType(self):
if self._ComponentType is None: if self._ComponentType is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -427,7 +434,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._ComponentType return self._ComponentType
## Retrieve "BUILD_TYPE" ## Retrieve "BUILD_TYPE"
def _GetBuildType(self): @property
def BuildType(self):
if self._BuildType is None: if self._BuildType is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -436,7 +444,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._BuildType return self._BuildType
## Retrieve file guid ## Retrieve file guid
def _GetFileGuid(self): @property
def Guid(self):
if self._Guid is None: if self._Guid is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -445,7 +454,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Guid return self._Guid
## Retrieve module version ## Retrieve module version
def _GetVersion(self): @property
def Version(self):
if self._Version is None: if self._Version is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -454,7 +464,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Version return self._Version
## Retrieve PCD_IS_DRIVER ## Retrieve PCD_IS_DRIVER
def _GetPcdIsDriver(self): @property
def PcdIsDriver(self):
if self._PcdIsDriver is None: if self._PcdIsDriver is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -463,7 +474,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._PcdIsDriver return self._PcdIsDriver
## Retrieve SHADOW ## Retrieve SHADOW
def _GetShadow(self): @property
def Shadow(self):
if self._Shadow is None: if self._Shadow is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -474,7 +486,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Shadow return self._Shadow
## Retrieve CUSTOM_MAKEFILE ## Retrieve CUSTOM_MAKEFILE
def _GetMakefile(self): @property
def CustomMakefile(self):
if self._CustomMakefile is None: if self._CustomMakefile is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -483,7 +496,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._CustomMakefile return self._CustomMakefile
## Retrieve EFI_SPECIFICATION_VERSION ## Retrieve EFI_SPECIFICATION_VERSION
def _GetSpec(self): @property
def Specification(self):
if self._Specification is None: if self._Specification is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -492,7 +506,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Specification return self._Specification
## Retrieve LIBRARY_CLASS ## Retrieve LIBRARY_CLASS
def _GetLibraryClass(self): @property
def LibraryClass(self):
if self._LibraryClass is None: if self._LibraryClass is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -501,7 +516,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._LibraryClass return self._LibraryClass
## Retrieve ENTRY_POINT ## Retrieve ENTRY_POINT
def _GetEntryPoint(self): @property
def ModuleEntryPointList(self):
if self._ModuleEntryPointList is None: if self._ModuleEntryPointList is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -510,7 +526,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._ModuleEntryPointList return self._ModuleEntryPointList
## Retrieve UNLOAD_IMAGE ## Retrieve UNLOAD_IMAGE
def _GetUnloadImage(self): @property
def ModuleUnloadImageList(self):
if self._ModuleUnloadImageList is None: if self._ModuleUnloadImageList is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -519,7 +536,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._ModuleUnloadImageList return self._ModuleUnloadImageList
## Retrieve CONSTRUCTOR ## Retrieve CONSTRUCTOR
def _GetConstructor(self): @property
def ConstructorList(self):
if self._ConstructorList is None: if self._ConstructorList is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -528,7 +546,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._ConstructorList return self._ConstructorList
## Retrieve DESTRUCTOR ## Retrieve DESTRUCTOR
def _GetDestructor(self): @property
def DestructorList(self):
if self._DestructorList is None: if self._DestructorList is None:
if self._Header_ is None: if self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
@ -537,7 +556,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._DestructorList return self._DestructorList
## Retrieve definies other than above ones ## Retrieve definies other than above ones
def _GetDefines(self): @property
def Defines(self):
if len(self._Defs) == 0 and self._Header_ is None: if len(self._Defs) == 0 and self._Header_ is None:
self._GetHeaderInfo() self._GetHeaderInfo()
return self._Defs return self._Defs
@ -571,7 +591,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Binaries return self._Binaries
## Retrieve binary files with error check. ## Retrieve binary files with error check.
def _GetBinaryFiles(self): @property
def Binaries(self):
Binaries = self._GetBinaries() Binaries = self._GetBinaries()
if GlobalData.gIgnoreSource and Binaries == []: if GlobalData.gIgnoreSource and Binaries == []:
ErrorInfo = "The INF file does not contain any Binaries to use in creating the image\n" ErrorInfo = "The INF file does not contain any Binaries to use in creating the image\n"
@ -580,7 +601,8 @@ class InfBuildData(ModuleBuildClassObject):
return Binaries return Binaries
## Retrieve source files ## Retrieve source files
def _GetSourceFiles(self): @property
def Sources(self):
# Ignore all source files in a binary build mode # Ignore all source files in a binary build mode
if GlobalData.gIgnoreSource: if GlobalData.gIgnoreSource:
self._Sources = [] self._Sources = []
@ -626,7 +648,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Sources return self._Sources
## Retrieve library classes employed by this module ## Retrieve library classes employed by this module
def _GetLibraryClassUses(self): @property
def LibraryClasses(self):
if self._LibraryClasses is None: if self._LibraryClasses is None:
self._LibraryClasses = OrderedDict() self._LibraryClasses = OrderedDict()
RecordList = self._RawData[MODEL_EFI_LIBRARY_CLASS, self._Arch, self._Platform] RecordList = self._RawData[MODEL_EFI_LIBRARY_CLASS, self._Arch, self._Platform]
@ -639,7 +662,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._LibraryClasses return self._LibraryClasses
## Retrieve library names (for Edk.x style of modules) ## Retrieve library names (for Edk.x style of modules)
def _GetLibraryNames(self): @property
def Libraries(self):
if self._Libraries is None: if self._Libraries is None:
self._Libraries = [] self._Libraries = []
RecordList = self._RawData[MODEL_EFI_LIBRARY_INSTANCE, self._Arch, self._Platform] RecordList = self._RawData[MODEL_EFI_LIBRARY_INSTANCE, self._Arch, self._Platform]
@ -651,11 +675,14 @@ class InfBuildData(ModuleBuildClassObject):
self._Libraries.append(LibraryName) self._Libraries.append(LibraryName)
return self._Libraries return self._Libraries
def _GetProtocolComments(self): @property
self._GetProtocols() def ProtocolComments(self):
self.Protocols
return self._ProtocolComments return self._ProtocolComments
## Retrieve protocols consumed/produced by this module ## Retrieve protocols consumed/produced by this module
def _GetProtocols(self): @property
def Protocols(self):
if self._Protocols is None: if self._Protocols is None:
self._Protocols = OrderedDict() self._Protocols = OrderedDict()
self._ProtocolComments = OrderedDict() self._ProtocolComments = OrderedDict()
@ -676,11 +703,14 @@ class InfBuildData(ModuleBuildClassObject):
self._ProtocolComments[CName] = Comments self._ProtocolComments[CName] = Comments
return self._Protocols return self._Protocols
def _GetPpiComments(self): @property
self._GetPpis() def PpiComments(self):
self.Ppis
return self._PpiComments return self._PpiComments
## Retrieve PPIs consumed/produced by this module ## Retrieve PPIs consumed/produced by this module
def _GetPpis(self): @property
def Ppis(self):
if self._Ppis is None: if self._Ppis is None:
self._Ppis = OrderedDict() self._Ppis = OrderedDict()
self._PpiComments = OrderedDict() self._PpiComments = OrderedDict()
@ -701,11 +731,14 @@ class InfBuildData(ModuleBuildClassObject):
self._PpiComments[CName] = Comments self._PpiComments[CName] = Comments
return self._Ppis return self._Ppis
def _GetGuidComments(self): @property
self._GetGuids() def GuidComments(self):
self.Guids
return self._GuidComments return self._GuidComments
## Retrieve GUIDs consumed/produced by this module ## Retrieve GUIDs consumed/produced by this module
def _GetGuids(self): @property
def Guids(self):
if self._Guids is None: if self._Guids is None:
self._Guids = OrderedDict() self._Guids = OrderedDict()
self._GuidComments = OrderedDict() self._GuidComments = OrderedDict()
@ -727,7 +760,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Guids return self._Guids
## Retrieve include paths necessary for this module (for Edk.x style of modules) ## Retrieve include paths necessary for this module (for Edk.x style of modules)
def _GetIncludes(self): @property
def Includes(self):
if self._Includes is None: if self._Includes is None:
self._Includes = [] self._Includes = []
if self._SourceOverridePath: if self._SourceOverridePath:
@ -781,7 +815,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Includes return self._Includes
## Retrieve packages this module depends on ## Retrieve packages this module depends on
def _GetPackages(self): @property
def Packages(self):
if self._Packages is None: if self._Packages is None:
self._Packages = [] self._Packages = []
RecordList = self._RawData[MODEL_META_DATA_PACKAGE, self._Arch, self._Platform] RecordList = self._RawData[MODEL_META_DATA_PACKAGE, self._Arch, self._Platform]
@ -800,11 +835,14 @@ class InfBuildData(ModuleBuildClassObject):
return self._Packages return self._Packages
## Retrieve PCD comments ## Retrieve PCD comments
def _GetPcdComments(self): @property
self._GetPcds() def PcdComments(self):
self.Pcds
return self._PcdComments return self._PcdComments
## Retrieve PCDs used in this module ## Retrieve PCDs used in this module
def _GetPcds(self): @property
def Pcds(self):
if self._Pcds is None: if self._Pcds is None:
self._Pcds = OrderedDict() self._Pcds = OrderedDict()
self._PcdComments = OrderedDict() self._PcdComments = OrderedDict()
@ -816,7 +854,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Pcds return self._Pcds
## Retrieve build options specific to this module ## Retrieve build options specific to this module
def _GetBuildOptions(self): @property
def BuildOptions(self):
if self._BuildOptions is None: if self._BuildOptions is None:
self._BuildOptions = OrderedDict() self._BuildOptions = OrderedDict()
RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, self._Platform] RecordList = self._RawData[MODEL_META_DATA_BUILD_OPTION, self._Arch, self._Platform]
@ -833,7 +872,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._BuildOptions return self._BuildOptions
## Retrieve dependency expression ## Retrieve dependency expression
def _GetDepex(self): @property
def Depex(self):
if self._Depex is None: if self._Depex is None:
self._Depex = tdict(False, 2) self._Depex = tdict(False, 2)
RecordList = self._RawData[MODEL_EFI_DEPEX, self._Arch] RecordList = self._RawData[MODEL_EFI_DEPEX, self._Arch]
@ -904,7 +944,8 @@ class InfBuildData(ModuleBuildClassObject):
return self._Depex return self._Depex
## Retrieve depedency expression ## Retrieve depedency expression
def _GetDepexExpression(self): @property
def DepexExpression(self):
if self._DepexExpression is None: if self._DepexExpression is None:
self._DepexExpression = tdict(False, 2) self._DepexExpression = tdict(False, 2)
RecordList = self._RawData[MODEL_EFI_DEPEX, self._Arch] RecordList = self._RawData[MODEL_EFI_DEPEX, self._Arch]
@ -924,6 +965,7 @@ class InfBuildData(ModuleBuildClassObject):
def GetGuidsUsedByPcd(self): def GetGuidsUsedByPcd(self):
return self._GuidsUsedByPcd return self._GuidsUsedByPcd
## Retrieve PCD for given type ## Retrieve PCD for given type
def _GetPcd(self, Type): def _GetPcd(self, Type):
Pcds = OrderedDict() Pcds = OrderedDict()
@ -1114,54 +1156,8 @@ class InfBuildData(ModuleBuildClassObject):
return Pcds return Pcds
## check whether current module is binary module ## check whether current module is binary module
def _IsBinaryModule(self): @property
if self.Binaries and not self.Sources: def IsBinaryModule(self):
if (self.Binaries and not self.Sources) or GlobalData.gIgnoreSource:
return True return True
elif GlobalData.gIgnoreSource:
return True
else:
return False return False
_Macros = property(_GetMacros)
Arch = property(_GetArch)
Platform = property(_GetPlatform)
HeaderComments = property(_GetHeaderComments)
TailComments = property(_GetTailComments)
AutoGenVersion = property(_GetInfVersion)
BaseName = property(_GetBaseName)
ModuleType = property(_GetModuleType)
ComponentType = property(_GetComponentType)
BuildType = property(_GetBuildType)
Guid = property(_GetFileGuid)
Version = property(_GetVersion)
PcdIsDriver = property(_GetPcdIsDriver)
Shadow = property(_GetShadow)
CustomMakefile = property(_GetMakefile)
Specification = property(_GetSpec)
LibraryClass = property(_GetLibraryClass)
ModuleEntryPointList = property(_GetEntryPoint)
ModuleUnloadImageList = property(_GetUnloadImage)
ConstructorList = property(_GetConstructor)
DestructorList = property(_GetDestructor)
Defines = property(_GetDefines)
DxsFile = property(_GetDxsFile)
Binaries = property(_GetBinaryFiles)
Sources = property(_GetSourceFiles)
LibraryClasses = property(_GetLibraryClassUses)
Libraries = property(_GetLibraryNames)
Protocols = property(_GetProtocols)
ProtocolComments = property(_GetProtocolComments)
Ppis = property(_GetPpis)
PpiComments = property(_GetPpiComments)
Guids = property(_GetGuids)
GuidComments = property(_GetGuidComments)
Includes = property(_GetIncludes)
Packages = property(_GetPackages)
Pcds = property(_GetPcds)
PcdComments = property(_GetPcdComments)
BuildOptions = property(_GetBuildOptions)
Depex = property(_GetDepex)
DepexExpression = property(_GetDepexExpression)
IsBinaryModule = property(_IsBinaryModule)

View File

@ -213,11 +213,13 @@ class MetaFileParser(object):
self._PostProcessed = True self._PostProcessed = True
## Get the parse complete flag ## Get the parse complete flag
def _GetFinished(self): @property
def Finished(self):
return self._Finished return self._Finished
## Set the complete flag ## Set the complete flag
def _SetFinished(self, Value): @Finished.setter
def Finished(self, Value):
self._Finished = Value self._Finished = Value
## Remove records that do not match given Filter Arch ## Remove records that do not match given Filter Arch
@ -416,7 +418,9 @@ class MetaFileParser(object):
) )
def GetValidExpression(self, TokenSpaceGuid, PcdCName): def GetValidExpression(self, TokenSpaceGuid, PcdCName):
return self._Table.GetValidExpression(TokenSpaceGuid, PcdCName) return self._Table.GetValidExpression(TokenSpaceGuid, PcdCName)
def _GetMacros(self):
@property
def _Macros(self):
Macros = {} Macros = {}
Macros.update(self._FileLocalMacros) Macros.update(self._FileLocalMacros)
Macros.update(self._GetApplicableSectionMacro()) Macros.update(self._GetApplicableSectionMacro())
@ -478,9 +482,6 @@ class MetaFileParser(object):
return Macros return Macros
_SectionParser = {} _SectionParser = {}
Finished = property(_GetFinished, _SetFinished)
_Macros = property(_GetMacros)
## INF file parser class ## INF file parser class
# #
@ -1252,7 +1253,8 @@ class DscParser(MetaFileParser):
) )
## Override parent's method since we'll do all macro replacements in parser ## Override parent's method since we'll do all macro replacements in parser
def _GetMacros(self): @property
def _Macros(self):
Macros = {} Macros = {}
Macros.update(self._FileLocalMacros) Macros.update(self._FileLocalMacros)
Macros.update(self._GetApplicableSectionMacro()) Macros.update(self._GetApplicableSectionMacro())
@ -1673,8 +1675,6 @@ class DscParser(MetaFileParser):
MODEL_META_DATA_SUBSECTION_HEADER : _SubsectionHeaderParser, MODEL_META_DATA_SUBSECTION_HEADER : _SubsectionHeaderParser,
} }
_Macros = property(_GetMacros)
## DEC file parser class ## DEC file parser class
# #
# @param FilePath The path of platform description file # @param FilePath The path of platform description file

View File

@ -302,25 +302,21 @@ determine whether database file is out of date!\n")
return PackageList return PackageList
## Summarize all platforms in the database ## Summarize all platforms in the database
def _GetPlatformList(self): def PlatformList(self):
PlatformList = [] RetVal = []
for PlatformFile in self.TblFile.GetFileList(MODEL_FILE_DSC): for PlatformFile in self.TblFile.GetFileList(MODEL_FILE_DSC):
try: try:
Platform = self.BuildObject[PathClass(PlatformFile), TAB_COMMON] RetVal.append(self.BuildObject[PathClass(PlatformFile), TAB_COMMON])
except: except:
Platform = None pass
if Platform is not None: return RetVal
PlatformList.append(Platform)
return PlatformList
def _MapPlatform(self, Dscfile): def MapPlatform(self, Dscfile):
Platform = self.BuildObject[PathClass(Dscfile), TAB_COMMON] Platform = self.BuildObject[PathClass(Dscfile), TAB_COMMON]
if Platform is None: if Platform is None:
EdkLogger.error('build', PARSER_ERROR, "Failed to parser DSC file: %s" % Dscfile) EdkLogger.error('build', PARSER_ERROR, "Failed to parser DSC file: %s" % Dscfile)
return Platform return Platform
PlatformList = property(_GetPlatformList)
## ##
# #
# This acts like the main() function for the script, unless it is 'import'ed into another # This acts like the main() function for the script, unless it is 'import'ed into another

View File

@ -1006,7 +1006,7 @@ class Build():
else: else:
self.Db.InitDatabase() self.Db.InitDatabase()
self.Db_Flag = True self.Db_Flag = True
Platform = self.Db._MapPlatform(str(self.PlatformFile)) Platform = self.Db.MapPlatform(str(self.PlatformFile))
self.Prebuild = str(Platform.Prebuild) self.Prebuild = str(Platform.Prebuild)
if self.Prebuild: if self.Prebuild:
PrebuildList = [] PrebuildList = []
@ -1045,7 +1045,7 @@ class Build():
if 'POSTBUILD' in GlobalData.gCommandLineDefines: if 'POSTBUILD' in GlobalData.gCommandLineDefines:
self.Postbuild = GlobalData.gCommandLineDefines.get('POSTBUILD') self.Postbuild = GlobalData.gCommandLineDefines.get('POSTBUILD')
else: else:
Platform = self.Db._MapPlatform(str(self.PlatformFile)) Platform = self.Db.MapPlatform(str(self.PlatformFile))
self.Postbuild = str(Platform.Postbuild) self.Postbuild = str(Platform.Postbuild)
if self.Postbuild: if self.Postbuild:
PostbuildList = [] PostbuildList = []