From: "Bob Feng" <bob.c.feng@intel.com>
To: "Gao, Liming" <liming.gao@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Subject: Re: [Patch 1/1] BaseTools: Singleton the object to handle build conf file
Date: Thu, 11 Jul 2019 09:26:45 +0000 [thread overview]
Message-ID: <08650203BA1BD64D8AD9B6D5D74A85D160B3DB27@SHSMSX105.ccr.corp.intel.com> (raw)
In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A6513@SHSMSX104.ccr.corp.intel.com>
Liming,
Thanks for your comments. I'll test the cases you mentioned.
Thanks,
Bob
-----Original Message-----
From: Gao, Liming
Sent: Thursday, July 11, 2019 5:11 PM
To: Feng, Bob C <bob.c.feng@intel.com>; devel@edk2.groups.io
Subject: RE: [Patch 1/1] BaseTools: Singleton the object to handle build conf file
Bob:
target.txt is from Conf directory. build_rule.txt and tools_def.txt are specified in target.txt. Please take care this case that they may have the different file name.
And, Conf directory is relative to WORKSPACE and PACKAGES_PATH. Does this patch support it?
Thanks
Liming
>-----Original Message-----
>From: Feng, Bob C
>Sent: Friday, June 28, 2019 3:07 PM
>To: devel@edk2.groups.io
>Cc: Gao, Liming <liming.gao@intel.com>; Feng, Bob C
><bob.c.feng@intel.com>
>Subject: [Patch 1/1] BaseTools: Singleton the object to handle build
>conf file
>
>BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1875
>
>The build config files are target.txt, build rule, tooldef During a
>build, the config is not changed, so the object to handle them need to
>be singleton.
>
>Cc: Liming Gao <liming.gao@intel.com>
>Signed-off-by: Bob Feng <bob.c.feng@intel.com>
>---
> BaseTools/Source/Python/AutoGen/AutoGen.py | 33 ++----------
> .../Source/Python/AutoGen/BuildEngine.py | 22 ++++++++
> .../Python/Common/TargetTxtClassObject.py | 2 +
> .../Python/Common/ToolDefClassObject.py | 6 ++-
> BaseTools/Source/Python/GenFds/GenFds.py | 4 +-
> .../Python/GenFds/GenFdsGlobalVariable.py | 54 ++++++++-----------
> .../Source/Python/Workspace/DscBuildData.py | 8 +--
> BaseTools/Source/Python/build/build.py | 29 +++-------
> 8 files changed, 62 insertions(+), 96 deletions(-)
>
>diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py
>b/BaseTools/Source/Python/AutoGen/AutoGen.py
>index e8e09dc8a366..a1f7f5641e09 100644
>--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
>+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
>@@ -22,11 +22,12 @@ from . import GenC
> from . import GenMake
> from . import GenDepex
> from io import BytesIO
>
> from .StrGather import *
>-from .BuildEngine import BuildRule
>+from .BuildEngine import BuildRuleObj as BuildRule from .BuildEngine
>+import
>gDefaultBuildRuleFile,AutoGenReqBuildRuleVerNum
> import shutil
> from Common.LongFilePathSupport import CopyLongFilePath from
>Common.BuildToolError import * from Common.DataType import * from
>Common.Misc import * @@ -76,16 +77,10 @@ gEfiVarStoreGuidPattern =
>re.compile("\s*guid\s*=\s*({.*?{.*?}\s*})")
>
> ## Mapping Makefile type
> gMakeTypeMap = {TAB_COMPILER_MSFT:"nmake", "GCC":"gmake"}
>
>
>-## Build rule configuration file
>-gDefaultBuildRuleFile = 'build_rule.txt'
>-
>-## Build rule default version
>-AutoGenReqBuildRuleVerNum = "0.1"
>-
> ## default file name for AutoGen
> gAutoGenCodeFileName = "AutoGen.c"
> gAutoGenHeaderFileName = "AutoGen.h"
> gAutoGenStringFileName = "%(module_name)sStrDefs.h"
> gAutoGenStringFormFileName = "%(module_name)sStrDefs.hpk"
>@@ -1964,32 +1959,10 @@ class PlatformAutoGen(AutoGen):
> ## Return the build options specific for EDKII modules in this platform
> @cached_property
> def EdkIIBuildOption(self):
> return self._ExpandBuildOption(self.Platform.BuildOptions,
>EDKII_NAME)
>
>- ## Parse build_rule.txt in Conf Directory.
>- #
>- # @retval BuildRule object
>- #
>- @cached_property
>- def BuildRule(self):
>- BuildRuleFile = None
>- if TAB_TAT_DEFINES_BUILD_RULE_CONF in
>self.Workspace.TargetTxt.TargetTxtDictionary:
>- BuildRuleFile =
>self.Workspace.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_BUILD_RUL
>E_CONF]
>- if not BuildRuleFile:
>- BuildRuleFile = gDefaultBuildRuleFile
>- RetVal = BuildRule(BuildRuleFile)
>- if RetVal._FileVersion == "":
>- RetVal._FileVersion = AutoGenReqBuildRuleVerNum
>- else:
>- if RetVal._FileVersion < AutoGenReqBuildRuleVerNum :
>- # If Build Rule's version is less than the version number required by
>the tools, halting the build.
>- EdkLogger.error("build", AUTOGEN_ERROR,
>- ExtraData="The version number [%s] of build_rule.txt is less
>than the version number required by the AutoGen.(the minimum required
>version number is [%s])"\
>- % (RetVal._FileVersion, AutoGenReqBuildRuleVerNum))
>- return RetVal
>-
> ## Summarize the packages used by modules in this platform
> @cached_property
> def PackageList(self):
> RetVal = set()
> for La in self.LibraryAutoGenList:
>@@ -3143,11 +3116,11 @@ class ModuleAutoGen(AutoGen):
> return RetVal
>
> @cached_property
> def BuildRules(self):
> RetVal = {}
>- BuildRuleDatabase = self.PlatformInfo.BuildRule
>+ BuildRuleDatabase = BuildRule
> for Type in BuildRuleDatabase.FileTypeList:
> #first try getting build rule by BuildRuleFamily
> RuleObject = BuildRuleDatabase[Type, self.BuildType,
>self.Arch, self.BuildRuleFamily]
> if not RuleObject:
> # build type is always module type, but ...
>diff --git a/BaseTools/Source/Python/AutoGen/BuildEngine.py
>b/BaseTools/Source/Python/AutoGen/BuildEngine.py
>index 14e61140e7ba..bb9153447793 100644
>--- a/BaseTools/Source/Python/AutoGen/BuildEngine.py
>+++ b/BaseTools/Source/Python/AutoGen/BuildEngine.py
>@@ -18,10 +18,13 @@ from Common.LongFilePathSupport import
>OpenLongFilePath as open from Common.GlobalData import * from
>Common.BuildToolError import * from Common.Misc import tdict,
>PathClass from Common.StringUtils import NormPath from
>Common.DataType import *
>+from Common.TargetTxtClassObject import TargetTxt
>+gDefaultBuildRuleFile = 'build_rule.txt'
>+AutoGenReqBuildRuleVerNum = '0.1'
>
> import Common.EdkLogger as EdkLogger
>
> ## Convert file type to file list macro name # @@ -581,10 +584,29 @@
>class BuildRule:
> _ExtraDependency : ParseCommonSubSection,
> _Command : ParseCommonSubSection,
> _UnknownSection : SkipSection,
> }
>
>+def GetBuildRule():
>+ BuildRuleFile = None
>+ if TAB_TAT_DEFINES_BUILD_RULE_CONF in TargetTxt.TargetTxtDictionary:
>+ BuildRuleFile =
>TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_BUILD_RULE_CONF]
>+ if not BuildRuleFile:
>+ BuildRuleFile = gDefaultBuildRuleFile
>+ RetVal = BuildRule(BuildRuleFile)
>+ if RetVal._FileVersion == "":
>+ RetVal._FileVersion = AutoGenReqBuildRuleVerNum
>+ else:
>+ if RetVal._FileVersion < AutoGenReqBuildRuleVerNum :
>+ # If Build Rule's version is less than the version number
>+ required by the
>tools, halting the build.
>+ EdkLogger.error("build", AUTOGEN_ERROR,
>+ ExtraData="The version number [%s] of
>+ build_rule.txt is less
>than the version number required by the AutoGen.(the minimum required
>version number is [%s])"\
>+ % (RetVal._FileVersion, AutoGenReqBuildRuleVerNum))
>+ return RetVal
>+
>+BuildRuleObj = GetBuildRule()
>+
> # This acts like the main() function for the script, unless it is
>'import'ed into another # script.
> if __name__ == '__main__':
> import sys
> EdkLogger.Initialize()
>diff --git a/BaseTools/Source/Python/Common/TargetTxtClassObject.py
>b/BaseTools/Source/Python/Common/TargetTxtClassObject.py
>index 9d7673b41bb5..79a5acc01074 100644
>--- a/BaseTools/Source/Python/Common/TargetTxtClassObject.py
>+++ b/BaseTools/Source/Python/Common/TargetTxtClassObject.py
>@@ -144,10 +144,12 @@ class TargetTxtClassObject(object):
> def TargetTxtDict(ConfDir):
> Target = TargetTxtClassObject()
> Target.LoadTargetTxtFile(os.path.normpath(os.path.join(ConfDir,
>gDefaultTargetTxtFile)))
> return Target
>
>+TargetTxt = TargetTxtDict(os.path.join(os.getenv("WORKSPACE"),"Conf"))
>+
> ##
> #
> # This acts like the main() function for the script, unless it is
>'import'ed into another # script.
> #
>diff --git a/BaseTools/Source/Python/Common/ToolDefClassObject.py
>b/BaseTools/Source/Python/Common/ToolDefClassObject.py
>index 5d692ea13cfc..0bfa263270c3 100644
>--- a/BaseTools/Source/Python/Common/ToolDefClassObject.py
>+++ b/BaseTools/Source/Python/Common/ToolDefClassObject.py
>@@ -12,11 +12,11 @@ from __future__ import absolute_import import
>Common.LongFilePathOs as os import re from . import EdkLogger
>
> from .BuildToolError import *
>-from Common.TargetTxtClassObject import TargetTxtDict
>+from Common.TargetTxtClassObject import TargetTxt
> from Common.LongFilePathSupport import OpenLongFilePath as open from
>Common.Misc import PathClass from Common.StringUtils import NormPath
>import Common.GlobalData as GlobalData from Common import GlobalData
>@@ -261,11 +261,11 @@ class ToolDefClassObject(object):
> # @param ConfDir: Conf dir
> #
> # @retval ToolDef An instance of ToolDefClassObject() with loaded
>tools_def.txt # def ToolDefDict(ConfDir):
>- Target = TargetTxtDict(ConfDir)
>+ Target = TargetTxt
> ToolDef = ToolDefClassObject()
> if TAB_TAT_DEFINES_TOOL_CHAIN_CONF in Target.TargetTxtDictionary:
> ToolsDefFile =
>Target.TargetTxtDictionary[TAB_TAT_DEFINES_TOOL_CHAIN_CONF]
> if ToolsDefFile:
> ToolDef.LoadToolDefFile(os.path.normpath(ToolsDefFile))
>@@ -273,10 +273,12 @@ def ToolDefDict(ConfDir):
>
>ToolDef.LoadToolDefFile(os.path.normpath(os.path.join(ConfDir,
>gDefaultToolsDefFile)))
> else:
> ToolDef.LoadToolDefFile(os.path.normpath(os.path.join(ConfDir,
>gDefaultToolsDefFile)))
> return ToolDef
>
>+ToolDef = ToolDefDict((os.path.join(os.getenv("WORKSPACE"),"Conf")))
>+
> ##
> #
> # This acts like the main() function for the script, unless it is
>'import'ed into another # script.
> #
>diff --git a/BaseTools/Source/Python/GenFds/GenFds.py
>b/BaseTools/Source/Python/GenFds/GenFds.py
>index 5888997761bb..51943411ad1f 100644
>--- a/BaseTools/Source/Python/GenFds/GenFds.py
>+++ b/BaseTools/Source/Python/GenFds/GenFds.py
>@@ -18,11 +18,11 @@ from glob import glob from struct import unpack
>from linecache import getlines from io import BytesIO
>
> import Common.LongFilePathOs as os
>-from Common.TargetTxtClassObject import TargetTxtClassObject
>+from Common.TargetTxtClassObject import TargetTxt
> from Common.DataType import *
> import Common.GlobalData as GlobalData from Common import EdkLogger
>from Common.StringUtils import NormPath from Common.Misc import
>DirCache, PathClass, GuidStructureStringToGuidString @@ -205,12 +205,10
>@@ def GenFdsApi(FdsCommandDict,
>WorkSpaceDataBase=None):
> GenFdsGlobalVariable.ConfDir = ConfDirectoryPath
> if not GlobalData.gConfDirectory:
> GlobalData.gConfDirectory = GenFdsGlobalVariable.ConfDir
> BuildConfigurationFile =
>os.path.normpath(os.path.join(ConfDirectoryPath, "target.txt"))
> if os.path.isfile(BuildConfigurationFile) == True:
>- TargetTxt = TargetTxtClassObject()
>- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)
> # if no build target given in command line, get it from target.txt
> if not GenFdsGlobalVariable.TargetName:
> BuildTargetList =
>TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_TARGET]
> if len(BuildTargetList) != 1:
> EdkLogger.error("GenFds", OPTION_VALUE_INVALID,
>ExtraData="Only allows one instance for Target.") diff --git
>a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
>b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
>index c9c476cf6154..f49af9371b8d 100644
>--- a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
>+++ b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
>@@ -20,13 +20,13 @@ from array import array
>
> from Common.BuildToolError import COMMAND_FAILURE,GENFDS_ERROR from
> Common import EdkLogger from Common.Misc import SaveFileOnChange
>
>-from Common.TargetTxtClassObject import TargetTxtClassObject -from
>Common.ToolDefClassObject import ToolDefClassObject, ToolDefDict -from
>AutoGen.BuildEngine import BuildRule
>+from Common.TargetTxtClassObject import TargetTxt from
>+Common.ToolDefClassObject import ToolDef from AutoGen.BuildEngine
>+import BuildRuleObj
> import Common.DataType as DataType
> from Common.Misc import PathClass
> from Common.LongFilePathSupport import OpenLongFilePath as open from
>Common.MultipleWorkspace import MultipleWorkspace as mws import
>Common.GlobalData as GlobalData @@ -93,35 +93,25 @@ class
>GenFdsGlobalVariable:
> #
> @staticmethod
> def _LoadBuildRule():
> if GenFdsGlobalVariable.__BuildRuleDatabase:
> return GenFdsGlobalVariable.__BuildRuleDatabase
>- BuildConfigurationFile =
>os.path.normpath(os.path.join(GenFdsGlobalVariable.ConfDir, "target.txt"))
>- TargetTxt = TargetTxtClassObject()
>- if os.path.isfile(BuildConfigurationFile) == True:
>- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)
>- if DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF in
>TargetTxt.TargetTxtDictionary:
>- BuildRuleFile =
>TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_BUILD_RULE_CO
>NF]
>- if not BuildRuleFile:
>- BuildRuleFile = 'Conf/build_rule.txt'
>- GenFdsGlobalVariable.__BuildRuleDatabase = BuildRule(BuildRuleFile)
>- ToolDefinitionFile =
>TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_C
>ONF]
>- if ToolDefinitionFile == '':
>- ToolDefinitionFile = "Conf/tools_def.txt"
>- if os.path.isfile(ToolDefinitionFile):
>- ToolDef = ToolDefClassObject()
>- ToolDef.LoadToolDefFile(ToolDefinitionFile)
>- ToolDefinition = ToolDef.ToolsDefTxtDatabase
>- if DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY in ToolDefinition
>\
>- and GenFdsGlobalVariable.ToolChainTag in
>ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY] \
>- and
>ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlo
>balVariable.ToolChainTag]:
>- GenFdsGlobalVariable.BuildRuleFamily =
>ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlo
>balVariable.ToolChainTag]
>+ GenFdsGlobalVariable.__BuildRuleDatabase = BuildRuleObj
>+ ToolDefinitionFile =
>TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_C
>ONF]
>+ if ToolDefinitionFile == '':
>+ ToolDefinitionFile = "Conf/tools_def.txt"
>+ if os.path.isfile(ToolDefinitionFile):
>+ ToolDefinition = ToolDef.ToolsDefTxtDatabase
>+ if DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY in ToolDefinition \
>+ and GenFdsGlobalVariable.ToolChainTag in
>ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY] \
>+ and
>ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlo
>balVariable.ToolChainTag]:
>+ GenFdsGlobalVariable.BuildRuleFamily =
>ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlo
>balVariable.ToolChainTag]
>
>- if DataType.TAB_TOD_DEFINES_FAMILY in ToolDefinition \
>- and GenFdsGlobalVariable.ToolChainTag in
>ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY] \
>- and
>ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.
>ToolChainTag]:
>- GenFdsGlobalVariable.ToolChainFamily =
>ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.
>ToolChainTag]
>+ if DataType.TAB_TOD_DEFINES_FAMILY in ToolDefinition \
>+ and GenFdsGlobalVariable.ToolChainTag in
>ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY] \
>+ and
>ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.
>ToolChainTag]:
>+ GenFdsGlobalVariable.ToolChainFamily =
>ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.
>ToolChainTag]
> return GenFdsGlobalVariable.__BuildRuleDatabase
>
> ## GetBuildRules
> # @param Inf: object of InfBuildData
> # @param Arch: current arch
>@@ -834,11 +824,11 @@ class GenFdsGlobalVariable:
> # @param KeyStringList Filter for inputs of section generation
> # @param CurrentArchList Arch list
> # @param NameGuid The Guid name
> #
> def FindExtendTool(KeyStringList, CurrentArchList, NameGuid):
>- ToolDb = ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDatabase
>+ ToolDb = ToolDef.ToolsDefTxtDatabase
> # if user not specify filter, try to deduce it from global data.
> if KeyStringList is None or KeyStringList == []:
> Target = GenFdsGlobalVariable.TargetName
> ToolChain = GenFdsGlobalVariable.ToolChainTag
> if ToolChain not in ToolDb['TOOL_CHAIN_TAG']:
>@@ -850,19 +840,19 @@ def FindExtendTool(KeyStringList,
>CurrentArchList,
>NameGuid):
>
> if GenFdsGlobalVariable.GuidToolDefinition:
> if NameGuid in GenFdsGlobalVariable.GuidToolDefinition:
> return GenFdsGlobalVariable.GuidToolDefinition[NameGuid]
>
>- ToolDefinition =
>ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDictionary
>+ ToolDefinition = ToolDef.ToolsDefTxtDictionary
> ToolPathTmp = None
> ToolOption = None
> ToolPathKey = None
> ToolOptionKey = None
> KeyList = None
>- for ToolDef in ToolDefinition.items():
>- if NameGuid.lower() == ToolDef[1].lower():
>- KeyList = ToolDef[0].split('_')
>+ for tool_def in ToolDefinition.items():
>+ if NameGuid.lower() == tool_def[1].lower():
>+ KeyList = tool_def[0].split('_')
> Key = KeyList[0] + \
> '_' + \
> KeyList[1] + \
> '_' + \
> KeyList[2]
>diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py
>b/BaseTools/Source/Python/Workspace/DscBuildData.py
>index 9f65ad54257d..bfd203aee805 100644
>--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
>+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
>@@ -17,12 +17,12 @@ from Common.StringUtils import * from
>Common.DataType import * from Common.Misc import * from types import
>* from Common.Expression import * from CommonDataClass.CommonClass
>import SkuInfoClass -from Common.TargetTxtClassObject import
>TargetTxtClassObject -from Common.ToolDefClassObject import
>ToolDefClassObject
>+from Common.TargetTxtClassObject import TargetTxt from
>+Common.ToolDefClassObject import ToolDef
> from .MetaDataTable import *
> from .MetaFileTable import *
> from .MetaFileParser import *
>
> from .WorkspaceCommon import GetDeclaredPcd @@ -3259,19 +3259,15 @@
>class DscBuildData(PlatformBuildClassObject):
> @property
> def ToolChainFamily(self):
> self._ToolChainFamily = TAB_COMPILER_MSFT
> BuildConfigurationFile =
>os.path.normpath(os.path.join(GlobalData.gConfDirectory, "target.txt"))
> if os.path.isfile(BuildConfigurationFile) == True:
>- TargetTxt = TargetTxtClassObject()
>- TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)
> ToolDefinitionFile =
>TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_C
>ONF]
> if ToolDefinitionFile == '':
> ToolDefinitionFile = "tools_def.txt"
> ToolDefinitionFile =
>os.path.normpath(mws.join(self.WorkspaceDir,
>'Conf', ToolDefinitionFile))
> if os.path.isfile(ToolDefinitionFile) == True:
>- ToolDef = ToolDefClassObject()
>- ToolDef.LoadToolDefFile(ToolDefinitionFile)
> ToolDefinition = ToolDef.ToolsDefTxtDatabase
> if TAB_TOD_DEFINES_FAMILY not in ToolDefinition \
> or self._Toolchain not in
>ToolDefinition[TAB_TOD_DEFINES_FAMILY]
>\
> or not ToolDefinition[TAB_TOD_DEFINES_FAMILY][self._Toolchain]:
> self._ToolChainFamily = TAB_COMPILER_MSFT diff
>--git a/BaseTools/Source/Python/build/build.py
>b/BaseTools/Source/Python/build/build.py
>index 8c3315619afa..5e13453a1254 100644
>--- a/BaseTools/Source/Python/build/build.py
>+++ b/BaseTools/Source/Python/build/build.py
>@@ -28,12 +28,12 @@ import threading
> from optparse import OptionParser
> from subprocess import *
> from Common import Misc as Utils
>
> from Common.LongFilePathSupport import OpenLongFilePath as open -from
>Common.TargetTxtClassObject import TargetTxtClassObject -from
>Common.ToolDefClassObject import ToolDefClassObject
>+from Common.TargetTxtClassObject import TargetTxt from
>+Common.ToolDefClassObject import ToolDef
> from Common.DataType import *
> from Common.BuildVersion import gBUILD_VERSION from AutoGen.AutoGen
>import * from Common.BuildToolError import * from
>Workspace.WorkspaceDatabase import WorkspaceDatabase @@ -714,12 +714,12
>@@ class Build():
> if self.SkuId:
> GlobalData.gSKUID_CMD = self.SkuId
> self.ConfDirectory = BuildOptions.ConfDirectory
> self.SpawnMode = True
> self.BuildReport = BuildReport(BuildOptions.ReportFile,
>BuildOptions.ReportType)
>- self.TargetTxt = TargetTxtClassObject()
>- self.ToolDef = ToolDefClassObject()
>+ self.TargetTxt = TargetTxt
>+ self.ToolDef = ToolDef
> self.AutoGenTime = 0
> self.MakeTime = 0
> self.GenFdsTime = 0
> GlobalData.BuildOptionPcd = BuildOptions.OptionPcd if
>BuildOptions.OptionPcd else []
> #Set global flag for build mode @@ -813,12 +813,12 @@ class
>Build():
> EdkLogger.quiet("%-16s = %s" % ("PREBUILD", self.Prebuild))
> if self.Postbuild:
> EdkLogger.quiet("%-16s = %s" % ("POSTBUILD", self.Postbuild))
> if self.Prebuild:
> self.LaunchPrebuild()
>- self.TargetTxt = TargetTxtClassObject()
>- self.ToolDef = ToolDefClassObject()
>+ self.TargetTxt = TargetTxt
>+ self.ToolDef = ToolDef
> if not (self.LaunchPrebuildFlag and
>os.path.exists(self.PlatformBuildPath)):
> self.InitBuild()
>
> EdkLogger.info("")
> os.chdir(self.WorkspaceDir)
>@@ -826,27 +826,10 @@ class Build():
> ## Load configuration
> #
> # This method will parse target.txt and get the build configurations.
> #
> def LoadConfiguration(self):
>- #
>- # Check target.txt and tools_def.txt and Init them
>- #
>- BuildConfigurationFile =
>os.path.normpath(os.path.join(GlobalData.gConfDirectory,
>gBuildConfiguration))
>- if os.path.isfile(BuildConfigurationFile) == True:
>- StatusCode = self.TargetTxt.LoadTargetTxtFile(BuildConfigurationFile)
>-
>- ToolDefinitionFile =
>self.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_TOOL_CHAIN_CONF]
>- if ToolDefinitionFile == '':
>- ToolDefinitionFile = gToolsDefinition
>- ToolDefinitionFile = os.path.normpath(mws.join(self.WorkspaceDir,
>'Conf', ToolDefinitionFile))
>- if os.path.isfile(ToolDefinitionFile) == True:
>- StatusCode = self.ToolDef.LoadToolDefFile(ToolDefinitionFile)
>- else:
>- EdkLogger.error("build", FILE_NOT_FOUND,
>ExtraData=ToolDefinitionFile)
>- else:
>- EdkLogger.error("build", FILE_NOT_FOUND,
>ExtraData=BuildConfigurationFile)
>
> # if no ARCH given in command line, get it from target.txt
> if not self.ArchList:
> self.ArchList =
>self.TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_TARGET_ARCH]
> self.ArchList = tuple(self.ArchList)
>--
>2.20.1.windows.1
next prev parent reply other threads:[~2019-07-11 9:26 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-28 7:07 [Patch 1/1] BaseTools: Singleton the object to handle build conf file Bob Feng
2019-07-11 9:11 ` Liming Gao
2019-07-11 9:26 ` Bob Feng [this message]
[not found] ` <15B0502B4303BDC5.2265@groups.io>
2019-07-11 12:12 ` [edk2-devel] " Bob Feng
2019-07-11 14:30 ` Liming Gao
2019-07-11 14:57 ` Bob Feng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=08650203BA1BD64D8AD9B6D5D74A85D160B3DB27@SHSMSX105.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox