mirror of https://github.com/acidanthera/audk.git
BaseTool/Upt: Add support for Private
Support new syntax in package DEC file as below: [Includes.Common.Private] [Ppis.Common.Private] [Guids.Common.Private] [Protocols.Common.Private] Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hess Chen <hesheng.chen@intel.com> Reviewed-by: Yonghong Zhu <yonghong.zhu@intel.com>
This commit is contained in:
parent
6cf9903481
commit
645a51287e
|
@ -2,7 +2,7 @@
|
|||
#
|
||||
# This file contained the logical of transfer package object to DEC files.
|
||||
#
|
||||
# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2016, 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
|
||||
|
@ -63,6 +63,7 @@ from Library.DataType import TAB_PCD_ERROR
|
|||
from Library.DataType import TAB_SECTION_START
|
||||
from Library.DataType import TAB_SECTION_END
|
||||
from Library.DataType import TAB_SPLIT
|
||||
import Library.DataType as DT
|
||||
from Library.UniClassObject import FormatUniEntry
|
||||
|
||||
def GenPcd(Package, Content):
|
||||
|
@ -487,6 +488,12 @@ def PackageToDec(Package, DistHeader = None):
|
|||
if UserExtension.GetUserID() == TAB_BINARY_HEADER_USERID and \
|
||||
UserExtension.GetIdentifier() == TAB_BINARY_HEADER_IDENTIFIER:
|
||||
continue
|
||||
|
||||
# Generate Private Section first
|
||||
if UserExtension.GetUserID() == DT.TAB_INTEL and UserExtension.GetIdentifier() == DT.TAB_PRIVATE:
|
||||
Content += '\n' + UserExtension.GetStatement()
|
||||
continue
|
||||
|
||||
Statement = UserExtension.GetStatement()
|
||||
if not Statement:
|
||||
continue
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
## @file
|
||||
# This file is used to define class for data type structure
|
||||
#
|
||||
# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2016, 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
|
||||
|
@ -680,6 +680,8 @@ TAB_DEFINE = 'DEFINE'
|
|||
TAB_NMAKE = 'Nmake'
|
||||
TAB_USER_EXTENSIONS = 'UserExtensions'
|
||||
TAB_INCLUDE = '!include'
|
||||
TAB_PRIVATE = 'Private'
|
||||
TAB_INTEL = 'Intel'
|
||||
|
||||
#
|
||||
# Common Define
|
||||
|
|
|
@ -328,11 +328,11 @@ class UniFileClassObject(object):
|
|||
Lang = distutils.util.split_quoted((Line.split(u"//")[0]))
|
||||
if len(Lang) != 3:
|
||||
try:
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_8').read()
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_8').readlines()
|
||||
except UnicodeError, Xstr:
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16').read()
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16').readlines()
|
||||
except UnicodeError, Xstr:
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16_le').read()
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16_le').readlines()
|
||||
except:
|
||||
EdkLogger.Error("Unicode File Parser",
|
||||
ToolError.FILE_OPEN_FAILURE,
|
||||
|
@ -437,7 +437,7 @@ class UniFileClassObject(object):
|
|||
# ExtraData='The file %s is either invalid UTF-16LE or it is missing the BOM.' % File.Path)
|
||||
|
||||
try:
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_8').read()
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_8').readlines()
|
||||
except UnicodeError, Xstr:
|
||||
FileIn = codecs.open(File.Path, mode='rb', encoding='utf_16').readlines()
|
||||
except UnicodeError:
|
||||
|
@ -579,9 +579,9 @@ class UniFileClassObject(object):
|
|||
#
|
||||
if Line.startswith(u'"'):
|
||||
if StringEntryExistsFlag == 2:
|
||||
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,
|
||||
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,
|
||||
Message=ST.ERR_UNIPARSE_LINEFEED_UP_EXIST % Line, ExtraData=File.Path)
|
||||
|
||||
|
||||
StringEntryExistsFlag = 1
|
||||
if not Line.endswith('"'):
|
||||
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,
|
||||
|
@ -589,7 +589,7 @@ class UniFileClassObject(object):
|
|||
% (LineCount, File.Path))
|
||||
elif Line.startswith(u'#language'):
|
||||
if StringEntryExistsFlag == 2:
|
||||
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,
|
||||
EdkLogger.Error("Unicode File Parser", ToolError.FORMAT_INVALID,
|
||||
Message=ST.ERR_UNI_MISS_STRING_ENTRY % Line, ExtraData=File.Path)
|
||||
StringEntryExistsFlag = 0
|
||||
else:
|
||||
|
@ -1050,7 +1050,7 @@ class UniFileClassObject(object):
|
|||
ToolError.FILE_NOT_FOUND,
|
||||
ExtraData=FilaPath)
|
||||
try:
|
||||
FileIn = codecs.open(FilaPath, mode='rb', encoding='utf_8').read()
|
||||
FileIn = codecs.open(FilaPath, mode='rb', encoding='utf_8').readlines()
|
||||
except UnicodeError, Xstr:
|
||||
FileIn = codecs.open(FilaPath, mode='rb', encoding='utf_16').readlines()
|
||||
except UnicodeError:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
## @file
|
||||
# This file is used to parse DEC file. It will consumed by DecParser
|
||||
#
|
||||
# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2016, 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
|
||||
|
@ -742,7 +742,26 @@ class Dec(_DecBase, _DecComments):
|
|||
except BaseException:
|
||||
Logger.Error(TOOL_NAME, FILE_OPEN_FAILURE, File=DecFile,
|
||||
ExtraData=ST.ERR_DECPARSE_FILEOPEN % DecFile)
|
||||
RawData = FileContent(DecFile, Content)
|
||||
|
||||
#
|
||||
# Pre-parser for Private section
|
||||
#
|
||||
self._Private = ''
|
||||
__IsFoundPrivate = False
|
||||
NewContent = []
|
||||
for Line in Content:
|
||||
Line = Line.strip()
|
||||
if Line.startswith(DT.TAB_SECTION_START) and Line.endswith(DT.TAB_PRIVATE + DT.TAB_SECTION_END):
|
||||
__IsFoundPrivate = True
|
||||
if Line.startswith(DT.TAB_SECTION_START) and Line.endswith(DT.TAB_SECTION_END)\
|
||||
and not Line.endswith(DT.TAB_PRIVATE + DT.TAB_SECTION_END):
|
||||
__IsFoundPrivate = False
|
||||
if __IsFoundPrivate:
|
||||
self._Private += Line + '\r'
|
||||
if not __IsFoundPrivate:
|
||||
NewContent.append(Line + '\r')
|
||||
|
||||
RawData = FileContent(DecFile, NewContent)
|
||||
|
||||
_DecComments.__init__(self)
|
||||
_DecBase.__init__(self, RawData)
|
||||
|
@ -1060,3 +1079,5 @@ class Dec(_DecBase, _DecComments):
|
|||
return self._Define.GetDataObject().GetPackageVersion()
|
||||
def GetPackageUniFile(self):
|
||||
return self._Define.GetDataObject().GetPackageUniFile()
|
||||
def GetPrivateSections(self):
|
||||
return self._Private
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
## @file DecPomAlignment.py
|
||||
# This file contained the adapter for convert INF parser object to POM Object
|
||||
#
|
||||
# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2011 - 2016, 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
|
||||
|
@ -63,6 +63,7 @@ from Library.DataType import TAB_STR_TOKENHELP
|
|||
from Library.DataType import TAB_STR_TOKENERR
|
||||
from Library.DataType import TAB_HEX_START
|
||||
from Library.DataType import TAB_SPLIT
|
||||
import Library.DataType as DT
|
||||
from Library.CommentParsing import ParseHeaderCommentSection
|
||||
from Library.CommentParsing import ParseGenericComment
|
||||
from Library.CommentParsing import ParseDecPcdGenericComment
|
||||
|
@ -221,6 +222,14 @@ class DecPomAlignment(PackageObject):
|
|||
self.SetUserExtensionList(
|
||||
self.GetUserExtensionList() + [UserExtension]
|
||||
)
|
||||
|
||||
# Add Private sections to UserExtension
|
||||
if self.DecParser.GetPrivateSections():
|
||||
PrivateUserExtension = UserExtensionObject()
|
||||
PrivateUserExtension.SetStatement(self.DecParser.GetPrivateSections())
|
||||
PrivateUserExtension.SetIdentifier(DT.TAB_PRIVATE)
|
||||
PrivateUserExtension.SetUserID(DT.TAB_INTEL)
|
||||
self.SetUserExtensionList(self.GetUserExtensionList() + [PrivateUserExtension])
|
||||
|
||||
## Generate miscellaneous files on DEC file
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue