Bob: Some platform still specifies EDK_GLOBAL, such as https://github.com/tianocore/edk2-platforms/blob/devel-MinPlatform/Platform/Intel/PurleyOpenBoardPkg/BoardMtOlympus/PlatformPkg.dsc. Please update them first.
Thanks Liming >-----Original Message----- >From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of >Feng, Bob C >Sent: Saturday, March 16, 2019 10:35 PM >To: edk2-devel@lists.01.org >Cc: Gao, Liming <liming....@intel.com> >Subject: [edk2] [Patch] BaseTools: Remove EDK_GLOBAL related logic > >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 <bob.c.f...@intel.com> >Cc: Liming Gao <liming....@intel.com> >--- > 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 > >_______________________________________________ >edk2-devel mailing list >edk2-devel@lists.01.org >https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel