Topics

回复: [edk2-devel] [Patch 1/1] BaseTools: Fix the build report crash issue


gaoliming
 

Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>

-----邮件原件-----
发件人: bounce+27952+69772+4905953+8761045@groups.io
<bounce+27952+69772+4905953+8761045@groups.io> 代表 Bob Feng
发送时间: 2021年1月6日 10:22
收件人: devel@edk2.groups.io
抄送: Liming Gao <gaoliming@byosoft.com.cn>; Yuwei Chen
<yuwei.chen@intel.com>
主题: [edk2-devel] [Patch 1/1] BaseTools: Fix the build report crash issue

In the following corner case, the build report
will crash. This patch is to fix this problem.

Case:
Multiple SKU are used and 2 more DynamicHii structure Pcds
are set in dsc file under different SKU. And 1 more of those
Pcds are not used in any INF file.

Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Yuwei Chen <yuwei.chen@intel.com>
---
BaseTools/Source/Python/build/BuildReport.py | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/BaseTools/Source/Python/build/BuildReport.py
b/BaseTools/Source/Python/build/BuildReport.py
index 3b1add9999d2..468772930ca1 100644
--- a/BaseTools/Source/Python/build/BuildReport.py
+++ b/BaseTools/Source/Python/build/BuildReport.py
@@ -1123,14 +1123,15 @@ class PcdReport(object):
for Sku in SkuList:
SkuInfo =
Pcd.SkuInfoList[Sku]
if
SkuInfo.DefaultStoreDict:
DefaultStoreList
= sorted(SkuInfo.DefaultStoreDict.keys())
for DefaultStore
in DefaultStoreList:
-
OverrideValues = Pcd.SkuOverrideValues[Sku]
-
DscOverride = self.ParseStruct(OverrideValues[DefaultStore])
- if
DscOverride:
- break
+
OverrideValues = Pcd.SkuOverrideValues.get(Sku)
+ if
OverrideValues:
+
DscOverride = self.ParseStruct(OverrideValues[DefaultStore])
+ if
DscOverride:
+
break
if DscOverride:
break
if DscOverride:
DscDefaultValue = True
DscMatch = True
@@ -1386,13 +1387,14 @@ class PcdReport(object):
FileWrite(File,
' %-*s : %6s %10s %10s = %s' % (self.MaxLen, ' ', TypeName, '(' +
Pcd.DatumType + ')', '(' + DefaultStore + ')', Value))
else:
FileWrite(File,
' %-*s : %6s %10s %10s %10s = %s' % (self.MaxLen, ' ', TypeName, '(' +
Pcd.DatumType + ')', '(' + SkuIdName + ')', '(' + DefaultStore + ')',
Value))
FileWrite(File, '%*s: %s: %s' %
(self.MaxLen + 4, SkuInfo.VariableGuid, SkuInfo.VariableName,
SkuInfo.VariableOffset))
if IsStructure:
- OverrideValues =
Pcd.SkuOverrideValues[Sku]
- OverrideFieldStruct =
self.OverrideFieldValue(Pcd, OverrideValues[DefaultStore])
- self.PrintStructureInfo(File,
OverrideFieldStruct)
+ OverrideValues =
Pcd.SkuOverrideValues.get(Sku)
+ if OverrideValues:
+ OverrideFieldStruct =
self.OverrideFieldValue(Pcd, OverrideValues[DefaultStore])
+ self.PrintStructureInfo(File,
OverrideFieldStruct)
self.PrintPcdDefault(File, Pcd, IsStructure,
DscMatch, DscDefaultValue, InfMatch, InfDefaultValue, DecMatch,
DecDefaultValue)
else:
Value = SkuInfo.DefaultValue
IsByteArray, ArrayList = ByteArrayForamt(Value)
if Pcd.DatumType == 'BOOLEAN':
--
2.29.1.windows.1