#\r
# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>\r
#\r
-# This program and the accompanying materials are licensed and made available \r
-# under the terms and conditions of the BSD License which accompanies this \r
-# distribution. The full text of the license may be found at \r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
#\r
\r
'''\r
import os\r
import stat\r
import codecs\r
-import md5\r
+from hashlib import md5\r
from Core.FileHook import __FileHookOpen__\r
from Library.Parsing import GenSection\r
from Library.CommentGenerating import GenHeaderCommentSection\r
def GenPcd(Package, Content):\r
#\r
# generate [Pcd] section\r
- # <TokenSpcCName>.<TokenCName>|<Value>|<DatumType>|<Token> \r
+ # <TokenSpcCName>.<TokenCName>|<Value>|<DatumType>|<Token>\r
#\r
ValidUsageDict = {}\r
for Pcd in Package.GetPcdList():\r
HelpTextList = Pcd.GetHelpTextList()\r
HelpStr = _GetHelpStr(HelpTextList)\r
CommentStr = GenGenericCommentF(HelpStr, 2)\r
- \r
+\r
PromptList = Pcd.GetPromptList()\r
PromptStr = _GetHelpStr(PromptList)\r
CommentStr += GenGenericCommentF(PromptStr.strip(), 1, True)\r
- \r
+\r
PcdErrList = Pcd.GetPcdErrorsList()\r
for PcdErr in PcdErrList:\r
CommentStr += GenPcdErrComment(PcdErr)\r
Statement = CommentStr\r
- \r
+\r
CName = Pcd.GetCName()\r
TokenSpaceGuidCName = Pcd.GetTokenSpaceGuidCName()\r
DefaultValue = Pcd.GetDefaultValue()\r
ValidUsage = 'PcdsDynamic'\r
elif ValidUsage == 'PcdEx':\r
ValidUsage = 'PcdsDynamicEx'\r
- \r
+\r
if ValidUsage in ValidUsageDict:\r
NewSectionDict = ValidUsageDict[ValidUsage]\r
else:\r
if Pcd.GetSupModuleList():\r
Statement += GenDecTailComment(Pcd.GetSupModuleList())\r
\r
- ArchList = Pcd.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(Pcd.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if SortedArch in NewSectionDict:\r
NewSectionDict[SortedArch] = \\r
NewSectionDict[SortedArch] + [Statement]\r
else:\r
- NewSectionDict[SortedArch] = [Statement] \r
- \r
+ NewSectionDict[SortedArch] = [Statement]\r
+\r
for ValidUsage in ValidUsageDict:\r
Content += GenSection(ValidUsage, ValidUsageDict[ValidUsage], True, True)\r
- \r
+\r
return Content\r
\r
def GenPcdErrorMsgSection(Package, Content):\r
if not Package.PcdErrorCommentDict:\r
return Content\r
- \r
+\r
#\r
# Generate '# [Error.<TokenSpcCName>]' section\r
#\r
SectionComment += TAB_COMMENT_SPLIT + TAB_SPACE_SPLIT + TAB_PCD_ERROR_SECTION_COMMENT + END_OF_LINE\r
SectionComment += TAB_COMMENT_SPLIT + END_OF_LINE\r
TokenSpcCNameList = []\r
- \r
+\r
#\r
# Get TokenSpcCName list in PcdErrorCommentDict in Package object\r
#\r
for (TokenSpcCName, ErrorNumber) in Package.PcdErrorCommentDict:\r
if TokenSpcCName not in TokenSpcCNameList:\r
TokenSpcCNameList.append(TokenSpcCName)\r
- \r
+\r
for TokenSpcCNameItem in TokenSpcCNameList:\r
SectionName = TAB_COMMENT_SPLIT + TAB_SPACE_SPLIT + TAB_SECTION_START + TAB_PCD_ERROR + \\r
TAB_SPLIT + TokenSpcCNameItem + TAB_SECTION_END + END_OF_LINE\r
ErrorNumber + TAB_SPACE_SPLIT + TAB_VALUE_SPLIT + TAB_SPACE_SPLIT + \\r
PcdErrorMsg + END_OF_LINE\r
Content += SectionItem\r
- \r
+\r
Content += TAB_COMMENT_SPLIT\r
return Content\r
- \r
+\r
def GenGuidProtocolPpi(Package, Content):\r
#\r
# generate [Guids] section\r
# generate tail comment\r
#\r
if Guid.GetSupModuleList():\r
- Statement += GenDecTailComment(Guid.GetSupModuleList()) \r
- ArchList = Guid.GetSupArchList()\r
- ArchList.sort()\r
+ Statement += GenDecTailComment(Guid.GetSupModuleList())\r
+ ArchList = sorted(Guid.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if SortedArch in NewSectionDict:\r
NewSectionDict[SortedArch] = \\r
NewSectionDict[SortedArch] + [Statement]\r
else:\r
- NewSectionDict[SortedArch] = [Statement] \r
+ NewSectionDict[SortedArch] = [Statement]\r
\r
Content += GenSection('Guids', NewSectionDict, True, True)\r
- \r
+\r
#\r
# generate [Protocols] section\r
#\r
#\r
HelpTextList = Protocol.GetHelpTextList()\r
HelpStr = _GetHelpStr(HelpTextList)\r
- CommentStr = GenGenericCommentF(HelpStr, 2) \r
+ CommentStr = GenGenericCommentF(HelpStr, 2)\r
\r
- Statement = CommentStr \r
+ Statement = CommentStr\r
CName = Protocol.GetCName()\r
Value = GuidStringToGuidStructureString(Protocol.GetGuid())\r
Statement += CName.ljust(LeftOffset) + ' = ' + Value\r
#\r
if Protocol.GetSupModuleList():\r
Statement += GenDecTailComment(Protocol.GetSupModuleList())\r
- ArchList = Protocol.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(Protocol.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if SortedArch in NewSectionDict:\r
NewSectionDict[SortedArch] = \\r
NewSectionDict[SortedArch] + [Statement]\r
else:\r
- NewSectionDict[SortedArch] = [Statement] \r
+ NewSectionDict[SortedArch] = [Statement]\r
\r
- Content += GenSection('Protocols', NewSectionDict, True, True) \r
+ Content += GenSection('Protocols', NewSectionDict, True, True)\r
\r
#\r
# generate [Ppis] section\r
#\r
if Ppi.GetSupModuleList():\r
Statement += GenDecTailComment(Ppi.GetSupModuleList())\r
- ArchList = Ppi.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(Ppi.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if SortedArch in NewSectionDict:\r
NewSectionDict[SortedArch] = \\r
NewSectionDict[SortedArch] + [Statement]\r
else:\r
- NewSectionDict[SortedArch] = [Statement] \r
+ NewSectionDict[SortedArch] = [Statement]\r
\r
Content += GenSection('Ppis', NewSectionDict, True, True)\r
- \r
+\r
return Content\r
\r
## Transfer Package Object to Dec files\r
#\r
-# Transfer all contents of a standard Package Object to a Dec file \r
+# Transfer all contents of a standard Package Object to a Dec file\r
#\r
-# @param Package: A Package \r
+# @param Package: A Package\r
#\r
def PackageToDec(Package, DistHeader = None):\r
#\r
# Init global information for the file\r
#\r
ContainerFile = Package.GetFullPath()\r
- \r
+\r
Content = ''\r
- \r
+\r
#\r
- # Generate file header \r
+ # Generate file header\r
#\r
PackageAbstract = GetLocalValue(Package.GetAbstract())\r
PackageDescription = GetLocalValue(Package.GetDescription())\r
if not PackageLicense and DistHeader:\r
for (Lang, License) in DistHeader.GetLicense():\r
PackageLicense = License\r
- \r
+\r
#\r
# Generate header comment section of DEC file\r
#\r
PackageLicense).replace('\r\n', '\n')\r
\r
#\r
- # Generate Binary header \r
+ # Generate Binary header\r
#\r
for UserExtension in Package.GetUserExtensionList():\r
if UserExtension.GetUserID() == TAB_BINARY_HEADER_USERID \\r
for (Lang, Copyright) in UserExtension.GetBinaryCopyright():\r
PackageBinaryCopyright = Copyright\r
for (Lang, License) in UserExtension.GetBinaryLicense():\r
- PackageBinaryLicense = License \r
+ PackageBinaryLicense = License\r
if PackageBinaryAbstract and PackageBinaryDescription and \\r
PackageBinaryCopyright and PackageBinaryLicense:\r
- Content += GenHeaderCommentSection(PackageBinaryAbstract, \r
- PackageBinaryDescription, \r
- PackageBinaryCopyright, \r
+ Content += GenHeaderCommentSection(PackageBinaryAbstract,\r
+ PackageBinaryDescription,\r
+ PackageBinaryCopyright,\r
PackageBinaryLicense,\r
True)\r
\r
GenPackageUNIEncodeFile(Package, FileHeader)\r
\r
#\r
- # for each section, maintain a dict, sorted arch will be its key, \r
+ # for each section, maintain a dict, sorted arch will be its key,\r
#statement list will be its data\r
# { 'Arch1 Arch2 Arch3': [statement1, statement2],\r
- # 'Arch1' : [statement1, statement3] \r
+ # 'Arch1' : [statement1, statement3]\r
# }\r
#\r
- \r
+\r
#\r
- # generate [Defines] section \r
+ # generate [Defines] section\r
#\r
LeftOffset = 31\r
NewSectionDict = {TAB_ARCH_COMMON : []}\r
SpecialItemList = []\r
- \r
+\r
Statement = (u'%s ' % TAB_DEC_DEFINES_DEC_SPECIFICATION).ljust(LeftOffset) + u'= %s' % '0x00010017'\r
SpecialItemList.append(Statement)\r
- \r
+\r
BaseName = Package.GetBaseName()\r
if BaseName.startswith('.') or BaseName.startswith('-'):\r
BaseName = '_' + BaseName\r
\r
if Package.UNIFlag:\r
Statement = (u'%s ' % TAB_DEC_DEFINES_PKG_UNI_FILE).ljust(LeftOffset) + u'= %s' % Package.GetBaseName() + '.uni'\r
- SpecialItemList.append(Statement) \r
+ SpecialItemList.append(Statement)\r
\r
for SortedArch in NewSectionDict:\r
NewSectionDict[SortedArch] = \\r
#\r
NewSectionDict = {}\r
IncludeArchList = Package.GetIncludeArchList()\r
- if IncludeArchList: \r
+ if IncludeArchList:\r
for Path, ArchList in IncludeArchList:\r
Statement = Path\r
ArchList.sort()\r
if LibraryClass.GetSupModuleList():\r
Statement += \\r
GenDecTailComment(LibraryClass.GetSupModuleList())\r
- ArchList = LibraryClass.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(LibraryClass.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if SortedArch in NewSectionDict:\r
NewSectionDict[SortedArch] = \\r
NewSectionDict[SortedArch] + [Statement]\r
else:\r
- NewSectionDict[SortedArch] = [Statement] \r
+ NewSectionDict[SortedArch] = [Statement]\r
\r
Content += GenSection('LibraryClasses', NewSectionDict, True, True)\r
\r
# Generate '# [Error.<TokenSpcCName>]' section\r
#\r
Content = GenPcdErrorMsgSection(Package, Content)\r
- \r
+\r
Content = GenPcd(Package, Content)\r
\r
#\r
NewStatement = ""\r
for Line in LineList:\r
NewStatement += " %s\n" % Line\r
- \r
+\r
SectionList = []\r
SectionName = 'UserExtensions'\r
UserId = UserExtension.GetUserID()\r
BinaryAbstract = []\r
BinaryDescription = []\r
#\r
- # If more than one language code is used for any element that would be present in the PACKAGE_UNI_FILE, \r
+ # If more than one language code is used for any element that would be present in the PACKAGE_UNI_FILE,\r
# then the PACKAGE_UNI_FILE must be created.\r
#\r
for (Key, Value) in PackageObject.GetAbstract() + PackageObject.GetDescription():\r
GenUNIFlag = True\r
else:\r
OnlyLANGUAGE_EN_X = False\r
- \r
+\r
for UserExtension in PackageObject.GetUserExtensionList():\r
if UserExtension.GetUserID() == TAB_BINARY_HEADER_USERID \\r
and UserExtension.GetIdentifier() == TAB_BINARY_HEADER_IDENTIFIER:\r
GenUNIFlag = True\r
else:\r
OnlyLANGUAGE_EN_X = False\r
- \r
+\r
for PcdError in Pcd.GetPcdErrorsList():\r
if PcdError.GetErrorNumber().startswith('0x') or PcdError.GetErrorNumber().startswith('0X'):\r
for (Key, Value) in PcdError.GetErrorMessageList():\r
return\r
else:\r
PackageObject.UNIFlag = True\r
- \r
+\r
if not os.path.exists(os.path.dirname(PackageObject.GetFullPath())):\r
os.makedirs(os.path.dirname(PackageObject.GetFullPath()))\r
- \r
+\r
ContainerFile = GetUniFileName(os.path.dirname(PackageObject.GetFullPath()), PackageObject.GetBaseName())\r
\r
Content = UniFileHeader + '\r\n'\r
Content += '\r\n'\r
- \r
+\r
Content += FormatUniEntry('#string ' + TAB_DEC_PACKAGE_ABSTRACT, PackageObject.GetAbstract(), ContainerFile) + '\r\n'\r
- \r
+\r
Content += FormatUniEntry('#string ' + TAB_DEC_PACKAGE_DESCRIPTION, PackageObject.GetDescription(), ContainerFile) \\r
+ '\r\n'\r
- \r
+\r
Content += FormatUniEntry('#string ' + TAB_DEC_BINARY_ABSTRACT, BinaryAbstract, ContainerFile) + '\r\n'\r
- \r
+\r
Content += FormatUniEntry('#string ' + TAB_DEC_BINARY_DESCRIPTION, BinaryDescription, ContainerFile) + '\r\n'\r
- \r
+\r
PromptGenList = []\r
- HelpTextGenList = [] \r
+ HelpTextGenList = []\r
for Pcd in PackageObject.GetPcdList():\r
# Generate Prompt for each Pcd\r
PcdPromptStrName = '#string ' + 'STR_' + Pcd.GetTokenSpaceGuidCName() + '_' + Pcd.GetCName() + '_PROMPT '\r
Lang = TxtObj.GetLang()\r
PromptStr = TxtObj.GetString()\r
#\r
- # Avoid generating the same PROMPT entry more than one time. \r
+ # Avoid generating the same PROMPT entry more than one time.\r
#\r
if (PcdPromptStrName, Lang) not in PromptGenList:\r
TokenValueList.append((Lang, PromptStr))\r
PromptString = FormatUniEntry(PcdPromptStrName, TokenValueList, ContainerFile) + '\r\n'\r
if PromptString not in Content:\r
Content += PromptString\r
- \r
+\r
# Generate Help String for each Pcd\r
PcdHelpStrName = '#string ' + 'STR_' + Pcd.GetTokenSpaceGuidCName() + '_' + Pcd.GetCName() + '_HELP '\r
TokenValueList = []\r
Lang = TxtObj.GetLang()\r
HelpStr = TxtObj.GetString()\r
#\r
- # Avoid generating the same HELP entry more than one time. \r
+ # Avoid generating the same HELP entry more than one time.\r
#\r
if (PcdHelpStrName, Lang) not in HelpTextGenList:\r
TokenValueList.append((Lang, HelpStr))\r
HelpTextString = FormatUniEntry(PcdHelpStrName, TokenValueList, ContainerFile) + '\r\n'\r
if HelpTextString not in Content:\r
Content += HelpTextString\r
- \r
+\r
# Generate PcdError for each Pcd if ErrorNo exist.\r
for PcdError in Pcd.GetPcdErrorsList():\r
ErrorNo = PcdError.GetErrorNumber()\r
PcdErrString = FormatUniEntry(PcdErrStrName, PcdError.GetErrorMessageList(), ContainerFile) + '\r\n'\r
if PcdErrString not in Content:\r
Content += PcdErrString\r
- \r
+\r
File = codecs.open(ContainerFile, 'w', Encoding)\r
File.write(u'\uFEFF' + Content)\r
File.stream.close()\r
- Md5Sigature = md5.new(__FileHookOpen__(str(ContainerFile), 'rb').read())\r
- Md5Sum = Md5Sigature.hexdigest()\r
+ Md5Signature = md5(__FileHookOpen__(str(ContainerFile), 'rb').read())\r
+ Md5Sum = Md5Signature.hexdigest()\r
if (ContainerFile, Md5Sum) not in PackageObject.FileList:\r
PackageObject.FileList.append((ContainerFile, Md5Sum))\r
\r
return ContainerFile\r
- \r
+\r
## GenPcdErrComment\r
#\r
# @param PcdErrObject: PcdErrorObject\r
-# \r
+#\r
# @retval CommentStr: Generated comment lines, with prefix "#"\r
-# \r
+#\r
def GenPcdErrComment (PcdErrObject):\r
- CommentStr = '' \r
+ CommentStr = ''\r
ErrorCode = PcdErrObject.GetErrorNumber()\r
ValidValueRange = PcdErrObject.GetValidValueRange()\r
if ValidValueRange:\r
- CommentStr = TAB_COMMENT_SPLIT + TAB_SPACE_SPLIT + TAB_PCD_VALIDRANGE + TAB_SPACE_SPLIT \r
+ CommentStr = TAB_COMMENT_SPLIT + TAB_SPACE_SPLIT + TAB_PCD_VALIDRANGE + TAB_SPACE_SPLIT\r
if ErrorCode:\r
CommentStr += ErrorCode + TAB_SPACE_SPLIT + TAB_VALUE_SPLIT + TAB_SPACE_SPLIT\r
CommentStr += ValidValueRange + END_OF_LINE\r
- \r
+\r
ValidValue = PcdErrObject.GetValidValue()\r
if ValidValue:\r
ValidValueList = \\r
if ErrorCode:\r
CommentStr += ErrorCode + TAB_SPACE_SPLIT + TAB_VALUE_SPLIT + TAB_SPACE_SPLIT\r
CommentStr += TAB_COMMA_SPLIT.join(ValidValueList) + END_OF_LINE\r
- \r
+\r
Expression = PcdErrObject.GetExpression()\r
if Expression:\r
CommentStr = TAB_COMMENT_SPLIT + TAB_SPACE_SPLIT + TAB_PCD_EXPRESSION + TAB_SPACE_SPLIT\r
if ErrorCode:\r
CommentStr += ErrorCode + TAB_SPACE_SPLIT + TAB_VALUE_SPLIT + TAB_SPACE_SPLIT\r
CommentStr += Expression + END_OF_LINE\r
- \r
+\r
return CommentStr\r
\r