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

Reply via email to