NoDefault = True\r
break\r
nextskuid = self.SkuIdMgr.GetNextSkuId(nextskuid)\r
- stru_pcd.SkuOverrideValues[skuid] = copy.deepcopy(stru_pcd.SkuOverrideValues[nextskuid]) if not NoDefault else copy.deepcopy({defaultstorename: stru_pcd.DefaultValues for defaultstorename in DefaultStores} if DefaultStores else {TAB_DEFAULT_STORES_DEFAULT:stru_pcd.DefaultValues})\r
+ stru_pcd.SkuOverrideValues[skuid] = copy.deepcopy(stru_pcd.SkuOverrideValues[nextskuid]) if not NoDefault else copy.deepcopy({defaultstorename: stru_pcd.DefaultValues for defaultstorename in DefaultStores} if DefaultStores else {}) #{TAB_DEFAULT_STORES_DEFAULT:stru_pcd.DefaultValues})\r
if not NoDefault:\r
stru_pcd.ValueChain.add((skuid, ''))\r
if stru_pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
None,\r
IsDsc=True)\r
\r
-\r
+ if self.SkuIdMgr.SystemSkuId not in Pcds[PcdCName, TokenSpaceGuid].DscRawValue:\r
+ Pcds[PcdCName, TokenSpaceGuid].DscRawValue[self.SkuIdMgr.SystemSkuId] = {}\r
+ Pcds[PcdCName, TokenSpaceGuid].DscRawValue[self.SkuIdMgr.SystemSkuId][TAB_DEFAULT_STORES_DEFAULT] = PcdValue\r
return Pcds\r
\r
def GetStructurePcdMaxSize(self, str_pcd):\r
CApp = CApp + "// SkuName: %s, DefaultStoreName: %s \n" % (TAB_DEFAULT, TAB_DEFAULT_STORES_DEFAULT)\r
inherit_OverrideValues = Pcd.SkuOverrideValues[SkuName]\r
if (SkuName, DefaultStoreName) == (TAB_DEFAULT, TAB_DEFAULT_STORES_DEFAULT):\r
- pcddefaultvalue = Pcd.DefaultFromDSC.get(TAB_DEFAULT, {}).get(TAB_DEFAULT_STORES_DEFAULT, Pcd.DefaultValue) if Pcd.DefaultFromDSC else Pcd.DefaultValue\r
+ pcddefaultvalue = Pcd.DefaultFromDSC.get(TAB_DEFAULT, {}).get(TAB_DEFAULT_STORES_DEFAULT) if Pcd.DefaultFromDSC else None\r
else:\r
- if not Pcd.DscRawValue:\r
- # handle the case that structure pcd is not appear in DSC\r
- self.CopyDscRawValue(Pcd)\r
pcddefaultvalue = Pcd.DscRawValue.get(SkuName, {}).get(DefaultStoreName)\r
for FieldList in [pcddefaultvalue, inherit_OverrideValues.get(DefaultStoreName)]:\r
if not FieldList:\r
OverrideValues = {DefaultStore:""}\r
if Pcd.SkuOverrideValues:\r
OverrideValues = Pcd.SkuOverrideValues[SkuName]\r
+ if not OverrideValues:\r
+ OverrideValues = {TAB_DEFAULT_STORES_DEFAULT:Pcd.DefaultValues}\r
for DefaultStoreName in OverrideValues:\r
CApp = CApp + 'void\n'\r
CApp = CApp + 'Initialize_%s_%s_%s_%s(\n' % (SkuName, DefaultStoreName, Pcd.TokenSpaceGuidCName, Pcd.TokenCName)\r
CApp = CApp + '}\n'\r
CApp = CApp + '\n'\r
return InitByteValue, CApp\r
+ def SkuOverrideValuesEmpty(self,OverrideValues):\r
+ if not OverrideValues:\r
+ return True\r
+ for key in OverrideValues:\r
+ if OverrideValues[key]:\r
+ return False\r
+ return True\r
\r
def GenerateByteArrayValue (self, StructuredPcds):\r
#\r
CApp = CApp + self.GenerateDefaultValueAssignFunction(Pcd)\r
CApp = CApp + self.GenerateFdfValue(Pcd)\r
CApp = CApp + self.GenerateCommandLineValue(Pcd)\r
- if not Pcd.SkuOverrideValues or Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD],\r
+ if self.SkuOverrideValuesEmpty(Pcd.SkuOverrideValues) or Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD],\r
self._PCD_TYPE_STRING_[MODEL_PCD_PATCHABLE_IN_MODULE]]:\r
CApp = CApp + self.GenerateInitValueFunction(Pcd, self.SkuIdMgr.SystemSkuId, TAB_DEFAULT_STORES_DEFAULT)\r
else:\r
continue\r
for DefaultStoreName in Pcd.SkuOverrideValues[SkuName]:\r
CApp = CApp + self.GenerateInitValueFunction(Pcd, SkuName, DefaultStoreName)\r
- if not Pcd.SkuOverrideValues or Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD],\r
+ if self.SkuOverrideValuesEmpty(Pcd.SkuOverrideValues) or Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD],\r
self._PCD_TYPE_STRING_[MODEL_PCD_PATCHABLE_IN_MODULE]]:\r
InitByteValue, CApp = self.GenerateInitializeFunc(self.SkuIdMgr.SystemSkuId, TAB_DEFAULT_STORES_DEFAULT, Pcd, InitByteValue, CApp)\r
else:\r
CApp = CApp + ' )\n'\r
CApp = CApp + '{\n'\r
for Pcd in StructuredPcds.values():\r
- if not Pcd.SkuOverrideValues or Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD], self._PCD_TYPE_STRING_[MODEL_PCD_PATCHABLE_IN_MODULE]]:\r
+ if self.SkuOverrideValuesEmpty(Pcd.SkuOverrideValues) or Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD], self._PCD_TYPE_STRING_[MODEL_PCD_PATCHABLE_IN_MODULE]]:\r
CApp = CApp + ' Initialize_%s_%s_%s_%s();\n' % (self.SkuIdMgr.SystemSkuId, TAB_DEFAULT_STORES_DEFAULT, Pcd.TokenSpaceGuidCName, Pcd.TokenCName)\r
else:\r
for SkuName in self.SkuIdMgr.SkuOverrideOrder():\r
None,\r
IsDsc=True)\r
\r
+ if SkuName not in Pcds[PcdCName, TokenSpaceGuid].DscRawValue:\r
+ Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName] = {}\r
+ Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName][TAB_DEFAULT_STORES_DEFAULT] = PcdValue\r
+\r
for pcd in Pcds.values():\r
pcdDecObject = self._DecPcds[pcd.TokenCName, pcd.TokenSpaceGuidCName]\r
# Only fix the value while no value provided in DSC file.\r
else:\r
return False\r
\r
- def CopyDscRawValue(self, Pcd):\r
- if Pcd.DscRawValue is None:\r
- Pcd.DscRawValue = dict()\r
- if Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_FIXED_AT_BUILD], self._PCD_TYPE_STRING_[MODEL_PCD_PATCHABLE_IN_MODULE]]:\r
- if self.SkuIdMgr.SystemSkuId not in Pcd.DscRawValue:\r
- Pcd.DscRawValue[self.SkuIdMgr.SystemSkuId] = {}\r
- Pcd.DscRawValue[self.SkuIdMgr.SystemSkuId][TAB_DEFAULT_STORES_DEFAULT] = Pcd.DefaultValue\r
- for skuname in Pcd.SkuInfoList:\r
- Pcd.DscRawValue[skuname] = {}\r
- if Pcd.Type in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
- for defaultstore in Pcd.SkuInfoList[skuname].DefaultStoreDict:\r
- Pcd.DscRawValue[skuname][defaultstore] = Pcd.SkuInfoList[skuname].DefaultStoreDict[defaultstore]\r
- else:\r
- Pcd.DscRawValue[skuname][TAB_DEFAULT_STORES_DEFAULT] = Pcd.SkuInfoList[skuname].DefaultValue\r
def CompletePcdValues(self, PcdSet):\r
Pcds = {}\r
DefaultStoreObj = DefaultStore(self._GetDefaultStores())\r
DefaultStores = set(storename for pcdobj in PcdSet.values() for skuobj in pcdobj.SkuInfoList.values() for storename in skuobj.DefaultStoreDict)\r
for PcdCName, TokenSpaceGuid in PcdSet:\r
PcdObj = PcdSet[(PcdCName, TokenSpaceGuid)]\r
- self.CopyDscRawValue(PcdObj)\r
+\r
if PcdObj.Type not in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_DEFAULT],\r
self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII],\r
self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_VPD],\r
pcdDecObject.expressions,\r
IsDsc=True)\r
\r
-\r
+ if SkuName not in Pcds[PcdCName, TokenSpaceGuid].DscRawValue:\r
+ Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName] = {}\r
+ Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName][DefaultStore] = DefaultValue\r
for pcd in Pcds.values():\r
SkuInfoObj = pcd.SkuInfoList.values()[0]\r
pcdDecObject = self._DecPcds[pcd.TokenCName, pcd.TokenSpaceGuidCName]\r
False,\r
None,\r
IsDsc=True)\r
+\r
+ if SkuName not in Pcds[PcdCName, TokenSpaceGuid].DscRawValue:\r
+ Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName] = {}\r
+ Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName][TAB_DEFAULT_STORES_DEFAULT] = InitialValue\r
for pcd in Pcds.values():\r
SkuInfoObj = pcd.SkuInfoList.values()[0]\r
pcdDecObject = self._DecPcds[pcd.TokenCName, pcd.TokenSpaceGuidCName]\r