[edk2] [Patch] BaseTools: Fixed build report issue.

2018-12-29 Thread BobCF
From: "Feng, Bob C" 

This patch is going to fix the regression issue
by 72a1d77694d51914c0dd6aa97dbfa58634b0a4a5

After enable PCD array, the Pcd.OverrideStruct has a new
key, array index, but the build report is not changed correspondingly.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bob Feng 
Cc: Liming Gao 
---
 BaseTools/Source/Python/build/BuildReport.py | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/BaseTools/Source/Python/build/BuildReport.py 
b/BaseTools/Source/Python/build/BuildReport.py
index d379866618..3f3c1a12f1 100644
--- a/BaseTools/Source/Python/build/BuildReport.py
+++ b/BaseTools/Source/Python/build/BuildReport.py
@@ -1422,13 +1422,14 @@ class PcdReport(object):
 self.PrintPcdDefault(File, Pcd, IsStructure, DscMatch, 
DscDefaultValue, InfMatch, InfDefaultValue, DecMatch, DecDefaultValue)
 
 def OverrideFieldValue(self, Pcd, OverrideStruct):
 OverrideFieldStruct = collections.OrderedDict()
 if OverrideStruct:
-for Key, Values in OverrideStruct.items():
-if Values[1] and Values[1].endswith('.dsc'):
-OverrideFieldStruct[Key] = Values
+for _, Values in OverrideStruct.items():
+for Key,value in Values.items():
+if value[1] and value[1].endswith('.dsc'):
+OverrideFieldStruct[Key] = value
 if Pcd.PcdFieldValueFromFdf:
 for Key, Values in Pcd.PcdFieldValueFromFdf.items():
 if Key in OverrideFieldStruct and Values[0] == 
OverrideFieldStruct[Key][0]:
 continue
 OverrideFieldStruct[Key] = Values
-- 
2.19.1.windows.1

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


[edk2] [Patch] BaseTools: Correct PcdArray value assigment statement

2018-12-29 Thread BobCF
https://bugzilla.tianocore.org/show_bug.cgi?id=1410
BaseTools should not generate C structure array initial value
if the value is not specified with CODE style.

This patch is going to remove the incorrect initial value statement
and correct the Pcd Array value assignment statement.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bob Feng 
Cc: Liming Gao 
---
 .../Python/Workspace/BuildClassObject.py  |   1 -
 .../Source/Python/Workspace/DscBuildData.py   | 117 +++---
 2 files changed, 73 insertions(+), 45 deletions(-)

diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py 
b/BaseTools/Source/Python/Workspace/BuildClassObject.py
index 52b3369561..73920c5153 100644
--- a/BaseTools/Source/Python/Workspace/BuildClassObject.py
+++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py
@@ -99,11 +99,10 @@ class PcdClassObject(object):
 for demesionattr in self.DefaultValues:
 deme = ArrayIndex.findall(demesionattr)
 for i in range(len(deme)-1):
 if int(deme[i].lstrip("[").rstrip("]").strip()) > 
int(self._Capacity[i]):
 print "error"
-self._Capacity = [str(int(d) + 1) for d in self._Capacity]
 return self._Capacity
 @property
 def DatumType(self):
 return self._DatumType
 
diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py 
b/BaseTools/Source/Python/Workspace/DscBuildData.py
index 7f6e966b5f..7e82e8e934 100644
--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
@@ -1738,21 +1738,26 @@ class DscBuildData(PlatformBuildClassObject):
 
 def GenerateSizeFunction(self, Pcd):
 CApp = "// Default Value in Dec \n"
 CApp = CApp + "void Cal_%s_%s_Size(UINT32 *Size){\n" % 
(Pcd.TokenSpaceGuidCName, Pcd.TokenCName)
 if Pcd.IsArray():
-if (len(Pcd.Capacity) == 1 and Pcd.Capacity[0] != '0') or 
(len(Pcd.Capacity) >1 and reduce(lambda x,y:int(x)*int(y), Pcd.Capacity)) > 0:
-CApp += "  *Size = (sizeof (%s) * (%s) > *Size) ? sizeof (%s) 
* (%s): *Size; \n" % (Pcd.BaseDatumType, 
"*".join(Pcd.Capacity),Pcd.BaseDatumType, "*".join(Pcd.Capacity))
-if "{CODE(" in Pcd.DefaultValueFromDec:
-CApp += "  *Size = (sizeof (%s_%s_INIT_Value) > *Size ? sizeof 
(%s_%s_INIT_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,Pcd.TokenSpaceGuidCName,Pcd.TokenCName)
-for skuname in Pcd.SkuInfoList:
-skuobj = Pcd.SkuInfoList[skuname]
-if skuobj.VariableName:
-for defaultstore in skuobj.DefaultStoreDict:
-CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > *Size 
? sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore)
-else:
-CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > *Size ? 
sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT)
+if Pcd.Type in PCD_DYNAMIC_TYPE_SET | PCD_DYNAMIC_EX_TYPE_SET:
+for skuname in Pcd.SkuInfoList:
+skuobj = Pcd.SkuInfoList[skuname]
+if skuobj.VariableName:
+for defaultstore in skuobj.DefaultStoreDict:
+pcddef = 
self.GetPcdDscRawDefaultValue(Pcd,skuname,defaultstore)
+if pcddef and "{CODE(" in pcddef:
+CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) 
> *Size ? sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,defaultstore)
+else:
+pcddef = 
self.GetPcdDscRawDefaultValue(Pcd,skuname,TAB_DEFAULT_STORES_DEFAULT)
+if pcddef and "{CODE(" in pcddef:
+CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > 
*Size ? sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,skuname,TAB_DEFAULT_STORES_DEFAULT)
+else:
+pcddef = 
self.GetPcdDscRawDefaultValue(Pcd,TAB_DEFAULT,TAB_DEFAULT_STORES_DEFAULT)
+if pcddef and "{CODE(" in pcddef:
+CApp += "  *Size = (sizeof (%s_%s_%s_%s_Value) > *Size ? 
sizeof (%s_%s_%s_%s_Value) : *Size);\n" % 
(Pcd.TokenSpaceGuidCName,Pcd.TokenCName,TAB_DEFAULT,TAB_DEFAULT_STORES_DEFAULT,Pcd.TokenSpaceGuidCName,Pcd.TokenCName,TAB_DEFAULT,TAB_DEFAULT_STORES_DEFAULT)
 for index in Pcd.DefaultValues:
 FieldList = Pcd.DefaultValues[index]
 if not