from Workspace.WorkspaceDatabase import WorkspaceDatabase\r
from Workspace.BuildClassObject import PcdClassObject\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
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.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
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 glob\r
from struct import unpack\r
\r
## Version and Copyright\r
versionNumber = "1.0" + ' ' + gBUILD_VERSION\r
__version__ = "%prog Version " + versionNumber\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
if Options.verbose is not None:\r
EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
GenFdsGlobalVariable.VerboseMode = True\r
if Options.verbose is not None:\r
EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
GenFdsGlobalVariable.VerboseMode = True\r
if Options.quiet is not None:\r
EdkLogger.SetLevel(EdkLogger.QUIET)\r
if Options.debug is not None:\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
if Options.GenfdsMultiThread:\r
GenFdsGlobalVariable.EnableGenfdsMultiThread = True\r
os.chdir(GenFdsGlobalVariable.WorkSpaceDir)\r
# set multiple workspace\r
PackagesPath = os.getenv("PACKAGES_PATH")\r
mws.setWs(GenFdsGlobalVariable.WorkSpaceDir, PackagesPath)\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
GlobalData.gDatabasePath = os.path.normpath(os.path.join(ConfDirectoryPath, GlobalData.gDatabasePath))\r
BuildWorkSpace = WorkspaceDatabase(GlobalData.gDatabasePath)\r
BuildWorkSpace.InitDatabase()\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
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
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
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
EdkLogger.error(X.ToolName, FORMAT_INVALID, File=X.FileName, Line=X.LineNumber, ExtraData=X.Message, RaiseError=False)\r
ReturnCode = FORMAT_INVALID\r
EdkLogger.error(X.ToolName, FORMAT_INVALID, File=X.FileName, Line=X.LineNumber, ExtraData=X.Message, RaiseError=False)\r
ReturnCode = FORMAT_INVALID\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
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
FvObj.AddToBuffer(Buffer)\r
Buffer.close()\r
return\r
elif GenFds.OnlyGenerateThisFv is None:\r
for FvObj in GenFdsGlobalVariable.FdfParser.Profile.FvDict.values():\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
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
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
if TotalFound and UsedFound and FreeFound:\r
FvSpaceInfoList.append((FvName, Total, Used, Free))\r
if TotalFound and UsedFound and FreeFound:\r
FvSpaceInfoList.append((FvName, Total, Used, Free))\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
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
\r
def GenerateGuidXRefFile(BuildDb, ArchList, FdfParserObj):\r
GuidXRefFileName = os.path.join(GenFdsGlobalVariable.FvDir, "Guid.xref")\r
\r
def GenerateGuidXRefFile(BuildDb, ArchList, FdfParserObj):\r
GuidXRefFileName = os.path.join(GenFdsGlobalVariable.FvDir, "Guid.xref")\r
GuidXRefFile.write("%s %s\n" %(FileStatementGuid, Name))\r
\r
# Append GUIDs, Protocols, and PPIs to the Xref file\r
GuidXRefFile.write("%s %s\n" %(FileStatementGuid, Name))\r
\r
# Append GUIDs, Protocols, and PPIs to the Xref file\r