From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D672D21E080FE for ; Thu, 19 Apr 2018 08:12:51 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Apr 2018 08:12:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,469,1517904000"; d="scan'208";a="44537434" Received: from jcarsey-desk1.amr.corp.intel.com ([10.7.159.144]) by orsmga003.jf.intel.com with ESMTP; 19 Apr 2018 08:12:51 -0700 From: Jaben Carsey To: edk2-devel@lists.01.org Cc: Liming Gao , Yonghong Zhu Date: Thu, 19 Apr 2018 08:12:44 -0700 Message-Id: X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: References: Subject: [PATCH v2 1/1] BaseTools: remove EdkIIWorkspace as its not used. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Apr 2018 15:12:52 -0000 v2 - update makefile too. Cc: Liming Gao Cc: Yonghong Zhu Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jaben Carsey --- BaseTools/Source/Python/Common/EdkIIWorkspace.py | 317 -------------------- BaseTools/Source/Python/Makefile | 1 - 2 files changed, 318 deletions(-) diff --git a/BaseTools/Source/Python/Common/EdkIIWorkspace.py b/BaseTools/Source/Python/Common/EdkIIWorkspace.py deleted file mode 100644 index d75b9f8025b3..000000000000 --- a/BaseTools/Source/Python/Common/EdkIIWorkspace.py +++ /dev/null @@ -1,317 +0,0 @@ -## @file -# This is the base class for applications that operate on an EDK II Workspace -# -# Copyright (c) 2007 - 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. -# - -## -# Import Modules -# -import Common.LongFilePathOs as os, sys, time -from DataType import * -from Common.LongFilePathSupport import OpenLongFilePath as open -from Common.MultipleWorkspace import MultipleWorkspace as mws - -## EdkIIWorkspace -# -# Collect WorkspaceDir from the environment, the Verbose command line flag, and detect an icon bitmap file. -# -# @var StartTime: Time of build system starting -# @var PrintRunTime: Printable time of build system running -# @var PrintRunStatus: Printable status of build system running -# @var RunStatus: Status of build system running -# -class EdkIIWorkspace: - def __init__(self): - self.StartTime = time.time() - self.PrintRunTime = False - self.PrintRunStatus = False - self.RunStatus = '' - - # - # Check environment valiable 'WORKSPACE' - # - if os.environ.get('WORKSPACE') is None: - print 'ERROR: WORKSPACE not defined. Please run EdkSetup from the EDK II install directory.' - return False - - self.CurrentWorkingDir = os.getcwd() - - self.WorkspaceDir = os.path.realpath(os.environ.get('WORKSPACE')) - (Drive, Path) = os.path.splitdrive(self.WorkspaceDir) - if Drive == '': - (Drive, CwdPath) = os.path.splitdrive(self.CurrentWorkingDir) - if Drive != '': - self.WorkspaceDir = Drive + Path - else: - self.WorkspaceDir = Drive.upper() + Path - - self.WorkspaceRelativeWorkingDir = self.WorkspaceRelativePath (self.CurrentWorkingDir) - - try: - # - # Load TianoCoreOrgLogo, used for GUI tool - # - self.Icon = wx.Icon(self.WorkspaceFile('tools/Python/TianoCoreOrgLogo.gif'), wx.BITMAP_TYPE_GIF) - except: - self.Icon = None - - self.Verbose = False - for Arg in sys.argv: - if Arg.lower() == '-v': - self.Verbose = True - - ## Close build system - # - # Close build system and print running time and status - # - def Close(self): - if self.PrintRunTime: - Seconds = int(time.time() - self.StartTime) - if Seconds < 60: - print 'Run Time: %d seconds' % (Seconds) - else: - Minutes = Seconds / 60 - Seconds = Seconds % 60 - if Minutes < 60: - print 'Run Time: %d minutes %d seconds' % (Minutes, Seconds) - else: - Hours = Minutes / 60 - Minutes = Minutes % 60 - print 'Run Time: %d hours %d minutes %d seconds' % (Hours, Minutes, Seconds) - if self.RunStatus != '': - print self.RunStatus - - ## Convert to a workspace relative filename - # - # Convert a full path filename to a workspace relative filename. - # - # @param FileName: The filename to be Converted - # - # @retval None Workspace dir is not found in the full path - # @retval string The relative filename - # - def WorkspaceRelativePath(self, FileName): - FileName = os.path.realpath(FileName) - if FileName.find(self.WorkspaceDir) != 0: - return None - return FileName.replace (self.WorkspaceDir, '').strip('\\').strip('/') - - ## Convert to a full path filename - # - # Convert a workspace relative filename to a full path filename. - # - # @param FileName: The filename to be Converted - # - # @retval string The full path filename - # - def WorkspaceFile(self, FileName): - return os.path.realpath(mws.join(self.WorkspaceDir,FileName)) - - ## Convert to a real path filename - # - # Convert ${WORKSPACE} to real path - # - # @param FileName: The filename to be Converted - # - # @retval string The full path filename - # - def WorkspacePathConvert(self, FileName): - return os.path.realpath(FileName.replace(TAB_WORKSPACE, self.WorkspaceDir)) - - ## Convert XML into a DOM - # - # Parse an XML file into a DOM and return the DOM. - # - # @param FileName: The filename to be parsed - # - # @retval XmlParseFile (self.WorkspaceFile(FileName)) - # - def XmlParseFile (self, FileName): - if self.Verbose: - print FileName - return XmlParseFile (self.WorkspaceFile(FileName)) - - ## Convert a XML section - # - # Parse a section of an XML file into a DOM(Document Object Model) and return the DOM. - # - # @param FileName: The filename to be parsed - # @param SectionTag: The tag name of the section to be parsed - # - # @retval XmlParseFileSection (self.WorkspaceFile(FileName), SectionTag) - # - def XmlParseFileSection (self, FileName, SectionTag): - if self.Verbose: - print FileName - return XmlParseFileSection (self.WorkspaceFile(FileName), SectionTag) - - ## Save a XML file - # - # Save a DOM(Document Object Model) into an XML file. - # - # @param Dom: The Dom to be saved - # @param FileName: The filename - # - # @retval XmlSaveFile (Dom, self.WorkspaceFile(FileName)) - # - def XmlSaveFile (self, Dom, FileName): - if self.Verbose: - print FileName - return XmlSaveFile (Dom, self.WorkspaceFile(FileName)) - - ## Convert Text File To Dictionary - # - # Convert a workspace relative text file to a dictionary of (name:value) pairs. - # - # @param FileName: Text filename - # @param Dictionary: Dictionary to store data - # @param CommentCharacter: Comment char, be used to ignore comment content - # @param KeySplitCharacter: Key split char, between key name and key value. Key1 = Value1, '=' is the key split char - # @param ValueSplitFlag: Value split flag, be used to decide if has multiple values - # @param ValueSplitCharacter: Value split char, be used to split multiple values. Key1 = Value1|Value2, '|' is the value split char - # - # @retval ConvertTextFileToDictionary(self.WorkspaceFile(FileName), Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter) - # - def ConvertTextFileToDictionary(self, FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter): - if self.Verbose: - print FileName - return ConvertTextFileToDictionary(self.WorkspaceFile(FileName), Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter) - - ## Convert Dictionary To Text File - # - # Convert a dictionary of (name:value) pairs to a workspace relative text file. - # - # @param FileName: Text filename - # @param Dictionary: Dictionary to store data - # @param CommentCharacter: Comment char, be used to ignore comment content - # @param KeySplitCharacter: Key split char, between key name and key value. Key1 = Value1, '=' is the key split char - # @param ValueSplitFlag: Value split flag, be used to decide if has multiple values - # @param ValueSplitCharacter: Value split char, be used to split multiple values. Key1 = Value1|Value2, '|' is the value split char - # - # @retval ConvertDictionaryToTextFile(self.WorkspaceFile(FileName), Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter) - # - def ConvertDictionaryToTextFile(self, FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter): - if self.Verbose: - print FileName - return ConvertDictionaryToTextFile(self.WorkspaceFile(FileName), Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter) - -## Convert Text File To Dictionary -# -# Convert a text file to a dictionary of (name:value) pairs. -# -# @param FileName: Text filename -# @param Dictionary: Dictionary to store data -# @param CommentCharacter: Comment char, be used to ignore comment content -# @param KeySplitCharacter: Key split char, between key name and key value. Key1 = Value1, '=' is the key split char -# @param ValueSplitFlag: Value split flag, be used to decide if has multiple values -# @param ValueSplitCharacter: Value split char, be used to split multiple values. Key1 = Value1|Value2, '|' is the value split char -# -# @retval True Convert successfully -# @retval False Open file failed -# -def ConvertTextFileToDictionary(FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter): - try: - F = open(FileName, 'r') - except: - return False - Keys = [] - for Line in F: - LineList = Line.split(KeySplitCharacter, 1) - if len(LineList) >= 2: - Key = LineList[0].split() - if len(Key) == 1 and Key[0][0] != CommentCharacter and Key[0] not in Keys: - if ValueSplitFlag: - Dictionary[Key[0]] = LineList[1].replace('\\', '/').split(ValueSplitCharacter) - else: - Dictionary[Key[0]] = LineList[1].strip().replace('\\', '/') - Keys += [Key[0]] - F.close() - return True - -## Convert Dictionary To Text File -# -# Convert a dictionary of (name:value) pairs to a text file. -# -# @param FileName: Text filename -# @param Dictionary: Dictionary to store data -# @param CommentCharacter: Comment char, be used to ignore comment content -# @param KeySplitCharacter: Key split char, between key name and key value. Key1 = Value1, '=' is the key split char -# @param ValueSplitFlag: Value split flag, be used to decide if has multiple values -# @param ValueSplitCharacter: Value split char, be used to split multiple values. Key1 = Value1|Value2, '|' is the value split char -# -# @retval True Convert successfully -# @retval False Open file failed -# -def ConvertDictionaryToTextFile(FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter): - try: - F = open(FileName, 'r') - Lines = [] - Lines = F.readlines() - F.close() - except: - Lines = [] - Keys = Dictionary.keys() - MaxLength = max(map(len,Keys)) - Index = 0 - for Line in Lines: - LineList = Line.split(KeySplitCharacter, 1) - if len(LineList) >= 2: - Key = LineList[0].split() - if len(Key) == 1 and Key[0][0] != CommentCharacter and Key[0] in Dictionary: - if ValueSplitFlag: - Line = '%-*s %c %s\n' % (MaxLength, Key[0], KeySplitCharacter, ' '.join(Dictionary[Key[0]])) - else: - Line = '%-*s %c %s\n' % (MaxLength, Key[0], KeySplitCharacter, Dictionary[Key[0]]) - Lines.pop(Index) - if Key[0] in Keys: - Lines.insert(Index, Line) - Keys.remove(Key[0]) - Index += 1 - for RemainingKey in Keys: - if ValueSplitFlag: - Line = '%-*s %c %s\n' % (MaxLength, RemainingKey, KeySplitCharacter, ' '.join(Dictionary[RemainingKey])) - else: - Line = '%-*s %c %s\n' % (MaxLength, RemainingKey, KeySplitCharacter, Dictionary[RemainingKey]) - Lines.append(Line) - try: - F = open(FileName, 'w') - except: - return False - F.writelines(Lines) - F.close() - return True - -## Create a new directory -# -# @param Directory: Directory to be created -# -def CreateDirectory(Directory): - if not os.access(Directory, os.F_OK): - os.makedirs (Directory) - -## Create a new file -# -# @param Directory: Directory to be created -# @param FileName: Filename to be created -# @param Mode: The mode of open file, defautl is 'w' -# -def CreateFile(Directory, FileName, Mode='w'): - CreateDirectory (Directory) - return open(os.path.join(Directory, FileName), Mode) - -## -# -# This acts like the main() function for the script, unless it is 'import'ed into another -# script. -# -if __name__ == '__main__': - # Nothing to do here. Could do some unit tests - pass \ No newline at end of file diff --git a/BaseTools/Source/Python/Makefile b/BaseTools/Source/Python/Makefile index a51207d3d831..4fda6d7e0c84 100644 --- a/BaseTools/Source/Python/Makefile +++ b/BaseTools/Source/Python/Makefile @@ -37,7 +37,6 @@ APPLICATIONS=$(BIN_DIR)\build.exe $(BIN_DIR)\GenFds.exe $(BIN_DIR)\Trim.exe $(BI COMMON_PYTHON=$(BASE_TOOLS_PATH)\Source\Python\Common\BuildToolError.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\Database.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\DataType.py \ - $(BASE_TOOLS_PATH)\Source\Python\Common\EdkIIWorkspace.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\EdkLogger.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\Expression.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\GlobalData.py \ -- 2.16.2.windows.1