import InfSectionParser\r
import datetime\r
import hashlib\r
+from GenVar import Variable,var_info\r
\r
## Regular expression for splitting Dependency Expression string into tokens\r
gDepexTokenPattern = re.compile("(\(|\)|\w+| \S+\.inf)")\r
if key in ShareFixedAtBuildPcdsSameValue and ShareFixedAtBuildPcdsSameValue[key]: \r
LibAuto.ConstPcd[key] = Pcd.DefaultValue\r
\r
+ def CollectVariables(self, DynamicPcdSet):\r
+ VariableInfo = Variable()\r
+ Index = 0\r
+ for Pcd in DynamicPcdSet:\r
+ if not hasattr(Pcd,"DefaultStoreName"):\r
+ Pcd.DefaultStoreName = ['0']\r
+ for StorageName in Pcd.DefaultStoreName:\r
+ pcdname = ".".join((Pcd.TokenSpaceGuidCName,Pcd.TokenCName))\r
+ for SkuName in Pcd.SkuInfoList:\r
+ Sku = Pcd.SkuInfoList[SkuName]\r
+ SkuId = Sku.SkuId\r
+ if SkuId == None or SkuId == '':\r
+ continue\r
+ if len(Sku.VariableName) > 0:\r
+ VariableGuidStructure = Sku.VariableGuidValue\r
+ VariableGuid = GuidStructureStringToGuidString(VariableGuidStructure)\r
+ if Pcd.Phase == "DXE":\r
+ VariableInfo.append_variable(var_info(Index,pcdname,StorageName,SkuId, StringToArray(Sku.VariableName),VariableGuid, Sku.VariableAttribute , Pcd.DefaultValue,Sku.HiiDefaultValue,Pcd.DatumType))\r
+ Index += 1\r
+ return VariableInfo\r
## Collect dynamic PCDs\r
#\r
# Gather dynamic PCDs list from each module and their settings from platform\r
if Pcd.Type in [TAB_PCDS_DYNAMIC_VPD, TAB_PCDS_DYNAMIC_EX_VPD]:\r
VpdPcdDict[(Pcd.TokenCName, Pcd.TokenSpaceGuidCName)] = Pcd\r
\r
+ #Collect DynamicHii PCD values and assign it to DynamicExVpd PCD gEfiMdeModulePkgTokenSpaceGuid.PcdNvStoreDefaultValueBuffer\r
+ PcdNvStoreDfBuffer = VpdPcdDict.get(("PcdNvStoreDefaultValueBuffer","gEfiMdeModulePkgTokenSpaceGuid"))\r
+ if PcdNvStoreDfBuffer:\r
+ var_info = self.CollectVariables(self._DynamicPcdList)\r
+ default_skuobj = PcdNvStoreDfBuffer.SkuInfoList.get("DEFAULT")\r
+ default_skuobj.DefaultValue = var_info.dump()\r
+ if default_skuobj:\r
+ PcdNvStoreDfBuffer.SkuInfoList.clear()\r
+ PcdNvStoreDfBuffer.SkuInfoList['DEFAULT'] = default_skuobj\r
+ PcdNvStoreDfBuffer.MaxDatumSize = len(default_skuobj.DefaultValue.split(","))\r
+\r
PlatformPcds = self._PlatformPcds.keys()\r
PlatformPcds.sort()\r
#\r