From nobody Sun Feb 8 10:09:19 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+44715+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+44715+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1564628620; cv=none; d=zoho.com; s=zohoarc; b=aOgqYpxsGI+va9hedh4BhQj6qbrIYklfbM0lucxrZ/xLyPk/tbBnYGr1CjFx2mPc1O+hTrhvA8gxNEfg5s+P5tc2OXu1SHY0eWqvxUjfIEWLkO0Cy4DGF673YnthQ3qLhO0iYqxj1XhUP1dIbplMcNnLNUwniN1Q6eNODx2+R/g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1564628620; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To:ARC-Authentication-Results; bh=RAxDdalIYqNqgMcogyJ5ESwqe34987mpXtQzriIDm30=; b=Fw/6vtqhA32HF9ranln855dgKOka33qHxXn3La7njVlKeh3sUfJlFHKvkEDOwPuw8phvMZ3YlFrQBVKDXg08973iyhQVx4FpiNY7DP2v5qhnj8DT9zGMcE2D0pKjQWVQMuUJfJQQh4vpWL7M7grVjzKQ3vCXHuXrbbjwvyJwXQg= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+44715+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1564628620954330.0114329517702; Wed, 31 Jul 2019 20:03:40 -0700 (PDT) Return-Path: X-Received: from mga02.intel.com (mga02.intel.com []) by groups.io with SMTP; Wed, 31 Jul 2019 20:03:40 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Jul 2019 20:03:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,332,1559545200"; d="scan'208";a="324044470" X-Received: from shwdepsi1121.ccr.corp.intel.com ([10.239.158.47]) by orsmga004.jf.intel.com with ESMTP; 31 Jul 2019 20:03:38 -0700 From: "Bob Feng" To: devel@edk2.groups.io Cc: Liming Gao , Bob Feng Subject: [edk2-devel] [Patch 01/10 V6] BaseTools: Singleton the object to handle build conf file Date: Thu, 1 Aug 2019 11:03:24 +0800 Message-Id: <20190801030333.8588-2-bob.c.feng@intel.com> In-Reply-To: <20190801030333.8588-1-bob.c.feng@intel.com> References: <20190801030333.8588-1-bob.c.feng@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,bob.c.feng@intel.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1564628620; bh=0oyX1EkbUcX2ePoH6ndDgFilgj+1eg7XnXTcJwHDdFc=; h=Cc:Date:From:Reply-To:Subject:To; b=N+uwr2Ze11v+9jX7NZkzaXp6AvkhAwSLUIs1w4rJQRyfh+9GaFpVwT8DQYRY9ohkz0t dixZjLj2mgoXRQ6UEzpAUQF1I6HtncxaTWdEKhwxPvU+2pSz40fHxKVtpzXhBI5LAyJub 6Lx98MQYAcLFUrYJO2+xDnk/XP76tcxVZOY= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Type: text/plain; charset="utf-8" BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3D1875 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 Signed-off-by: Bob Feng --- 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 2df055a109f7..c5b3fbb0a87f 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 =20 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 =3D re.compile("\s*guid\s*=3D\s= *({.*?{.*?}\s*})") =20 ## Mapping Makefile type gMakeTypeMap =3D {TAB_COMPILER_MSFT:"nmake", "GCC":"gmake"} =20 =20 -## Build rule configuration file -gDefaultBuildRuleFile =3D 'build_rule.txt' - -## Build rule default version -AutoGenReqBuildRuleVerNum =3D "0.1" - ## default file name for AutoGen gAutoGenCodeFileName =3D "AutoGen.c" gAutoGenHeaderFileName =3D "AutoGen.h" gAutoGenStringFileName =3D "%(module_name)sStrDefs.h" gAutoGenStringFormFileName =3D "%(module_name)sStrDefs.hpk" @@ -1970,32 +1965,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_N= AME) =20 - ## Parse build_rule.txt in Conf Directory. - # - # @retval BuildRule object - # - @cached_property - def BuildRule(self): - BuildRuleFile =3D None - if TAB_TAT_DEFINES_BUILD_RULE_CONF in self.Workspace.TargetTxt.Tar= getTxtDictionary: - BuildRuleFile =3D self.Workspace.TargetTxt.TargetTxtDictionary= [TAB_TAT_DEFINES_BUILD_RULE_CONF] - if not BuildRuleFile: - BuildRuleFile =3D gDefaultBuildRuleFile - RetVal =3D BuildRule(BuildRuleFile) - if RetVal._FileVersion =3D=3D "": - RetVal._FileVersion =3D 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=3D"The version number [%s] of bu= ild_rule.txt is less than the version number required by the AutoGen.(the m= inimum required version number is [%s])"\ - % (RetVal._FileVersion, AutoGenReqBuildRu= leVerNum)) - return RetVal - ## Summarize the packages used by modules in this platform @cached_property def PackageList(self): RetVal =3D set() for La in self.LibraryAutoGenList: @@ -3149,11 +3122,11 @@ class ModuleAutoGen(AutoGen): return RetVal =20 @cached_property def BuildRules(self): RetVal =3D {} - BuildRuleDatabase =3D self.PlatformInfo.BuildRule + BuildRuleDatabase =3D BuildRule for Type in BuildRuleDatabase.FileTypeList: #first try getting build rule by BuildRuleFamily RuleObject =3D BuildRuleDatabase[Type, self.BuildType, self.Ar= ch, self.BuildRuleFamily] if not RuleObject: # build type is always module type, but ... diff --git a/BaseTools/Source/Python/AutoGen/BuildEngine.py b/BaseTools/Sou= rce/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 =3D 'build_rule.txt' +AutoGenReqBuildRuleVerNum =3D '0.1' =20 import Common.EdkLogger as EdkLogger =20 ## Convert file type to file list macro name # @@ -581,10 +584,29 @@ class BuildRule: _ExtraDependency : ParseCommonSubSection, _Command : ParseCommonSubSection, _UnknownSection : SkipSection, } =20 +def GetBuildRule(): + BuildRuleFile =3D None + if TAB_TAT_DEFINES_BUILD_RULE_CONF in TargetTxt.TargetTxtDictionary: + BuildRuleFile =3D TargetTxt.TargetTxtDictionary[TAB_TAT_DEFINES_BU= ILD_RULE_CONF] + if not BuildRuleFile: + BuildRuleFile =3D gDefaultBuildRuleFile + RetVal =3D BuildRule(BuildRuleFile) + if RetVal._FileVersion =3D=3D "": + RetVal._FileVersion =3D AutoGenReqBuildRuleVerNum + else: + if RetVal._FileVersion < AutoGenReqBuildRuleVerNum : + # If Build Rule's version is less than the version number requ= ired by the tools, halting the build. + EdkLogger.error("build", AUTOGEN_ERROR, + ExtraData=3D"The version number [%s] of build_= rule.txt is less than the version number required by the AutoGen.(the minim= um required version number is [%s])"\ + % (RetVal._FileVersion, AutoGenReqBuildRuleVe= rNum)) + return RetVal + +BuildRuleObj =3D GetBuildRule() + # This acts like the main() function for the script, unless it is 'import'= ed into another # script. if __name__ =3D=3D '__main__': import sys EdkLogger.Initialize() diff --git a/BaseTools/Source/Python/Common/TargetTxtClassObject.py b/BaseT= ools/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 =3D TargetTxtClassObject() Target.LoadTargetTxtFile(os.path.normpath(os.path.join(ConfDir, gDefau= ltTargetTxtFile))) return Target =20 +TargetTxt =3D 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/BaseToo= ls/Source/Python/Common/ToolDefClassObject.py index 4fa364942cad..063fa005840a 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 =20 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_de= f.txt # def ToolDefDict(ConfDir): - Target =3D TargetTxtDict(ConfDir) + Target =3D TargetTxt ToolDef =3D ToolDefClassObject() if TAB_TAT_DEFINES_TOOL_CHAIN_CONF in Target.TargetTxtDictionary: ToolsDefFile =3D Target.TargetTxtDictionary[TAB_TAT_DEFINES_TOOL_C= HAIN_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, gDe= faultToolsDefFile))) return ToolDef =20 +ToolDef =3D 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/Py= thon/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 =20 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, GuidStructureStringToGuidStri= ng @@ -205,12 +205,10 @@ def GenFdsApi(FdsCommandDict, WorkSpaceDataBase=3DNon= e): GenFdsGlobalVariable.ConfDir =3D ConfDirectoryPath if not GlobalData.gConfDirectory: GlobalData.gConfDirectory =3D GenFdsGlobalVariable.ConfDir BuildConfigurationFile =3D os.path.normpath(os.path.join(ConfDirec= toryPath, "target.txt")) if os.path.isfile(BuildConfigurationFile) =3D=3D True: - TargetTxt =3D TargetTxtClassObject() - TargetTxt.LoadTargetTxtFile(BuildConfigurationFile) # if no build target given in command line, get it from target= .txt if not GenFdsGlobalVariable.TargetName: BuildTargetList =3D TargetTxt.TargetTxtDictionary[TAB_TAT_= DEFINES_TARGET] if len(BuildTargetList) !=3D 1: EdkLogger.error("GenFds", OPTION_VALUE_INVALID, ExtraD= ata=3D"Only allows one instance for Target.") diff --git a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py b/BaseT= ools/Source/Python/GenFds/GenFdsGlobalVariable.py index f43743dff4d1..037828ea1cca 100644 --- a/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py +++ b/BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py @@ -20,13 +20,13 @@ from array import array =20 from Common.BuildToolError import COMMAND_FAILURE,GENFDS_ERROR from Common import EdkLogger from Common.Misc import SaveFileOnChange =20 -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 =3D os.path.normpath(os.path.join(GenFdsGlo= balVariable.ConfDir, "target.txt")) - TargetTxt =3D TargetTxtClassObject() - if os.path.isfile(BuildConfigurationFile) =3D=3D True: - TargetTxt.LoadTargetTxtFile(BuildConfigurationFile) - if DataType.TAB_TAT_DEFINES_BUILD_RULE_CONF in TargetTxt.Targe= tTxtDictionary: - BuildRuleFile =3D TargetTxt.TargetTxtDictionary[DataType.T= AB_TAT_DEFINES_BUILD_RULE_CONF] - if not BuildRuleFile: - BuildRuleFile =3D 'Conf/build_rule.txt' - GenFdsGlobalVariable.__BuildRuleDatabase =3D BuildRule(BuildRu= leFile) - ToolDefinitionFile =3D TargetTxt.TargetTxtDictionary[DataType.= TAB_TAT_DEFINES_TOOL_CHAIN_CONF] - if ToolDefinitionFile =3D=3D '': - ToolDefinitionFile =3D "Conf/tools_def.txt" - if os.path.isfile(ToolDefinitionFile): - ToolDef =3D ToolDefClassObject() - ToolDef.LoadToolDefFile(ToolDefinitionFile) - ToolDefinition =3D ToolDef.ToolsDefTxtDatabase - if DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY in ToolDefinit= ion \ - and GenFdsGlobalVariable.ToolChainTag in ToolDefinition= [DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY] \ - and ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFA= MILY][GenFdsGlobalVariable.ToolChainTag]: - GenFdsGlobalVariable.BuildRuleFamily =3D ToolDefinitio= n[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlobalVariable.ToolChainT= ag] + GenFdsGlobalVariable.__BuildRuleDatabase =3D BuildRuleObj + ToolDefinitionFile =3D TargetTxt.TargetTxtDictionary[DataType.TAB_= TAT_DEFINES_TOOL_CHAIN_CONF] + if ToolDefinitionFile =3D=3D '': + ToolDefinitionFile =3D "Conf/tools_def.txt" + if os.path.isfile(ToolDefinitionFile): + ToolDefinition =3D ToolDef.ToolsDefTxtDatabase + if DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY in ToolDefinition \ + and GenFdsGlobalVariable.ToolChainTag in ToolDefinition[Dat= aType.TAB_TOD_DEFINES_BUILDRULEFAMILY] \ + and ToolDefinition[DataType.TAB_TOD_DEFINES_BUILDRULEFAMILY= ][GenFdsGlobalVariable.ToolChainTag]: + GenFdsGlobalVariable.BuildRuleFamily =3D ToolDefinition[Da= taType.TAB_TOD_DEFINES_BUILDRULEFAMILY][GenFdsGlobalVariable.ToolChainTag] =20 - 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][Gen= FdsGlobalVariable.ToolChainTag]: - GenFdsGlobalVariable.ToolChainFamily =3D ToolDefinitio= n[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.ToolChainTag] + if DataType.TAB_TOD_DEFINES_FAMILY in ToolDefinition \ + and GenFdsGlobalVariable.ToolChainTag in ToolDefinition[Dat= aType.TAB_TOD_DEFINES_FAMILY] \ + and ToolDefinition[DataType.TAB_TOD_DEFINES_FAMILY][GenFdsG= lobalVariable.ToolChainTag]: + GenFdsGlobalVariable.ToolChainFamily =3D ToolDefinition[Da= taType.TAB_TOD_DEFINES_FAMILY][GenFdsGlobalVariable.ToolChainTag] return GenFdsGlobalVariable.__BuildRuleDatabase =20 ## GetBuildRules # @param Inf: object of InfBuildData # @param Arch: current arch @@ -837,11 +827,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 =3D ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefTxtDataba= se + ToolDb =3D ToolDef.ToolsDefTxtDatabase # if user not specify filter, try to deduce it from global data. if KeyStringList is None or KeyStringList =3D=3D []: Target =3D GenFdsGlobalVariable.TargetName ToolChain =3D GenFdsGlobalVariable.ToolChainTag if ToolChain not in ToolDb['TOOL_CHAIN_TAG']: @@ -853,19 +843,19 @@ def FindExtendTool(KeyStringList, CurrentArchList, Na= meGuid): =20 if GenFdsGlobalVariable.GuidToolDefinition: if NameGuid in GenFdsGlobalVariable.GuidToolDefinition: return GenFdsGlobalVariable.GuidToolDefinition[NameGuid] =20 - ToolDefinition =3D ToolDefDict(GenFdsGlobalVariable.ConfDir).ToolsDefT= xtDictionary + ToolDefinition =3D ToolDef.ToolsDefTxtDictionary ToolPathTmp =3D None ToolOption =3D None ToolPathKey =3D None ToolOptionKey =3D None KeyList =3D None - for ToolDef in ToolDefinition.items(): - if NameGuid.lower() =3D=3D ToolDef[1].lower(): - KeyList =3D ToolDef[0].split('_') + for tool_def in ToolDefinition.items(): + if NameGuid.lower() =3D=3D tool_def[1].lower(): + KeyList =3D tool_def[0].split('_') Key =3D KeyList[0] + \ '_' + \ KeyList[1] + \ '_' + \ KeyList[2] diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py b/BaseTools/= Source/Python/Workspace/DscBuildData.py index 985f8775259d..e7ec2aba57d2 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 * =20 from .WorkspaceCommon import GetDeclaredPcd @@ -3260,19 +3260,15 @@ class DscBuildData(PlatformBuildClassObject): @property def ToolChainFamily(self): self._ToolChainFamily =3D TAB_COMPILER_MSFT BuildConfigurationFile =3D os.path.normpath(os.path.join(GlobalDat= a.gConfDirectory, "target.txt")) if os.path.isfile(BuildConfigurationFile) =3D=3D True: - TargetTxt =3D TargetTxtClassObject() - TargetTxt.LoadTargetTxtFile(BuildConfigurationFile) ToolDefinitionFile =3D TargetTxt.TargetTxtDictionary[DataType.= TAB_TAT_DEFINES_TOOL_CHAIN_CONF] if ToolDefinitionFile =3D=3D '': ToolDefinitionFile =3D "tools_def.txt" ToolDefinitionFile =3D os.path.normpath(mws.join(self.Work= spaceDir, 'Conf', ToolDefinitionFile)) if os.path.isfile(ToolDefinitionFile) =3D=3D True: - ToolDef =3D ToolDefClassObject() - ToolDef.LoadToolDefFile(ToolDefinitionFile) ToolDefinition =3D ToolDef.ToolsDefTxtDatabase if TAB_TOD_DEFINES_FAMILY not in ToolDefinition \ or self._Toolchain not in ToolDefinition[TAB_TOD_DEFINE= S_FAMILY] \ or not ToolDefinition[TAB_TOD_DEFINES_FAMILY][self._Too= lchain]: self._ToolChainFamily =3D TAB_COMPILER_MSFT diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Pyth= on/build/build.py index 6bc528974db1..07693b97359e 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 =20 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 =3D self.SkuId self.ConfDirectory =3D BuildOptions.ConfDirectory self.SpawnMode =3D True self.BuildReport =3D BuildReport(BuildOptions.ReportFile, Build= Options.ReportType) - self.TargetTxt =3D TargetTxtClassObject() - self.ToolDef =3D ToolDefClassObject() + self.TargetTxt =3D TargetTxt + self.ToolDef =3D ToolDef self.AutoGenTime =3D 0 self.MakeTime =3D 0 self.GenFdsTime =3D 0 GlobalData.BuildOptionPcd =3D BuildOptions.OptionPcd if BuildO= ptions.OptionPcd else [] #Set global flag for build mode @@ -814,12 +814,12 @@ class Build(): EdkLogger.quiet("%-16s =3D %s" % ("PREBUILD", self.Prebuild)) if self.Postbuild: EdkLogger.quiet("%-16s =3D %s" % ("POSTBUILD", self.Postbuild)) if self.Prebuild: self.LaunchPrebuild() - self.TargetTxt =3D TargetTxtClassObject() - self.ToolDef =3D ToolDefClassObject() + self.TargetTxt =3D TargetTxt + self.ToolDef =3D ToolDef if not (self.LaunchPrebuildFlag and os.path.exists(self.PlatformBu= ildPath)): self.InitBuild() =20 EdkLogger.info("") os.chdir(self.WorkspaceDir) @@ -827,27 +827,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 =3D os.path.normpath(os.path.join(GlobalDat= a.gConfDirectory, gBuildConfiguration)) - if os.path.isfile(BuildConfigurationFile) =3D=3D True: - StatusCode =3D self.TargetTxt.LoadTargetTxtFile(BuildConfigura= tionFile) - - ToolDefinitionFile =3D self.TargetTxt.TargetTxtDictionary[TAB_= TAT_DEFINES_TOOL_CHAIN_CONF] - if ToolDefinitionFile =3D=3D '': - ToolDefinitionFile =3D gToolsDefinition - ToolDefinitionFile =3D os.path.normpath(mws.join(self.Work= spaceDir, 'Conf', ToolDefinitionFile)) - if os.path.isfile(ToolDefinitionFile) =3D=3D True: - StatusCode =3D self.ToolDef.LoadToolDefFile(ToolDefinition= File) - else: - EdkLogger.error("build", FILE_NOT_FOUND, ExtraData=3DToolD= efinitionFile) - else: - EdkLogger.error("build", FILE_NOT_FOUND, ExtraData=3DBuildConf= igurationFile) =20 # if no ARCH given in command line, get it from target.txt if not self.ArchList: self.ArchList =3D self.TargetTxt.TargetTxtDictionary[TAB_TAT_D= EFINES_TARGET_ARCH] self.ArchList =3D tuple(self.ArchList) --=20 2.20.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#44715): https://edk2.groups.io/g/devel/message/44715 Mute This Topic: https://groups.io/mt/32675205/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-