X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FPython%2FGenFds%2FGenFds.py;h=c0b60b9b3c1fdfb0139d1a583dedecf58ec4370e;hp=339b9986736907b52fa9c7b297f6da2642c01bb2;hb=bfa65b61dde887a9586e070101202bd37e3221fd;hpb=5a57246eab80f00ae2481970d12a2abc345a2730 diff --git a/BaseTools/Source/Python/GenFds/GenFds.py b/BaseTools/Source/Python/GenFds/GenFds.py index 339b998673..c0b60b9b3c 100644 --- a/BaseTools/Source/Python/GenFds/GenFds.py +++ b/BaseTools/Source/Python/GenFds/GenFds.py @@ -15,18 +15,20 @@ ## # Import Modules # +from __future__ import print_function +from __future__ import absolute_import from optparse import OptionParser import sys import Common.LongFilePathOs as os import linecache -import FdfParser +from . import FdfParser import Common.BuildToolError as BuildToolError -from GenFdsGlobalVariable import GenFdsGlobalVariable +from .GenFdsGlobalVariable import GenFdsGlobalVariable from Workspace.WorkspaceDatabase import WorkspaceDatabase from Workspace.BuildClassObject import PcdClassObject -import RuleComplexFile -from EfiSection import EfiSection -import StringIO +from . import RuleComplexFile +from .EfiSection import EfiSection +from io import BytesIO import Common.TargetTxtClassObject as TargetTxtClassObject import Common.ToolDefClassObject as ToolDefClassObject from Common.DataType import * @@ -39,14 +41,14 @@ from Common.Misc import ClearDuplicatedInf from Common.Misc import GuidStructureStringToGuidString from Common.BuildVersion import gBUILD_VERSION from Common.MultipleWorkspace import MultipleWorkspace as mws -import FfsFileStatement +from . import FfsFileStatement import glob from struct import unpack ## Version and Copyright versionNumber = "1.0" + ' ' + gBUILD_VERSION __version__ = "%prog Version " + versionNumber -__copyright__ = "Copyright (c) 2007 - 2017, Intel Corporation All rights reserved." +__copyright__ = "Copyright (c) 2007 - 2018, Intel Corporation All rights reserved." ## Tool entrance method # @@ -71,10 +73,10 @@ def main(): if Options.verbose is not None: EdkLogger.SetLevel(EdkLogger.VERBOSE) GenFdsGlobalVariable.VerboseMode = True - + if Options.FixedAddress is not None: GenFdsGlobalVariable.FixedLoadAddress = True - + if Options.quiet is not None: EdkLogger.SetLevel(EdkLogger.QUIET) if Options.debug is not None: @@ -99,7 +101,7 @@ def main(): if Options.GenfdsMultiThread: GenFdsGlobalVariable.EnableGenfdsMultiThread = True os.chdir(GenFdsGlobalVariable.WorkSpaceDir) - + # set multiple workspace PackagesPath = os.getenv("PACKAGES_PATH") mws.setWs(GenFdsGlobalVariable.WorkSpaceDir, PackagesPath) @@ -227,7 +229,7 @@ def main(): GlobalData.gDatabasePath = os.path.normpath(os.path.join(ConfDirectoryPath, GlobalData.gDatabasePath)) BuildWorkSpace = WorkspaceDatabase(GlobalData.gDatabasePath) BuildWorkSpace.InitDatabase() - + # # Get files real name in workspace dir # @@ -243,7 +245,7 @@ def main(): TargetArchList = set(BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, TAB_COMMON, Options.BuildTarget, Options.ToolChain].SupArchList) & set(ArchList) if len(TargetArchList) == 0: EdkLogger.error("GenFds", GENFDS_ERROR, "Target ARCH %s not in platform supported ARCH %s" % (str(ArchList), str(BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, TAB_COMMON].SupArchList))) - + for Arch in ArchList: GenFdsGlobalVariable.OutputDirFromDscDict[Arch] = NormPath(BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, Options.BuildTarget, Options.ToolChain].OutputDirectory) GenFdsGlobalVariable.PlatformName = BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, Options.BuildTarget, Options.ToolChain].PlatformName @@ -335,10 +337,10 @@ def main(): """Display FV space info.""" GenFds.DisplayFvSpaceInfo(FdfParserObj) - except FdfParser.Warning, X: + except FdfParser.Warning as X: EdkLogger.error(X.ToolName, FORMAT_INVALID, File=X.FileName, Line=X.LineNumber, ExtraData=X.Message, RaiseError=False) ReturnCode = FORMAT_INVALID - except FatalError, X: + except FatalError as X: if Options.debug is not None: import traceback EdkLogger.quiet(traceback.format_exc()) @@ -541,16 +543,16 @@ class GenFds : if GenFds.OnlyGenerateThisFv is not None and GenFds.OnlyGenerateThisFv.upper() in GenFdsGlobalVariable.FdfParser.Profile.FvDict: FvObj = GenFdsGlobalVariable.FdfParser.Profile.FvDict[GenFds.OnlyGenerateThisFv.upper()] if FvObj is not None: - Buffer = StringIO.StringIO() + Buffer = BytesIO() FvObj.AddToBuffer(Buffer) Buffer.close() return elif GenFds.OnlyGenerateThisFv is None: for FvObj in GenFdsGlobalVariable.FdfParser.Profile.FvDict.values(): - Buffer = StringIO.StringIO('') + Buffer = BytesIO('') FvObj.AddToBuffer(Buffer) Buffer.close() - + if GenFds.OnlyGenerateThisFv is None and GenFds.OnlyGenerateThisFd is None and GenFds.OnlyGenerateThisCap is None: if GenFdsGlobalVariable.FdfParser.Profile.CapsuleDict != {}: GenFdsGlobalVariable.VerboseLogger("\n Generate other Capsule images!") @@ -616,7 +618,7 @@ class GenFds : # @retval None # def DisplayFvSpaceInfo(FdfParser): - + FvSpaceInfoList = [] MaxFvNameLength = 0 for FvName in FdfParser.Profile.FvDict: @@ -643,10 +645,10 @@ class GenFds : if NameValue[0].strip() == 'EFI_FV_SPACE_SIZE': FreeFound = True Free = NameValue[1].strip() - + if TotalFound and UsedFound and FreeFound: FvSpaceInfoList.append((FvName, Total, Used, Free)) - + GenFdsGlobalVariable.InfLogger('\nFV Space Information') for FvSpaceInfo in FvSpaceInfoList: Name = FvSpaceInfo[0] @@ -674,26 +676,26 @@ class GenFds : if PcdObj.TokenCName == 'PcdBsBaseAddress': PcdValue = PcdObj.DefaultValue break - + if PcdValue == '': return - + Int64PcdValue = long(PcdValue, 0) - if Int64PcdValue == 0 or Int64PcdValue < -1: + if Int64PcdValue == 0 or Int64PcdValue < -1: return - + TopAddress = 0 if Int64PcdValue > 0: TopAddress = Int64PcdValue - + ModuleDict = BuildDb.BuildObject[DscFile, TAB_COMMON, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag].Modules for Key in ModuleDict: ModuleObj = BuildDb.BuildObject[Key, TAB_COMMON, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag] - print ModuleObj.BaseName + ' ' + ModuleObj.ModuleType + print(ModuleObj.BaseName + ' ' + ModuleObj.ModuleType) def GenerateGuidXRefFile(BuildDb, ArchList, FdfParserObj): GuidXRefFileName = os.path.join(GenFdsGlobalVariable.FvDir, "Guid.xref") - GuidXRefFile = StringIO.StringIO('') + GuidXRefFile = BytesIO('') GuidDict = {} ModuleList = [] FileGuidList = [] @@ -784,7 +786,7 @@ class GenFds : if not Name: continue - Name = ' '.join(Name) if type(Name) == type([]) else Name + Name = ' '.join(Name) if isinstance(Name, type([])) else Name GuidXRefFile.write("%s %s\n" %(FileStatementGuid, Name)) # Append GUIDs, Protocols, and PPIs to the Xref file