Reviewed-by: Liming Gao <liming....@intel.com>
>-----Original Message----- >From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of >Yonghong Zhu >Sent: Friday, December 29, 2017 1:41 AM >To: edk2-devel@lists.01.org >Subject: [edk2] [Patch] BaseTools: Fix a bug for different FV use same FILE >statement Guid > >We meet a case that different FV use same FILE statement Guid, but the >FILE content is different. current we use the Guid value as Ffs file >dir which cause the ffs file will be override. This patch use Guid >value and Fv name as ffs dir for FILE statement. > >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: Yonghong Zhu <yonghong....@intel.com> >--- > BaseTools/Source/Python/GenFds/FfsFileStatement.py | 7 +++++-- > BaseTools/Source/Python/GenFds/FfsInfStatement.py | 2 +- > BaseTools/Source/Python/GenFds/Fv.py | 2 +- > 3 files changed, 7 insertions(+), 4 deletions(-) > >diff --git a/BaseTools/Source/Python/GenFds/FfsFileStatement.py >b/BaseTools/Source/Python/GenFds/FfsFileStatement.py >index edb1312..12ec95b 100644 >--- a/BaseTools/Source/Python/GenFds/FfsFileStatement.py >+++ b/BaseTools/Source/Python/GenFds/FfsFileStatement.py >@@ -55,11 +55,11 @@ class FileStatement (FileStatementClassObject) : > # @param Dict dictionary contains macro and value pair > # @param FvChildAddr Array of the inside FvImage base address > # @param FvParentAddr Parent Fv base address > # @retval string Generated FFS file name > # >- def GenFfs(self, Dict = {}, FvChildAddr=[], FvParentAddr=None, >IsMakefile=False): >+ def GenFfs(self, Dict = {}, FvChildAddr=[], FvParentAddr=None, >IsMakefile=False, FvName=None): > > if self.NameGuid != None and self.NameGuid.startswith('PCD('): > PcdValue = GenFdsGlobalVariable.GetPcdValue(self.NameGuid) > if len(PcdValue) == 0: > EdkLogger.error("GenFds", GENFDS_ERROR, '%s NOT defined.' \ >@@ -70,11 +70,14 @@ class FileStatement (FileStatementClassObject) : > if len(RegistryGuidStr) == 0: > EdkLogger.error("GenFds", GENFDS_ERROR, 'GUID value for %s in >wrong format.' \ > % (self.NameGuid)) > self.NameGuid = RegistryGuidStr > >- OutputDir = os.path.join(GenFdsGlobalVariable.FfsDir, self.NameGuid) >+ Str = self.NameGuid >+ if FvName: >+ Str += FvName >+ OutputDir = os.path.join(GenFdsGlobalVariable.FfsDir, Str) > if not os.path.exists(OutputDir): > os.makedirs(OutputDir) > > Dict.update(self.DefineVarDict) > SectionAlignments = None >diff --git a/BaseTools/Source/Python/GenFds/FfsInfStatement.py >b/BaseTools/Source/Python/GenFds/FfsInfStatement.py >index 4b47817..baee543 100644 >--- a/BaseTools/Source/Python/GenFds/FfsInfStatement.py >+++ b/BaseTools/Source/Python/GenFds/FfsInfStatement.py >@@ -420,11 +420,11 @@ class FfsInfStatement(FfsInfStatementClassObject): > # @param Dict dictionary contains macro and value pair > # @param FvChildAddr Array of the inside FvImage base address > # @param FvParentAddr Parent Fv base address > # @retval string Generated FFS file name > # >- def GenFfs(self, Dict = {}, FvChildAddr = [], FvParentAddr=None, >IsMakefile=False): >+ def GenFfs(self, Dict = {}, FvChildAddr = [], FvParentAddr=None, >IsMakefile=False, FvName=None): > # > # Parse Inf file get Module related information > # > > self.__InfParse__(Dict) >diff --git a/BaseTools/Source/Python/GenFds/Fv.py >b/BaseTools/Source/Python/GenFds/Fv.py >index d5922c0..a69abb3 100644 >--- a/BaseTools/Source/Python/GenFds/Fv.py >+++ b/BaseTools/Source/Python/GenFds/Fv.py >@@ -119,11 +119,11 @@ class FV (FvClassObject): > if Flag: > if isinstance(FfsFile, FfsFileStatement.FileStatement): > continue > if GenFdsGlobalVariable.EnableGenfdsMultiThread and >GenFdsGlobalVariable.ModuleFile and >GenFdsGlobalVariable.ModuleFile.Path.find(os.path.normpath(FfsFile.InfFile >Name)) == -1: > continue >- FileName = FfsFile.GenFfs(MacroDict, FvParentAddr=BaseAddress, >IsMakefile=Flag) >+ FileName = FfsFile.GenFfs(MacroDict, FvParentAddr=BaseAddress, >IsMakefile=Flag, FvName=self.UiFvName) > FfsFileList.append(FileName) > if not Flag: > self.FvInfFile.writelines("EFI_FILE_NAME = " + \ > FileName + \ > T_CHAR_LF) >-- >2.6.1.windows.1 > >_______________________________________________ >edk2-devel mailing list >edk2-devel@lists.01.org >https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel