From f95e80d832e923046c92cd6f0b8208cec147138e Mon Sep 17 00:00:00 2001 From: Chasel Chiu Date: Mon, 7 Dec 2020 18:13:52 +0800 Subject: IntelFsp2Pkg/GenCfgOpt.py: Incremental build with UPD in sub DSC. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3107 Current script only compares main DSC and output file datetime to determine if re-generation required or not. When UPD defined in sub DSC and was modified current script cannot detect and will not re-generate output files which caused incremental build issue. Since UPD can be defined in any sub DSC the script has been updated to compare all DSC datetime with output files to determine re-generation is needed or not. Cc: Maurice Ma Cc: Nate DeSimone Cc: Star Zeng Signed-off-by: Chasel Chiu Reviewed-by: Nate DeSimone Reviewed-by: Yuwei Chen Reviewed-by: Star Zeng Tested-by: Yuwei Chen --- IntelFsp2Pkg/Tools/GenCfgOpt.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'IntelFsp2Pkg/Tools') diff --git a/IntelFsp2Pkg/Tools/GenCfgOpt.py b/IntelFsp2Pkg/Tools/GenCfgOpt.py index af7e14a10a..a0b8bba81e 100644 --- a/IntelFsp2Pkg/Tools/GenCfgOpt.py +++ b/IntelFsp2Pkg/Tools/GenCfgOpt.py @@ -313,6 +313,7 @@ EndList self._DscFile = '' self._FvDir = '' self._MapVer = 0 + self._DscTime = 0 def ParseMacros (self, MacroDefStr): # ['-DABC=1', '-D', 'CFG_DEBUG=1', '-D', 'CFG_OUTDIR=Build'] @@ -423,6 +424,9 @@ EndList self._DscFile = DscFile self._FvDir = FvDir + # Initial DSC time is parent DSC time. + self._DscTime = os.path.getmtime(DscFile) + IsDefSect = False IsPcdSect = False IsUpdSect = False @@ -530,6 +534,12 @@ EndList if IncludeDsc == None: print("ERROR: Cannot open file '%s'" % IncludeFilePath) raise SystemExit + + # Update DscTime when newer DSC time found. + CurrentDscTime = os.path.getmtime(os.path.realpath(IncludeDsc.name)) + if CurrentDscTime > self._DscTime: + self._DscTime = CurrentDscTime + NewDscLines = IncludeDsc.readlines() IncludeDsc.close() DscLines = NewDscLines + DscLines @@ -815,9 +825,8 @@ EndList if not os.path.exists(OutPutFile): NoFileChange = False else: - DscTime = os.path.getmtime(self._DscFile) OutputTime = os.path.getmtime(OutPutFile) - if DscTime > OutputTime: + if self._DscTime > OutputTime: NoFileChange = False return NoFileChange -- cgit v1.2.3