#\r
# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>\r
#\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this 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
continue\r
for RegionData in RegionObj.RegionDataList:\r
if FvObj.UiFvName.upper() == RegionData.upper():\r
+ if not FvObj.BaseAddress:\r
+ FvObj.BaseAddress = '0x%x' % (int(FdObj.BaseAddress, 0) + RegionObj.Offset)\r
if FvObj.FvRegionInFD:\r
if FvObj.FvRegionInFD != RegionObj.Size:\r
EdkLogger.error("GenFds", FORMAT_INVALID, "The FV %s's region is specified in multiple FD with different value." %FvObj.UiFvName)\r
return\r
elif GenFds.OnlyGenerateThisFv is None:\r
for FvObj in GenFdsGlobalVariable.FdfParser.Profile.FvDict.values():\r
- Buffer = BytesIO('')\r
+ Buffer = BytesIO()\r
FvObj.AddToBuffer(Buffer)\r
Buffer.close()\r
\r
GenFdsGlobalVariable.InfLogger('\nFV Space Information')\r
for FvSpaceInfo in FvSpaceInfoList:\r
Name = FvSpaceInfo[0]\r
- TotalSizeValue = long(FvSpaceInfo[1], 0)\r
- UsedSizeValue = long(FvSpaceInfo[2], 0)\r
- FreeSizeValue = long(FvSpaceInfo[3], 0)\r
+ TotalSizeValue = int(FvSpaceInfo[1], 0)\r
+ UsedSizeValue = int(FvSpaceInfo[2], 0)\r
+ FreeSizeValue = int(FvSpaceInfo[3], 0)\r
if UsedSizeValue == TotalSizeValue:\r
Percentage = '100'\r
else:\r
if PcdValue == '':\r
return\r
\r
- Int64PcdValue = long(PcdValue, 0)\r
+ Int64PcdValue = int(PcdValue, 0)\r
if Int64PcdValue == 0 or Int64PcdValue < -1:\r
return\r
\r
@staticmethod\r
def GenerateGuidXRefFile(BuildDb, ArchList, FdfParserObj):\r
GuidXRefFileName = os.path.join(GenFdsGlobalVariable.FvDir, "Guid.xref")\r
- GuidXRefFile = BytesIO('')\r
+ GuidXRefFile = []\r
PkgGuidDict = {}\r
GuidDict = {}\r
ModuleList = []\r
FileGuidList = []\r
+ VariableGuidSet = set()\r
for Arch in ArchList:\r
PlatformDataBase = BuildDb.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]\r
PkgList = GenFdsGlobalVariable.WorkSpace.GetPackageList(GenFdsGlobalVariable.ActivePlatform, Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag)\r
if Pcd.Type in [TAB_PCDS_DYNAMIC_HII, TAB_PCDS_DYNAMIC_EX_HII]:\r
for SkuId in Pcd.SkuInfoList:\r
Sku = Pcd.SkuInfoList[SkuId]\r
+ if Sku.VariableGuid in VariableGuidSet:continue\r
+ VariableGuidSet.add(Sku.VariableGuid)\r
if Sku.VariableGuid and Sku.VariableGuid in PkgGuidDict.keys():\r
GuidDict[Sku.VariableGuid] = PkgGuidDict[Sku.VariableGuid]\r
for ModuleFile in PlatformDataBase.Modules:\r
else:\r
ModuleList.append(Module)\r
if GlobalData.gGuidPattern.match(ModuleFile.BaseName):\r
- GuidXRefFile.write("%s %s\n" % (ModuleFile.BaseName, Module.BaseName))\r
+ GuidXRefFile.append("%s %s\n" % (ModuleFile.BaseName, Module.BaseName))\r
else:\r
- GuidXRefFile.write("%s %s\n" % (Module.Guid, Module.BaseName))\r
+ GuidXRefFile.append("%s %s\n" % (Module.Guid, Module.BaseName))\r
GuidDict.update(Module.Protocols)\r
GuidDict.update(Module.Guids)\r
GuidDict.update(Module.Ppis)\r
continue\r
else:\r
ModuleList.append(FdfModule)\r
- GuidXRefFile.write("%s %s\n" % (FdfModule.Guid, FdfModule.BaseName))\r
+ GuidXRefFile.append("%s %s\n" % (FdfModule.Guid, FdfModule.BaseName))\r
GuidDict.update(FdfModule.Protocols)\r
GuidDict.update(FdfModule.Guids)\r
GuidDict.update(FdfModule.Ppis)\r
F.read()\r
length = F.tell()\r
F.seek(4)\r
- TmpStr = unpack('%dh' % ((length - 4) / 2), F.read())\r
+ TmpStr = unpack('%dh' % ((length - 4) // 2), F.read())\r
Name = ''.join(chr(c) for c in TmpStr[:-1])\r
else:\r
FileList = []\r
continue\r
\r
Name = ' '.join(Name) if isinstance(Name, type([])) else Name\r
- GuidXRefFile.write("%s %s\n" %(FileStatementGuid, Name))\r
+ GuidXRefFile.append("%s %s\n" %(FileStatementGuid, Name))\r
\r
# Append GUIDs, Protocols, and PPIs to the Xref file\r
- GuidXRefFile.write("\n")\r
+ GuidXRefFile.append("\n")\r
for key, item in GuidDict.items():\r
- GuidXRefFile.write("%s %s\n" % (GuidStructureStringToGuidString(item).upper(), key))\r
+ GuidXRefFile.append("%s %s\n" % (GuidStructureStringToGuidString(item).upper(), key))\r
\r
- if GuidXRefFile.getvalue():\r
- SaveFileOnChange(GuidXRefFileName, GuidXRefFile.getvalue(), False)\r
+ if GuidXRefFile:\r
+ GuidXRefFile = ''.join(GuidXRefFile)\r
+ SaveFileOnChange(GuidXRefFileName, GuidXRefFile, False)\r
GenFdsGlobalVariable.InfLogger("\nGUID cross reference file can be found at %s" % GuidXRefFileName)\r
elif os.path.exists(GuidXRefFileName):\r
os.remove(GuidXRefFileName)\r
- GuidXRefFile.close()\r
\r
\r
if __name__ == '__main__':\r