#\r
# This file contained the logical of transfer package object to INF files.\r
#\r
-# Copyright (c) 2011 - 2017, Intel Corporation. All rights reserved.<BR>\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
+# 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
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.String import GetSplitValueList\r
+from Library.StringUtils import GetSplitValueList\r
from Library.Parsing import GenSection\r
from Library.Parsing import GetWorkspacePackage\r
from Library.Parsing import ConvertArchForInstall\r
from Library import DataType as DT\r
from GenMetaFile import GenMetaFileMisc\r
from Library.UniClassObject import FormatUniEntry\r
-from Library.String import GetUniFileName\r
+from Library.StringUtils import GetUniFileName\r
\r
\r
## Transfer Module Object to Inf files\r
#\r
-# Transfer all contents of a standard Module Object to an Inf file \r
-# @param ModuleObject: A Module Object \r
+# Transfer all contents of a standard Module Object to an Inf file\r
+# @param ModuleObject: A Module Object\r
#\r
def ModuleToInf(ModuleObject, PackageObject=None, DistHeader=None):\r
if not GlobalData.gWSPKG_LIST:\r
\r
Content = ''\r
#\r
- # Generate file header, If any Abstract, Description, Copyright or License XML elements are missing, \r
- # should 1) use the Abstract, Description, Copyright or License from the PackageSurfaceArea.Header elements \r
- # that the module belongs to, or 2) if this is a stand-alone module that is not included in a PackageSurfaceArea, \r
+ # Generate file header, If any Abstract, Description, Copyright or License XML elements are missing,\r
+ # should 1) use the Abstract, Description, Copyright or License from the PackageSurfaceArea.Header elements\r
+ # that the module belongs to, or 2) if this is a stand-alone module that is not included in a PackageSurfaceArea,\r
# use the abstract, description, copyright or license from the DistributionPackage.Header elements.\r
#\r
ModuleAbstract = GetLocalValue(ModuleObject.GetAbstract())\r
\r
#\r
# Generate header comment section of INF file\r
- # \r
+ #\r
Content += GenHeaderCommentSection(ModuleAbstract,\r
ModuleDescription,\r
ModuleCopyright,\r
ModuleLicense).replace('\r\n', '\n')\r
\r
#\r
- # Generate Binary Header \r
- # \r
+ # Generate Binary Header\r
+ #\r
for UserExtension in ModuleObject.GetUserExtensionList():\r
if UserExtension.GetUserID() == DT.TAB_BINARY_HEADER_USERID \\r
and UserExtension.GetIdentifier() == DT.TAB_BINARY_HEADER_IDENTIFIER:\r
else:\r
GlobalData.gIS_BINARY_INF = False\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
# Gen section contents\r
BinaryAbstract = []\r
BinaryDescription = []\r
#\r
- # If more than one language code is used for any element that would be present in the MODULE_UNI_FILE, \r
+ # If more than one language code is used for any element that would be present in the MODULE_UNI_FILE,\r
# then the MODULE_UNI_FILE must be created.\r
#\r
for (Key, Value) in ModuleObject.GetAbstract() + ModuleObject.GetDescription():\r
File = codecs.open(ContainerFile, 'wb', 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 ModuleObject.FileList:\r
ModuleObject.FileList.append((ContainerFile, Md5Sum))\r
\r
if not DefinesDict:\r
continue\r
for Statement in DefinesDict:\r
- if Statement.split(DT.TAB_EQUAL_SPLIT) > 1:\r
+ if len(Statement.split(DT.TAB_EQUAL_SPLIT)) > 1:\r
Statement = (u'%s ' % Statement.split(DT.TAB_EQUAL_SPLIT, 1)[0]).ljust(LeftOffset) \\r
+ u'= %s' % Statement.split(DT.TAB_EQUAL_SPLIT, 1)[1].lstrip()\r
SortedArch = DT.TAB_ARCH_COMMON\r
BaseName = '_' + BaseName\r
Statement = (u'%s ' % DT.TAB_INF_DEFINES_BASE_NAME).ljust(LeftOffset) + u'= %s' % BaseName\r
SpecialStatementList.append(Statement)\r
- \r
+\r
# TAB_INF_DEFINES_FILE_GUID\r
Statement = (u'%s ' % DT.TAB_INF_DEFINES_FILE_GUID).ljust(LeftOffset) + u'= %s' % ModuleObject.GetGuid()\r
SpecialStatementList.append(Statement)\r
- \r
+\r
# TAB_INF_DEFINES_VERSION_STRING\r
Statement = (u'%s ' % DT.TAB_INF_DEFINES_VERSION_STRING).ljust(LeftOffset) + u'= %s' % ModuleObject.GetVersion()\r
SpecialStatementList.append(Statement)\r
Statement += '|' + FFE\r
ModuleList = LibraryClass.GetSupModuleList()\r
ArchList = LibraryClass.GetSupArchList()\r
- for Index in xrange(0, len(ArchList)):\r
+ for Index in range(0, len(ArchList)):\r
ArchList[Index] = ConvertArchForInstall(ArchList[Index])\r
ArchList.sort()\r
SortedArch = ' '.join(ArchList)\r
Statement = '# Guid: ' + LibraryItem.Guid + ' Version: ' + LibraryItem.Version\r
\r
if len(BinaryFile.SupArchList) == 0:\r
- if LibraryClassDict.has_key('COMMON') and Statement not in LibraryClassDict['COMMON']:\r
+ if 'COMMON' in LibraryClassDict and Statement not in LibraryClassDict['COMMON']:\r
LibraryClassDict['COMMON'].append(Statement)\r
else:\r
LibraryClassDict['COMMON'] = ['## @LIB_INSTANCES']\r
LibraryClassDict['COMMON'].append(Statement)\r
else:\r
for Arch in BinaryFile.SupArchList:\r
- if LibraryClassDict.has_key(Arch):\r
+ if Arch in LibraryClassDict:\r
if Statement not in LibraryClassDict[Arch]:\r
LibraryClassDict[Arch].append(Statement)\r
else:\r
Path = ''\r
#\r
# find package path/name\r
- # \r
+ #\r
for PkgInfo in GlobalData.gWSPKG_LIST:\r
if Guid == PkgInfo[1]:\r
if (not Version) or (Version == PkgInfo[2]):\r
Statement += RelaPath.replace('\\', '/')\r
if FFE:\r
Statement += '|' + FFE\r
- ArchList = PackageDependency.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(PackageDependency.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if SortedArch in NewSectionDict:\r
NewSectionDict[SortedArch] = NewSectionDict[SortedArch] + [Statement]\r
SourceFile = Source.GetSourceFile()\r
Family = Source.GetFamily()\r
FeatureFlag = Source.GetFeatureFlag()\r
- SupArchList = Source.GetSupArchList()\r
- SupArchList.sort()\r
+ SupArchList = sorted(Source.GetSupArchList())\r
SortedArch = ' '.join(SupArchList)\r
Statement = GenSourceStatement(ConvertPath(SourceFile), Family, FeatureFlag)\r
if SortedArch in NewSectionDict:\r
else:\r
NewSectionDict[Key] = [Statement]\r
Content += GenSection('Depex', NewSectionDict, False)\r
- \r
+\r
return Content\r
## GenUserExtensions\r
#\r
# if not Statement:\r
# continue\r
ArchList = UserExtension.GetSupArchList()\r
- for Index in xrange(0, len(ArchList)):\r
+ for Index in range(0, len(ArchList)):\r
ArchList[Index] = ConvertArchForInstall(ArchList[Index])\r
ArchList.sort()\r
KeyList = []\r
# format of SourceFile|Family|TagName|ToolCode|FeatureFlag\r
#\r
Statement += SourceFile\r
- if TagName == None:\r
+ if TagName is None:\r
TagName = ''\r
- if ToolCode == None:\r
+ if ToolCode is None:\r
ToolCode = ''\r
- if HelpStr == None:\r
+ if HelpStr is None:\r
HelpStr = ''\r
if FeatureFlag:\r
Statement += '|' + Family + '|' + TagName + '|' + ToolCode + '|' + FeatureFlag\r
Statement += '|' + Target\r
return Statement\r
## GenGuidSections\r
-# \r
+#\r
# @param GuidObjList: List of GuidObject\r
# @retVal Content: The generated section contents\r
#\r
#\r
# merge duplicate items\r
#\r
- ArchList = Guid.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(Guid.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if (Statement, SortedArch) in GuidDict:\r
PreviousComment = GuidDict[Statement, SortedArch]\r
return Content\r
\r
## GenProtocolPPiSections\r
-# \r
+#\r
# @param ObjList: List of ProtocolObject or Ppi Object\r
# @retVal Content: The generated section contents\r
#\r
#\r
# merge duplicate items\r
#\r
- ArchList = Object.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(Object.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if (Statement, SortedArch) in Dict:\r
PreviousComment = Dict[Statement, SortedArch]\r
Content = ''\r
if not GlobalData.gIS_BINARY_INF:\r
#\r
- # for each Pcd Itemtype, maintain a dict so the same type will be grouped \r
+ # for each Pcd Itemtype, maintain a dict so the same type will be grouped\r
# together\r
#\r
ItemTypeDict = {}\r
#\r
# Merge duplicate entries\r
#\r
- ArchList = Pcd.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(Pcd.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
if (Statement, SortedArch) in Dict:\r
PreviousComment = Dict[Statement, SortedArch]\r
if NewSectionDict:\r
Content += GenSection(ItemType, NewSectionDict)\r
#\r
- # For AsBuild INF files \r
+ # For AsBuild INF files\r
#\r
else:\r
Content += GenAsBuiltPacthPcdSections(ModuleObject)\r
Statement = HelpString + TokenSpaceName + '.' + PcdCName + ' | ' + PcdValue + ' | ' + \\r
PcdOffset + DT.TAB_SPACE_SPLIT\r
#\r
- # Use binary file's Arch to be Pcd's Arch \r
+ # Use binary file's Arch to be Pcd's Arch\r
#\r
ArchList = []\r
FileNameObjList = BinaryFile.GetFileNameList()\r
if FileNameObjList:\r
ArchList = FileNameObjList[0].GetSupArchList()\r
if len(ArchList) == 0:\r
- if PatchPcdDict.has_key(DT.TAB_ARCH_COMMON):\r
+ if DT.TAB_ARCH_COMMON in PatchPcdDict:\r
if Statement not in PatchPcdDict[DT.TAB_ARCH_COMMON]:\r
PatchPcdDict[DT.TAB_ARCH_COMMON].append(Statement)\r
else:\r
PatchPcdDict[DT.TAB_ARCH_COMMON] = [Statement]\r
else:\r
for Arch in ArchList:\r
- if PatchPcdDict.has_key(Arch):\r
+ if Arch in PatchPcdDict:\r
if Statement not in PatchPcdDict[Arch]:\r
PatchPcdDict[Arch].append(Statement)\r
else:\r
Statement = HelpString + TokenSpaceName + DT.TAB_SPLIT + PcdCName + DT.TAB_SPACE_SPLIT\r
\r
#\r
- # Use binary file's Arch to be Pcd's Arch \r
+ # Use binary file's Arch to be Pcd's Arch\r
#\r
ArchList = []\r
FileNameObjList = BinaryFile.GetFileNameList()\r
ArchList = FileNameObjList[0].GetSupArchList()\r
\r
if len(ArchList) == 0:\r
- if PcdExDict.has_key('COMMON'):\r
+ if 'COMMON' in PcdExDict:\r
PcdExDict['COMMON'].append(Statement)\r
else:\r
PcdExDict['COMMON'] = [Statement]\r
else:\r
for Arch in ArchList:\r
- if PcdExDict.has_key(Arch):\r
+ if Arch in PcdExDict:\r
if Statement not in PcdExDict[Arch]:\r
PcdExDict[Arch].append(Statement)\r
else:\r
if CommentStr and not CommentStr.endswith('\n#\n'):\r
CommentStr = CommentStr + '#\n'\r
NewStateMent = CommentStr + Statement\r
- SupArch = Obj.GetSupArchList()\r
- SupArch.sort()\r
+ SupArch = sorted(Obj.GetSupArchList())\r
SortedArch = ' '.join(SupArch)\r
if SortedArch in NewSectionDict:\r
NewSectionDict[SortedArch] = NewSectionDict[SortedArch] + [NewStateMent]\r
Content = Content.lstrip()\r
#\r
# add a return to differentiate it between other possible sections\r
- # \r
+ #\r
if Content:\r
Content += '\n'\r
return Content\r
for BuilOptionItem in BinaryFile.AsBuiltList[0].BinaryBuildFlagList:\r
Statement = '#' + BuilOptionItem.AsBuiltOptionFlags\r
if len(BinaryFile.SupArchList) == 0:\r
- if BuildOptionDict.has_key('COMMON'):\r
+ if 'COMMON' in BuildOptionDict:\r
if Statement not in BuildOptionDict['COMMON']:\r
BuildOptionDict['COMMON'].append(Statement)\r
else:\r
BuildOptionDict['COMMON'].append(Statement)\r
else:\r
for Arch in BinaryFile.SupArchList:\r
- if BuildOptionDict.has_key(Arch):\r
+ if Arch in BuildOptionDict:\r
if Statement not in BuildOptionDict[Arch]:\r
BuildOptionDict[Arch].append(Statement)\r
else:\r
FileName = ConvertPath(FileNameObj.GetFilename())\r
FileType = FileNameObj.GetFileType()\r
FFE = FileNameObj.GetFeatureFlag()\r
- ArchList = FileNameObj.GetSupArchList()\r
- ArchList.sort()\r
+ ArchList = sorted(FileNameObj.GetSupArchList())\r
SortedArch = ' '.join(ArchList)\r
Key = (FileName, FileType, FFE, SortedArch)\r
if Key in BinariesDict:\r
else:\r
NewSectionDict[SortedArch] = [Statement]\r
#\r
- # as we already generated statement for this DictKey here set the Valuelist to be empty \r
+ # as we already generated statement for this DictKey here set the Valuelist to be empty\r
# to avoid generate duplicate entries as the DictKey may have multiple entries\r
#\r
BinariesDict[Key] = []\r