On Thu, 20 Dec 2018 at 12:38, BobCF <[email protected]> wrote:
>
> https://bugzilla.tianocore.org/show_bug.cgi?id=1418
> This patch is going to fix a regression issue that is introduced
> by commit b3497bad1221704a5dbc5da0b10f42625f1ad2ed.
>
> Before commit b3497b, build launched a external GenFds.py to generate
> Fd, so the global variable in GenFds.py was reset in each execution.
>
> After commit b3497b, each GenFds run in the same python interpeter, so
> we need to explicitly reset global variable in each GenFdsApi call.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Bob Feng <[email protected]>
> Cc: Liming Gao <[email protected]>
> Cc: Ard Biesheuvel <[email protected]>

Tested-by: Ard Biesheuvel <[email protected]>

> ---
>  BaseTools/Source/Python/GenFds/GenFds.py | 51 ++++++++++++++++++++++++
>  1 file changed, 51 insertions(+)
>
> diff --git a/BaseTools/Source/Python/GenFds/GenFds.py 
> b/BaseTools/Source/Python/GenFds/GenFds.py
> index 51655cc09c..447aa7f5eb 100644
> --- a/BaseTools/Source/Python/GenFds/GenFds.py
> +++ b/BaseTools/Source/Python/GenFds/GenFds.py
> @@ -39,10 +39,12 @@ from Common.BuildToolError import FatalError, 
> GENFDS_ERROR, CODE_ERROR, FORMAT_I
>  from Workspace.WorkspaceDatabase import WorkspaceDatabase
>
>  from .FdfParser import FdfParser, Warning
>  from .GenFdsGlobalVariable import GenFdsGlobalVariable
>  from .FfsFileStatement import FileStatement
> +import Common.DataType as DataType
> +from struct import Struct
>
>  ## Version and Copyright
>  versionNumber = "1.0" + ' ' + gBUILD_VERSION
>  __version__ = "%prog Version " + versionNumber
>  __copyright__ = "Copyright (c) 2007 - 2018, Intel Corporation  All rights 
> reserved."
> @@ -60,15 +62,64 @@ def main():
>      global Options
>      Options = myOptionParser()
>      EdkLogger.Initialize()
>      return GenFdsApi(OptionsToCommandDict(Options))
>
> +def resetFdsGlobalVariable():
> +    GenFdsGlobalVariable.FvDir = ''
> +    GenFdsGlobalVariable.OutputDirDict = {}
> +    GenFdsGlobalVariable.BinDir = ''
> +    # will be FvDir + os.sep + 'Ffs'
> +    GenFdsGlobalVariable.FfsDir = ''
> +    GenFdsGlobalVariable.FdfParser = None
> +    GenFdsGlobalVariable.LibDir = ''
> +    GenFdsGlobalVariable.WorkSpace = None
> +    GenFdsGlobalVariable.WorkSpaceDir = ''
> +    GenFdsGlobalVariable.ConfDir = ''
> +    GenFdsGlobalVariable.EdkSourceDir = ''
> +    GenFdsGlobalVariable.OutputDirFromDscDict = {}
> +    GenFdsGlobalVariable.TargetName = ''
> +    GenFdsGlobalVariable.ToolChainTag = ''
> +    GenFdsGlobalVariable.RuleDict = {}
> +    GenFdsGlobalVariable.ArchList = None
> +    GenFdsGlobalVariable.VtfDict = {}
> +    GenFdsGlobalVariable.ActivePlatform = None
> +    GenFdsGlobalVariable.FvAddressFileName = ''
> +    GenFdsGlobalVariable.VerboseMode = False
> +    GenFdsGlobalVariable.DebugLevel = -1
> +    GenFdsGlobalVariable.SharpCounter = 0
> +    GenFdsGlobalVariable.SharpNumberPerLine = 40
> +    GenFdsGlobalVariable.FdfFile = ''
> +    GenFdsGlobalVariable.FdfFileTimeStamp = 0
> +    GenFdsGlobalVariable.FixedLoadAddress = False
> +    GenFdsGlobalVariable.PlatformName = ''
> +
> +    GenFdsGlobalVariable.BuildRuleFamily = DataType.TAB_COMPILER_MSFT
> +    GenFdsGlobalVariable.ToolChainFamily = DataType.TAB_COMPILER_MSFT
> +    GenFdsGlobalVariable.__BuildRuleDatabase = None
> +    GenFdsGlobalVariable.GuidToolDefinition = {}
> +    GenFdsGlobalVariable.FfsCmdDict = {}
> +    GenFdsGlobalVariable.SecCmdList = []
> +    GenFdsGlobalVariable.CopyList   = []
> +    GenFdsGlobalVariable.ModuleFile = ''
> +    GenFdsGlobalVariable.EnableGenfdsMultiThread = False
> +
> +    GenFdsGlobalVariable.LargeFileInFvFlags = []
> +    GenFdsGlobalVariable.EFI_FIRMWARE_FILE_SYSTEM3_GUID = 
> '5473C07A-3DCB-4dca-BD6F-1E9689E7349A'
> +    GenFdsGlobalVariable.LARGE_FILE_SIZE = 0x1000000
> +
> +    GenFdsGlobalVariable.SectionHeader = Struct("3B 1B")
> +
> +    # FvName, FdName, CapName in FDF, Image file name
> +    GenFdsGlobalVariable.ImageBinDict = {}
> +
>  def GenFdsApi(FdsCommandDict, WorkSpaceDataBase=None):
>      global Workspace
>      Workspace = ""
>      ArchList = None
>      ReturnCode = 0
> +    resetFdsGlobalVariable()
>
>      try:
>          if FdsCommandDict.get("verbose"):
>              EdkLogger.SetLevel(EdkLogger.VERBOSE)
>              GenFdsGlobalVariable.VerboseMode = True
> --
> 2.19.1.windows.1
>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to