import subprocess\r
import threading\r
from datetime import datetime\r
-from io import StringIO\r
+from io import BytesIO\r
from Common import EdkLogger\r
from Common.Misc import SaveFileOnChange\r
from Common.Misc import GuidStructureByteArrayToGuidString\r
gLineMaxLength = 120\r
\r
## Tags for end of line in report\r
-gEndOfLine = "\n"\r
+gEndOfLine = "\r\n"\r
\r
## Tags for section start, end and separator\r
gSectionStart = ">" + "=" * (gLineMaxLength - 2) + "<"\r
# Collect all module used PCD set: module INF referenced directly or indirectly.\r
# It also saves module INF default values of them in case they exist.\r
#\r
- for Pcd in list(M.ModulePcdList) + list(M.LibraryPcdList):\r
+ for Pcd in M.ModulePcdList + M.LibraryPcdList:\r
self.ModulePcdSet.setdefault((Pcd.TokenCName, Pcd.TokenSpaceGuidCName, Pcd.Type), (Pcd.InfDefaultValue, Pcd.DefaultValue))\r
\r
self.LibraryReport = None\r
FwReportFileName = os.path.join(self._BuildDir, "DEBUG", self.ModuleName + ".txt")\r
if os.path.isfile(FwReportFileName):\r
try:\r
- FileContents = open(FwReportFileName, 'r').read()\r
+ FileContents = open(FwReportFileName).read()\r
Match = gModuleSizePattern.search(FileContents)\r
if Match:\r
self.Size = int(Match.group(1))\r
\r
Match = gTimeStampPattern.search(FileContents)\r
if Match:\r
- self.BuildTimeStamp = datetime.utcfromtimestamp(int(Match.group(1)))\r
+ self.BuildTimeStamp = datetime.fromtimestamp(int(Match.group(1)))\r
except IOError:\r
EdkLogger.warn(None, "Fail to read report file", FwReportFileName)\r
\r
# read one line a time\r
Line = From.readline()\r
# empty string means "end"\r
- if Line is not None and Line != b"":\r
- To(Line.rstrip().decode(encoding='utf-8', errors='ignore'))\r
+ if Line is not None and Line != "":\r
+ To(Line.rstrip())\r
else:\r
break\r
if ExitFlag.isSet():\r
#\r
# Collect module override PCDs\r
#\r
- for ModulePcd in list(Module.M.ModulePcdList) + list(Module.M.LibraryPcdList):\r
+ for ModulePcd in Module.M.ModulePcdList + Module.M.LibraryPcdList:\r
TokenCName = ModulePcd.TokenCName\r
TokenSpaceGuid = ModulePcd.TokenSpaceGuidCName\r
ModuleDefault = ModulePcd.DefaultValue\r
\r
\r
if Pcd.DatumType in TAB_PCD_NUMERIC_TYPES:\r
- try:\r
- PcdValueNumber = int(PcdValue.strip(), 0)\r
- except:\r
- PcdValueNumber = int(PcdValue.lstrip('0'))\r
+ PcdValueNumber = int(PcdValue.strip(), 0)\r
if DecDefaultValue is None:\r
DecMatch = True\r
else:\r
if DscDefaultValue is None:\r
DscMatch = True\r
else:\r
- try:\r
- DscDefaultValueNumber = int(DscDefaultValue.strip(), 0)\r
- except:\r
- DscDefaultValueNumber = int(DscDefaultValue.lstrip('0'))\r
+ DscDefaultValueNumber = int(DscDefaultValue.strip(), 0)\r
DscMatch = (DscDefaultValueNumber == PcdValueNumber)\r
else:\r
if DecDefaultValue is None:\r
DecMatch = False\r
elif Pcd.SkuOverrideValues:\r
DscOverride = False\r
- if Pcd.DefaultFromDSC:\r
- DscOverride = True\r
+ if not Pcd.SkuInfoList:\r
+ OverrideValues = Pcd.SkuOverrideValues\r
+ if OverrideValues:\r
+ Keys = OverrideValues.keys()\r
+ Data = OverrideValues[Keys[0]]\r
+ Struct = Data.values()[0]\r
+ DscOverride = self.ParseStruct(Struct)\r
else:\r
- DictLen = 0\r
- for item in Pcd.SkuOverrideValues:\r
- DictLen += len(Pcd.SkuOverrideValues[item])\r
- if not DictLen:\r
- DscOverride = False\r
- else:\r
- if not Pcd.SkuInfoList:\r
- OverrideValues = Pcd.SkuOverrideValues\r
- if OverrideValues:\r
- Keys = list(OverrideValues.keys())\r
- Data = OverrideValues[Keys[0]]\r
- Struct = list(Data.values())\r
- DscOverride = self.ParseStruct(Struct[0])\r
- else:\r
- SkuList = sorted(Pcd.SkuInfoList.keys())\r
- for Sku in SkuList:\r
- SkuInfo = Pcd.SkuInfoList[Sku]\r
- if TypeName in ('DYNHII', 'DEXHII'):\r
- if SkuInfo.DefaultStoreDict:\r
- DefaultStoreList = sorted(SkuInfo.DefaultStoreDict.keys())\r
- for DefaultStore in DefaultStoreList:\r
- OverrideValues = Pcd.SkuOverrideValues[Sku]\r
- DscOverride = self.ParseStruct(OverrideValues[DefaultStore])\r
- if DscOverride:\r
- break\r
- else:\r
+ SkuList = sorted(Pcd.SkuInfoList.keys())\r
+ for Sku in SkuList:\r
+ SkuInfo = Pcd.SkuInfoList[Sku]\r
+ if TypeName in ('DYNHII', 'DEXHII'):\r
+ if SkuInfo.DefaultStoreDict:\r
+ DefaultStoreList = sorted(SkuInfo.DefaultStoreDict.keys())\r
+ for DefaultStore in DefaultStoreList:\r
OverrideValues = Pcd.SkuOverrideValues[Sku]\r
- if OverrideValues:\r
- Keys = list(OverrideValues.keys())\r
- OverrideFieldStruct = self.OverrideFieldValue(Pcd, OverrideValues[Keys[0]])\r
- DscOverride = self.ParseStruct(OverrideFieldStruct)\r
- if DscOverride:\r
- break\r
+ DscOverride = self.ParseStruct(OverrideValues[DefaultStore])\r
+ if DscOverride:\r
+ break\r
+ else:\r
+ OverrideValues = Pcd.SkuOverrideValues[Sku]\r
+ if OverrideValues:\r
+ Keys = OverrideValues.keys()\r
+ OverrideFieldStruct = self.OverrideFieldValue(Pcd, OverrideValues[Keys[0]])\r
+ DscOverride = self.ParseStruct(OverrideFieldStruct)\r
+ if DscOverride:\r
+ break\r
if DscOverride:\r
DscDefaultValue = True\r
DscMatch = True\r
DecMatch = False\r
- else:\r
- DecMatch = True\r
else:\r
DscDefaultValue = True\r
DscMatch = True\r
for ModulePath in ModuleOverride:\r
ModuleDefault = ModuleOverride[ModulePath]\r
if Pcd.DatumType in TAB_PCD_NUMERIC_TYPES:\r
- try:\r
- ModulePcdDefaultValueNumber = int(ModuleDefault.strip(), 0)\r
- except:\r
- ModulePcdDefaultValueNumber = int(ModuleDefault.lstrip('0'))\r
+ ModulePcdDefaultValueNumber = int(ModuleDefault.strip(), 0)\r
Match = (ModulePcdDefaultValueNumber == PcdValueNumber)\r
if Pcd.DatumType == 'BOOLEAN':\r
ModuleDefault = str(ModulePcdDefaultValueNumber)\r
if Value.startswith(('0x', '0X')):\r
Value = '{} ({:d})'.format(Value, int(Value, 0))\r
else:\r
- try:\r
- Value = "0x{:X} ({})".format(int(Value, 0), Value)\r
- except:\r
- Value = "0x{:X} ({})".format(int(Value.lstrip('0')), Value)\r
+ Value = "0x{:X} ({})".format(int(Value, 0), Value)\r
FileWrite(File, ' %*s = %s' % (self.MaxLen + 19, 'DEC DEFAULT', Value))\r
if IsStructure:\r
self.PrintStructureInfo(File, Pcd.DefaultValues)\r
if IsStructure:\r
OverrideValues = Pcd.SkuOverrideValues\r
if OverrideValues:\r
- Keys = list(OverrideValues.keys())\r
+ Keys = OverrideValues.keys()\r
Data = OverrideValues[Keys[0]]\r
- Struct = list(Data.values())\r
- if Struct:\r
- OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct[0])\r
- self.PrintStructureInfo(File, OverrideFieldStruct)\r
+ Struct = Data.values()[0]\r
+ OverrideFieldStruct = self.OverrideFieldValue(Pcd, Struct)\r
+ self.PrintStructureInfo(File, OverrideFieldStruct)\r
self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
else:\r
FirstPrint = True\r
if IsStructure:\r
OverrideValues = Pcd.SkuOverrideValues[Sku]\r
if OverrideValues:\r
- Keys = list(OverrideValues.keys())\r
+ Keys = OverrideValues.keys()\r
OverrideFieldStruct = self.OverrideFieldValue(Pcd, OverrideValues[Keys[0]])\r
self.PrintStructureInfo(File, OverrideFieldStruct)\r
self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)\r
TempFile.close()\r
\r
try:\r
- from Eot.EotMain import Eot\r
+ from Eot.Eot import Eot\r
\r
#\r
# Invoke EOT tool and echo its runtime performance\r
def GenerateReport(self, BuildDuration, AutoGenTime, MakeTime, GenFdsTime):\r
if self.ReportFile:\r
try:\r
- File = StringIO('')\r
+ File = BytesIO('')\r
for (Wa, MaList) in self.ReportList:\r
PlatformReport(Wa, MaList, self.ReportType).GenerateReport(File, BuildDuration, AutoGenTime, MakeTime, GenFdsTime, self.ReportType)\r
Content = FileLinesSplit(File.getvalue(), gLineMaxLength)\r