[PATCH] D57343: lit: Let lit.util.which() return a normcase()ed path

Nico Weber via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 28 11:08:10 PST 2019


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
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57343.183912.patch
Type: text/x-patch
Size: 755 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190128/173edf2c/attachment.bin>


More information about the cfe-commits mailing list