Joey:
Does this change still work on old python version, such as Python 3.9?
Thanks
Liming
> -----邮件原件-----
> 发件人: Joey Vagedes <joey.vagedes@gmail.com>
> 发送时间: 2023年12月7日 4:27
> 收件人: devel@edk2.groups.io
> 抄送: Rebecca Cran <rebecca@bsdio.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Bob Feng <bob.c.feng@intel.com>; Yuwei Chen
> <yuwei.chen@intel.com>
> 主题: [PATCH v1 1/1] BaseTools: Resolve regex syntax warnings
>
> Switches regex patterns to raw text to resolve python 3.12 syntax
> warnings in regards to invalid escape sequences, as is suggested by the
> re (regex) module in python.
>
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Yuwei Chen <yuwei.chen@intel.com>
> Signed-off-by: Joey Vagedes <joey.vagedes@gmail.com>
> ---
> BaseTools/Source/Python/AmlToC/AmlToC.py | 2
> +-
> BaseTools/Source/Python/AutoGen/BuildEngine.py | 2
> +-
> BaseTools/Source/Python/AutoGen/GenDepex.py |
> 2 +-
> BaseTools/Source/Python/AutoGen/GenMake.py |
> 2 +-
> BaseTools/Source/Python/AutoGen/IdfClassObject.py | 2 +-
> BaseTools/Source/Python/AutoGen/ModuleAutoGen.py | 4
> ++--
> BaseTools/Source/Python/AutoGen/StrGather.py | 2
> +-
> BaseTools/Source/Python/AutoGen/WorkspaceAutoGen.py | 2
> +-
> BaseTools/Source/Python/Common/Expression.py | 16
> ++++++-------
> BaseTools/Source/Python/Common/GlobalData.py |
> 4 ++--
> BaseTools/Source/Python/Common/Misc.py |
> 24 ++++++++++----------
> BaseTools/Source/Python/Common/ToolDefClassObject.py | 6
> ++---
> BaseTools/Source/Python/GenFds/FdfParser.py | 10
> ++++----
> BaseTools/Source/Python/GenFds/GenFds.py | 2
> +-
> BaseTools/Source/Python/GenPatchPcdTable/GenPatchPcdTable.py | 12
> +++++-----
> BaseTools/Source/Python/Trim/Trim.py | 18
> +++++++--------
> BaseTools/Source/Python/Workspace/DscBuildData.py | 8
> +++----
> BaseTools/Source/Python/Workspace/MetaFileParser.py | 2 +-
> 18 files changed, 60 insertions(+), 60 deletions(-)
>
> diff --git a/BaseTools/Source/Python/AmlToC/AmlToC.py
> b/BaseTools/Source/Python/AmlToC/AmlToC.py
> index 346de7159de7..63931c9720c9 100644
> --- a/BaseTools/Source/Python/AmlToC/AmlToC.py
> +++ b/BaseTools/Source/Python/AmlToC/AmlToC.py
> @@ -17,7 +17,7 @@ from Common.BuildToolError import *
> import sys
>
> import os
>
>
>
> -__description__ = """
>
> +__description__ = r"""
>
> Convert an AML file to a .c file containing the AML bytecode stored in a
C
>
> array. By default, Tables\Dsdt.aml will generate Tables\Dsdt.c.
>
> Tables\Dsdt.c will contain a C array named "dsdt_aml_code" that contains
>
> diff --git a/BaseTools/Source/Python/AutoGen/BuildEngine.py
> b/BaseTools/Source/Python/AutoGen/BuildEngine.py
> index 752a1a1f6a86..45b39d7878d5 100644
> --- a/BaseTools/Source/Python/AutoGen/BuildEngine.py
> +++ b/BaseTools/Source/Python/AutoGen/BuildEngine.py
> @@ -306,7 +306,7 @@ class BuildRule:
> _SubSectionList = [_InputFile, _OutputFile, _Command]
>
>
>
> _PATH_SEP = "(+)"
>
> - _FileTypePattern = re.compile("^[_a-zA-Z][_\-0-9a-zA-Z]*$")
>
> + _FileTypePattern = re.compile(r"^[_a-zA-Z][_\-0-9a-zA-Z]*$")
>
> _BinaryFileRule = FileBuildRule(TAB_DEFAULT_BINARY_FILE, [],
> [os.path.join("$(OUTPUT_DIR)", "${s_name}")],
>
> ["$(CP) ${src} ${dst}"], [])
>
>
>
> diff --git a/BaseTools/Source/Python/AutoGen/GenDepex.py
> b/BaseTools/Source/Python/AutoGen/GenDepex.py
> index f2f2e9d65b5f..b6db6645a4fb 100644
> --- a/BaseTools/Source/Python/AutoGen/GenDepex.py
> +++ b/BaseTools/Source/Python/AutoGen/GenDepex.py
> @@ -126,7 +126,7 @@ class DependencyExpression:
> #
>
> # open and close brace must be taken as individual tokens
>
> #
>
> - TokenPattern = re.compile("(\(|\)|\{[^{}]+\{?[^{}]+\}?[ ]*\}|\w+)")
>
> + TokenPattern = re.compile(r"(\(|\)|\{[^{}]+\{?[^{}]+\}?[ ]*\}|\w+)")
>
>
>
> ## Constructor
>
> #
>
> diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py
> b/BaseTools/Source/Python/AutoGen/GenMake.py
> index daec9c6d54b2..c416fe172fe5 100755
> --- a/BaseTools/Source/Python/AutoGen/GenMake.py
> +++ b/BaseTools/Source/Python/AutoGen/GenMake.py
> @@ -28,7 +28,7 @@ from Common.DataType import TAB_COMPILER_MSFT
> gIncludePattern =
> re.compile(r"^[ \t]*[#%]?[ \t]*include(?:[ \t]*(?:\\(?:\r\n|\r|\n))*[
\t]*)*(?:\(
> ?[\"<]?[ \t]*)([-\w.\\/() \t]+)(?:[ \t]*[\">]?\)?)", re.MULTILINE |
re.UNICODE |
> re.IGNORECASE)
>
>
>
> ## Regular expression for matching macro used in header file inclusion
>
> -gMacroPattern = re.compile("([_A-Z][_A-Z0-9]*)[ \t]*\((.+)\)",
re.UNICODE)
>
> +gMacroPattern = re.compile(r"([_A-Z][_A-Z0-9]*)[ \t]*\((.+)\)",
re.UNICODE)
>
>
>
> gIsFileMap = {}
>
>
>
> diff --git a/BaseTools/Source/Python/AutoGen/IdfClassObject.py
> b/BaseTools/Source/Python/AutoGen/IdfClassObject.py
> index a6b8123c2539..bb413c6a26e3 100644
> --- a/BaseTools/Source/Python/AutoGen/IdfClassObject.py
> +++ b/BaseTools/Source/Python/AutoGen/IdfClassObject.py
> @@ -18,7 +18,7 @@ import os
> from Common.GlobalData import gIdentifierPattern
>
> from .UniClassObject import StripComments
>
>
>
> -IMAGE_TOKEN = re.compile('IMAGE_TOKEN *\(([A-Z0-9_]+) *\)',
> re.MULTILINE | re.UNICODE)
>
> +IMAGE_TOKEN = re.compile(r'IMAGE_TOKEN *\(([A-Z0-9_]+) *\)',
> re.MULTILINE | re.UNICODE)
>
>
>
> #
>
> # Value of different image information block types
>
> diff --git a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
> b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
> index d05410b32966..65a2176ca982 100755
> --- a/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
> +++ b/BaseTools/Source/Python/AutoGen/ModuleAutoGen.py
> @@ -51,12 +51,12 @@ gInfSpecVersion = "0x00010017"
> #
>
> # Match name = variable
>
> #
>
> -gEfiVarStoreNamePattern = re.compile("\s*name\s*=\s*(\w+)")
>
> +gEfiVarStoreNamePattern = re.compile(r"\s*name\s*=\s*(\w+)")
>
> #
>
> # The format of guid in efivarstore statement likes following and must be
> correct:
>
> # guid = {0xA04A27f4, 0xDF00, 0x4D42, {0xB5, 0x52, 0x39, 0x51, 0x13,
0x02,
> 0x11, 0x3D}}
>
> #
>
> -gEfiVarStoreGuidPattern = re.compile("\s*guid\s*=\s*({.*?{.*?}\s*})")
>
> +gEfiVarStoreGuidPattern = re.compile(r"\s*guid\s*=\s*({.*?{.*?}\s*})")
>
>
>
> #
>
> # Template string to generic AsBuilt INF
>
> diff --git a/BaseTools/Source/Python/AutoGen/StrGather.py
> b/BaseTools/Source/Python/AutoGen/StrGather.py
> index eed30388bea1..9789f50ba4db 100644
> --- a/BaseTools/Source/Python/AutoGen/StrGather.py
> +++ b/BaseTools/Source/Python/AutoGen/StrGather.py
> @@ -54,7 +54,7 @@ NOT_REFERENCED = 'not referenced'
> COMMENT_NOT_REFERENCED = ' ' + COMMENT + NOT_REFERENCED
>
> CHAR_ARRAY_DEFIN = 'unsigned char'
>
> COMMON_FILE_NAME = 'Strings'
>
> -STRING_TOKEN = re.compile('STRING_TOKEN *\(([A-Z0-9_]+) *\)',
> re.MULTILINE | re.UNICODE)
>
> +STRING_TOKEN = re.compile(r'STRING_TOKEN *\(([A-Z0-9_]+) *\)',
> re.MULTILINE | re.UNICODE)
>
>
>
> EFI_HII_ARRAY_SIZE_LENGTH = 4
>
> EFI_HII_PACKAGE_HEADER_LENGTH = 4
>
> diff --git a/BaseTools/Source/Python/AutoGen/WorkspaceAutoGen.py
> b/BaseTools/Source/Python/AutoGen/WorkspaceAutoGen.py
> index f86c749c08c3..160e3a3cd321 100644
> --- a/BaseTools/Source/Python/AutoGen/WorkspaceAutoGen.py
> +++ b/BaseTools/Source/Python/AutoGen/WorkspaceAutoGen.py
> @@ -26,7 +26,7 @@ from Common.Misc import *
> import json
>
>
>
> ## Regular expression for splitting Dependency Expression string into
tokens
>
> -gDepexTokenPattern = re.compile("(\(|\)|\w+| \S+\.inf)")
>
> +gDepexTokenPattern = re.compile(r"(\(|\)|\w+| \S+\.inf)")
>
>
>
> ## Regular expression for match: PCD(xxxx.yyy)
>
> gPCDAsGuidPattern = re.compile(r"^PCD\(.+\..+\)$")
>
> diff --git a/BaseTools/Source/Python/Common/Expression.py
> b/BaseTools/Source/Python/Common/Expression.py
> index b62efe6f9be6..9d9cb0c92962 100644
> --- a/BaseTools/Source/Python/Common/Expression.py
> +++ b/BaseTools/Source/Python/Common/Expression.py
> @@ -41,8 +41,8 @@ ERR_EMPTY_EXPR = 'Empty expression is
> not allowed.'
> ERR_IN_OPERAND = 'Macro after IN operator can only be:
> $(FAMILY), $(ARCH), $(TOOL_CHAIN_TAG) and $(TARGET).'
>
>
>
> __ValidString = re.compile(r'[_a-zA-Z][_0-9a-zA-Z]*$')
>
> -_ReLabel = re.compile('LABEL\((\w+)\)')
>
> -_ReOffset = re.compile('OFFSET_OF\((\w+)\)')
>
> +_ReLabel = re.compile(r'LABEL\((\w+)\)')
>
> +_ReOffset = re.compile(r'OFFSET_OF\((\w+)\)')
>
> PcdPattern =
> re.compile(r'^[_a-zA-Z][0-9A-Za-z_]*\.[_a-zA-Z][0-9A-Za-z_]*$')
>
>
>
> ## SplitString
>
> @@ -242,10 +242,10 @@ class ValueExpression(BaseExpression):
>
>
>
>
> SymbolPattern = re.compile("("
>
> -
> "\$\([A-Z][A-Z0-9_]*\)|\$\(\w+\.\w+\)|\w+\.\w+|"
>
> - "&&|\|\||!(?!=)|"
>
> -
> "(?<=\W)AND(?=\W)|(?<=\W)OR(?=\W)|(?<=\W)NOT(?=\W)|(?<=\W)XOR(?=
> \W)|"
>
> -
> "(?<=\W)EQ(?=\W)|(?<=\W)NE(?=\W)|(?<=\W)GT(?=\W)|(?<=\W)LT(?=\W)|(
> ?<=\W)GE(?=\W)|(?<=\W)LE(?=\W)"
>
> +
> r"\$\([A-Z][A-Z0-9_]*\)|\$\(\w+\.\w+\)|\w+\.\w+|"
>
> + r"&&|\|\||!(?!=)|"
>
> +
> r"(?<=\W)AND(?=\W)|(?<=\W)OR(?=\W)|(?<=\W)NOT(?=\W)|(?<=\W)XOR(?
> =\W)|"
>
> +
> r"(?<=\W)EQ(?=\W)|(?<=\W)NE(?=\W)|(?<=\W)GT(?=\W)|(?<=\W)LT(?=\W)|
> (?<=\W)GE(?=\W)|(?<=\W)LE(?=\W)"
>
> ")")
>
>
>
> @staticmethod
>
> @@ -737,7 +737,7 @@ class ValueExpression(BaseExpression):
> self._Token = "'" + UStr + "'"
>
> return self._Token
>
> elif Expr.startswith('UINT'):
>
> - Re = re.compile('(?:UINT8|UINT16|UINT32|UINT64)\((.+)\)')
>
> + Re =
> re.compile(r'(?:UINT8|UINT16|UINT32|UINT64)\((.+)\)')
>
> try:
>
> RetValue = Re.search(Expr).group(1)
>
> except:
>
> @@ -975,7 +975,7 @@ class ValueExpressionEx(ValueExpression):
> TokenSpaceGuidName = ''
>
> if Item.startswith(TAB_GUID) and
> Item.endswith(')'):
>
> try:
>
> - TokenSpaceGuidName =
> re.search('GUID\((\w+)\)', Item).group(1)
>
> + TokenSpaceGuidName =
> re.search(r'GUID\((\w+)\)', Item).group(1)
>
> except:
>
> pass
>
> if TokenSpaceGuidName and
> TokenSpaceGuidName in self._Symb:
>
> diff --git a/BaseTools/Source/Python/Common/GlobalData.py
> b/BaseTools/Source/Python/Common/GlobalData.py
> index 197bd8366682..11849e863f53 100755
> --- a/BaseTools/Source/Python/Common/GlobalData.py
> +++ b/BaseTools/Source/Python/Common/GlobalData.py
> @@ -33,10 +33,10 @@ gDefaultStores = []
> gGuidDict = {}
>
>
>
> # definition for a MACRO name. used to create regular expressions below.
>
> -_MacroNamePattern = "[A-Z][A-Z0-9_]*"
>
> +_MacroNamePattern = r"[A-Z][A-Z0-9_]*"
>
>
>
> ## Regular expression for matching macro used in DSC/DEC/INF file
inclusion
>
> -gMacroRefPattern = re.compile("\$\(({})\)".format(_MacroNamePattern),
> re.UNICODE)
>
> +gMacroRefPattern = re.compile(r"\$\(({})\)".format(_MacroNamePattern),
> re.UNICODE)
>
> gMacroDefPattern = re.compile("^(DEFINE|EDK_GLOBAL)[ \t]+")
>
> gMacroNamePattern = re.compile("^{}$".format(_MacroNamePattern))
>
>
>
> diff --git a/BaseTools/Source/Python/Common/Misc.py
> b/BaseTools/Source/Python/Common/Misc.py
> index 4be7957138a5..f87d9dbdba39 100755
> --- a/BaseTools/Source/Python/Common/Misc.py
> +++ b/BaseTools/Source/Python/Common/Misc.py
> @@ -41,16 +41,16 @@ from CommonDataClass.Exceptions import
> BadExpression
> from Common.caching import cached_property
>
> import struct
>
>
>
> -ArrayIndex = re.compile("\[\s*[0-9a-fA-FxX]*\s*\]")
>
> +ArrayIndex = re.compile(r"\[\s*[0-9a-fA-FxX]*\s*\]")
>
> ## Regular expression used to find out place holders in string template
>
> -gPlaceholderPattern = re.compile("\$\{([^$()\s]+)\}", re.MULTILINE |
> re.UNICODE)
>
> +gPlaceholderPattern = re.compile(r"\$\{([^$()\s]+)\}", re.MULTILINE |
> re.UNICODE)
>
>
>
> ## regular expressions for map file processing
>
> -startPatternGeneral = re.compile("^Start[' ']+Length[' ']+Name['
']+Class")
>
> -addressPatternGeneral = re.compile("^Address[' ']+Publics by Value['
> ']+Rva\+Base")
>
> -valuePatternGcc = re.compile('^([\w_\.]+) +([\da-fA-Fx]+)
+([\da-fA-Fx]+)$')
>
> -pcdPatternGcc = re.compile('^([\da-fA-Fx]+) +([\da-fA-Fx]+)')
>
> -secReGeneral = re.compile('^([\da-fA-F]+):([\da-fA-F]+)
+([\da-fA-F]+)[Hh]?
> +([.\w\$]+) +(\w+)', re.UNICODE)
>
> +startPatternGeneral = re.compile(r"^Start[' ']+Length[' ']+Name['
']+Class")
>
> +addressPatternGeneral = re.compile(r"^Address[' ']+Publics by Value['
> ']+Rva\+Base")
>
> +valuePatternGcc = re.compile(r'^([\w_\.]+) +([\da-fA-Fx]+)
+([\da-fA-Fx]+)$')
>
> +pcdPatternGcc = re.compile(r'^([\da-fA-Fx]+) +([\da-fA-Fx]+)')
>
> +secReGeneral = re.compile(r'^([\da-fA-F]+):([\da-fA-F]+)
+([\da-fA-F]+)[Hh]?
> +([.\w\$]+) +(\w+)', re.UNICODE)
>
>
>
> StructPattern = re.compile(r'[_a-zA-Z][0-9A-Za-z_]*$')
>
>
>
> @@ -82,7 +82,7 @@ def GetVariableOffset(mapfilepath, efifilepath,
> varnames):
>
>
> if len(lines) == 0: return None
>
> firstline = lines[0].strip()
>
> - if re.match('^\s*Address\s*Size\s*Align\s*Out\s*In\s*Symbol\s*$',
> firstline):
>
> + if re.match(r'^\s*Address\s*Size\s*Align\s*Out\s*In\s*Symbol\s*$',
> firstline):
>
> return _parseForXcodeAndClang9(lines, efifilepath, varnames)
>
> if (firstline.startswith("Archive member included ") and
>
> firstline.endswith(" file (symbol)")):
>
> @@ -96,7 +96,7 @@ def _parseForXcodeAndClang9(lines, efifilepath,
> varnames):
> ret = []
>
> for line in lines:
>
> line = line.strip()
>
> - if status == 0 and
> (re.match('^\s*Address\s*Size\s*Align\s*Out\s*In\s*Symbol\s*$', line) \
>
> + if status == 0 and
> (re.match(r'^\s*Address\s*Size\s*Align\s*Out\s*In\s*Symbol\s*$', line) \
>
> or line == "# Symbols:"):
>
> status = 1
>
> continue
>
> @@ -104,7 +104,7 @@ def _parseForXcodeAndClang9(lines, efifilepath,
> varnames):
> for varname in varnames:
>
> if varname in line:
>
> # cannot pregenerate this RegEx since it uses
> varname from varnames.
>
> - m = re.match('^([\da-fA-FxX]+)([\s\S]*)([_]*%s)$' %
> varname, line)
>
> + m = re.match(r'^([\da-fA-FxX]+)([\s\S]*)([_]*%s)$' %
> varname, line)
>
> if m is not None:
>
> ret.append((varname, m.group(1)))
>
> return ret
>
> @@ -170,7 +170,7 @@ def _parseGeneral(lines, efifilepath, varnames):
> status = 0 #0 - beginning of file; 1 - PE section definition; 2 -
symbol
> table
>
> secs = [] # key = section name
>
> varoffset = []
>
> - symRe = re.compile('^([\da-fA-F]+):([\da-fA-F]+)
+([\.:\\\\\w\?@\$-]+)
> +([\da-fA-F]+)', re.UNICODE)
>
> + symRe = re.compile(r'^([\da-fA-F]+):([\da-fA-F]+)
+([\.:\\\\\w\?@\$-]+)
> +([\da-fA-F]+)', re.UNICODE)
>
>
>
> for line in lines:
>
> line = line.strip()
>
> @@ -1926,4 +1926,4 @@ def CopyDict(ori_dict):
> # Remove the c/c++ comments: // and /* */
>
> #
>
> def RemoveCComments(ctext):
>
> - return re.sub('//.*?\n|/\*.*?\*/', '\n', ctext, flags=re.S)
>
> + return re.sub(r'//.*?\n|/\*.*?\*/', '\n', ctext, flags=re.S)
>
> diff --git a/BaseTools/Source/Python/Common/ToolDefClassObject.py
> b/BaseTools/Source/Python/Common/ToolDefClassObject.py
> index 2b4b23849196..afc20a3c1719 100644
> --- a/BaseTools/Source/Python/Common/ToolDefClassObject.py
> +++ b/BaseTools/Source/Python/Common/ToolDefClassObject.py
> @@ -30,9 +30,9 @@ from .DataType import TAB_TOD_DEFINES_TARGET,
> TAB_TOD_DEFINES_TOOL_CHAIN_TAG,\
> ##
>
> # Static variables used for pattern
>
> #
>
> -gMacroRefPattern = re.compile('(DEF\([^\(\)]+\))')
>
> -gEnvRefPattern = re.compile('(ENV\([^\(\)]+\))')
>
> -gMacroDefPattern = re.compile("DEFINE\s+([^\s]+)")
>
> +gMacroRefPattern = re.compile(r'(DEF\([^\(\)]+\))')
>
> +gEnvRefPattern = re.compile(r'(ENV\([^\(\)]+\))')
>
> +gMacroDefPattern = re.compile(r"DEFINE\s+([^\s]+)")
>
> gDefaultToolsDefFile = "tools_def.txt"
>
>
>
> ## ToolDefClassObject
>
> diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py
> b/BaseTools/Source/Python/GenFds/FdfParser.py
> index a9a14ca2bb33..feb4c727794f 100644
> --- a/BaseTools/Source/Python/GenFds/FdfParser.py
> +++ b/BaseTools/Source/Python/GenFds/FdfParser.py
> @@ -65,11 +65,11 @@ ALIGNMENTS = {"Auto", "8", "16", "32", "64", "128",
> "512", "1K", "4K", "32K", "6
> ALIGNMENT_NOAUTO = ALIGNMENTS - {"Auto"}
>
> CR_LB_SET = {T_CHAR_CR, TAB_LINE_BREAK}
>
>
>
> -RegionSizePattern =
>
compile("\s*(?P<base>(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P<size>(?:0x|0X)?[a-f
> A-F0-9]+)\s*")
>
> -RegionSizeGuidPattern =
> compile("\s*(?P<base>\w+\.\w+[\.\w\[\]]*)\s*\|\s*(?P<size>\w+\.\w+[\.\w
> \[\]]*)\s*")
>
> -RegionOffsetPcdPattern = compile("\s*(?P<base>\w+\.\w+[\.\w\[\]]*)\s*$")
>
> -ShortcutPcdPattern =
> compile("\s*\w+\s*=\s*(?P<value>(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P<name
> >\w+\.\w+)\s*")
>
> -BaseAddrValuePattern = compile('^0[xX][0-9a-fA-F]+')
>
> +RegionSizePattern =
> compile(r"\s*(?P<base>(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P<size>(?:0x|0X)?[a
> -fA-F0-9]+)\s*")
>
> +RegionSizeGuidPattern =
> compile(r"\s*(?P<base>\w+\.\w+[\.\w\[\]]*)\s*\|\s*(?P<size>\w+\.\w+[\.\w
> \[\]]*)\s*")
>
> +RegionOffsetPcdPattern =
> compile(r"\s*(?P<base>\w+\.\w+[\.\w\[\]]*)\s*$")
>
> +ShortcutPcdPattern =
> compile(r"\s*\w+\s*=\s*(?P<value>(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P<name
> >\w+\.\w+)\s*")
>
> +BaseAddrValuePattern = compile(r'^0[xX][0-9a-fA-F]+')
>
> FileExtensionPattern = compile(r'([a-zA-Z][a-zA-Z0-9]*)')
>
> TokenFindPattern =
> compile(r'([a-zA-Z0-9\-]+|\$\(TARGET\)|\*)_([a-zA-Z0-9\-]+|\$\(TOOL_CHAI
> N_TAG\)|\*)_([a-zA-Z0-9\-]+|\$\(ARCH\)|\*)')
>
> AllIncludeFileList = []
>
> diff --git a/BaseTools/Source/Python/GenFds/GenFds.py
> b/BaseTools/Source/Python/GenFds/GenFds.py
> index 17b71b7cd347..b48fe761e051 100644
> --- a/BaseTools/Source/Python/GenFds/GenFds.py
> +++ b/BaseTools/Source/Python/GenFds/GenFds.py
> @@ -733,7 +733,7 @@ class GenFds(object):
> if not os.path.exists(FfsPath[0]):
>
> continue
>
> MatchDict = {}
>
> - ReFileEnds =
>
compile('\S+(.ui)$|\S+(fv.sec.txt)$|\S+(.pe32.txt)$|\S+(.te.txt)$|\S+(.pic.t
xt)$
> |\S+(.raw.txt)$|\S+(.ffs.txt)$')
>
> + ReFileEnds =
>
compile(r'\S+(.ui)$|\S+(fv.sec.txt)$|\S+(.pe32.txt)$|\S+(.te.txt)$|\S+(.pic.
txt)$
> |\S+(.raw.txt)$|\S+(.ffs.txt)$')
>
> FileList = os.listdir(FfsPath[0])
>
> for File in FileList:
>
> Match = ReFileEnds.search(File)
>
> diff --git
> a/BaseTools/Source/Python/GenPatchPcdTable/GenPatchPcdTable.py
> b/BaseTools/Source/Python/GenPatchPcdTable/GenPatchPcdTable.py
> index d962ab0adda7..8750db998ffc 100644
> --- a/BaseTools/Source/Python/GenPatchPcdTable/GenPatchPcdTable.py
> +++ b/BaseTools/Source/Python/GenPatchPcdTable/GenPatchPcdTable.py
> @@ -31,7 +31,7 @@ __copyright__ = "Copyright (c) 2008 - 2018, Intel
> Corporation. All rights reserv
> #====================================== Internal Libraries
> ========================================
>
>
>
> #============================================== Code
> ===============================================
>
> -symRe = re.compile('^([\da-fA-F]+):([\da-fA-F]+) +([\.\-:\\\\\w\?@\$<>]+)
> +([\da-fA-F]+)', re.UNICODE)
>
> +symRe = re.compile(r'^([\da-fA-F]+):([\da-fA-F]+)
+([\.\-:\\\\\w\?@\$<>]+)
> +([\da-fA-F]+)', re.UNICODE)
>
>
>
> def parsePcdInfoFromMapFile(mapfilepath, efifilepath):
>
> """ Parse map file to get binary patch pcd information
>
> @@ -49,7 +49,7 @@ def parsePcdInfoFromMapFile(mapfilepath, efifilepath):
>
>
> if len(lines) == 0: return None
>
> firstline = lines[0].strip()
>
> - if re.match('^\s*Address\s*Size\s*Align\s*Out\s*In\s*Symbol\s*$',
> firstline):
>
> + if re.match(r'^\s*Address\s*Size\s*Align\s*Out\s*In\s*Symbol\s*$',
> firstline):
>
> return _parseForXcodeAndClang9(lines, efifilepath)
>
> if (firstline.startswith("Archive member included ") and
>
> firstline.endswith(" file (symbol)")):
>
> @@ -59,12 +59,12 @@ def parsePcdInfoFromMapFile(mapfilepath,
> efifilepath):
> return _parseGeneral(lines, efifilepath)
>
>
>
> def _parseForXcodeAndClang9(lines, efifilepath):
>
> - valuePattern =
> re.compile('^([\da-fA-FxX]+)([\s\S]*)([_]*_gPcd_BinaryPatch_([\w]+))')
>
> + valuePattern =
> re.compile(r'^([\da-fA-FxX]+)([\s\S]*)([_]*_gPcd_BinaryPatch_([\w]+))')
>
> status = 0
>
> pcds = []
>
> for line in lines:
>
> line = line.strip()
>
> - if status == 0 and
> (re.match('^\s*Address\s*Size\s*Align\s*Out\s*In\s*Symbol\s*$', line) \
>
> + if status == 0 and
> (re.match(r'^\s*Address\s*Size\s*Align\s*Out\s*In\s*Symbol\s*$', line) \
>
> or line == "# Symbols:"):
>
> status = 1
>
> continue
>
> @@ -77,7 +77,7 @@ def _parseForXcodeAndClang9(lines, efifilepath):
>
>
> def _parseForGCC(lines, efifilepath):
>
> """ Parse map file generated by GCC linker """
>
> - dataPattern = re.compile('^.data._gPcd_BinaryPatch_([\w_\d]+)$')
>
> + dataPattern = re.compile(r'^.data._gPcd_BinaryPatch_([\w_\d]+)$')
>
> status = 0
>
> imageBase = -1
>
> sections = []
>
> @@ -136,7 +136,7 @@ def _parseGeneral(lines, efifilepath):
> status = 0 #0 - beginning of file; 1 - PE section definition; 2 -
symbol
> table
>
> secs = [] # key = section name
>
> bPcds = []
>
> - symPattern = re.compile('^[_]+gPcd_BinaryPatch_([\w]+)')
>
> + symPattern = re.compile(r'^[_]+gPcd_BinaryPatch_([\w]+)')
>
>
>
> for line in lines:
>
> line = line.strip()
>
> diff --git a/BaseTools/Source/Python/Trim/Trim.py
> b/BaseTools/Source/Python/Trim/Trim.py
> index 416935df5e90..6d7bc0551026 100644
> --- a/BaseTools/Source/Python/Trim/Trim.py
> +++ b/BaseTools/Source/Python/Trim/Trim.py
> @@ -28,15 +28,15 @@ __version__ = "%prog Version " +
> __version_number__
> __copyright__ = "Copyright (c) 2007-2018, Intel Corporation. All rights
> reserved."
>
>
>
> ## Regular expression for matching Line Control directive like "#line
xxx"
>
> -gLineControlDirective =
re.compile('^\s*#(?:line)?\s+([0-9]+)\s+"*([^"]*)"')
>
> +gLineControlDirective =
re.compile(r'^\s*#(?:line)?\s+([0-9]+)\s+"*([^"]*)"')
>
> ## Regular expression for matching "typedef struct"
>
> -gTypedefPattern = re.compile("^\s*typedef\s+struct(\s+\w+)?\s*[{]*$",
> re.MULTILINE)
>
> +gTypedefPattern = re.compile(r"^\s*typedef\s+struct(\s+\w+)?\s*[{]*$",
> re.MULTILINE)
>
> ## Regular expression for matching "#pragma pack"
>
> -gPragmaPattern = re.compile("^\s*#pragma\s+pack", re.MULTILINE)
>
> +gPragmaPattern = re.compile(r"^\s*#pragma\s+pack", re.MULTILINE)
>
> ## Regular expression for matching "typedef"
>
> -gTypedef_SinglePattern = re.compile("^\s*typedef", re.MULTILINE)
>
> +gTypedef_SinglePattern = re.compile(r"^\s*typedef", re.MULTILINE)
>
> ## Regular expression for matching "typedef struct, typedef union,
struct,
> union"
>
> -gTypedef_MulPattern =
> re.compile("^\s*(typedef)?\s+(struct|union)(\s+\w+)?\s*[{]*$",
> re.MULTILINE)
>
> +gTypedef_MulPattern =
> re.compile(r"^\s*(typedef)?\s+(struct|union)(\s+\w+)?\s*[{]*$",
> re.MULTILINE)
>
>
>
> #
>
> # The following number pattern match will only match if following
criteria is
> met:
>
> @@ -44,14 +44,14 @@ gTypedef_MulPattern =
> re.compile("^\s*(typedef)?\s+(struct|union)(\s+\w+)?\s*[{]
> # as the pattern is greedily match, so it is ok for the gDecNumberPattern
or
> gHexNumberPattern to grab the maximum match
>
> #
>
> ## Regular expression for matching HEX number
>
> -gHexNumberPattern =
>
re.compile("(?<=[^a-zA-Z0-9_])(0[xX])([0-9a-fA-F]+)(U(?=$|[^a-zA-Z0-9_]))?")
>
> +gHexNumberPattern =
>
re.compile(r"(?<=[^a-zA-Z0-9_])(0[xX])([0-9a-fA-F]+)(U(?=$|[^a-zA-Z0-9_]))?"
> )
>
> ## Regular expression for matching decimal number with 'U' postfix
>
> -gDecNumberPattern =
> re.compile("(?<=[^a-zA-Z0-9_])([0-9]+)U(?=$|[^a-zA-Z0-9_])")
>
> +gDecNumberPattern =
> re.compile(r"(?<=[^a-zA-Z0-9_])([0-9]+)U(?=$|[^a-zA-Z0-9_])")
>
> ## Regular expression for matching constant with 'ULL' 'LL' postfix
>
> -gLongNumberPattern =
> re.compile("(?<=[^a-zA-Z0-9_])(0[xX][0-9a-fA-F]+|[0-9]+)U?LL(?=$|[^a-zA-Z0
> -9_])")
>
> +gLongNumberPattern =
> re.compile(r"(?<=[^a-zA-Z0-9_])(0[xX][0-9a-fA-F]+|[0-9]+)U?LL(?=$|[^a-zA-Z
> 0-9_])")
>
>
>
> ## Regular expression for matching "Include ()" in asl file
>
> -gAslIncludePattern =
re.compile("^(\s*)[iI]nclude\s*\(\"?([^\"\(\)]+)\"\)",
> re.MULTILINE)
>
> +gAslIncludePattern =
re.compile(r"^(\s*)[iI]nclude\s*\(\"?([^\"\(\)]+)\"\)",
> re.MULTILINE)
>
> ## Regular expression for matching C style #include "XXX.asl" in asl file
>
> gAslCIncludePattern =
> re.compile(r'^(\s*)#include\s*[<"]\s*([-\\/\w.]+)\s*([>"])', re.MULTILINE)
>
> ## Patterns used to convert EDK conventions to EDK2 ECP conventions
>
> diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py
> b/BaseTools/Source/Python/Workspace/DscBuildData.py
> index 8fd949dc50b6..817cdbe5f19c 100644
> --- a/BaseTools/Source/Python/Workspace/DscBuildData.py
> +++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
> @@ -90,7 +90,7 @@ PcdMakefileHeader = '''
>
>
> WindowsCFLAGS = 'CFLAGS = $(CFLAGS) /wd4200 /wd4034 /wd4101 '
>
> LinuxCFLAGS = 'CFLAGS += -Wno-pointer-to-int-cast -Wno-unused-variable '
>
> -PcdMakefileEnd = '''
>
> +PcdMakefileEnd = r'''
>
> !INCLUDE $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.common
>
> !INCLUDE $(BASE_TOOLS_PATH)\Source\C\Makefiles\ms.app
>
> '''
>
> @@ -110,7 +110,7 @@ LIBS = -lCommon
> variablePattern = re.compile(r'[\t\s]*0[xX][a-fA-F0-9]+$')
>
> SkuIdPattern = re.compile(r'^[a-zA-Z_][a-zA-Z0-9_]*$')
>
> ## regular expressions for finding decimal and hex numbers
>
> -Pattern = re.compile('^[1-9]\d*|0$')
>
> +Pattern = re.compile(r'^[1-9]\d*|0$')
>
> HexPattern = re.compile(r'0[xX][0-9a-fA-F]+$')
>
> ## Regular expression for finding header file inclusions
>
> from AutoGen.GenMake import gIncludePattern
>
> @@ -2840,7 +2840,7 @@ class DscBuildData(PlatformBuildClassObject):
> # start generating makefile
>
> MakeApp = PcdMakefileHeader
>
> if sys.platform == "win32":
>
> - MakeApp = MakeApp + 'APPFILE = %s\%s.exe\n' %
> (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' %
> (PcdValueInitName) + 'OBJECTS = %s\%s.obj %s.obj\n' % (self.OutputPath,
> PcdValueInitName, os.path.join(self.OutputPath, PcdValueCommonName)) +
> 'INC = '
>
> + MakeApp = MakeApp + r'APPFILE = %s\%s.exe\n' %
> (self.OutputPath, PcdValueInitName) + r'APPNAME = %s\n' %
> (PcdValueInitName) + r'OBJECTS = %s\%s.obj %s.obj\n' % (self.OutputPath,
> PcdValueInitName, os.path.join(self.OutputPath, PcdValueCommonName)) +
> 'INC = '
>
> else:
>
> MakeApp = MakeApp + PcdGccMakefile
>
> MakeApp = MakeApp + 'APPFILE = %s/%s\n' %
> (self.OutputPath, PcdValueInitName) + 'APPNAME = %s\n' %
> (PcdValueInitName) + 'OBJECTS = %s/%s.o %s.o\n' % (self.OutputPath,
> PcdValueInitName, os.path.join(self.OutputPath, PcdValueCommonName)) + \
>
> @@ -2950,7 +2950,7 @@ class DscBuildData(PlatformBuildClassObject):
> MakeApp += "$(OBJECTS) : %s\n" % include_file
>
> if sys.platform == "win32":
>
> PcdValueCommonPath =
> os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"],
> "Source\C\Common\PcdValueCommon.c"))
>
> - MakeApp = MakeApp + '%s\PcdValueCommon.c : %s\n' %
> (self.OutputPath, PcdValueCommonPath)
>
> + MakeApp = MakeApp + r'%s\PcdValueCommon.c : %s\n' %
> (self.OutputPath, PcdValueCommonPath)
>
> MakeApp = MakeApp + '\tcopy /y %s $@\n' %
> (PcdValueCommonPath)
>
> else:
>
> PcdValueCommonPath =
> os.path.normpath(mws.join(GlobalData.gGlobalDefines["EDK_TOOLS_PATH"],
> "Source/C/Common/PcdValueCommon.c"))
>
> diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py
> b/BaseTools/Source/Python/Workspace/MetaFileParser.py
> index 3508591b281e..73a1654edb30 100644
> --- a/BaseTools/Source/Python/Workspace/MetaFileParser.py
> +++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py
> @@ -1897,7 +1897,7 @@ class DecParser(MetaFileParser):
> self._SectionType = []
>
> ArchList = set()
>
> PrivateList = set()
>
> - Line = re.sub(',[\s]*', TAB_COMMA_SPLIT, self._CurrentLine)
>
> + Line = re.sub(r',[\s]*', TAB_COMMA_SPLIT, self._CurrentLine)
>
> for Item in Line[1:-1].split(TAB_COMMA_SPLIT):
>
> if Item == '':
>
> EdkLogger.error("Parser", FORMAT_UNKNOWN_ERROR,
>
> --
> 2.43.0.windows.1
You receive all messages sent to this group.
View/Reply Online (#112491) |
|
Mute This Topic
| New Topic
Your Subscription |
Contact Group Owner |
Unsubscribe
[rebecca@openfw.io]