REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2967

When no change in FSP UPD DSC files, GenCfgOpt.py should skip
recreating UPD header and BSF files.
This patch added a check to handle this case.

Cc: Maurice Ma <maurice...@intel.com>
Cc: Nate DeSimone <nathaniel.l.desim...@intel.com>
Cc: Star Zeng <star.z...@intel.com>
Signed-off-by: Chasel Chiu <chasel.c...@intel.com>
---
 IntelFsp2Pkg/Tools/GenCfgOpt.py | 60 
++++++++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 42 insertions(+), 18 deletions(-)

diff --git a/IntelFsp2Pkg/Tools/GenCfgOpt.py b/IntelFsp2Pkg/Tools/GenCfgOpt.py
index bcced590ce..af7e14a10a 100644
--- a/IntelFsp2Pkg/Tools/GenCfgOpt.py
+++ b/IntelFsp2Pkg/Tools/GenCfgOpt.py
@@ -810,6 +810,17 @@ EndList
                 SubItem['value'] = valuestr
         return Error
 
+    def NoDscFileChange (self, OutPutFile):
+        NoFileChange = True
+        if not os.path.exists(OutPutFile):
+            NoFileChange = False
+        else:
+            DscTime = os.path.getmtime(self._DscFile)
+            OutputTime = os.path.getmtime(OutPutFile)
+            if DscTime > OutputTime:
+                NoFileChange = False
+        return NoFileChange
+
     def CreateSplitUpdTxt (self, UpdTxtFile):
         GuidList = 
['FSP_T_UPD_TOOL_GUID','FSP_M_UPD_TOOL_GUID','FSP_S_UPD_TOOL_GUID']
         SignatureList = ['0x545F', '0x4D5F','0x535F']        #  _T, _M, and _S 
signature for FSPT, FSPM, FSPS
@@ -823,16 +834,7 @@ EndList
             if UpdTxtFile == '':
                 UpdTxtFile = os.path.join(FvDir, 
self._MacroDict[GuidList[Index]] + '.txt')
 
-            ReCreate = False
-            if not os.path.exists(UpdTxtFile):
-                ReCreate = True
-            else:
-                DscTime = os.path.getmtime(self._DscFile)
-                TxtTime = os.path.getmtime(UpdTxtFile)
-                if DscTime > TxtTime:
-                    ReCreate = True
-
-            if not  ReCreate:
+            if (self.NoDscFileChange (UpdTxtFile)):
                 # DSC has not been modified yet
                 # So don't have to re-generate other files
                 self.Error = 'No DSC file change, skip to create UPD TXT file'
@@ -1056,7 +1058,11 @@ EndList
         HeaderFile = os.path.join(FvDir, HeaderFileName)
 
         # Check if header needs to be recreated
-        ReCreate = False
+        if (self.NoDscFileChange (HeaderFile)):
+            # DSC has not been modified yet
+            # So don't have to re-generate other files
+            self.Error = 'No DSC file change, skip to create UPD header file'
+            return 256
 
         TxtBody = []
         for Item in self._CfgItemList:
@@ -1382,6 +1388,12 @@ EndList
             self.Error = "BSF output file '%s' is invalid" % BsfFile
             return 1
 
+        if (self.NoDscFileChange (BsfFile)):
+            # DSC has not been modified yet
+            # So don't have to re-generate other files
+            self.Error = 'No DSC file change, skip to create UPD BSF file'
+            return 256
+
         Error = 0
         OptionDict = {}
         BsfFd      = open(BsfFile, "w")
@@ -1467,7 +1479,7 @@ EndList
 
 
 def Usage():
-    print ("GenCfgOpt Version 0.55")
+    print ("GenCfgOpt Version 0.56")
     print ("Usage:")
     print ("    GenCfgOpt  UPDTXT  PlatformDscFile BuildFvDir                 
[-D Macros]")
     print ("    GenCfgOpt  HEADER  PlatformDscFile BuildFvDir  InputHFile     
[-D Macros]")
@@ -1529,13 +1541,25 @@ def Main():
                     print ("ERROR: %s !" % (GenCfgOpt.Error))
             return Ret
         elif sys.argv[1] == "HEADER":
-            if GenCfgOpt.CreateHeaderFile(OutFile) != 0:
-                print ("ERROR: %s !" % GenCfgOpt.Error)
-                return 8
+            Ret = GenCfgOpt.CreateHeaderFile(OutFile)
+            if Ret != 0:
+                # No change is detected
+                if Ret == 256:
+                    print ("INFO: %s !" % (GenCfgOpt.Error))
+                else :
+                    print ("ERROR: %s !" % (GenCfgOpt.Error))
+                    return 8
+            return Ret
         elif sys.argv[1] == "GENBSF":
-            if GenCfgOpt.GenerateBsfFile(OutFile) != 0:
-                print ("ERROR: %s !" % GenCfgOpt.Error)
-                return 9
+            Ret = GenCfgOpt.GenerateBsfFile(OutFile)
+            if Ret != 0:
+                # No change is detected
+                if Ret == 256:
+                    print ("INFO: %s !" % (GenCfgOpt.Error))
+                else :
+                    print ("ERROR: %s !" % (GenCfgOpt.Error))
+                    return 9
+            return Ret
         else:
             if argc < 5:
                 Usage()
-- 
2.28.0.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#65775): https://edk2.groups.io/g/devel/message/65775
Mute This Topic: https://groups.io/mt/77232193/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to