##\r
# Import Modules\r
#\r
+from __future__ import print_function\r
+from __future__ import absolute_import\r
from optparse import OptionParser\r
import sys\r
import Common.LongFilePathOs as os\r
import linecache\r
-import FdfParser\r
+from . import FdfParser\r
import Common.BuildToolError as BuildToolError\r
-from GenFdsGlobalVariable import GenFdsGlobalVariable\r
+from .GenFdsGlobalVariable import GenFdsGlobalVariable\r
from Workspace.WorkspaceDatabase import WorkspaceDatabase\r
from Workspace.BuildClassObject import PcdClassObject\r
-import RuleComplexFile\r
-from EfiSection import EfiSection\r
-import StringIO\r
+from . import RuleComplexFile\r
+from .EfiSection import EfiSection\r
+from io import BytesIO\r
import Common.TargetTxtClassObject as TargetTxtClassObject\r
import Common.ToolDefClassObject as ToolDefClassObject\r
from Common.DataType import *\r
from Common.Misc import GuidStructureStringToGuidString\r
from Common.BuildVersion import gBUILD_VERSION\r
from Common.MultipleWorkspace import MultipleWorkspace as mws\r
-import FfsFileStatement\r
+from . import FfsFileStatement\r
import glob\r
from struct import unpack\r
\r
## Version and Copyright\r
versionNumber = "1.0" + ' ' + gBUILD_VERSION\r
__version__ = "%prog Version " + versionNumber\r
-__copyright__ = "Copyright (c) 2007 - 2017, Intel Corporation All rights reserved."\r
+__copyright__ = "Copyright (c) 2007 - 2018, Intel Corporation All rights reserved."\r
\r
## Tool entrance method\r
#\r
if Options.verbose is not None:\r
EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
GenFdsGlobalVariable.VerboseMode = True\r
- \r
+\r
if Options.FixedAddress is not None:\r
GenFdsGlobalVariable.FixedLoadAddress = True\r
- \r
+\r
if Options.quiet is not None:\r
EdkLogger.SetLevel(EdkLogger.QUIET)\r
if Options.debug is not None:\r
if Options.GenfdsMultiThread:\r
GenFdsGlobalVariable.EnableGenfdsMultiThread = True\r
os.chdir(GenFdsGlobalVariable.WorkSpaceDir)\r
- \r
+\r
# set multiple workspace\r
PackagesPath = os.getenv("PACKAGES_PATH")\r
mws.setWs(GenFdsGlobalVariable.WorkSpaceDir, PackagesPath)\r
GlobalData.gDatabasePath = os.path.normpath(os.path.join(ConfDirectoryPath, GlobalData.gDatabasePath))\r
BuildWorkSpace = WorkspaceDatabase(GlobalData.gDatabasePath)\r
BuildWorkSpace.InitDatabase()\r
- \r
+\r
#\r
# Get files real name in workspace dir\r
#\r
TargetArchList = set(BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, TAB_COMMON, Options.BuildTarget, Options.ToolChain].SupArchList) & set(ArchList)\r
if len(TargetArchList) == 0:\r
EdkLogger.error("GenFds", GENFDS_ERROR, "Target ARCH %s not in platform supported ARCH %s" % (str(ArchList), str(BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, TAB_COMMON].SupArchList)))\r
- \r
+\r
for Arch in ArchList:\r
GenFdsGlobalVariable.OutputDirFromDscDict[Arch] = NormPath(BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, Options.BuildTarget, Options.ToolChain].OutputDirectory)\r
GenFdsGlobalVariable.PlatformName = BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, Arch, Options.BuildTarget, Options.ToolChain].PlatformName\r
"""Display FV space info."""\r
GenFds.DisplayFvSpaceInfo(FdfParserObj)\r
\r
- except FdfParser.Warning, X:\r
+ except FdfParser.Warning as X:\r
EdkLogger.error(X.ToolName, FORMAT_INVALID, File=X.FileName, Line=X.LineNumber, ExtraData=X.Message, RaiseError=False)\r
ReturnCode = FORMAT_INVALID\r
- except FatalError, X:\r
+ except FatalError as X:\r
if Options.debug is not None:\r
import traceback\r
EdkLogger.quiet(traceback.format_exc())\r
if GenFds.OnlyGenerateThisFv is not None and GenFds.OnlyGenerateThisFv.upper() in GenFdsGlobalVariable.FdfParser.Profile.FvDict:\r
FvObj = GenFdsGlobalVariable.FdfParser.Profile.FvDict[GenFds.OnlyGenerateThisFv.upper()]\r
if FvObj is not None:\r
- Buffer = StringIO.StringIO()\r
+ Buffer = BytesIO()\r
FvObj.AddToBuffer(Buffer)\r
Buffer.close()\r
return\r
elif GenFds.OnlyGenerateThisFv is None:\r
for FvObj in GenFdsGlobalVariable.FdfParser.Profile.FvDict.values():\r
- Buffer = StringIO.StringIO('')\r
+ Buffer = BytesIO('')\r
FvObj.AddToBuffer(Buffer)\r
Buffer.close()\r
- \r
+\r
if GenFds.OnlyGenerateThisFv is None and GenFds.OnlyGenerateThisFd is None and GenFds.OnlyGenerateThisCap is None:\r
if GenFdsGlobalVariable.FdfParser.Profile.CapsuleDict != {}:\r
GenFdsGlobalVariable.VerboseLogger("\n Generate other Capsule images!")\r
# @retval None\r
#\r
def DisplayFvSpaceInfo(FdfParser):\r
- \r
+\r
FvSpaceInfoList = []\r
MaxFvNameLength = 0\r
for FvName in FdfParser.Profile.FvDict:\r
if NameValue[0].strip() == 'EFI_FV_SPACE_SIZE':\r
FreeFound = True\r
Free = NameValue[1].strip()\r
- \r
+\r
if TotalFound and UsedFound and FreeFound:\r
FvSpaceInfoList.append((FvName, Total, Used, Free))\r
- \r
+\r
GenFdsGlobalVariable.InfLogger('\nFV Space Information')\r
for FvSpaceInfo in FvSpaceInfoList:\r
Name = FvSpaceInfo[0]\r
if PcdObj.TokenCName == 'PcdBsBaseAddress':\r
PcdValue = PcdObj.DefaultValue\r
break\r
- \r
+\r
if PcdValue == '':\r
return\r
- \r
+\r
Int64PcdValue = long(PcdValue, 0)\r
- if Int64PcdValue == 0 or Int64PcdValue < -1: \r
+ if Int64PcdValue == 0 or Int64PcdValue < -1:\r
return\r
- \r
+\r
TopAddress = 0\r
if Int64PcdValue > 0:\r
TopAddress = Int64PcdValue\r
- \r
+\r
ModuleDict = BuildDb.BuildObject[DscFile, TAB_COMMON, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag].Modules\r
for Key in ModuleDict:\r
ModuleObj = BuildDb.BuildObject[Key, TAB_COMMON, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]\r
- print ModuleObj.BaseName + ' ' + ModuleObj.ModuleType\r
+ print(ModuleObj.BaseName + ' ' + ModuleObj.ModuleType)\r
\r
def GenerateGuidXRefFile(BuildDb, ArchList, FdfParserObj):\r
GuidXRefFileName = os.path.join(GenFdsGlobalVariable.FvDir, "Guid.xref")\r
- GuidXRefFile = StringIO.StringIO('')\r
+ GuidXRefFile = BytesIO('')\r
GuidDict = {}\r
ModuleList = []\r
FileGuidList = []\r
if not Name:\r
continue\r
\r
- Name = ' '.join(Name) if type(Name) == type([]) else Name\r
+ Name = ' '.join(Name) if isinstance(Name, type([])) else Name\r
GuidXRefFile.write("%s %s\n" %(FileStatementGuid, Name))\r
\r
# Append GUIDs, Protocols, and PPIs to the Xref file\r