]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/GenFds/GenFds.py
BaseTools: Use absolute import in GenFds
[mirror_edk2.git] / BaseTools / Source / Python / GenFds / GenFds.py
index e17affc0960e475af037e1d364dfc59176332c5e..c0b60b9b3c1fdfb0139d1a583dedecf58ec4370e 100644 (file)
 ##\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
 import Common.GlobalData as GlobalData\r
 from Common import EdkLogger\r
-from Common.String import *\r
+from Common.StringUtils import *\r
 from Common.Misc import DirCache, PathClass\r
 from Common.Misc import SaveFileOnChange\r
 from Common.Misc import ClearDuplicatedInf\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
@@ -71,10 +73,10 @@ def main():
         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
@@ -99,7 +101,7 @@ def main():
             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
@@ -227,7 +229,7 @@ def main():
         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
@@ -243,7 +245,7 @@ def main():
         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
@@ -335,10 +337,10 @@ def main():
         """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
@@ -541,16 +543,16 @@ class GenFds :
         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
@@ -616,7 +618,7 @@ class GenFds :
     #   @retval None\r
     #\r
     def DisplayFvSpaceInfo(FdfParser):\r
-        \r
+\r
         FvSpaceInfoList = []\r
         MaxFvNameLength = 0\r
         for FvName in FdfParser.Profile.FvDict:\r
@@ -643,10 +645,10 @@ class GenFds :
                         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
@@ -674,26 +676,26 @@ class GenFds :
             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
@@ -761,7 +763,7 @@ class GenFds :
                                     length = F.tell()\r
                                     F.seek(4)\r
                                     TmpStr = unpack('%dh' % ((length - 4) / 2), F.read())\r
-                                    Name = ''.join([chr(c) for c in TmpStr[:-1]])\r
+                                    Name = ''.join(chr(c) for c in TmpStr[:-1])\r
                         else:\r
                             FileList = []\r
                             if 'fv.sec.txt' in MatchDict:\r
@@ -784,7 +786,7 @@ class GenFds :
                         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