Bob, Sorry I was confused by the commit comment `inconsistent path case`. So this was only a bug on case insensitive file systems? I’m paranoid as macOS support case and case insensitive file systems and we have had a lot of strange bugs in the past. Thanks, Andrew Fish > On Sep 23, 2020, at 7:59 AM, Bob Feng wrote: > > Yes. we did test on Windows and Linux. > > From the https://docs.python.org/3/library/os.path.html > os.path.normcase(path) > Normalize the case of a pathname. On Windows, convert all characters in the pathname to lowercase, and also convert forward slashes to backward slashes. On other operating systems, return the path unchanged. > > Thanks, > Bob > -----Original Message----- > From: Andrew Fish > > Sent: Wednesday, September 23, 2020 10:24 PM > To: devel@edk2.groups.io ; Feng, Bob C > > Cc: Liang, MingyueX >; Liming Gao >; Chen, Christine > > Subject: Re: [edk2-devel] [PATCH] BaseTools: Normalize case of pathname when evaluating Macros. > > Does this work on case sensitive file systems? >> On Sep 23, 2020, at 3:58 AM, Bob Feng > wrote: >> >> From: Mingyue Liang > >> >> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2880 >> >> Currently, When doing the Incremental build, the directory macros >> extended to absolute path in output Makefile, which is inconsistent >> with the output of Clean build. >> >> When we do macro replacement, we can't replace macro due to >> inconsistent path case, which results in inconsistent display of >> incremental build and clean build in makefile.Therefore, the path is >> converted to achieve the correct macro replacement. >> >> Signed-off-by: Mingyue Liang > >> Cc: Bob Feng > >> Cc: Liming Gao > >> Cc: Yuwei Chen > >> --- >> BaseTools/Source/Python/AutoGen/GenMake.py | 6 ++++-- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py >> b/BaseTools/Source/Python/AutoGen/GenMake.py >> index 0314d0ea34..b04d3f5436 100755 >> --- a/BaseTools/Source/Python/AutoGen/GenMake.py >> +++ b/BaseTools/Source/Python/AutoGen/GenMake.py >> @@ -786,8 +786,10 @@ cleanlib: >> >> def ReplaceMacro(self, str): >> for Macro in self.MacroList: >> - if self._AutoGenObject.Macros[Macro] and self._AutoGenObject.Macros[Macro] in str: >> - str = str.replace(self._AutoGenObject.Macros[Macro], '$(' + Macro + ')') >> + if self._AutoGenObject.Macros[Macro] and os.path.normcase(self._AutoGenObject.Macros[Macro]) in os.path.normcase(str): >> + replace_dir = str[os.path.normcase(str).index(os.path.normcase(self._AutoGenObject.Macros[Macro])): os.path.normcase(str).index( >> + os.path.normcase(self._AutoGenObject.Macros[Macro])) + len(self._AutoGenObject.Macros[Macro])] >> + str = str.replace(replace_dir, '$(' + Macro + ')') >> return str >> >> def CommandExceedLimit(self): >> -- >> 2.28.0.windows.1 >> >> >> >> >> >> > > >