else:\r
IsValid = (len(FieldList) <= 3)\r
# Value, Size = ParseFieldValue(Value)\r
+ if Size:\r
+ try:\r
+ int(Size,16) if Size.upper().startswith("0X") else int(Size)\r
+ except:\r
+ IsValid = False\r
+ Size = -1\r
return [str(Value), '', str(Size)], IsValid, 0\r
elif PcdType in (MODEL_PCD_DYNAMIC_DEFAULT, MODEL_PCD_DYNAMIC_EX_DEFAULT):\r
Value = FieldList[0]\r
IsValid = (len(FieldList) <= 1)\r
else:\r
IsValid = (len(FieldList) <= 3)\r
- return [Value, Type, Size], IsValid, 0\r
+\r
+ if Size:\r
+ try:\r
+ int(Size,16) if Size.upper().startswith("0X") else int(Size)\r
+ except:\r
+ IsValid = False\r
+ Size = -1\r
+ return [Value, Type, str(Size)], IsValid, 0\r
elif PcdType in (MODEL_PCD_DYNAMIC_VPD, MODEL_PCD_DYNAMIC_EX_VPD):\r
VpdOffset = FieldList[0]\r
Value = Size = ''\r
IsValid = (len(FieldList) <= 1)\r
else:\r
IsValid = (len(FieldList) <= 3)\r
-\r
- return [VpdOffset, Size, Value], IsValid, 2\r
+ if Size:\r
+ try:\r
+ int(Size,16) if Size.upper().startswith("0X") else int(Size)\r
+ except:\r
+ IsValid = False\r
+ Size = -1\r
+ return [VpdOffset, str(Size), Value], IsValid, 2\r
elif PcdType in (MODEL_PCD_DYNAMIC_HII, MODEL_PCD_DYNAMIC_EX_HII):\r
HiiString = FieldList[0]\r
Guid = Offset = Value = Attribute = ''\r
def __init__(self,SkuIdentifier='', SkuIds=None):\r
if SkuIds is None:\r
SkuIds = {}\r
+\r
+ for SkuName in SkuIds:\r
+ SkuId = SkuIds[SkuName][0]\r
+ skuid_num = int(SkuId,16) if SkuId.upper().startswith("0X") else int(SkuId)\r
+ if skuid_num > 0xFFFFFFFFFFFFFFFF:\r
+ EdkLogger.error("build", PARAMETER_INVALID,\r
+ ExtraData = "SKU-ID [%s] value %s exceeds the max value of UINT64"\r
+ % (SkuName, SkuId))\r
\r
self.AvailableSkuIds = sdict()\r
self.SkuIdSet = []\r
self.SkuIdNumberSet = []\r
self.SkuData = SkuIds\r
self.__SkuInherit = {}\r
+ self.__SkuIdentifier = SkuIdentifier\r
if SkuIdentifier == '' or SkuIdentifier is None:\r
self.SkuIdSet = ['DEFAULT']\r
self.SkuIdNumberSet = ['0U']\r
EdkLogger.error("build", PARAMETER_INVALID,\r
ExtraData = "SKU-ID [%s] is not supported by the platform. [Valid SKU-ID: %s]"\r
% (k, " | ".join(SkuIds.keys())))\r
- if len(self.SkuIdSet) == 2 and 'DEFAULT' in self.SkuIdSet and SkuIdentifier != 'ALL':\r
- self.SkuIdSet.remove('DEFAULT')\r
- self.SkuIdNumberSet.remove('0U')\r
for each in self.SkuIdSet:\r
if each in SkuIds:\r
self.AvailableSkuIds[each] = SkuIds[each][0]\r
% (each, " | ".join(SkuIds.keys())))\r
if self.SkuUsageType != self.SINGLE:\r
self.AvailableSkuIds.update({'DEFAULT':0, 'COMMON':0})\r
+ if self.SkuIdSet:\r
+ GlobalData.gSkuids = (self.SkuIdSet)\r
+ if 'COMMON' in GlobalData.gSkuids:\r
+ GlobalData.gSkuids.remove('COMMON')\r
+ if GlobalData.gSkuids:\r
+ GlobalData.gSkuids.sort()\r
+\r
def GetNextSkuId(self, skuname):\r
if not self.__SkuInherit:\r
self.__SkuInherit = {}\r
for item in self.SkuData.values():\r
self.__SkuInherit[item[1]]=item[2] if item[2] else "DEFAULT"\r
return self.__SkuInherit.get(skuname,"DEFAULT")\r
+\r
+ def GetSkuChain(self,sku):\r
+ skulist = [sku]\r
+ nextsku = sku\r
+ while 1:\r
+ nextsku = self.GetNextSkuId(nextsku)\r
+ skulist.append(nextsku)\r
+ if nextsku == "DEFAULT":\r
+ break\r
+ skulist.reverse()\r
+ return skulist\r
+ def SkuOverrideOrder(self):\r
+ skuorderset = []\r
+ for skuname in self.SkuIdSet:\r
+ skuorderset.append(self.GetSkuChain(skuname))\r
\r
+ skuorder = []\r
+ for index in range(max([len(item) for item in skuorderset])):\r
+ for subset in skuorderset:\r
+ if index > len(subset)-1:\r
+ continue\r
+ if subset[index] in skuorder:\r
+ continue\r
+ skuorder.append(subset[index])\r
+\r
+ return skuorder\r
+\r
def __SkuUsageType(self): \r
\r
+ if self.__SkuIdentifier.upper() == "ALL":\r
+ return SkuClass.MULTIPLE\r
+\r
if len(self.SkuIdSet) == 1:\r
if self.SkuIdSet[0] == 'DEFAULT':\r
return SkuClass.DEFAULT\r
else:\r
return SkuClass.SINGLE\r
+ elif len(self.SkuIdSet) == 2:\r
+ if 'DEFAULT' in self.SkuIdSet:\r
+ return SkuClass.SINGLE\r
+ else:\r
+ return SkuClass.MULTIPLE\r
else:\r
return SkuClass.MULTIPLE\r
def DumpSkuIdArrary(self):\r
\r
def __GetSystemSkuID(self):\r
if self.__SkuUsageType() == SkuClass.SINGLE:\r
- return self.SkuIdSet[0]\r
+ if len(self.SkuIdSet) == 1:\r
+ return self.SkuIdSet[0]\r
+ else:\r
+ return self.SkuIdSet[0] if self.SkuIdSet[0] != 'DEFAULT' else self.SkuIdSet[1]\r
else:\r
return 'DEFAULT'\r
def __GetAvailableSkuIdNumber(self):\r