##\r
# Import Modules\r
#\r
+from __future__ import absolute_import\r
import Common.LongFilePathOs as os\r
import re\r
-import EdkLogger\r
+from . import EdkLogger\r
\r
-from BuildToolError import *\r
-from TargetTxtClassObject import *\r
+from .BuildToolError import *\r
+from .TargetTxtClassObject import *\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
from Common.Misc import PathClass\r
-from Common.String import NormPath\r
+from Common.StringUtils import NormPath\r
import Common.GlobalData as GlobalData\r
from Common import GlobalData\r
from Common.MultipleWorkspace import MultipleWorkspace as mws\r
-from DataType import TAB_TOD_DEFINES_TARGET,TAB_TOD_DEFINES_TOOL_CHAIN_TAG,\\r
- TAB_TOD_DEFINES_TARGET_ARCH,TAB_TOD_DEFINES_COMMAND_TYPE\\r
- ,TAB_TOD_DEFINES_FAMILY,TAB_TOD_DEFINES_BUILDRULEFAMILY\r
+from .DataType import TAB_TOD_DEFINES_TARGET, TAB_TOD_DEFINES_TOOL_CHAIN_TAG,\\r
+ TAB_TOD_DEFINES_TARGET_ARCH, TAB_TOD_DEFINES_COMMAND_TYPE\\r
+ , TAB_TOD_DEFINES_FAMILY, TAB_TOD_DEFINES_BUILDRULEFAMILY\r
\r
\r
##\r
\r
KeyList = [TAB_TOD_DEFINES_TARGET, TAB_TOD_DEFINES_TOOL_CHAIN_TAG, TAB_TOD_DEFINES_TARGET_ARCH, TAB_TOD_DEFINES_COMMAND_TYPE]\r
for Index in range(3, -1, -1):\r
- for Key in dict(self.ToolsDefTxtDictionary):\r
+ # make a copy of the keys to enumerate over to prevent issues when\r
+ # adding/removing items from the original dict.\r
+ for Key in list(self.ToolsDefTxtDictionary.keys()):\r
List = Key.split('_')\r
if List[Index] == '*':\r
for String in self.ToolsDefTxtDatabase[KeyList[Index]]:\r
NewKey = '%s_%s_%s_%s_%s' % tuple(List)\r
if NewKey not in self.ToolsDefTxtDictionary:\r
self.ToolsDefTxtDictionary[NewKey] = self.ToolsDefTxtDictionary[Key]\r
- continue\r
del self.ToolsDefTxtDictionary[Key]\r
elif List[Index] not in self.ToolsDefTxtDatabase[KeyList[Index]]:\r
del self.ToolsDefTxtDictionary[Key]\r
if ErrorCode != 0:\r
EdkLogger.error("tools_def.txt parser", FILE_NOT_FOUND, ExtraData=IncFile)\r
\r
- if type(IncFileTmp) is PathClass:\r
+ if isinstance(IncFileTmp, PathClass):\r
IncFile = IncFileTmp.Path\r
else:\r
IncFile = IncFileTmp\r