thakis created this revision. thakis added a reviewer: zturner. Herald added a subscriber: delcypher. Herald added a reviewer: serge-sans-paille.
`LLVMConfig.with_environment()` uses `os.path.normcase(os.path.normpath(x))` to normalize temporary env vars. `LLVMConfig.use_clang()` uses `with_environment()` to temporarily set `PATH` and then look for clang there. This means that on Windows, clang will be run with a path like `c:\foo\bin\clang.EXE` (with a lower-case "C:"). `lit.util.which()` used to not do this, which means the executables added in clang/test/lit.cfg.py (e.g. c-index-test) were run with a path like `C:\foo\bin\c-index-test.EXE` (because both CMake and GN happen to write `clang_tools_dir` with an upper-case C to lit.site.cfg.py). clang/test/Index/pch-from-libclang.c requires that both c-index-test and clang use _exactly_ the same resource dir path (same case and everything), because a hash of the resource directory is used as module cache path. This patch is necessary but not sufficient to make pch-from-libclang.c pass on Windows. https://reviews.llvm.org/D57343 Files: llvm/utils/lit/lit/util.py Index: llvm/utils/lit/lit/util.py =================================================================== --- llvm/utils/lit/lit/util.py +++ llvm/utils/lit/lit/util.py @@ -197,7 +197,7 @@ # Check for absolute match first. if os.path.isabs(command) and os.path.isfile(command): - return os.path.normpath(command) + return os.path.normcase(os.path.normpath(command)) # Would be nice if Python had a lib function for this. if not paths: @@ -215,7 +215,7 @@ for ext in pathext: p = os.path.join(path, command + ext) if os.path.exists(p) and not os.path.isdir(p): - return os.path.normpath(p) + return os.path.normcase(os.path.normpath(p)) return None
Index: llvm/utils/lit/lit/util.py =================================================================== --- llvm/utils/lit/lit/util.py +++ llvm/utils/lit/lit/util.py @@ -197,7 +197,7 @@ # Check for absolute match first. if os.path.isabs(command) and os.path.isfile(command): - return os.path.normpath(command) + return os.path.normcase(os.path.normpath(command)) # Would be nice if Python had a lib function for this. if not paths: @@ -215,7 +215,7 @@ for ext in pathext: p = os.path.join(path, command + ext) if os.path.exists(p) and not os.path.isdir(p): - return os.path.normpath(p) + return os.path.normcase(os.path.normpath(p)) return None
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits