# Convert a text file to a dictionary\r
#\r
def ConvertTextFileToDictionary(FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter):\r
- """Convert a text file to a dictionary of (name:value) pairs."""\r
- try:\r
- f = open(FileName,'r')\r
- except:\r
- EdkLogger.error('Open file failed')\r
- return False\r
- Keys = []\r
- for Line in f:\r
- if Line.startswith(CommentCharacter):\r
- continue\r
- LineList = Line.split(KeySplitCharacter,1)\r
- if len(LineList) >= 2:\r
- Key = LineList[0].split()\r
- if len(Key) == 1 and Key[0][0] != CommentCharacter and Key[0] not in Keys:\r
- if ValueSplitFlag:\r
- Dictionary[Key[0]] = LineList[1].replace('\\','/').split(ValueSplitCharacter)\r
- else:\r
- Dictionary[Key[0]] = LineList[1].strip().replace('\\','/')\r
- Keys += [Key[0]]\r
- f.close()\r
- return True\r
+ """Convert a text file to a dictionary of (name:value) pairs."""\r
+ try:\r
+ f = open(FileName,'r')\r
+ except:\r
+ EdkLogger.error('Open file ' + FileName + ' failed')\r
+ return False\r
+ Keys = []\r
+ for Line in f:\r
+ if Line.startswith(CommentCharacter):\r
+ continue\r
+ LineList = Line.split(KeySplitCharacter,1)\r
+ if len(LineList) >= 2:\r
+ Key = LineList[0].split()\r
+ if len(Key) == 1 and Key[0][0] != CommentCharacter and Key[0] not in Keys:\r
+ if ValueSplitFlag:\r
+ Dictionary[Key[0]] = LineList[1].replace('\\','/').split(ValueSplitCharacter)\r
+ else:\r
+ Dictionary[Key[0]] = LineList[1].strip().replace('\\','/')\r
+ Keys += [Key[0]]\r
+ f.close()\r
+ return True\r
\r
def printDict(dict):\r
- if dict != None:\r
- KeyList = dict.keys()\r
- for Key in KeyList:\r
- if dict[Key] != '':\r
- print Key + ' = ' + str(dict[Key])\r
+ if dict != None:\r
+ KeyList = dict.keys()\r
+ for Key in KeyList:\r
+ if dict[Key] != '':\r
+ print Key + ' = ' + str(dict[Key])\r
\r
def printList(key, list):\r
- if type(list) == type([]):\r
- if len(list) > 0:\r
- if key.find(TAB_SPLIT) != -1:\r
- print "\n" + key\r
- for i in list:\r
- print i\r
- \r
- \r
+ if type(list) == type([]):\r
+ if len(list) > 0:\r
+ if key.find(TAB_SPLIT) != -1:\r
+ print "\n" + key\r
+ for i in list:\r
+ print i\r
for key in DataType.ARCH_LIST:\r
self.Build[key] = ItemBuild(key)\r
\r
- self.TargetTxt.LoadTargetTxtFile(self.Workspace.WorkspaceFile('Conf/target.txt'))\r
- self.ToolDef.LoadToolDefFile(self.Workspace.WorkspaceFile('Conf/tools_def.txt'))\r
+ self.TargetTxt.LoadTargetTxtFile(self.Workspace.WorkspaceFile('Tools/Conf/target.txt'))\r
+ self.ToolDef.LoadToolDefFile(self.Workspace.WorkspaceFile('Tools/Conf/tools_def.txt'))\r
\r
if ActivePlatform != None:\r
self.TargetTxt.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM][0] = ActivePlatform\r
# Copyright (c) 2007, Intel Corporation\r
# All rights reserved. This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution. The full text of the license may be found at\r
+# which accompanies this distribution. The full text of the license may be found at\r
# http://opensource.org/licenses/bsd-license.php\r
#\r
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
#\r
#This file is used to define each component of Target.txt file\r
#\r
+import os\r
import EdkLogger\r
import DataType\r
from Dictionary import *\r
\r
\r
class TargetTxtClassObject(object):\r
- def __init__(self, filename = None):\r
- self.TargetTxtDictionary = {\r
- DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM : [''],\r
- DataType.TAB_TAT_DEFINES_ACTIVE_MODULE : [''],\r
- DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF : [''],\r
- DataType.TAB_TAT_DEFINES_MULTIPLE_THREAD : ['Disable'],\r
- DataType.TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER : ['2'],\r
- DataType.TAB_TAT_DEFINES_TARGET : [''],\r
- DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG : [''],\r
- DataType.TAB_TAT_DEFINES_TARGET_ARCH : ['']\r
- }\r
- if filename != None:\r
- self.LoadTargetTxtFile(filename)\r
+ def __init__(self, filename = None):\r
+ self.TargetTxtDictionary = {\r
+ DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM : [''],\r
+ DataType.TAB_TAT_DEFINES_ACTIVE_MODULE : [''],\r
+ DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF : [''],\r
+ DataType.TAB_TAT_DEFINES_MULTIPLE_THREAD : ['Disable'],\r
+ DataType.TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER : ['2'],\r
+ DataType.TAB_TAT_DEFINES_TARGET : [''],\r
+ DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG : [''],\r
+ DataType.TAB_TAT_DEFINES_TARGET_ARCH : ['']\r
+ }\r
+ if filename != None:\r
+ self.LoadTargetTxtFile(filename)\r
\r
- def LoadTargetTxtFile(self, filename):\r
- #EdkLogger.info('LoadTargetTxtFile() Start')\r
- if filename != None:\r
- ConvertTextFileToDictionary(filename, self.TargetTxtDictionary, '#', '=', True, None)\r
- if self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM] == []:\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM] = ['']\r
- else:\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM] = [self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM][0]]\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF] = [self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF][0]]\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MULTIPLE_THREAD] = [self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MULTIPLE_THREAD][0]]\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER] = [self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER][0]]\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET] = list(set(self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET]))\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG] = list(set(self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG]))\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH] = list(set(self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH]))\r
- if self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET] == []:\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET] = ['']\r
- if self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG] == []:\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG] = ['']\r
- if self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH] == []:\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH] = ['']\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET].sort()\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG].sort()\r
- self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH].sort()\r
- \r
- #EdkLogger.info('LoadTargetTxtFile() End')\r
- else:\r
- EdkLogger.error('LoadTargetTxtFile() : No Target.txt file exist')\r
+ def LoadTargetTxtFile(self, filename):\r
+ #EdkLogger.info('LoadTargetTxtFile() Start')\r
+ if os.path.exists(filename) and os.path.isfile(filename):\r
+ ConvertTextFileToDictionary(filename, self.TargetTxtDictionary, '#', '=', True, None)\r
+ if self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM] == []:\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM] = ['']\r
+ else:\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM] = [self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_ACTIVE_PLATFORM][0]]\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF] = [self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF][0]]\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MULTIPLE_THREAD] = [self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MULTIPLE_THREAD][0]]\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER] = [self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER][0]]\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET] = list(set(self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET]))\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG] = list(set(self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG]))\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH] = list(set(self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH]))\r
+ if self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET] == []:\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET] = ['']\r
+ if self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG] == []:\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG] = ['']\r
+ if self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH] == []:\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH] = ['']\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET].sort()\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_TAG].sort()\r
+ self.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TARGET_ARCH].sort()\r
+ \r
+ #EdkLogger.info('LoadTargetTxtFile() End')\r
+ else:\r
+ EdkLogger.error('LoadTargetTxtFile() : No Target.txt file exist')\r
\r
if __name__ == '__main__':\r
- pass
\ No newline at end of file
+ pass
\ No newline at end of file
# Copyright (c) 2007, Intel Corporation\r
# All rights reserved. This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution. The full text of the license may be found at\r
+# which accompanies this distribution. The full text of the license may be found at\r
# http://opensource.org/licenses/bsd-license.php\r
#\r
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
#This file is used to define each component of tools_def.txt file\r
#\r
\r
+import os\r
import EdkLogger\r
from Dictionary import *\r
\r
class ToolDefClassObject(object):\r
- def __init__(self, filename = None):\r
- self.ToolsDefTxtDictionary = {}\r
- \r
- self.ToolsDefTxtDatabase = {\r
- TAB_TOD_DEFINES_TARGET : [],\r
- TAB_TOD_DEFINES_TOOL_CHAIN_TAG : [],\r
- TAB_TOD_DEFINES_TARGET_ARCH : [],\r
- TAB_TOD_DEFINES_COMMAND_TYPE : []\r
- }\r
- if filename != None:\r
- self.LoadToolDefFile(filename)\r
+ def __init__(self, filename = None):\r
+ self.ToolsDefTxtDictionary = {}\r
+ \r
+ self.ToolsDefTxtDatabase = {\r
+ TAB_TOD_DEFINES_TARGET : [],\r
+ TAB_TOD_DEFINES_TOOL_CHAIN_TAG : [],\r
+ TAB_TOD_DEFINES_TARGET_ARCH : [],\r
+ TAB_TOD_DEFINES_COMMAND_TYPE : []\r
+ }\r
+ if filename != None:\r
+ self.LoadToolDefFile(filename)\r
\r
- def LoadToolDefFile(self, filename):\r
- #EdkLogger.info('LoadToolDefFile() Start')\r
- if filename != None:\r
- ConvertTextFileToDictionary(filename, self.ToolsDefTxtDictionary, '#', '=', False, None)\r
+ def LoadToolDefFile(self, filename):\r
+ #EdkLogger.info('LoadToolDefFile() Start')\r
+ if os.path.exists(filename) and os.path.isfile(filename):\r
+ ConvertTextFileToDictionary(filename, self.ToolsDefTxtDictionary, '#', '=', False, None)\r
+ else:\r
+ EdkLogger.error('LoadTargetTxtFile() : No Target.txt file exist') \r
+ \r
+ self.ToolsDefTxtDatabase = {\r
+ TAB_TOD_DEFINES_TARGET : [],\r
+ TAB_TOD_DEFINES_TOOL_CHAIN_TAG : [],\r
+ TAB_TOD_DEFINES_TARGET_ARCH : [],\r
+ TAB_TOD_DEFINES_COMMAND_TYPE : []\r
+ }\r
\r
- self.ToolsDefTxtDatabase = {\r
- TAB_TOD_DEFINES_TARGET : [],\r
- TAB_TOD_DEFINES_TOOL_CHAIN_TAG : [],\r
- TAB_TOD_DEFINES_TARGET_ARCH : [],\r
- TAB_TOD_DEFINES_COMMAND_TYPE : []\r
- }\r
+ for Key in dict(self.ToolsDefTxtDictionary):\r
+ List = Key.split('_')\r
+ if len(List) != 5:\r
+ del self.ToolsDefTxtDictionary[Key]\r
+ elif List[4] == '*':\r
+ del self.ToolsDefTxtDictionary[Key]\r
+ else:\r
+ if List[0] != '*':\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET] += [List[0]]\r
+ if List[1] != '*':\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG] += [List[1]]\r
+ if List[2] != '*':\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH] += [List[2]]\r
+ if List[3] != '*':\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE] += [List[3]]\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET] = list(set(self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET]))\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG] = list(set(self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG]))\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH] = list(set(self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH]))\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE] = list(set(self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE]))\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET].sort()\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG].sort()\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH].sort()\r
+ self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE].sort()\r
\r
- for Key in dict(self.ToolsDefTxtDictionary):\r
- List = Key.split('_')\r
- if len(List) != 5:\r
- del self.ToolsDefTxtDictionary[Key]\r
- elif List[4] == '*':\r
- del self.ToolsDefTxtDictionary[Key]\r
- else:\r
- if List[0] != '*':\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET] += [List[0]]\r
- if List[1] != '*':\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG] += [List[1]]\r
- if List[2] != '*':\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH] += [List[2]]\r
- if List[3] != '*':\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE] += [List[3]]\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET] = list(set(self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET]))\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG] = list(set(self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG]))\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH] = list(set(self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH]))\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE] = list(set(self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE]))\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET].sort()\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TOOL_CHAIN_TAG].sort()\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_TARGET_ARCH].sort()\r
- self.ToolsDefTxtDatabase[TAB_TOD_DEFINES_COMMAND_TYPE].sort()\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
- List = Key.split('_')\r
- if List[Index] == '*':\r
- for String in self.ToolsDefTxtDatabase[KeyList[Index]]:\r
- List[Index] = String\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
- \r
- #EdkLogger.info('LoadToolDefFile() End')\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
+ List = Key.split('_')\r
+ if List[Index] == '*':\r
+ for String in self.ToolsDefTxtDatabase[KeyList[Index]]:\r
+ List[Index] = String\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
+ \r
+ #EdkLogger.info('LoadToolDefFile() End')\r
+ \r
if __name__ == '__main__':\r
- td = ToolDefClassObject('tool_def.txt')\r
- print td.ToolsDefTxtDatabase
\ No newline at end of file
+ td = ToolDefClassObject('tool_def.txt')\r
+ print td.ToolsDefTxtDatabase
\ No newline at end of file