# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
#\r
-from StringIO import StringIO\r
+from io import BytesIO\r
from Common.Misc import *\r
from Common.StringUtils import StringToArray\r
from struct import pack\r
#\r
def GetTokenTypeValue(TokenType):\r
TokenTypeDict = {\r
- "PCD_TYPE_SHIFT":28,\r
- "PCD_TYPE_DATA":(0x0 << 28),\r
- "PCD_TYPE_HII":(0x8 << 28),\r
- "PCD_TYPE_VPD":(0x4 << 28),\r
+ "PCD_TYPE_SHIFT": 28,\r
+ "PCD_TYPE_DATA": (0x0 << 28),\r
+ "PCD_TYPE_HII": (0x8 << 28),\r
+ "PCD_TYPE_VPD": (0x4 << 28),\r
# "PCD_TYPE_SKU_ENABLED":(0x2 << 28),\r
- "PCD_TYPE_STRING":(0x1 << 28),\r
+ "PCD_TYPE_STRING": (0x1 << 28),\r
\r
- "PCD_DATUM_TYPE_SHIFT":24,\r
- "PCD_DATUM_TYPE_POINTER":(0x0 << 24),\r
- "PCD_DATUM_TYPE_UINT8":(0x1 << 24),\r
- "PCD_DATUM_TYPE_UINT16":(0x2 << 24),\r
- "PCD_DATUM_TYPE_UINT32":(0x4 << 24),\r
- "PCD_DATUM_TYPE_UINT64":(0x8 << 24),\r
+ "PCD_DATUM_TYPE_SHIFT": 24,\r
+ "PCD_DATUM_TYPE_POINTER": (0x0 << 24),\r
+ "PCD_DATUM_TYPE_UINT8": (0x1 << 24),\r
+ "PCD_DATUM_TYPE_UINT16": (0x2 << 24),\r
+ "PCD_DATUM_TYPE_UINT32": (0x4 << 24),\r
+ "PCD_DATUM_TYPE_UINT64": (0x8 << 24),\r
\r
- "PCD_DATUM_TYPE_SHIFT2":20,\r
- "PCD_DATUM_TYPE_UINT8_BOOLEAN":(0x1 << 20 | 0x1 << 24),\r
+ "PCD_DATUM_TYPE_SHIFT2": 20,\r
+ "PCD_DATUM_TYPE_UINT8_BOOLEAN": (0x1 << 20 | 0x1 << 24),\r
}\r
return eval(TokenType, TokenTypeDict)\r
\r
DbPcdCNameTable = DbStringItemList(0, RawDataList = PcdCNameTableValue, LenList = PcdCNameLen)\r
\r
PcdNameOffsetTable = Dict['PCD_NAME_OFFSET']\r
- DbPcdNameOffsetTable = DbItemList(4,RawDataList = PcdNameOffsetTable)\r
+ DbPcdNameOffsetTable = DbItemList(4, RawDataList = PcdNameOffsetTable)\r
\r
SizeTableValue = zip(Dict['SIZE_TABLE_MAXIMUM_LENGTH'], Dict['SIZE_TABLE_CURRENT_LENGTH'])\r
DbSizeTableValue = DbSizeTableItemList(2, RawDataList = SizeTableValue)\r
PcdTokenNumberMap = Dict['PCD_ORDER_TOKEN_NUMBER_MAP']\r
\r
DbNameTotle = ["SkuidValue", "InitValueUint64", "VardefValueUint64", "InitValueUint32", "VardefValueUint32", "VpdHeadValue", "ExMapTable",\r
- "LocalTokenNumberTable", "GuidTable", "StringHeadValue", "PcdNameOffsetTable","VariableTable", "StringTableLen", "PcdTokenTable", "PcdCNameTable",\r
+ "LocalTokenNumberTable", "GuidTable", "StringHeadValue", "PcdNameOffsetTable", "VariableTable", "StringTableLen", "PcdTokenTable", "PcdCNameTable",\r
"SizeTableValue", "InitValueUint16", "VardefValueUint16", "InitValueUint8", "VardefValueUint8", "InitValueBoolean",\r
"VardefValueBoolean", "UnInitValueUint64", "UnInitValueUint32", "UnInitValueUint16", "UnInitValueUint8", "UnInitValueBoolean"]\r
\r
DbTotal = [SkuidValue, InitValueUint64, VardefValueUint64, InitValueUint32, VardefValueUint32, VpdHeadValue, ExMapTable,\r
- LocalTokenNumberTable, GuidTable, StringHeadValue, PcdNameOffsetTable,VariableTable, StringTableLen, PcdTokenTable,PcdCNameTable,\r
+ LocalTokenNumberTable, GuidTable, StringHeadValue, PcdNameOffsetTable, VariableTable, StringTableLen, PcdTokenTable, PcdCNameTable,\r
SizeTableValue, InitValueUint16, VardefValueUint16, InitValueUint8, VardefValueUint8, InitValueBoolean,\r
VardefValueBoolean, UnInitValueUint64, UnInitValueUint32, UnInitValueUint16, UnInitValueUint8, UnInitValueBoolean]\r
DbItemTotal = [DbSkuidValue, DbInitValueUint64, DbVardefValueUint64, DbInitValueUint32, DbVardefValueUint32, DbVpdHeadValue, DbExMapTable,\r
- DbLocalTokenNumberTable, DbGuidTable, DbStringHeadValue, DbPcdNameOffsetTable,DbVariableTable, DbStringTableLen, DbPcdTokenTable, DbPcdCNameTable,\r
+ DbLocalTokenNumberTable, DbGuidTable, DbStringHeadValue, DbPcdNameOffsetTable, DbVariableTable, DbStringTableLen, DbPcdTokenTable, DbPcdCNameTable,\r
DbSizeTableValue, DbInitValueUint16, DbVardefValueUint16, DbInitValueUint8, DbVardefValueUint8, DbInitValueBoolean,\r
DbVardefValueBoolean, DbUnInitValueUint64, DbUnInitValueUint32, DbUnInitValueUint16, DbUnInitValueUint8, DbUnInitValueBoolean]\r
\r
DbOffset += (8 - DbOffset % 8)\r
else:\r
assert(False)\r
- if isinstance(VariableRefTable[0],list):\r
+ if isinstance(VariableRefTable[0], list):\r
DbOffset += skuindex * 4 \r
skuindex += 1\r
if DbIndex >= InitTableNum:\r
DbFileName = os.path.join(Info.PlatformInfo.BuildDir, TAB_FV_DIRECTORY, Phase + "PcdDataBase.raw")\r
else:\r
DbFileName = os.path.join(Info.OutputDir, Phase + "PcdDataBase.raw")\r
- DbFile = StringIO()\r
+ DbFile = BytesIO()\r
DbFile.write(PcdDbBuffer)\r
Changed = SaveFileOnChange(DbFileName, DbFile.getvalue(), True)\r
def CreatePcdDataBase(PcdDBData):\r
delta = {}\r
- for skuname,skuid in PcdDBData:\r
- if len(PcdDBData[(skuname,skuid)][1]) != len(PcdDBData[(TAB_DEFAULT,"0")][1]):\r
+ for skuname, skuid in PcdDBData:\r
+ if len(PcdDBData[(skuname, skuid)][1]) != len(PcdDBData[(TAB_DEFAULT, "0")][1]):\r
EdkLogger.ERROR("The size of each sku in one pcd are not same")\r
- for skuname,skuid in PcdDBData:\r
+ for skuname, skuid in PcdDBData:\r
if skuname == TAB_DEFAULT:\r
continue\r
- delta[(skuname,skuid)] = [(index,data,hex(data)) for index,data in enumerate(PcdDBData[(skuname,skuid)][1]) if PcdDBData[(skuname,skuid)][1][index] != PcdDBData[(TAB_DEFAULT,"0")][1][index]]\r
- databasebuff = PcdDBData[(TAB_DEFAULT,"0")][0]\r
+ delta[(skuname, skuid)] = [(index, data, hex(data)) for index, data in enumerate(PcdDBData[(skuname, skuid)][1]) if PcdDBData[(skuname, skuid)][1][index] != PcdDBData[(TAB_DEFAULT, "0")][1][index]]\r
+ databasebuff = PcdDBData[(TAB_DEFAULT, "0")][0]\r
\r
- for skuname,skuid in delta:\r
+ for skuname, skuid in delta:\r
# 8 byte align\r
if len(databasebuff) % 8 > 0:\r
for i in range(8 - (len(databasebuff) % 8)):\r
- databasebuff += pack("=B",0)\r
+ databasebuff += pack("=B", 0)\r
databasebuff += pack('=Q', int(skuid))\r
databasebuff += pack('=Q', 0)\r
- databasebuff += pack('=L', 8+8+4+4*len(delta[(skuname,skuid)]))\r
- for item in delta[(skuname,skuid)]:\r
- databasebuff += pack("=L",item[0])\r
- databasebuff = databasebuff[:-1] + pack("=B",item[1])\r
+ databasebuff += pack('=L', 8+8+4+4*len(delta[(skuname, skuid)]))\r
+ for item in delta[(skuname, skuid)]:\r
+ databasebuff += pack("=L", item[0])\r
+ databasebuff = databasebuff[:-1] + pack("=B", item[1])\r
totallen = len(databasebuff)\r
- totallenbuff = pack("=L",totallen)\r
+ totallenbuff = pack("=L", totallen)\r
newbuffer = databasebuff[:32]\r
for i in range(4):\r
newbuffer += totallenbuff[i]\r
- for i in range(36,totallen):\r
+ for i in range(36, totallen):\r
newbuffer += databasebuff[i]\r
\r
return newbuffer\r
\r
def CreateVarCheckBin(VarCheckTab):\r
- return VarCheckTab[(TAB_DEFAULT,"0")]\r
+ return VarCheckTab[(TAB_DEFAULT, "0")]\r
\r
def CreateAutoGen(PcdDriverAutoGenData):\r
autogenC = TemplateString()\r
- for skuname,skuid in PcdDriverAutoGenData:\r
+ for skuname, skuid in PcdDriverAutoGenData:\r
autogenC.Append("//SKUID: %s" % skuname)\r
- autogenC.Append(PcdDriverAutoGenData[(skuname,skuid)][1].String)\r
- return (PcdDriverAutoGenData[(skuname,skuid)][0],autogenC)\r
-def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform,Phase):\r
- def prune_sku(pcd,skuname):\r
+ autogenC.Append(PcdDriverAutoGenData[(skuname, skuid)][1].String)\r
+ return (PcdDriverAutoGenData[(skuname, skuid)][0], autogenC)\r
+def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform, Phase):\r
+ def prune_sku(pcd, skuname):\r
new_pcd = copy.deepcopy(pcd)\r
new_pcd.SkuInfoList = {skuname:pcd.SkuInfoList[skuname]}\r
new_pcd.isinit = 'INIT'\r
if new_pcd.DatumType in TAB_PCD_CLEAN_NUMERIC_TYPES:\r
for skuobj in pcd.SkuInfoList.values():\r
if skuobj.DefaultValue:\r
- defaultvalue = int(skuobj.DefaultValue,16) if skuobj.DefaultValue.upper().startswith("0X") else int(skuobj.DefaultValue,10)\r
+ defaultvalue = int(skuobj.DefaultValue, 16) if skuobj.DefaultValue.upper().startswith("0X") else int(skuobj.DefaultValue, 10)\r
if defaultvalue != 0:\r
new_pcd.isinit = "INIT"\r
break\r
new_pcd.isinit = "UNINIT"\r
return new_pcd\r
DynamicPcds = Platform.DynamicPcdList\r
- DynamicPcdSet_Sku = {(SkuName,skuobj.SkuId):[] for pcd in DynamicPcds for (SkuName,skuobj) in pcd.SkuInfoList.items() }\r
- for skuname,skuid in DynamicPcdSet_Sku:\r
- DynamicPcdSet_Sku[(skuname,skuid)] = [prune_sku(pcd,skuname) for pcd in DynamicPcds]\r
+ DynamicPcdSet_Sku = {(SkuName, skuobj.SkuId):[] for pcd in DynamicPcds for (SkuName, skuobj) in pcd.SkuInfoList.items() }\r
+ for skuname, skuid in DynamicPcdSet_Sku:\r
+ DynamicPcdSet_Sku[(skuname, skuid)] = [prune_sku(pcd, skuname) for pcd in DynamicPcds]\r
PcdDBData = {}\r
PcdDriverAutoGenData = {}\r
VarCheckTableData = {}\r
if DynamicPcdSet_Sku:\r
- for skuname,skuid in DynamicPcdSet_Sku:\r
- AdditionalAutoGenH, AdditionalAutoGenC, PcdDbBuffer,VarCheckTab = CreatePcdDatabasePhaseSpecificAutoGen (Platform,DynamicPcdSet_Sku[(skuname,skuid)], Phase)\r
+ for skuname, skuid in DynamicPcdSet_Sku:\r
+ AdditionalAutoGenH, AdditionalAutoGenC, PcdDbBuffer, VarCheckTab = CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdSet_Sku[(skuname, skuid)], Phase)\r
final_data = ()\r
for item in PcdDbBuffer:\r
- final_data += unpack("B",item)\r
- PcdDBData[(skuname,skuid)] = (PcdDbBuffer, final_data)\r
- PcdDriverAutoGenData[(skuname,skuid)] = (AdditionalAutoGenH, AdditionalAutoGenC)\r
- VarCheckTableData[(skuname,skuid)] = VarCheckTab\r
+ final_data += unpack("B", item)\r
+ PcdDBData[(skuname, skuid)] = (PcdDbBuffer, final_data)\r
+ PcdDriverAutoGenData[(skuname, skuid)] = (AdditionalAutoGenH, AdditionalAutoGenC)\r
+ VarCheckTableData[(skuname, skuid)] = VarCheckTab\r
if Platform.Platform.VarCheckFlag:\r
dest = os.path.join(Platform.BuildDir, TAB_FV_DIRECTORY)\r
VarCheckTable = CreateVarCheckBin(VarCheckTableData)\r
VarCheckTable.dump(dest, Phase)\r
AdditionalAutoGenH, AdditionalAutoGenC = CreateAutoGen(PcdDriverAutoGenData)\r
else:\r
- AdditionalAutoGenH, AdditionalAutoGenC, PcdDbBuffer,VarCheckTab = CreatePcdDatabasePhaseSpecificAutoGen (Platform,{}, Phase)\r
+ AdditionalAutoGenH, AdditionalAutoGenC, PcdDbBuffer, VarCheckTab = CreatePcdDatabasePhaseSpecificAutoGen (Platform, {}, Phase)\r
final_data = ()\r
for item in PcdDbBuffer:\r
- final_data += unpack("B",item)\r
- PcdDBData[(TAB_DEFAULT,"0")] = (PcdDbBuffer, final_data)\r
+ final_data += unpack("B", item)\r
+ PcdDBData[(TAB_DEFAULT, "0")] = (PcdDbBuffer, final_data)\r
\r
return AdditionalAutoGenH, AdditionalAutoGenC, CreatePcdDataBase(PcdDBData)\r
## Create PCD database in DXE or PEI phase\r
Dict['VARDEF_SKUID_' + DatumType] = []\r
Dict['VARDEF_VALUE_' + DatumType] = []\r
Dict['VARDEF_DB_VALUE_' + DatumType] = []\r
- for Init in ['INIT','UNINIT']:\r
+ for Init in ['INIT', 'UNINIT']:\r
Dict[Init+'_CNAME_DECL_' + DatumType] = []\r
Dict[Init+'_GUID_DECL_' + DatumType] = []\r
Dict[Init+'_NUMSKUS_DECL_' + DatumType] = []\r
Dict[Init+'_VALUE_' + DatumType] = []\r
Dict[Init+'_DB_VALUE_'+DatumType] = []\r
\r
- for Type in ['STRING_HEAD','VPD_HEAD','VARIABLE_HEAD']:\r
+ for Type in ['STRING_HEAD', 'VPD_HEAD', 'VARIABLE_HEAD']:\r
Dict[Type + '_CNAME_DECL'] = []\r
Dict[Type + '_GUID_DECL'] = []\r
Dict[Type + '_NUMSKUS_DECL'] = []\r
Dict['STRING_TABLE_INDEX'].append('')\r
else:\r
Dict['STRING_TABLE_INDEX'].append('_%d' % StringTableIndex)\r
- VarNameSize = len(VariableNameStructure.replace(',',' ').split())\r
+ VarNameSize = len(VariableNameStructure.replace(',', ' ').split())\r
Dict['STRING_TABLE_LENGTH'].append(VarNameSize )\r
Dict['STRING_TABLE_VALUE'].append(VariableNameStructure)\r
StringHeadOffsetList.append(str(StringTableSize) + 'U')\r
VarStringDbOffsetList.append(StringTableSize)\r
Dict['STRING_DB_VALUE'].append(VarStringDbOffsetList)\r
StringTableIndex += 1\r
- StringTableSize += len(VariableNameStructure.replace(',',' ').split())\r
+ StringTableSize += len(VariableNameStructure.replace(',', ' ').split())\r
VariableHeadStringIndex = 0\r
for Index in range(Dict['STRING_TABLE_VALUE'].index(VariableNameStructure)):\r
VariableHeadStringIndex += Dict['STRING_TABLE_LENGTH'][Index]\r
elif Pcd.DatumType in (TAB_UINT32, TAB_UINT16, TAB_UINT8):\r
Dict['VARDEF_VALUE_'+Pcd.DatumType].append(Sku.HiiDefaultValue + "U")\r
elif Pcd.DatumType == "BOOLEAN":\r
- if eval(Sku.HiiDefaultValue) in [1,0]:\r
+ if eval(Sku.HiiDefaultValue) in [1, 0]:\r
Dict['VARDEF_VALUE_'+Pcd.DatumType].append(str(eval(Sku.HiiDefaultValue)) + "U")\r
else:\r
Dict['VARDEF_VALUE_'+Pcd.DatumType].append(Sku.HiiDefaultValue)\r
Dict['STRING_TABLE_INDEX'].append('_%d' % StringTableIndex)\r
if Sku.DefaultValue[0] == 'L':\r
DefaultValueBinStructure = StringToArray(Sku.DefaultValue)\r
- Size = len(DefaultValueBinStructure.replace(',',' ').split())\r
+ Size = len(DefaultValueBinStructure.replace(',', ' ').split())\r
Dict['STRING_TABLE_VALUE'].append(DefaultValueBinStructure)\r
elif Sku.DefaultValue[0] == '"':\r
DefaultValueBinStructure = StringToArray(Sku.DefaultValue)\r
\r
# print Phase\r
Buffer = BuildExDataBase(Dict)\r
- return AutoGenH, AutoGenC, Buffer,VarCheckTab\r
+ return AutoGenH, AutoGenC, Buffer, VarCheckTab\r
\r
def GetOrderedDynamicPcdList(DynamicPcdList, PcdTokenNumberList):\r
ReorderedDyPcdList = [None for i in range(len(DynamicPcdList))]\r