From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.88; helo=mga01.intel.com; envelope-from=bob.c.feng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 20A01208AE2B5 for ; Sat, 16 Mar 2019 07:35:05 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 16 Mar 2019 07:35:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.58,486,1544515200"; d="scan'208";a="142591045" Received: from bfeng1-mobl1.ccr.corp.intel.com ([10.254.211.133]) by orsmga002.jf.intel.com with ESMTP; 16 Mar 2019 07:35:03 -0700 From: "Feng, Bob C" To: edk2-devel@lists.01.org Cc: Bob Feng , Liming Gao Date: Sat, 16 Mar 2019 22:34:47 +0800 Message-Id: <20190316143447.24152-1-bob.c.feng@intel.com> X-Mailer: git-send-email 2.18.0.windows.1 Subject: [Patch] BaseTools: Remove EDK_GLOBAL related logic X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Mar 2019 14:35:06 -0000 BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1350 Macros defined using EDK_GLOBAL are only valid when processing EDK libraries and components. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Bob Feng Cc: Liming Gao --- BaseTools/Source/Python/Common/DataType.py | 1 - BaseTools/Source/Python/Common/GlobalData.py | 3 +-- .../Python/CommonDataClass/DataClass.py | 1 - .../Ecc/MetaFileWorkspace/MetaFileParser.py | 19 ++---------------- .../Source/Python/UPT/Library/Parsing.py | 2 +- .../Source/Python/UPT/Logger/StringTable.py | 2 -- .../Source/Python/Workspace/InfBuildData.py | 1 - .../Source/Python/Workspace/MetaFileParser.py | 20 ++----------------- 8 files changed, 6 insertions(+), 43 deletions(-) diff --git a/BaseTools/Source/Python/Common/DataType.py b/BaseTools/Source/Python/Common/DataType.py index 798c0e353d..99bb60c852 100644 --- a/BaseTools/Source/Python/Common/DataType.py +++ b/BaseTools/Source/Python/Common/DataType.py @@ -415,11 +415,10 @@ TAB_DSC_DEFINES_RT_BASE_ADDRESS = 'RtBaseAddress' TAB_DSC_DEFINES_RFC_LANGUAGES = 'RFC_LANGUAGES' TAB_DSC_DEFINES_ISO_LANGUAGES = 'ISO_LANGUAGES' TAB_DSC_DEFINES_DEFINE = 'DEFINE' TAB_DSC_DEFINES_VPD_TOOL_GUID = 'VPD_TOOL_GUID' TAB_FIX_LOAD_TOP_MEMORY_ADDRESS = 'FIX_LOAD_TOP_MEMORY_ADDRESS' -TAB_DSC_DEFINES_EDKGLOBAL = 'EDK_GLOBAL' TAB_DSC_PREBUILD = 'PREBUILD' TAB_DSC_POSTBUILD = 'POSTBUILD' # # TargetTxt Definitions # diff --git a/BaseTools/Source/Python/Common/GlobalData.py b/BaseTools/Source/Python/Common/GlobalData.py index f117998b0b..9f42484dc1 100644 --- a/BaseTools/Source/Python/Common/GlobalData.py +++ b/BaseTools/Source/Python/Common/GlobalData.py @@ -26,11 +26,10 @@ gPlatformDefines = {} gPlatformPcds = {} # PCDs with type that are not fixed at build and feature flag gPlatformOtherPcds = {} gActivePlatform = None gCommandLineDefines = {} -gEdkGlobal = {} gOverrideDir = {} gCommandMaxLength = 4096 # for debug trace purpose when problem occurs gProcessingFile = '' gBuildingModule = '' @@ -40,11 +39,11 @@ gDefaultStores = [] # definition for a MACRO name. used to create regular expressions below. _MacroNamePattern = "[A-Z][A-Z0-9_]*" ## Regular expression for matching macro used in DSC/DEC/INF file inclusion gMacroRefPattern = re.compile("\$\(({})\)".format(_MacroNamePattern), re.UNICODE) -gMacroDefPattern = re.compile("^(DEFINE|EDK_GLOBAL)[ \t]+") +gMacroDefPattern = re.compile("^(DEFINE)[ \t]+") gMacroNamePattern = re.compile("^{}$".format(_MacroNamePattern)) # definition for a GUID. used to create regular expressions below. _HexChar = r"[0-9a-fA-F]" _GuidPattern = r"{Hex}{{8}}-{Hex}{{4}}-{Hex}{{4}}-{Hex}{{4}}-{Hex}{{12}}".format(Hex=_HexChar) diff --git a/BaseTools/Source/Python/CommonDataClass/DataClass.py b/BaseTools/Source/Python/CommonDataClass/DataClass.py index 2d93f79b09..ec5bb194f4 100644 --- a/BaseTools/Source/Python/CommonDataClass/DataClass.py +++ b/BaseTools/Source/Python/CommonDataClass/DataClass.py @@ -105,11 +105,10 @@ MODEL_META_DATA_PACKAGE = 5011 MODEL_META_DATA_NMAKE = 5012 MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF = 5013 MODEL_META_DATA_CONDITIONAL_STATEMENT_ENDIF = 5014 MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH = 5015 MODEL_META_DATA_COMMENT = 5016 -MODEL_META_DATA_GLOBAL_DEFINE = 5017 MODEL_META_DATA_SECTION_HEADER = 5100 MODEL_META_DATA_SUBSECTION_HEADER = 5200 MODEL_META_DATA_TAIL_COMMENT = 5300 MODEL_EXTERNAL_DEPENDENCY = 10000 diff --git a/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py b/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py index 862974894a..cba1f40837 100644 --- a/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py @@ -40,11 +40,11 @@ from Common.LongFilePathSupport import CodecOpenLongFilePath ## A decorator used to parse macro definition def ParseMacro(Parser): def MacroParser(self): Match = GlobalData.gMacroDefPattern.match(self._CurrentLine) if not Match: - # Not 'DEFINE/EDK_GLOBAL' statement, call decorated method + # Not 'DEFINE' statement, call decorated method Parser(self) return TokenList = GetSplitValueList(self._CurrentLine[Match.end(1):], TAB_EQUAL_SPLIT, 1) # Syntax check @@ -81,20 +81,10 @@ def ParseMacro(Parser): SectionDictKey = self._SectionType, self._Scope[0][0], self._Scope[0][1] if SectionDictKey not in self._SectionsMacroDict: self._SectionsMacroDict[SectionDictKey] = {} SectionLocalMacros = self._SectionsMacroDict[SectionDictKey] SectionLocalMacros[Name] = Value - # EDK_GLOBAL defined macros - elif not isinstance(self, DscParser): - EdkLogger.error('Parser', FORMAT_INVALID, "EDK_GLOBAL can only be used in .dsc file", - ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex+1) - elif self._SectionType != MODEL_META_DATA_HEADER: - EdkLogger.error('Parser', FORMAT_INVALID, "EDK_GLOBAL can only be used under [Defines] section", - ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex+1) - elif (Name in self._FileLocalMacros) and (self._FileLocalMacros[Name] != Value): - EdkLogger.error('Parser', FORMAT_INVALID, "EDK_GLOBAL defined a macro with the same name and different value as one defined by 'DEFINE'", - ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex+1) self._ValueList = [Type, Name, Value] return MacroParser @@ -740,11 +730,10 @@ class DscParser(MetaFileParser): TAB_PCDS_DYNAMIC_EX_VPD_NULL.upper() : MODEL_PCD_DYNAMIC_EX_VPD, TAB_COMPONENTS.upper() : MODEL_META_DATA_COMPONENT, TAB_COMPONENTS_SOURCE_OVERRIDE_PATH.upper() : MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH, TAB_DSC_DEFINES.upper() : MODEL_META_DATA_HEADER, TAB_DSC_DEFINES_DEFINE : MODEL_META_DATA_DEFINE, - TAB_DSC_DEFINES_EDKGLOBAL : MODEL_META_DATA_GLOBAL_DEFINE, TAB_INCLUDE.upper() : MODEL_META_DATA_INCLUDE, TAB_IF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_IF, TAB_IF_DEF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF, TAB_IF_N_DEF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF, TAB_ELSE_IF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF, @@ -1101,25 +1090,23 @@ class DscParser(MetaFileParser): ## Override parent's method since we'll do all macro replacements in parser def _GetMacros(self): Macros = dict( [('ARCH', 'IA32'), ('FAMILY', TAB_COMPILER_MSFT), ('TOOL_CHAIN_TAG', 'VS2008x86'), ('TARGET', 'DEBUG')]) Macros.update(self._FileLocalMacros) Macros.update(self._GetApplicableSectionMacro()) - Macros.update(GlobalData.gEdkGlobal) Macros.update(GlobalData.gPlatformDefines) Macros.update(GlobalData.gCommandLineDefines) # PCD cannot be referenced in macro definition - if self._ItemType not in [MODEL_META_DATA_DEFINE, MODEL_META_DATA_GLOBAL_DEFINE]: + if self._ItemType != MODEL_META_DATA_DEFINE: Macros.update(self._Symbols) return Macros def _PostProcess(self): Processer = { MODEL_META_DATA_SECTION_HEADER : self.__ProcessSectionHeader, MODEL_META_DATA_SUBSECTION_HEADER : self.__ProcessSubsectionHeader, MODEL_META_DATA_HEADER : self.__ProcessDefine, MODEL_META_DATA_DEFINE : self.__ProcessDefine, - MODEL_META_DATA_GLOBAL_DEFINE : self.__ProcessDefine, MODEL_META_DATA_INCLUDE : self.__ProcessDirective, MODEL_META_DATA_CONDITIONAL_STATEMENT_IF : self.__ProcessDirective, MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE : self.__ProcessDirective, MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF : self.__ProcessDirective, MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF : self.__ProcessDirective, @@ -1274,12 +1261,10 @@ class DscParser(MetaFileParser): SectionDictKey = self._SectionType, self._Scope[0][0], self._Scope[0][1] if SectionDictKey not in self._SectionsMacroDict: self._SectionsMacroDict[SectionDictKey] = {} SectionLocalMacros = self._SectionsMacroDict[SectionDictKey] SectionLocalMacros[Name] = Value - elif self._ItemType == MODEL_META_DATA_GLOBAL_DEFINE: - GlobalData.gEdkGlobal[Name] = Value # # Keyword in [Defines] section can be used as Macros # if (self._ItemType == MODEL_META_DATA_HEADER) and (self._SectionType == MODEL_META_DATA_HEADER): diff --git a/BaseTools/Source/Python/UPT/Library/Parsing.py b/BaseTools/Source/Python/UPT/Library/Parsing.py index f7e995b93e..683d10a2ed 100644 --- a/BaseTools/Source/Python/UPT/Library/Parsing.py +++ b/BaseTools/Source/Python/UPT/Library/Parsing.py @@ -895,11 +895,11 @@ def MacroParser(Line, FileName, SectionType, FileLocalMacros): LineContent = Line[0] LineNo = Line[1] Match = MacroDefPattern.match(LineContent) if not Match: # - # Not 'DEFINE/EDK_GLOBAL' statement, call decorated method + # Not 'DEFINE' statement, call decorated method # return None, None TokenList = GetSplitValueList(LineContent[Match.end(1):], \ DataType.TAB_EQUAL_SPLIT, 1) diff --git a/BaseTools/Source/Python/UPT/Logger/StringTable.py b/BaseTools/Source/Python/UPT/Logger/StringTable.py index d815d9cf89..4d47beee01 100644 --- a/BaseTools/Source/Python/UPT/Logger/StringTable.py +++ b/BaseTools/Source/Python/UPT/Logger/StringTable.py @@ -448,12 +448,10 @@ ERR_MACRONAME_NOGIVEN = _("No MACRO name given") ERR_MACROVALUE_NOGIVEN = _("No MACRO value given") ERR_MACRONAME_INVALID = _("Incorrect MACRO name: %s") ERR_MACROVALUE_INVALID = _("Incorrect MACRO value: %s") ERR_NAME_ONLY_DEFINE = _( "This variable can only be defined via environment variable: %s") -ERR_EDK_GLOBAL_SAMENAME = _( - "EDK_GLOBAL defined a macro with the same name as one defined by 'DEFINE'") ERR_SECTIONNAME_INVALID = _( "An incorrect section name was found: %s. 'The correct file is '%s' .") ERR_CHECKFILE_NOTFOUND = _( "Can't find file '%s' defined in section '%s'") ERR_INVALID_NOTFOUND = _( diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py b/BaseTools/Source/Python/Workspace/InfBuildData.py index 6148ab0d30..985822ce4a 100644 --- a/BaseTools/Source/Python/Workspace/InfBuildData.py +++ b/BaseTools/Source/Python/Workspace/InfBuildData.py @@ -669,11 +669,10 @@ class InfBuildData(ModuleBuildClassObject): RetVal = [] if self._SourceOverridePath: RetVal.append(self._SourceOverridePath) Macros = self._Macros - Macros['PROCESSOR'] = GlobalData.gEdkGlobal.get('PROCESSOR', self._Arch) RecordList = self._RawData[MODEL_EFI_INCLUDE, self._Arch, self._Platform] for Record in RecordList: File = NormPath(Record[0], Macros) if File[0] == '.': File = os.path.join(self._ModuleDir, File) diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTools/Source/Python/Workspace/MetaFileParser.py index e5fb3f5473..f6ebfe3b2e 100644 --- a/BaseTools/Source/Python/Workspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py @@ -46,11 +46,11 @@ CODEPattern = re.compile(r"{CODE\([a-fA-F0-9Xx\{\},\s]*\)}") ## A decorator used to parse macro definition def ParseMacro(Parser): def MacroParser(self): Match = GlobalData.gMacroDefPattern.match(self._CurrentLine) if not Match: - # Not 'DEFINE/EDK_GLOBAL' statement, call decorated method + # Not 'DEFINE' statement, call decorated method Parser(self) return TokenList = GetSplitValueList(self._CurrentLine[Match.end(1):], TAB_EQUAL_SPLIT, 1) # Syntax check @@ -92,21 +92,10 @@ def ParseMacro(Parser): elif self._SectionType == MODEL_META_DATA_HEADER: self._FileLocalMacros[Name] = Value else: self._ConstructSectionMacroDict(Name, Value) - # EDK_GLOBAL defined macros - elif not isinstance(self, DscParser): - EdkLogger.error('Parser', FORMAT_INVALID, "EDK_GLOBAL can only be used in .dsc file", - ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1) - elif self._SectionType != MODEL_META_DATA_HEADER: - EdkLogger.error('Parser', FORMAT_INVALID, "EDK_GLOBAL can only be used under [Defines] section", - ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1) - elif (Name in self._FileLocalMacros) and (self._FileLocalMacros[Name] != Value): - EdkLogger.error('Parser', FORMAT_INVALID, "EDK_GLOBAL defined a macro with the same name and different value as one defined by 'DEFINE'", - ExtraData=self._CurrentLine, File=self.MetaFile, Line=self._LineIndex + 1) - self._ValueList = [Type, Name, Value] return MacroParser ## Base class of parser @@ -865,11 +854,10 @@ class DscParser(MetaFileParser): TAB_PCDS_DYNAMIC_EX_VPD_NULL.upper() : MODEL_PCD_DYNAMIC_EX_VPD, TAB_COMPONENTS.upper() : MODEL_META_DATA_COMPONENT, TAB_COMPONENTS_SOURCE_OVERRIDE_PATH.upper() : MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH, TAB_DSC_DEFINES.upper() : MODEL_META_DATA_HEADER, TAB_DSC_DEFINES_DEFINE : MODEL_META_DATA_DEFINE, - TAB_DSC_DEFINES_EDKGLOBAL : MODEL_META_DATA_GLOBAL_DEFINE, TAB_INCLUDE.upper() : MODEL_META_DATA_INCLUDE, TAB_IF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_IF, TAB_IF_DEF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF, TAB_IF_N_DEF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF, TAB_ELSE_IF.upper() : MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF, @@ -1323,15 +1311,14 @@ class DscParser(MetaFileParser): @property def _Macros(self): Macros = {} Macros.update(self._FileLocalMacros) Macros.update(self._GetApplicableSectionMacro()) - Macros.update(GlobalData.gEdkGlobal) Macros.update(GlobalData.gPlatformDefines) Macros.update(GlobalData.gCommandLineDefines) # PCD cannot be referenced in macro definition - if self._ItemType not in [MODEL_META_DATA_DEFINE, MODEL_META_DATA_GLOBAL_DEFINE]: + if self._ItemType != MODEL_META_DATA_DEFINE: Macros.update(self._Symbols) if GlobalData.BuildOptionPcd: for Item in GlobalData.BuildOptionPcd: if isinstance(Item, tuple): continue @@ -1344,11 +1331,10 @@ class DscParser(MetaFileParser): Processer = { MODEL_META_DATA_SECTION_HEADER : self.__ProcessSectionHeader, MODEL_META_DATA_SUBSECTION_HEADER : self.__ProcessSubsectionHeader, MODEL_META_DATA_HEADER : self.__ProcessDefine, MODEL_META_DATA_DEFINE : self.__ProcessDefine, - MODEL_META_DATA_GLOBAL_DEFINE : self.__ProcessDefine, MODEL_META_DATA_INCLUDE : self.__ProcessDirective, MODEL_META_DATA_CONDITIONAL_STATEMENT_IF : self.__ProcessDirective, MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE : self.__ProcessDirective, MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF : self.__ProcessDirective, MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF : self.__ProcessDirective, @@ -1530,12 +1516,10 @@ class DscParser(MetaFileParser): if self._ItemType == MODEL_META_DATA_DEFINE: if self._SectionType == MODEL_META_DATA_HEADER: self._FileLocalMacros[Name] = Value else: self._ConstructSectionMacroDict(Name, Value) - elif self._ItemType == MODEL_META_DATA_GLOBAL_DEFINE: - GlobalData.gEdkGlobal[Name] = Value # # Keyword in [Defines] section can be used as Macros # if (self._ItemType == MODEL_META_DATA_HEADER) and (self._SectionType == MODEL_META_DATA_HEADER): -- 2.18.0.windows.1