Reviewed-by: Liming Gao <[email protected]> If no other comment, I will help push this change.
>-----Original Message----- >From: Chris Co [mailto:[email protected]] >Sent: Friday, June 29, 2018 3:31 AM >To: [email protected] >Cc: Leif Lindholm <[email protected]>; Zhu, Yonghong ><[email protected]>; Gao, Liming <[email protected]> >Subject: [PATCH v2 1/1] BaseTools/Trim: Normalize filepaths to fix >comparisons on Windows > >When using Linaro GCC5+ arm-eabi toolchain on Windows, the generated >DSDT.iii contains a canonicalized ("\.\" removed and lower case) >filepath for the preprocessed DSDT.i file in the first line. >Trim.exe is called on DSDT.iii to generate DSDT.iiii, which does a >line for line comparison of filepaths encountered to the preprocessed >DSDT.i filepath found in the first line to determine what lines to >place in DSDT.iiii. Since the DSDT.i filepath is canonicalized and >all later filepaths in DSDT.iii are not canonicalized, all comparisons >fail and the result is in an empty DSDT.iiii. > >Issue was first reported to Linaro here: >https://bugs.linaro.org/show_bug.cgi?id=2909 >where the recommendation was to address the issue in Trim.exe. > >This patch normalizes the case and pathname of all filepaths >encountered during Trim.exe execution on preprocessed files. This >fixes comparisons of filepaths that contain mismatching case on >case-insensitive filesystems, redundant separators, and uplevel >references. > >Contributed-under: TianoCore Contribution Agreement 1.1 >Signed-off-by: Christopher Co <[email protected]> >Cc: Leif Lindholm <[email protected]> >Cc: Yonghong Zhu <[email protected]> >Cc: Liming Gao <[email protected]> >--- > BaseTools/Source/Python/Trim/Trim.py | 2 ++ > 1 file changed, 2 insertions(+) > >diff --git a/BaseTools/Source/Python/Trim/Trim.py >b/BaseTools/Source/Python/Trim/Trim.py >index 76944c0e25b3..b46d507b4e55 100644 >--- a/BaseTools/Source/Python/Trim/Trim.py >+++ b/BaseTools/Source/Python/Trim/Trim.py >@@ -166,6 +166,8 @@ def TrimPreprocessedFile(Source, Target, ConvertHex, >TrimLong): > if len(MatchList) == 2: > LineNumber = int(MatchList[0], 0) > InjectedFile = MatchList[1] >+ InjectedFile = os.path.normpath(InjectedFile) >+ InjectedFile = os.path.normcase(InjectedFile) > # The first injetcted file must be the preprocessed file > itself > if PreprocessedFile == "": > PreprocessedFile = InjectedFile >-- >2.16.2.gvfs.1.33.gf5370f1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

