BaseTools/UPT: Porting UPT Tool from Python2 to Python3
Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
@@ -124,50 +124,46 @@ def GenHeaderCommentSection(Abstract, Description, Copyright, License, IsBinaryH
|
||||
#
|
||||
# Convert special character to (c), (r) and (tm).
|
||||
#
|
||||
if isinstance(Abstract, unicode):
|
||||
Abstract = ConvertSpecialUnicodes(Abstract)
|
||||
if isinstance(Description, unicode):
|
||||
Description = ConvertSpecialUnicodes(Description)
|
||||
if IsBinaryHeader:
|
||||
Content += CommChar * 2 + TAB_SPACE_SPLIT + TAB_BINARY_HEADER_COMMENT + '\r\n'
|
||||
Content += CommChar * 2 + TAB_SPACE_SPLIT + TAB_BINARY_HEADER_COMMENT + '\n'
|
||||
elif CommChar == TAB_COMMENT_EDK1_SPLIT:
|
||||
Content += CommChar + TAB_SPACE_SPLIT + TAB_COMMENT_EDK1_START + TAB_STAR + TAB_SPACE_SPLIT +\
|
||||
TAB_HEADER_COMMENT + '\r\n'
|
||||
TAB_HEADER_COMMENT + '\n'
|
||||
else:
|
||||
Content += CommChar * 2 + TAB_SPACE_SPLIT + TAB_HEADER_COMMENT + '\r\n'
|
||||
Content += CommChar * 2 + TAB_SPACE_SPLIT + TAB_HEADER_COMMENT + '\n'
|
||||
if Abstract:
|
||||
Abstract = Abstract.rstrip('\r\n')
|
||||
Content += CommChar + TAB_SPACE_SPLIT + ('\r\n' + CommChar + TAB_SPACE_SPLIT).join(GetSplitValueList\
|
||||
Abstract = Abstract.rstrip('\n')
|
||||
Content += CommChar + TAB_SPACE_SPLIT + ('\n' + CommChar + TAB_SPACE_SPLIT).join(GetSplitValueList\
|
||||
(Abstract, '\n'))
|
||||
Content += '\r\n' + CommChar + '\r\n'
|
||||
Content += '\n' + CommChar + '\n'
|
||||
else:
|
||||
Content += CommChar + '\r\n'
|
||||
Content += CommChar + '\n'
|
||||
|
||||
if Description:
|
||||
Description = Description.rstrip('\r\n')
|
||||
Content += CommChar + TAB_SPACE_SPLIT + ('\r\n' + CommChar + TAB_SPACE_SPLIT).join(GetSplitValueList\
|
||||
Description = Description.rstrip('\n')
|
||||
Content += CommChar + TAB_SPACE_SPLIT + ('\n' + CommChar + TAB_SPACE_SPLIT).join(GetSplitValueList\
|
||||
(Description, '\n'))
|
||||
Content += '\r\n' + CommChar + '\r\n'
|
||||
Content += '\n' + CommChar + '\n'
|
||||
|
||||
#
|
||||
# There is no '#\n' line to separate multiple copyright lines in code base
|
||||
#
|
||||
if Copyright:
|
||||
Copyright = Copyright.rstrip('\r\n')
|
||||
Content += CommChar + TAB_SPACE_SPLIT + ('\r\n' + CommChar + TAB_SPACE_SPLIT).join\
|
||||
Copyright = Copyright.rstrip('\n')
|
||||
Content += CommChar + TAB_SPACE_SPLIT + ('\n' + CommChar + TAB_SPACE_SPLIT).join\
|
||||
(GetSplitValueList(Copyright, '\n'))
|
||||
Content += '\r\n' + CommChar + '\r\n'
|
||||
Content += '\n' + CommChar + '\n'
|
||||
|
||||
if License:
|
||||
License = License.rstrip('\r\n')
|
||||
Content += CommChar + TAB_SPACE_SPLIT + ('\r\n' + CommChar + TAB_SPACE_SPLIT).join(GetSplitValueList\
|
||||
License = License.rstrip('\n')
|
||||
Content += CommChar + TAB_SPACE_SPLIT + ('\n' + CommChar + TAB_SPACE_SPLIT).join(GetSplitValueList\
|
||||
(License, '\n'))
|
||||
Content += '\r\n' + CommChar + '\r\n'
|
||||
Content += '\n' + CommChar + '\n'
|
||||
|
||||
if CommChar == TAB_COMMENT_EDK1_SPLIT:
|
||||
Content += CommChar + TAB_SPACE_SPLIT + TAB_STAR + TAB_COMMENT_EDK1_END + '\r\n'
|
||||
Content += CommChar + TAB_SPACE_SPLIT + TAB_STAR + TAB_COMMENT_EDK1_END + '\n'
|
||||
else:
|
||||
Content += CommChar * 2 + '\r\n'
|
||||
Content += CommChar * 2 + '\n'
|
||||
|
||||
return Content
|
||||
|
||||
|
@@ -74,7 +74,7 @@ def ParseHeaderCommentSection(CommentList, FileName = None, IsBinaryHeader = Fal
|
||||
# first find the last copyright line
|
||||
#
|
||||
Last = 0
|
||||
for Index in xrange(len(CommentList)-1, 0, -1):
|
||||
for Index in range(len(CommentList)-1, 0, -1):
|
||||
Line = CommentList[Index][0]
|
||||
if _IsCopyrightLine(Line):
|
||||
Last = Index
|
||||
@@ -206,17 +206,14 @@ def ParsePcdErrorCode (Value = None, ContainerFile = None, LineNum = None):
|
||||
Base = 16
|
||||
else:
|
||||
Base = 10
|
||||
ErrorCode = long(Value, Base)
|
||||
ErrorCode = int(Value, Base)
|
||||
if ErrorCode > PCD_ERR_CODE_MAX_SIZE or ErrorCode < 0:
|
||||
Logger.Error('Parser',
|
||||
FORMAT_NOT_SUPPORTED,
|
||||
"The format %s of ErrorCode is not valid, should be UNIT32 type or long type" % Value,
|
||||
File = ContainerFile,
|
||||
Line = LineNum)
|
||||
#
|
||||
# To delete the tailing 'L'
|
||||
#
|
||||
return hex(ErrorCode)[:-1]
|
||||
return hex(ErrorCode)
|
||||
except ValueError as XStr:
|
||||
if XStr:
|
||||
pass
|
||||
|
@@ -14,7 +14,6 @@
|
||||
'''
|
||||
ExpressionValidate
|
||||
'''
|
||||
from __future__ import print_function
|
||||
|
||||
##
|
||||
# Import Modules
|
||||
|
@@ -32,7 +32,7 @@ from os import linesep
|
||||
from os import walk
|
||||
from os import environ
|
||||
import re
|
||||
from UserDict import IterableUserDict
|
||||
from collections import UserDict as IterableUserDict
|
||||
|
||||
import Logger.Log as Logger
|
||||
from Logger import StringTable as ST
|
||||
@@ -160,19 +160,23 @@ def RemoveDirectory(Directory, Recursively=False):
|
||||
# or not
|
||||
#
|
||||
def SaveFileOnChange(File, Content, IsBinaryFile=True):
|
||||
if not IsBinaryFile:
|
||||
Content = Content.replace("\n", linesep)
|
||||
|
||||
if os.path.exists(File):
|
||||
try:
|
||||
if Content == __FileHookOpen__(File, "rb").read():
|
||||
return False
|
||||
if isinstance(Content, bytes):
|
||||
if Content == __FileHookOpen__(File, "rb").read():
|
||||
return False
|
||||
else:
|
||||
if Content == __FileHookOpen__(File, "r").read():
|
||||
return False
|
||||
except BaseException:
|
||||
Logger.Error(None, ToolError.FILE_OPEN_FAILURE, ExtraData=File)
|
||||
|
||||
CreateDirectory(os.path.dirname(File))
|
||||
try:
|
||||
FileFd = __FileHookOpen__(File, "wb")
|
||||
if isinstance(Content, bytes):
|
||||
FileFd = __FileHookOpen__(File, "wb")
|
||||
else:
|
||||
FileFd = __FileHookOpen__(File, "w")
|
||||
FileFd.write(Content)
|
||||
FileFd.close()
|
||||
except BaseException:
|
||||
@@ -437,7 +441,7 @@ class Sdict(IterableUserDict):
|
||||
def CommonPath(PathList):
|
||||
Path1 = min(PathList).split(os.path.sep)
|
||||
Path2 = max(PathList).split(os.path.sep)
|
||||
for Index in xrange(min(len(Path1), len(Path2))):
|
||||
for Index in range(min(len(Path1), len(Path2))):
|
||||
if Path1[Index] != Path2[Index]:
|
||||
return os.path.sep.join(Path1[:Index])
|
||||
return os.path.sep.join(Path1)
|
||||
@@ -890,7 +894,7 @@ def ProcessEdkComment(LineList):
|
||||
if FindEdkBlockComment:
|
||||
if FirstPos == -1:
|
||||
FirstPos = StartPos
|
||||
for Index in xrange(StartPos, EndPos+1):
|
||||
for Index in range(StartPos, EndPos+1):
|
||||
LineList[Index] = ''
|
||||
FindEdkBlockComment = False
|
||||
elif Line.find("//") != -1 and not Line.startswith("#"):
|
||||
@@ -957,7 +961,7 @@ def GetLibInstanceInfo(String, WorkSpace, LineNo):
|
||||
FileLinesList = []
|
||||
|
||||
try:
|
||||
FInputfile = open(FullFileName, "rb", 0)
|
||||
FInputfile = open(FullFileName, "r")
|
||||
try:
|
||||
FileLinesList = FInputfile.readlines()
|
||||
except BaseException:
|
||||
|
@@ -727,7 +727,7 @@ def IsValidUserId(UserId):
|
||||
#
|
||||
def CheckUTF16FileHeader(File):
|
||||
FileIn = open(File, 'rb').read(2)
|
||||
if FileIn != '\xff\xfe':
|
||||
if FileIn != b'\xff\xfe':
|
||||
return False
|
||||
|
||||
return True
|
||||
|
@@ -16,7 +16,6 @@
|
||||
'''
|
||||
Parsing
|
||||
'''
|
||||
from __future__ import absolute_import
|
||||
|
||||
##
|
||||
# Import Modules
|
||||
@@ -974,7 +973,7 @@ def GenSection(SectionName, SectionDict, SplitArch=True, NeedBlankLine=False):
|
||||
ArchList = GetSplitValueList(SectionAttrs, DataType.TAB_COMMENT_SPLIT)
|
||||
else:
|
||||
ArchList = [SectionAttrs]
|
||||
for Index in xrange(0, len(ArchList)):
|
||||
for Index in range(0, len(ArchList)):
|
||||
ArchList[Index] = ConvertArchForInstall(ArchList[Index])
|
||||
Section = '[' + SectionName + '.' + (', ' + SectionName + '.').join(ArchList) + ']'
|
||||
else:
|
||||
|
@@ -20,7 +20,6 @@ StringUtils
|
||||
#
|
||||
import re
|
||||
import os.path
|
||||
from string import strip
|
||||
import Logger.Log as Logger
|
||||
import Library.DataType as DataType
|
||||
from Logger.ToolError import FORMAT_INVALID
|
||||
@@ -44,7 +43,7 @@ gMACRO_PATTERN = re.compile("\$\(([_A-Z][_A-Z0-9]*)\)", re.UNICODE)
|
||||
#
|
||||
#
|
||||
def GetSplitValueList(String, SplitTag=DataType.TAB_VALUE_SPLIT, MaxSplit= -1):
|
||||
return map(lambda l: l.strip(), String.split(SplitTag, MaxSplit))
|
||||
return list(map(lambda l: l.strip(), String.split(SplitTag, MaxSplit)))
|
||||
|
||||
## MergeArches
|
||||
#
|
||||
@@ -435,7 +434,7 @@ def GetSingleValueOfKeyFromLines(Lines, Dictionary, CommentCharacter, KeySplitCh
|
||||
#
|
||||
LineList[1] = CleanString(LineList[1], CommentCharacter)
|
||||
if ValueSplitFlag:
|
||||
Value = map(strip, LineList[1].split(ValueSplitCharacter))
|
||||
Value = map(lambda x: x.strip(), LineList[1].split(ValueSplitCharacter))
|
||||
else:
|
||||
Value = CleanString(LineList[1], CommentCharacter).splitlines()
|
||||
|
||||
@@ -502,7 +501,7 @@ def PreCheck(FileName, FileContent, SupSectionTag):
|
||||
#
|
||||
# Regenerate FileContent
|
||||
#
|
||||
NewFileContent = NewFileContent + Line + '\r\n'
|
||||
NewFileContent = NewFileContent + Line + '\n'
|
||||
|
||||
if IsFailed:
|
||||
Logger.Error("Parser", FORMAT_INVALID, Line=LineNo, File=FileName, RaiseError=Logger.IS_RAISE_ERROR)
|
||||
@@ -938,14 +937,14 @@ def SplitPcdEntry(String):
|
||||
def IsMatchArch(Arch1, Arch2):
|
||||
if 'COMMON' in Arch1 or 'COMMON' in Arch2:
|
||||
return True
|
||||
if isinstance(Arch1, basestring) and isinstance(Arch2, basestring):
|
||||
if isinstance(Arch1, str) and isinstance(Arch2, str):
|
||||
if Arch1 == Arch2:
|
||||
return True
|
||||
|
||||
if isinstance(Arch1, basestring) and isinstance(Arch2, list):
|
||||
if isinstance(Arch1, str) and isinstance(Arch2, list):
|
||||
return Arch1 in Arch2
|
||||
|
||||
if isinstance(Arch2, basestring) and isinstance(Arch1, list):
|
||||
if isinstance(Arch2, str) and isinstance(Arch1, list):
|
||||
return Arch2 in Arch1
|
||||
|
||||
if isinstance(Arch1, list) and isinstance(Arch2, list):
|
||||
|
@@ -14,7 +14,6 @@
|
||||
"""
|
||||
Collect all defined strings in multiple uni files
|
||||
"""
|
||||
from __future__ import print_function
|
||||
|
||||
##
|
||||
# Import Modules
|
||||
@@ -247,9 +246,9 @@ def FormatUniEntry(StrTokenName, TokenValueList, ContainerFile):
|
||||
for SubValue in ValueList:
|
||||
if SubValue.strip():
|
||||
SubValueContent += \
|
||||
' ' * (PreFormatLength + len('#language en-US ')) + '\"%s\\n\"' % SubValue.strip() + '\r\n'
|
||||
' ' * (PreFormatLength + len('#language en-US ')) + '\"%s\\n\"' % SubValue.strip() + '\n'
|
||||
SubValueContent = SubValueContent[(PreFormatLength + len('#language en-US ')):SubValueContent.rfind('\\n')] \
|
||||
+ '\"' + '\r\n'
|
||||
+ '\"' + '\n'
|
||||
SubContent += ' '*PreFormatLength + '#language %-5s ' % Lang + SubValueContent
|
||||
if SubContent:
|
||||
SubContent = StrTokenName + ' '*(PreFormatLength - len(StrTokenName)) + SubContent[PreFormatLength:]
|
||||
@@ -291,7 +290,7 @@ class StringDefClassObject(object):
|
||||
def UpdateValue(self, Value = None):
|
||||
if Value is not None:
|
||||
if self.StringValue:
|
||||
self.StringValue = self.StringValue + '\r\n' + Value
|
||||
self.StringValue = self.StringValue + '\n' + Value
|
||||
else:
|
||||
self.StringValue = Value
|
||||
self.StringValueByteList = UniToHexList(self.StringValue)
|
||||
@@ -465,7 +464,7 @@ class UniFileClassObject(object):
|
||||
if not Line.startswith(DT.TAB_COMMENT_EDK1_SPLIT) and HeaderStart and not HeaderEnd:
|
||||
HeaderEnd = True
|
||||
if Line.startswith(DT.TAB_COMMENT_EDK1_SPLIT) and HeaderStart and not HeaderEnd and FirstGenHeader:
|
||||
self.UniFileHeader += Line + '\r\n'
|
||||
self.UniFileHeader += Line + '\n'
|
||||
continue
|
||||
|
||||
#
|
||||
@@ -511,11 +510,11 @@ class UniFileClassObject(object):
|
||||
if FileIn[LineCount].strip().startswith('#language'):
|
||||
Line = Line + FileIn[LineCount]
|
||||
FileIn[LineCount-1] = Line
|
||||
FileIn[LineCount] = '\r\n'
|
||||
FileIn[LineCount] = '\n'
|
||||
LineCount -= 1
|
||||
for Index in xrange (LineCount + 1, len (FileIn) - 1):
|
||||
for Index in range (LineCount + 1, len (FileIn) - 1):
|
||||
if (Index == len(FileIn) -1):
|
||||
FileIn[Index] = '\r\n'
|
||||
FileIn[Index] = '\n'
|
||||
else:
|
||||
FileIn[Index] = FileIn[Index + 1]
|
||||
continue
|
||||
@@ -867,12 +866,12 @@ class UniFileClassObject(object):
|
||||
Value = Value + Lines[IndexJ].strip()[1:-1]
|
||||
CombineToken = False
|
||||
else:
|
||||
Value = Value + Lines[IndexJ].strip()[1:-1] + '\r\n'
|
||||
Value = Value + Lines[IndexJ].strip()[1:-1] + '\n'
|
||||
else:
|
||||
IndexI = IndexJ
|
||||
break
|
||||
if Value.endswith('\r\n'):
|
||||
Value = Value[: Value.rfind('\r\n')]
|
||||
if Value.endswith('\n'):
|
||||
Value = Value[: Value.rfind('\n')]
|
||||
Language = GetLanguageCode(Language, self.IsCompatibleMode, self.File)
|
||||
self.AddStringToList(Name, Language, Value)
|
||||
continue
|
||||
|
Reference in New Issue
Block a user