X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FAutoGen%2FGenPcdDb.py;h=0870c44146c961cc8f2fa433e16ee033284b9d87;hb=c0fd7f734e2d33e22215899b40a47b843129541d;hp=f99d9f5d18e10e4a4ccb35e4ed52fff69943d928;hpb=261eee25de664dcef2d99b6365b16c9bc444143f;p=mirror_edk2.git diff --git a/BaseTools/Source/Python/AutoGen/GenPcdDb.py b/BaseTools/Source/Python/AutoGen/GenPcdDb.py index f99d9f5d18..0870c44146 100644 --- a/BaseTools/Source/Python/AutoGen/GenPcdDb.py +++ b/BaseTools/Source/Python/AutoGen/GenPcdDb.py @@ -2,14 +2,9 @@ # Routines for generating Pcd Database # # Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# SPDX-License-Identifier: BSD-2-Clause-Patent # +from __future__ import absolute_import from io import BytesIO from Common.Misc import * from Common.StringUtils import StringToArray @@ -21,6 +16,9 @@ from Common.VariableAttributes import VariableAttributes import copy from struct import unpack from Common.DataType import * +from Common import GlobalData +from Common import EdkLogger +import Common.LongFilePathOs as os DATABASE_VERSION = 7 @@ -291,7 +289,7 @@ class DbItemList: PackStr = PACK_CODE_BY_SIZE[self.ItemSize] - Buffer = '' + Buffer = bytearray() for Datas in self.RawDataList: if type(Datas) in (list, tuple): for Data in Datas: @@ -316,7 +314,7 @@ class DbExMapTblItemList (DbItemList): DbItemList.__init__(self, ItemSize, DataList, RawDataList) def PackData(self): - Buffer = '' + Buffer = bytearray() PackStr = "=LHH" for Datas in self.RawDataList: Buffer += pack(PackStr, @@ -338,7 +336,7 @@ class DbComItemList (DbItemList): Offset = 0 if self.ItemSize == 0: # - # Variable length, need to calculte one by one + # Variable length, need to calculate one by one # The only variable table is stringtable, it is not Composite item, should not reach here # assert(False) @@ -365,7 +363,7 @@ class DbComItemList (DbItemList): def PackData(self): PackStr = PACK_CODE_BY_SIZE[self.ItemSize] - Buffer = '' + Buffer = bytearray() for DataList in self.RawDataList: for Data in DataList: if type(Data) in (list, tuple): @@ -386,7 +384,7 @@ class DbVariableTableItemList (DbComItemList): def PackData(self): PackStr = "=LLHHLHH" - Buffer = '' + Buffer = bytearray() for DataList in self.RawDataList: for Data in DataList: Buffer += pack(PackStr, @@ -447,7 +445,7 @@ class DbSkuHeadTableItemList (DbItemList): def PackData(self): PackStr = "=LL" - Buffer = '' + Buffer = bytearray() for Data in self.RawDataList: Buffer += pack(PackStr, GetIntegerValue(Data[0]), @@ -469,7 +467,7 @@ class DbSizeTableItemList (DbItemList): return length * self.ItemSize def PackData(self): PackStr = "=H" - Buffer = '' + Buffer = bytearray() for Data in self.RawDataList: Buffer += pack(PackStr, GetIntegerValue(Data[0])) @@ -611,7 +609,7 @@ def BuildExDataBase(Dict): DbVardefValueUint32 = DbItemList(4, RawDataList = VardefValueUint32) VpdHeadValue = Dict['VPD_DB_VALUE'] DbVpdHeadValue = DbComItemList(4, RawDataList = VpdHeadValue) - ExMapTable = zip(Dict['EXMAPPING_TABLE_EXTOKEN'], Dict['EXMAPPING_TABLE_LOCAL_TOKEN'], Dict['EXMAPPING_TABLE_GUID_INDEX']) + ExMapTable = list(zip(Dict['EXMAPPING_TABLE_EXTOKEN'], Dict['EXMAPPING_TABLE_LOCAL_TOKEN'], Dict['EXMAPPING_TABLE_GUID_INDEX'])) DbExMapTable = DbExMapTblItemList(8, RawDataList = ExMapTable) LocalTokenNumberTable = Dict['LOCAL_TOKEN_NUMBER_DB_VALUE'] DbLocalTokenNumberTable = DbItemList(4, RawDataList = LocalTokenNumberTable) @@ -627,7 +625,7 @@ def BuildExDataBase(Dict): Dict['STRING_TABLE_DB_VALUE'] = [StringArrayToList(x) for x in Dict['STRING_TABLE_VALUE']] StringTableValue = Dict['STRING_TABLE_DB_VALUE'] - # when calcute the offset, should use StringTableLen instead of StringTableValue, as string maxium len may be different with actual len + # when calcute the offset, should use StringTableLen instead of StringTableValue, as string maximum len may be different with actual len StringTableLen = Dict['STRING_TABLE_LENGTH'] DbStringTableLen = DbStringItemList(0, RawDataList = StringTableValue, LenList = StringTableLen) @@ -645,7 +643,7 @@ def BuildExDataBase(Dict): PcdNameOffsetTable = Dict['PCD_NAME_OFFSET'] DbPcdNameOffsetTable = DbItemList(4, RawDataList = PcdNameOffsetTable) - SizeTableValue = zip(Dict['SIZE_TABLE_MAXIMUM_LENGTH'], Dict['SIZE_TABLE_CURRENT_LENGTH']) + SizeTableValue = list(zip(Dict['SIZE_TABLE_MAXIMUM_LENGTH'], Dict['SIZE_TABLE_CURRENT_LENGTH'])) DbSizeTableValue = DbSizeTableItemList(2, RawDataList = SizeTableValue) InitValueUint16 = Dict['INIT_DB_VALUE_UINT16'] DbInitValueUint16 = DbComItemList(2, RawDataList = InitValueUint16) @@ -849,8 +847,9 @@ def BuildExDataBase(Dict): Index = 0 for Item in DbItemTotal: Index +=1 - b = Item.PackData() - Buffer += b + packdata = Item.PackData() + for i in range(len(packdata)): + Buffer += packdata[i:i + 1] if Index == InitTableNum: if len(Buffer) % 8: for num in range(8 - len(Buffer) % 8): @@ -917,9 +916,9 @@ def CreatePcdDataBase(PcdDBData): totallenbuff = pack("=L", totallen) newbuffer = databasebuff[:32] for i in range(4): - newbuffer += totallenbuff[i] + newbuffer += totallenbuff[i:i+1] for i in range(36, totallen): - newbuffer += databasebuff[i] + newbuffer += databasebuff[i:i+1] return newbuffer @@ -961,8 +960,8 @@ def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform, Phase): for skuname, skuid in DynamicPcdSet_Sku: AdditionalAutoGenH, AdditionalAutoGenC, PcdDbBuffer, VarCheckTab = CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdSet_Sku[(skuname, skuid)], Phase) final_data = () - for item in PcdDbBuffer: - final_data += unpack("B", item) + for item in range(len(PcdDbBuffer)): + final_data += unpack("B", PcdDbBuffer[item:item+1]) PcdDBData[(skuname, skuid)] = (PcdDbBuffer, final_data) PcdDriverAutoGenData[(skuname, skuid)] = (AdditionalAutoGenH, AdditionalAutoGenC) VarCheckTableData[(skuname, skuid)] = VarCheckTab @@ -974,8 +973,8 @@ def NewCreatePcdDatabasePhaseSpecificAutoGen(Platform, Phase): else: AdditionalAutoGenH, AdditionalAutoGenC, PcdDbBuffer, VarCheckTab = CreatePcdDatabasePhaseSpecificAutoGen (Platform, {}, Phase) final_data = () - for item in PcdDbBuffer: - final_data += unpack("B", item) + for item in range(len(PcdDbBuffer)): + final_data += unpack("B", PcdDbBuffer[item:item + 1]) PcdDBData[(TAB_DEFAULT, "0")] = (PcdDbBuffer, final_data) return AdditionalAutoGenH, AdditionalAutoGenC, CreatePcdDataBase(PcdDBData) @@ -1006,7 +1005,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, DynamicPcdList, Phase): 'SKUID_TABLE_EMPTY' : 'TRUE', 'DATABASE_EMPTY' : 'TRUE', 'EXMAP_TABLE_EMPTY' : 'TRUE', - 'PCD_DATABASE_UNINIT_EMPTY' : ' UINT8 dummy; /* PCD_DATABASE_UNINIT is emptry */', + 'PCD_DATABASE_UNINIT_EMPTY' : ' UINT8 dummy; /* PCD_DATABASE_UNINIT is empty */', 'SYSTEM_SKU_ID' : ' SKU_ID SystemSkuId;', 'SYSTEM_SKU_ID_VALUE' : '0U' }