# This class is used to retrieve information stored in database and convert them\r
# into PlatformBuildClassObject form for easier use for AutoGen.\r
#\r
-from __future__ import print_function\r
-from __future__ import absolute_import\r
from Common.StringUtils import *\r
from Common.DataType import *\r
from Common.Misc import *\r
\r
if len(FileContent) == 0:\r
continue\r
-\r
+ IncludedFileList = []\r
if FileContent[0] == 0xff or FileContent[0] == 0xfe:\r
- FileContent = unicode(FileContent, "utf-16")\r
+ FileContent = str(FileContent, "utf-16")\r
+ IncludedFileList = gIncludePattern.findall(FileContent)\r
+ else:\r
+ try:\r
+ FileContent = str(FileContent, "utf-8")\r
+ IncludedFileList = gIncludePattern.findall(FileContent)\r
+ except:\r
+ pass\r
IncludedFileList = gIncludePattern.findall(FileContent)\r
\r
for Inc in IncludedFileList:\r
EdkLogger.error('build', FORMAT_INVALID, ErrStr, File=self.MetaFile, Line=LineNo,\r
ExtraData="%s.%s" % (TokenSpaceGuid, PcdCName))\r
if PcdType in (MODEL_PCD_DYNAMIC_DEFAULT, MODEL_PCD_DYNAMIC_EX_DEFAULT, MODEL_PCD_FIXED_AT_BUILD, MODEL_PCD_PATCHABLE_IN_MODULE):\r
- if self._DecPcds[PcdCName, TokenSpaceGuid].DatumType.strip() != ValueList[1].strip():\r
+ if self._DecPcds[PcdCName, TokenSpaceGuid].DatumType.strip() in TAB_PCD_NUMERIC_TYPES_VOID \\r
+ and self._DecPcds[PcdCName, TokenSpaceGuid].DatumType.strip() != ValueList[1].strip():\r
EdkLogger.error('build', FORMAT_INVALID, "Pcd datumtype used in DSC file is not the same as its declaration in DEC file.", File=self.MetaFile, Line=LineNo,\r
ExtraData="%s.%s|%s" % (TokenSpaceGuid, PcdCName, Setting))\r
if (TokenSpaceGuid + '.' + PcdCName) in GlobalData.gPlatformPcds:\r
if len(commpcds[0]) == 5:\r
return True\r
return False\r
-\r
+ NoFiledValues = OrderedDict()\r
if CheckStructureInComm(GlobalData.BuildOptionPcd):\r
- StructurePcdInCom = {(item[0], item[1], item[2] ):(item[3], item[4]) for item in GlobalData.BuildOptionPcd } if GlobalData.BuildOptionPcd else {}\r
- NoFiledValues = {(item[0], item[1]):StructurePcdInCom[item] for item in StructurePcdInCom if not item[2]}\r
+ StructurePcdInCom = OrderedDict()\r
+ for item in GlobalData.BuildOptionPcd:\r
+ StructurePcdInCom[(item[0], item[1], item[2] )] = (item[3], item[4])\r
+ for item in StructurePcdInCom:\r
+ if not item[2]:\r
+ NoFiledValues[(item[0], item[1])] = StructurePcdInCom[item]\r
else:\r
- NoFiledValues = {(item[0], item[1]):[item[2]] for item in GlobalData.BuildOptionPcd}\r
+ for item in GlobalData.BuildOptionPcd:\r
+ NoFiledValues[(item[0], item[1])] = [item[2]]\r
for Guid, Name in NoFiledValues:\r
if (Name, Guid) in AllPcds:\r
Pcd = AllPcds.get((Name, Guid))\r
\r
str_pcd_obj.MaxDatumSize = self.GetStructurePcdMaxSize(str_pcd_obj)\r
Pcds[str_pcd_obj.TokenCName, str_pcd_obj.TokenSpaceGuidCName] = str_pcd_obj\r
+ Pcds[str_pcd_obj.TokenCName, str_pcd_obj.TokenSpaceGuidCName].CustomAttribute['IsStru']=True\r
\r
for pcdkey in Pcds:\r
pcd = Pcds[pcdkey]\r
elif TAB_DEFAULT in pcd.SkuInfoList and TAB_COMMON in pcd.SkuInfoList:\r
del pcd.SkuInfoList[TAB_COMMON]\r
\r
- map(self.FilterSkuSettings, [Pcds[pcdkey] for pcdkey in Pcds if Pcds[pcdkey].Type in DynamicPcdType])\r
+ list(map(self.FilterSkuSettings, [Pcds[pcdkey] for pcdkey in Pcds if Pcds[pcdkey].Type in DynamicPcdType]))\r
return Pcds\r
\r
## Retrieve non-dynamic PCD settings\r
else:\r
PcdValueDict[PcdCName, TokenSpaceGuid] = {SkuName:(PcdValue, DatumType, MaxDatumSize)}\r
\r
- for ((PcdCName, TokenSpaceGuid), PcdSetting) in PcdValueDict.iteritems():\r
+ for ((PcdCName, TokenSpaceGuid), PcdSetting) in PcdValueDict.items():\r
if self.SkuIdMgr.SystemSkuId in PcdSetting:\r
PcdValue, DatumType, MaxDatumSize = PcdSetting[self.SkuIdMgr.SystemSkuId]\r
elif TAB_DEFAULT in PcdSetting:\r
except:\r
EdkLogger.error('Build', COMMAND_FAILURE, 'Can not execute command: %s' % Command)\r
Result = Process.communicate()\r
- return Process.returncode, Result[0], Result[1]\r
+ return Process.returncode, Result[0].decode(encoding='utf-8', errors='ignore'), Result[1].decode(encoding='utf-8', errors='ignore')\r
\r
@staticmethod\r
def IntToCString(Value, ValueSize):\r
'include $(MAKEROOT)/Makefiles/app.makefile\n' + 'INCLUDE +='\r
\r
IncSearchList = []\r
- PlatformInc = {}\r
+ PlatformInc = OrderedDict()\r
for Cache in self._Bdb._CACHE_.values():\r
if Cache.MetaFile.Ext.lower() != '.dec':\r
continue\r
CC_FLAGS = LinuxCFLAGS\r
if sys.platform == "win32":\r
CC_FLAGS = WindowsCFLAGS\r
- BuildOptions = {}\r
+ BuildOptions = OrderedDict()\r
for Options in self.BuildOptions:\r
if Options[2] != EDKII_NAME:\r
continue\r
if Tag == "*" or Tag == self._Toolchain:\r
if Arch == "*" or Arch == self.Arch:\r
if Tool not in BuildOptions:\r
- BuildOptions[Tool] = {}\r
+ BuildOptions[Tool] = OrderedDict()\r
if Attr != "FLAGS" or Attr not in BuildOptions[Tool] or self.BuildOptions[Options].startswith('='):\r
BuildOptions[Tool][Attr] = self.BuildOptions[Options]\r
else:\r
PcdValue,\r
'',\r
MaxDatumSize,\r
- {SkuName : SkuInfo},\r
+ OrderedDict({SkuName : SkuInfo}),\r
False,\r
None,\r
IsDsc=True)\r
elif TAB_DEFAULT in pcd.SkuInfoList and TAB_COMMON in pcd.SkuInfoList:\r
del pcd.SkuInfoList[TAB_COMMON]\r
\r
- map(self.FilterSkuSettings, Pcds.values())\r
+ list(map(self.FilterSkuSettings, Pcds.values()))\r
\r
return Pcds\r
\r
return False\r
\r
def CompletePcdValues(self, PcdSet):\r
- Pcds = {}\r
+ Pcds = OrderedDict()\r
DefaultStoreObj = DefaultStore(self._GetDefaultStores())\r
SkuIds = {skuname:skuid for skuname, skuid in self.SkuIdMgr.AvailableSkuIdSet.items() if skuname != TAB_COMMON}\r
DefaultStores = set(storename for pcdobj in PcdSet.values() for skuobj in pcdobj.SkuInfoList.values() for storename in skuobj.DefaultStoreDict)\r
PcdObj.SkuInfoList[skuname].SkuId = skuid\r
PcdObj.SkuInfoList[skuname].SkuIdName = skuname\r
if PcdType in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
- PcdObj.DefaultValue = PcdObj.SkuInfoList.values()[0].HiiDefaultValue if self.SkuIdMgr.SkuUsageType == self.SkuIdMgr.SINGLE else PcdObj.SkuInfoList[TAB_DEFAULT].HiiDefaultValue\r
+ PcdObj.DefaultValue = list(PcdObj.SkuInfoList.values())[0].HiiDefaultValue if self.SkuIdMgr.SkuUsageType == self.SkuIdMgr.SINGLE else PcdObj.SkuInfoList[TAB_DEFAULT].HiiDefaultValue\r
Pcds[PcdCName, TokenSpaceGuid]= PcdObj\r
return Pcds\r
## Retrieve dynamic HII PCD settings\r
DefaultValue,\r
'',\r
'',\r
- {SkuName : SkuInfo},\r
+ OrderedDict({SkuName : SkuInfo}),\r
False,\r
None,\r
pcdDecObject.validateranges,\r
PcdClassObj.UserDefinedDefaultStoresFlag = True\r
Pcds[PcdCName, TokenSpaceGuid] = PcdClassObj\r
\r
+ Pcds[PcdCName, TokenSpaceGuid].CustomAttribute['DscPosition'] = int(Dummy4)\r
if SkuName not in Pcds[PcdCName, TokenSpaceGuid].DscRawValue:\r
Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName] = {}\r
Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName][DefaultStore] = DefaultValue\r
for pcd in Pcds.values():\r
- SkuInfoObj = pcd.SkuInfoList.values()[0]\r
+ SkuInfoObj = list(pcd.SkuInfoList.values())[0]\r
pcdDecObject = self._DecPcds[pcd.TokenCName, pcd.TokenSpaceGuidCName]\r
pcd.DatumType = pcdDecObject.DatumType\r
# Only fix the value while no value provided in DSC file.\r
invalidpcd = ",".join(invalidhii)\r
EdkLogger.error('build', PCD_VARIABLE_INFO_ERROR, Message='The same HII PCD must map to the same EFI variable for all SKUs', File=self.MetaFile, ExtraData=invalidpcd)\r
\r
- map(self.FilterSkuSettings, Pcds.values())\r
+ list(map(self.FilterSkuSettings, Pcds.values()))\r
\r
return Pcds\r
\r
InitialValue,\r
'',\r
MaxDatumSize,\r
- {SkuName : SkuInfo},\r
+ OrderedDict({SkuName : SkuInfo}),\r
False,\r
None,\r
IsDsc=True)\r
Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName] = {}\r
Pcds[PcdCName, TokenSpaceGuid].DscRawValue[SkuName][TAB_DEFAULT_STORES_DEFAULT] = InitialValue\r
for pcd in Pcds.values():\r
- SkuInfoObj = pcd.SkuInfoList.values()[0]\r
+ SkuInfoObj = list(pcd.SkuInfoList.values())[0]\r
pcdDecObject = self._DecPcds[pcd.TokenCName, pcd.TokenSpaceGuidCName]\r
pcd.DatumType = pcdDecObject.DatumType\r
# Only fix the value while no value provided in DSC file.\r
del pcd.SkuInfoList[TAB_COMMON]\r
\r
\r
- map(self.FilterSkuSettings, Pcds.values())\r
+ list(map(self.FilterSkuSettings, Pcds.values()))\r
return Pcds\r
\r
## Add external modules\r