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
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