Reviewed-by: Liming Gao <[email protected]>

> -----Original Message-----
> From: Ard Biesheuvel [mailto:[email protected]]
> Sent: Thursday, December 20, 2018 7:52 PM
> To: Feng, Bob C <[email protected]>
> Cc: [email protected]; Gao, Liming <[email protected]>
> Subject: Re: [Patch] BaseTools: Reset FdsGlobalVariable
> 
> 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