Sync BaseTool trunk (version r2640) into EDKII BaseTools.
Signed-off-by: Gao, Liming <liming.gao@intel.com> Reviewed-by: Liu, Jiang A <jiang.a.liu@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15089 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -17,4 +17,4 @@
|
||||
Build version information
|
||||
'''
|
||||
|
||||
gBUILD_VERSION = "Build 2610"
|
||||
gBUILD_VERSION = "Build 2640"
|
||||
|
@ -1,7 +1,7 @@
|
||||
## @file
|
||||
# This file is used to define class for data type structure
|
||||
#
|
||||
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
@ -340,6 +340,7 @@ TAB_SLASH = '\\'
|
||||
TAB_BACK_SLASH = '/'
|
||||
TAB_SPECIAL_COMMENT = '##'
|
||||
TAB_HEADER_COMMENT = '@file'
|
||||
TAB_BINARY_HEADER_COMMENT = '@BinaryHeader'
|
||||
TAB_STAR = "*"
|
||||
|
||||
TAB_EDK_SOURCE = '$(EDK_SOURCE)'
|
||||
@ -735,7 +736,12 @@ TAB_INF_PATCH_PCD = 'PatchPcd'
|
||||
TAB_INF_PCD = 'Pcd'
|
||||
TAB_INF_PCD_EX = 'PcdEx'
|
||||
TAB_INF_GUIDTYPE_VAR = 'Variable'
|
||||
|
||||
TAB_INF_ABSTRACT = 'STR_MODULE_ABSTRACT'
|
||||
TAB_INF_DESCRIPTION = 'STR_MODULE_DESCRIPTION'
|
||||
TAB_INF_LICENSE = 'STR_MODULE_LICENSE'
|
||||
TAB_INF_BINARY_ABSTRACT = 'STR_MODULE_BINARY_ABSTRACT'
|
||||
TAB_INF_BINARY_DESCRIPTION = 'STR_MODULE_BINARY_DESCRIPTION'
|
||||
TAB_INF_BINARY_LICENSE = 'STR_MODULE_BINARY_LICENSE'
|
||||
#
|
||||
# Dec Definitions
|
||||
#
|
||||
@ -745,7 +751,12 @@ TAB_DEC_DEFINES_PACKAGE_NAME = 'PACKAGE_NAME'
|
||||
TAB_DEC_DEFINES_PACKAGE_GUID = 'PACKAGE_GUID'
|
||||
TAB_DEC_DEFINES_PACKAGE_VERSION = 'PACKAGE_VERSION'
|
||||
TAB_DEC_DEFINES_PKG_UNI_FILE = 'PKG_UNI_FILE'
|
||||
|
||||
TAB_DEC_PACKAGE_ABSTRACT = 'STR_PACKAGE_ABSTRACT'
|
||||
TAB_DEC_PACKAGE_DESCRIPTION = 'STR_PACKAGE_DESCRIPTION'
|
||||
TAB_DEC_PACKAGE_LICENSE = 'STR_PACKAGE_LICENSE'
|
||||
TAB_DEC_BINARY_ABSTRACT = 'STR_PACKAGE_BINARY_ABSTRACT'
|
||||
TAB_DEC_BINARY_DESCRIPTION = 'STR_PACKAGE_BINARY_DESCRIPTION'
|
||||
TAB_DEC_BINARY_LICENSE = 'STR_PACKAGE_ASBUILT_LICENSE'
|
||||
#
|
||||
# Dsc Definitions
|
||||
#
|
||||
@ -814,6 +825,8 @@ TAB_HEADER_ABSTRACT = 'Abstract'
|
||||
TAB_HEADER_DESCRIPTION = 'Description'
|
||||
TAB_HEADER_COPYRIGHT = 'Copyright'
|
||||
TAB_HEADER_LICENSE = 'License'
|
||||
TAB_BINARY_HEADER_IDENTIFIER = 'BinaryHeader'
|
||||
TAB_BINARY_HEADER_USERID = 'TianoCore'
|
||||
#
|
||||
# Build database path
|
||||
#
|
||||
|
@ -1,7 +1,7 @@
|
||||
## @file
|
||||
# This file is used to define strings used in the UPT tool
|
||||
#
|
||||
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
@ -42,7 +42,7 @@ MSG_USAGE_STRING = _("\n"
|
||||
MSG_VERSION_NUMBER = _("1.0")
|
||||
MSG_VERSION = _("Intel(r) UEFI Packaging Tool (Intel(r) UEFIPT) - Revision " + \
|
||||
MSG_VERSION_NUMBER)
|
||||
MSG_COPYRIGHT = _("Copyright (c) 2011 Intel Corporation All Rights Reserved.")
|
||||
MSG_COPYRIGHT = _("Copyright (c) 2011 - 2013 Intel Corporation All Rights Reserved.")
|
||||
MSG_VERSION_COPYRIGHT = _("\n %s\n %s" % (MSG_VERSION, MSG_COPYRIGHT))
|
||||
MSG_USAGE = _("%s [options]\n%s" % ("upt.exe", MSG_VERSION_COPYRIGHT))
|
||||
MSG_DESCRIPTION = _("The Intel(r) UEFIUPT is used to create, " + \
|
||||
@ -530,6 +530,10 @@ ERR_COPYRIGHT_MISSING = \
|
||||
_("Header comment section must have copyright information")
|
||||
ERR_LICENSE_MISSING = \
|
||||
_("Header comment section must have license information")
|
||||
ERR_INVALID_BINARYHEADER_FORMAT = \
|
||||
_("Binary Header comment section must have abstract,description,copyright,license information")
|
||||
ERR_MULTIPLE_BINARYHEADER_EXIST = \
|
||||
_("the inf file at most support one BinaryHeader at the fileheader section.")
|
||||
ERR_INVALID_COMMENT_FORMAT = _("Comment must start with #")
|
||||
ERR_USER_ABORT = _("User has stopped the application")
|
||||
ERR_DIST_EXT_ERROR = \
|
||||
@ -547,6 +551,8 @@ ERR_INSTALL_FILE_DEC_FILE_ERROR = _("Could not obtain the TokenSpaceGuidCName an
|
||||
ERR_NOT_SUPPORTED_SA_MODULE = _("Stand-alone module distribution does not allow EDK 1 INF")
|
||||
ERR_INSTALL_DIST_NOT_FOUND = \
|
||||
_("Distribution file to be installed is not found in current working directory or workspace: %s")
|
||||
ERR_BINARY_HEADER_ORDER = _("Binary header must follow the file header.")
|
||||
ERR_NO_SOURCE_HEADER = _("File header statement \"## @file\" must exist at the first place.")
|
||||
|
||||
#
|
||||
# Expression error message
|
||||
|
@ -1,7 +1,7 @@
|
||||
## @file
|
||||
# This file is used to parse DEC file. It will consumed by DecParser
|
||||
#
|
||||
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
@ -19,6 +19,7 @@ import Logger.Log as Logger
|
||||
from Logger.ToolError import FILE_PARSE_FAILURE
|
||||
from Logger.ToolError import FILE_OPEN_FAILURE
|
||||
from Logger import StringTable as ST
|
||||
from Logger.ToolError import FORMAT_INVALID
|
||||
|
||||
import Library.DataType as DT
|
||||
from Library.ParserValidate import IsValidToken
|
||||
@ -735,6 +736,7 @@ class Dec(_DecBase, _DecComments):
|
||||
_DecComments.__init__(self)
|
||||
_DecBase.__init__(self, RawData)
|
||||
|
||||
self.BinaryHeadComment = []
|
||||
self._Define = _DecDefine(RawData)
|
||||
self._Include = _DecInclude(RawData)
|
||||
self._Guid = _DecGuid(RawData)
|
||||
@ -778,8 +780,13 @@ class Dec(_DecBase, _DecComments):
|
||||
# Parse DEC file
|
||||
#
|
||||
def ParseDecComment(self):
|
||||
IsFileHeader = False
|
||||
IsBinaryHeader = False
|
||||
FileHeaderLineIndex = -1
|
||||
BinaryHeaderLineIndex = -1
|
||||
while not self._RawData.IsEndOfFile():
|
||||
Line, Comment = CleanString(self._RawData.GetNextLine())
|
||||
|
||||
#
|
||||
# Header must be pure comment
|
||||
#
|
||||
@ -787,14 +794,55 @@ class Dec(_DecBase, _DecComments):
|
||||
self._RawData.UndoNextLine()
|
||||
break
|
||||
|
||||
if Comment:
|
||||
if Comment and Comment.startswith(DT.TAB_SPECIAL_COMMENT) and Comment.find(DT.TAB_HEADER_COMMENT) > 0 \
|
||||
and not Comment[2:Comment.find(DT.TAB_HEADER_COMMENT)].strip():
|
||||
IsFileHeader = True
|
||||
IsBinaryHeader = False
|
||||
FileHeaderLineIndex = self._RawData.LineIndex
|
||||
|
||||
#
|
||||
# Get license information before '@file'
|
||||
#
|
||||
if not IsFileHeader and not IsBinaryHeader and Comment and Comment.startswith(DT.TAB_COMMENT_SPLIT) and \
|
||||
DT.TAB_BINARY_HEADER_COMMENT not in Comment:
|
||||
self._HeadComment.append((Comment, self._RawData.LineIndex))
|
||||
|
||||
if Comment and IsFileHeader and \
|
||||
not(Comment.startswith(DT.TAB_SPECIAL_COMMENT) \
|
||||
and Comment.find(DT.TAB_BINARY_HEADER_COMMENT) > 0):
|
||||
self._HeadComment.append((Comment, self._RawData.LineIndex))
|
||||
#
|
||||
# Double '#' indicates end of header comments
|
||||
#
|
||||
if not Comment or Comment == DT.TAB_SPECIAL_COMMENT:
|
||||
if (not Comment or Comment == DT.TAB_SPECIAL_COMMENT) and IsFileHeader:
|
||||
IsFileHeader = False
|
||||
continue
|
||||
|
||||
if Comment and Comment.startswith(DT.TAB_SPECIAL_COMMENT) \
|
||||
and Comment.find(DT.TAB_BINARY_HEADER_COMMENT) > 0:
|
||||
IsBinaryHeader = True
|
||||
IsFileHeader = False
|
||||
BinaryHeaderLineIndex = self._RawData.LineIndex
|
||||
|
||||
if Comment and IsBinaryHeader:
|
||||
self.BinaryHeadComment.append((Comment, self._RawData.LineIndex))
|
||||
#
|
||||
# Double '#' indicates end of header comments
|
||||
#
|
||||
if (not Comment or Comment == DT.TAB_SPECIAL_COMMENT) and IsBinaryHeader:
|
||||
IsBinaryHeader = False
|
||||
break
|
||||
|
||||
|
||||
if FileHeaderLineIndex > -1 and not IsFileHeader and not IsBinaryHeader:
|
||||
break
|
||||
|
||||
if FileHeaderLineIndex > BinaryHeaderLineIndex and FileHeaderLineIndex > -1 and BinaryHeaderLineIndex > -1:
|
||||
self._LoggerError(ST.ERR_BINARY_HEADER_ORDER)
|
||||
|
||||
if FileHeaderLineIndex == -1:
|
||||
Logger.Error(TOOL_NAME, FORMAT_INVALID,
|
||||
ST.ERR_NO_SOURCE_HEADER,
|
||||
File=self._RawData.Filename)
|
||||
return
|
||||
|
||||
def _StopCurrentParsing(self, Line):
|
||||
|
@ -1,7 +1,7 @@
|
||||
## @file
|
||||
# This file contained the parser for INF file
|
||||
#
|
||||
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
@ -128,6 +128,10 @@ class InfParser(InfSectionParser):
|
||||
#
|
||||
HeaderCommentStart = False
|
||||
HeaderCommentEnd = False
|
||||
HeaderStarLineNo = -1
|
||||
BinaryHeaderCommentStart = False
|
||||
BinaryHeaderCommentEnd = False
|
||||
BinaryHeaderStarLineNo = -1
|
||||
|
||||
#
|
||||
# While Section ends. parse whole section contents.
|
||||
@ -196,22 +200,16 @@ class InfParser(InfSectionParser):
|
||||
#
|
||||
if Line.startswith(DT.TAB_SPECIAL_COMMENT) and \
|
||||
(Line.find(DT.TAB_HEADER_COMMENT) > -1) and \
|
||||
not HeaderCommentStart:
|
||||
if CurrentSection != DT.MODEL_UNKNOWN:
|
||||
Logger.Error("Parser",
|
||||
PARSER_ERROR,
|
||||
ST.ERR_INF_PARSER_HEADER_FILE,
|
||||
File=Filename,
|
||||
Line=LineNo,
|
||||
RaiseError = Logger.IS_RAISE_ERROR)
|
||||
else:
|
||||
CurrentSection = DT.MODEL_META_DATA_FILE_HEADER
|
||||
#
|
||||
# Append the first line to section lines.
|
||||
#
|
||||
SectionLines.append((Line, LineNo))
|
||||
HeaderCommentStart = True
|
||||
continue
|
||||
not HeaderCommentStart and not HeaderCommentEnd:
|
||||
|
||||
CurrentSection = DT.MODEL_META_DATA_FILE_HEADER
|
||||
#
|
||||
# Append the first line to section lines.
|
||||
#
|
||||
HeaderStarLineNo = LineNo
|
||||
SectionLines.append((Line, LineNo))
|
||||
HeaderCommentStart = True
|
||||
continue
|
||||
|
||||
#
|
||||
# Collect Header content.
|
||||
@ -226,17 +224,72 @@ class InfParser(InfSectionParser):
|
||||
#
|
||||
if (Line.startswith(DT.TAB_SPECIAL_COMMENT) or not Line.strip().startswith("#")) and HeaderCommentStart \
|
||||
and not HeaderCommentEnd:
|
||||
SectionLines.append((Line, LineNo))
|
||||
HeaderCommentEnd = True
|
||||
BinaryHeaderCommentStart = False
|
||||
BinaryHeaderCommentEnd = False
|
||||
HeaderCommentStart = False
|
||||
if Line.find(DT.TAB_BINARY_HEADER_COMMENT) > -1:
|
||||
self.InfHeaderParser(SectionLines, self.InfHeader, self.FileName)
|
||||
SectionLines = []
|
||||
else:
|
||||
SectionLines.append((Line, LineNo))
|
||||
#
|
||||
# Call Header comment parser.
|
||||
#
|
||||
self.InfHeaderParser(SectionLines, self.InfHeader, self.FileName)
|
||||
SectionLines = []
|
||||
continue
|
||||
|
||||
#
|
||||
# check whether binary header comment section started
|
||||
#
|
||||
if Line.startswith(DT.TAB_SPECIAL_COMMENT) and \
|
||||
(Line.find(DT.TAB_BINARY_HEADER_COMMENT) > -1) and \
|
||||
not BinaryHeaderCommentStart:
|
||||
SectionLines = []
|
||||
CurrentSection = DT.MODEL_META_DATA_FILE_HEADER
|
||||
#
|
||||
# Append the first line to section lines.
|
||||
#
|
||||
BinaryHeaderStarLineNo = LineNo
|
||||
SectionLines.append((Line, LineNo))
|
||||
BinaryHeaderCommentStart = True
|
||||
HeaderCommentEnd = True
|
||||
continue
|
||||
|
||||
#
|
||||
# check whether there are more than one binary header exist
|
||||
#
|
||||
if Line.startswith(DT.TAB_SPECIAL_COMMENT) and BinaryHeaderCommentStart and \
|
||||
not BinaryHeaderCommentEnd and (Line.find(DT.TAB_BINARY_HEADER_COMMENT) > -1):
|
||||
Logger.Error('Parser',
|
||||
FORMAT_INVALID,
|
||||
ST.ERR_MULTIPLE_BINARYHEADER_EXIST,
|
||||
File=Filename)
|
||||
|
||||
#
|
||||
# Collect Binary Header content.
|
||||
#
|
||||
if (Line.startswith(DT.TAB_COMMENT_SPLIT) and CurrentSection == DT.MODEL_META_DATA_FILE_HEADER) and\
|
||||
BinaryHeaderCommentStart and not Line.startswith(DT.TAB_SPECIAL_COMMENT) and not\
|
||||
BinaryHeaderCommentEnd and NextLine != '':
|
||||
SectionLines.append((Line, LineNo))
|
||||
continue
|
||||
#
|
||||
# Binary Header content end
|
||||
#
|
||||
if (Line.startswith(DT.TAB_SPECIAL_COMMENT) or not Line.strip().startswith(DT.TAB_COMMENT_SPLIT)) and \
|
||||
BinaryHeaderCommentStart and not BinaryHeaderCommentEnd:
|
||||
SectionLines.append((Line, LineNo))
|
||||
BinaryHeaderCommentStart = False
|
||||
#
|
||||
# Call Binary Header comment parser.
|
||||
#
|
||||
self.InfHeaderParser(SectionLines, self.InfBinaryHeader, self.FileName, True)
|
||||
SectionLines = []
|
||||
BinaryHeaderCommentEnd = True
|
||||
continue
|
||||
#
|
||||
# Find a new section tab
|
||||
# Or at the last line of INF file,
|
||||
# need to process the last section.
|
||||
@ -255,6 +308,10 @@ class InfParser(InfSectionParser):
|
||||
#
|
||||
if (Line.startswith(DT.TAB_SECTION_START) and \
|
||||
Line.find(DT.TAB_SECTION_END) > -1) or LastSectionFalg:
|
||||
|
||||
HeaderCommentEnd = True
|
||||
BinaryHeaderCommentEnd = True
|
||||
|
||||
if not LastSectionFalg:
|
||||
#
|
||||
# check to prevent '#' inside section header
|
||||
@ -333,18 +390,17 @@ class InfParser(InfSectionParser):
|
||||
# Clear section lines
|
||||
#
|
||||
SectionLines = []
|
||||
#
|
||||
# End of for
|
||||
#
|
||||
#
|
||||
# Found the first section, No file header.
|
||||
#
|
||||
if DefineSectionParsedFlag and not HeaderCommentEnd:
|
||||
|
||||
if HeaderStarLineNo == -1:
|
||||
Logger.Error("InfParser",
|
||||
FORMAT_INVALID,
|
||||
ST.ERR_INF_PARSER_HEADER_MISSGING,
|
||||
ST.ERR_NO_SOURCE_HEADER,
|
||||
File=self.FullPath)
|
||||
|
||||
if BinaryHeaderStarLineNo > -1 and HeaderStarLineNo > -1 and HeaderStarLineNo > BinaryHeaderStarLineNo:
|
||||
Logger.Error("InfParser",
|
||||
FORMAT_INVALID,
|
||||
ST.ERR_BINARY_HEADER_ORDER,
|
||||
File=self.FullPath)
|
||||
#
|
||||
# EDKII INF should not have EDKI style comment
|
||||
#
|
||||
@ -627,4 +683,4 @@ def _ConvertSecNameToType(SectionName):
|
||||
SectionType = gINF_SECTION_DEF[SectionName.upper()]
|
||||
|
||||
return SectionType
|
||||
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
## @file
|
||||
# This file is used to parse a PCD file of .PKG file
|
||||
#
|
||||
# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials are licensed and made available
|
||||
# under the terms and conditions of the BSD License which accompanies this
|
||||
@ -357,8 +357,10 @@ class MiscellaneousFileXml(object):
|
||||
Executable = XmlAttribute(XmlNode(SubItem, '%s/Filename' % Key), 'Executable')
|
||||
if Executable.upper() == "TRUE":
|
||||
Executable = True
|
||||
else:
|
||||
elif Executable.upper() == "FALSE":
|
||||
Executable = False
|
||||
else:
|
||||
Executable = ''
|
||||
self.Files.append([Filename, Executable])
|
||||
|
||||
MiscFile = MiscFileObject()
|
||||
@ -392,8 +394,10 @@ class MiscellaneousFileXml(object):
|
||||
OsType = XmlAttribute(XmlNode(SubItem, '%s/Filename' % Key), 'OS')
|
||||
if Executable.upper() == "TRUE":
|
||||
Executable = True
|
||||
else:
|
||||
elif Executable.upper() == "FALSE":
|
||||
Executable = False
|
||||
else:
|
||||
Executable = ''
|
||||
self.Files.append([Filename, Executable, OsType])
|
||||
|
||||
MiscFile = MiscFileObject()
|
||||
|
Reference in New Issue
Block a user