return VariableInfo\r
\r
def UpdateNVStoreMaxSize(self,OrgVpdFile):\r
- VpdMapFilePath = os.path.join(self.BuildDir, "FV", "%s.map" % self.Platform.VpdToolGuid)\r
-# VpdFile = VpdInfoFile.VpdInfoFile()\r
- PcdNvStoreDfBuffer = [item for item in self._DynamicPcdList if item.TokenCName == "PcdNvStoreDefaultValueBuffer" and item.TokenSpaceGuidCName == "gEfiMdeModulePkgTokenSpaceGuid"]\r
-\r
- if PcdNvStoreDfBuffer:\r
- if os.path.exists(VpdMapFilePath):\r
- OrgVpdFile.Read(VpdMapFilePath)\r
- PcdItems = OrgVpdFile.GetOffset(PcdNvStoreDfBuffer[0])\r
- NvStoreOffset = PcdItems[0].strip() if PcdItems else 0\r
- else:\r
- EdkLogger.error("build", FILE_READ_FAILURE, "Can not find VPD map file %s to fix up VPD offset." % VpdMapFilePath)\r
+ if self.VariableInfo:\r
+ VpdMapFilePath = os.path.join(self.BuildDir, "FV", "%s.map" % self.Platform.VpdToolGuid)\r
+ PcdNvStoreDfBuffer = [item for item in self._DynamicPcdList if item.TokenCName == "PcdNvStoreDefaultValueBuffer" and item.TokenSpaceGuidCName == "gEfiMdeModulePkgTokenSpaceGuid"]\r
+\r
+ if PcdNvStoreDfBuffer:\r
+ if os.path.exists(VpdMapFilePath):\r
+ OrgVpdFile.Read(VpdMapFilePath)\r
+ PcdItems = OrgVpdFile.GetOffset(PcdNvStoreDfBuffer[0])\r
+ NvStoreOffset = PcdItems[0].strip() if PcdItems else '0'\r
+ else:\r
+ EdkLogger.error("build", FILE_READ_FAILURE, "Can not find VPD map file %s to fix up VPD offset." % VpdMapFilePath)\r
\r
- NvStoreOffset = int(NvStoreOffset,16) if NvStoreOffset.upper().startswith("0X") else int(NvStoreOffset)\r
- maxsize = self.VariableInfo.VpdRegionSize - NvStoreOffset\r
- var_data = self.VariableInfo.PatchNVStoreDefaultMaxSize(maxsize)\r
- default_skuobj = PcdNvStoreDfBuffer[0].SkuInfoList.get("DEFAULT")\r
+ NvStoreOffset = int(NvStoreOffset,16) if NvStoreOffset.upper().startswith("0X") else int(NvStoreOffset)\r
+ default_skuobj = PcdNvStoreDfBuffer[0].SkuInfoList.get("DEFAULT")\r
+ maxsize = self.VariableInfo.VpdRegionSize - NvStoreOffset if self.VariableInfo.VpdRegionSize else len(default_skuobj.DefaultValue.split(","))\r
+ var_data = self.VariableInfo.PatchNVStoreDefaultMaxSize(maxsize)\r
\r
- if var_data and default_skuobj:\r
- default_skuobj.DefaultValue = var_data\r
- PcdNvStoreDfBuffer[0].DefaultValue = var_data\r
- PcdNvStoreDfBuffer[0].SkuInfoList.clear()\r
- PcdNvStoreDfBuffer[0].SkuInfoList['DEFAULT'] = default_skuobj\r
- PcdNvStoreDfBuffer[0].MaxDatumSize = str(len(default_skuobj.DefaultValue.split(",")))\r
+ if var_data and default_skuobj:\r
+ default_skuobj.DefaultValue = var_data\r
+ PcdNvStoreDfBuffer[0].DefaultValue = var_data\r
+ PcdNvStoreDfBuffer[0].SkuInfoList.clear()\r
+ PcdNvStoreDfBuffer[0].SkuInfoList['DEFAULT'] = default_skuobj\r
+ PcdNvStoreDfBuffer[0].MaxDatumSize = str(len(default_skuobj.DefaultValue.split(",")))\r
\r
return OrgVpdFile\r
\r
#\r
# The reason of sorting is make sure the unicode string is in double-byte alignment in string table.\r
#\r
- UnicodePcdArray = []\r
- HiiPcdArray = []\r
- OtherPcdArray = []\r
+ UnicodePcdArray = set()\r
+ HiiPcdArray = set()\r
+ OtherPcdArray = set()\r
VpdPcdDict = {}\r
VpdFile = VpdInfoFile.VpdInfoFile()\r
NeedProcessVpdMapFile = False\r
if not NeedProcessVpdMapFile and Sku.VpdOffset == "*":\r
NeedProcessVpdMapFile = True \r
if DscPcdEntry.DatumType == 'VOID*' and PcdValue.startswith("L"):\r
- UnicodePcdArray.append(DscPcdEntry)\r
+ UnicodePcdArray.add(DscPcdEntry)\r
elif len(Sku.VariableName) > 0:\r
- HiiPcdArray.append(DscPcdEntry)\r
+ HiiPcdArray.add(DscPcdEntry)\r
else:\r
- OtherPcdArray.append(DscPcdEntry)\r
- \r
+ OtherPcdArray.add(DscPcdEntry)\r
+\r
# if the offset of a VPD is *, then it need to be fixed up by third party tool.\r
VpdSkuMap[DscPcd] = SkuValueMap\r
if (self.Platform.FlashDefinition == None or self.Platform.FlashDefinition == '') and \\r
PcdValue = Sku.DefaultValue\r
if Pcd.DatumType == 'VOID*' and PcdValue.startswith("L"):\r
# if found PCD which datum value is unicode string the insert to left size of UnicodeIndex\r
- UnicodePcdArray.append(Pcd)\r
+ UnicodePcdArray.add(Pcd)\r
elif len(Sku.VariableName) > 0:\r
# if found HII type PCD then insert to right of UnicodeIndex\r
- HiiPcdArray.append(Pcd)\r
+ HiiPcdArray.add(Pcd)\r
else:\r
- OtherPcdArray.append(Pcd)\r
+ OtherPcdArray.add(Pcd)\r
del self._DynamicPcdList[:]\r
- self._DynamicPcdList.extend(UnicodePcdArray)\r
- self._DynamicPcdList.extend(HiiPcdArray)\r
- self._DynamicPcdList.extend(OtherPcdArray)\r
+ self._DynamicPcdList.extend(list(UnicodePcdArray))\r
+ self._DynamicPcdList.extend(list(HiiPcdArray))\r
+ self._DynamicPcdList.extend(list(OtherPcdArray))\r
allskuset = [(SkuName,Sku.SkuId) for pcd in self._DynamicPcdList for (SkuName,Sku) in pcd.SkuInfoList.items()]\r
for pcd in self._DynamicPcdList:\r
if len(pcd.SkuInfoList) == 1:\r