IntelFsp2Pkg/Tools/GenCfgOpt.py | 60 ++++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 18 deletions(-)
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.ma@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Signed-off-by: Chasel Chiu <chasel.chiu@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/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
Chasel: This change fixes the issue reported in BZ 2967. Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn> Thanks Liming > -----邮件原件----- > 发件人: bounce+27952+65775+4905953+8761045@groups.io > <bounce+27952+65775+4905953+8761045@groups.io> 代表 Chiu, Chasel > 发送时间: 2020年10月1日 10:12 > 收件人: devel@edk2.groups.io > 抄送: Chasel Chiu <chasel.chiu@intel.com>; Maurice Ma > <maurice.ma@intel.com>; Nate DeSimone > <nathaniel.l.desimone@intel.com>; Star Zeng <star.zeng@intel.com> > 主题: [edk2-devel] [PATCH] IntelFsp2Pkg/GenCfgOpt: skip unnecessarily > header/BSF recreating. > > 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.ma@intel.com> > Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> > Cc: Star Zeng <star.zeng@intel.com> > Signed-off-by: Chasel Chiu <chasel.chiu@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_G > UID'] > > 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/4905953 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub > [gaoliming@byosoft.com.cn] > -=-=-=-=-=-= > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#66086): https://edk2.groups.io/g/devel/message/66086 Mute This Topic: https://groups.io/mt/77416122/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com> > -----Original Message----- > From: Chasel Chiu <chasel.chiu@intel.com> > Sent: Wednesday, September 30, 2020 7:12 PM > To: devel@edk2.groups.io > Cc: Chiu, Chasel <chasel.chiu@intel.com>; Ma, Maurice > <maurice.ma@intel.com>; Desimone, Nathaniel L > <nathaniel.l.desimone@intel.com>; Zeng, Star <star.zeng@intel.com> > Subject: [PATCH] IntelFsp2Pkg/GenCfgOpt: skip unnecessarily header/BSF > recreating. > > 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.ma@intel.com> > Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> > Cc: Star Zeng <star.zeng@intel.com> > Signed-off-by: Chasel Chiu <chasel.chiu@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 (#66082): https://edk2.groups.io/g/devel/message/66082 Mute This Topic: https://groups.io/mt/77232193/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2024 Red Hat, Inc.