]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/GenPcdDb.py
BaseTools: Replace StringIO.StringIO with io.BytesIO
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / GenPcdDb.py
index 25e4f7246e3ae0742d00ebbb07bc389e942e73b1..9fcd7fcc97a97e44d8e61db7d4e75b05553013e3 100644 (file)
@@ -10,7 +10,7 @@
 # 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
@@ -574,22 +574,22 @@ def StringArrayToList(StringArray):
 #\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
@@ -643,7 +643,7 @@ def BuildExDataBase(Dict):
     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
@@ -678,16 +678,16 @@ def BuildExDataBase(Dict):
     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
@@ -746,7 +746,7 @@ def BuildExDataBase(Dict):
                         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
@@ -888,59 +888,59 @@ def CreatePcdDatabaseCode (Info, AutoGenC, AutoGenH):
         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
@@ -951,32 +951,32 @@ def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform,Phase):
                 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
@@ -1022,14 +1022,14 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
         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
@@ -1190,7 +1190,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                         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
@@ -1198,7 +1198,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                     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
@@ -1237,7 +1237,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                     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
@@ -1287,7 +1287,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
                         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
@@ -1599,7 +1599,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase):
 \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