[PATCH] D103156: [lit] Fix testing of standalone clang and lld builds
James Henderson via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed May 26 04:53:58 PDT 2021
jhenderson created this revision.
jhenderson added reviewers: thopre, tstellar, dblaikie, MaskRay, teemperor.
Herald added a subscriber: delcypher.
jhenderson requested review of this revision.
Herald added a project: LLVM.
In such cases, the executables are not in the llvm_tools_dir directory, so we need to look in the other search locations. Previously, they were found via the PATH, but this was disabled by default in commit rGa1e6565 <https://reviews.llvm.org/rGa1e6565855784988aa6302d6672705baf2a84ff2>.
Depends on D101354 <https://reviews.llvm.org/D101354>.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D103156
Files:
llvm/utils/lit/lit/llvm/config.py
llvm/utils/lit/tests/Inputs/use-llvm-tool/build/case10
llvm/utils/lit/tests/Inputs/use-llvm-tool/build/case10.exe
llvm/utils/lit/tests/Inputs/use-llvm-tool/build/case9
llvm/utils/lit/tests/Inputs/use-llvm-tool/build/case9.exe
llvm/utils/lit/tests/Inputs/use-llvm-tool/lit.cfg
llvm/utils/lit/tests/Inputs/use-llvm-tool/path/case10
llvm/utils/lit/tests/Inputs/use-llvm-tool/path/case10.exe
llvm/utils/lit/tests/Inputs/use-llvm-tool/search1/empty
llvm/utils/lit/tests/Inputs/use-llvm-tool/search2/case9
llvm/utils/lit/tests/Inputs/use-llvm-tool/search2/case9.exe
llvm/utils/lit/tests/Inputs/use-llvm-tool/search3/case9
llvm/utils/lit/tests/Inputs/use-llvm-tool/search3/case9.exe
llvm/utils/lit/tests/use-llvm-tool.py
Index: llvm/utils/lit/tests/use-llvm-tool.py
===================================================================
--- llvm/utils/lit/tests/use-llvm-tool.py
+++ llvm/utils/lit/tests/use-llvm-tool.py
@@ -17,6 +17,8 @@
## 6 | / | / | / | <- Env is preferred over build, PATH
## 7 | N/S | / | / | <- Build dir is preferred over PATH
## 8 | X | X | X | <- Say nothing if cannot be found if not required
+## 9 | N/S | override | N/S | <- Use specified search directory, instead of default directory
+## 10 | N/S | override | / | <- Use PATH if not in search directory
## Check the exact path reported for the first case, but don't bother for the
## others.
@@ -28,6 +30,8 @@
# CHECK-NEXT: note: using case6: {{.*}}env-case6
# CHECK-NEXT: note: using case7: {{.*}}build{{[\\/]}}case7
# CHECK-NOT: case8
+# CHECK-NEXT: note: using case9: {{.*}}search2{{[\\/]}}case9
+# CHECK-NEXT: note: using case10: {{.*}}path{{[\\/]}}case10
## Test that if required is True, lit errors if the tool is not found.
# RUN: not %{lit} %{inputs}/use-llvm-tool-required 2>&1 | \
Index: llvm/utils/lit/tests/Inputs/use-llvm-tool/lit.cfg
===================================================================
--- llvm/utils/lit/tests/Inputs/use-llvm-tool/lit.cfg
+++ llvm/utils/lit/tests/Inputs/use-llvm-tool/lit.cfg
@@ -20,3 +20,6 @@
lit.llvm.llvm_config.use_llvm_tool('case6', search_env='CASE6', use_installed=True)
lit.llvm.llvm_config.use_llvm_tool('case7', use_installed=True)
lit.llvm.llvm_config.use_llvm_tool('case8', use_installed=True)
+paths = [os.path.join(this_dir, 'search1'), os.path.join(this_dir, 'search2'), os.path.join(this_dir, 'search3')]
+lit.llvm.llvm_config.use_llvm_tool('case9', search_paths=paths)
+lit.llvm.llvm_config.use_llvm_tool('case10', search_paths=paths, use_installed=True)
Index: llvm/utils/lit/lit/llvm/config.py
===================================================================
--- llvm/utils/lit/lit/llvm/config.py
+++ llvm/utils/lit/lit/llvm/config.py
@@ -402,7 +402,7 @@
self.add_err_msg_substitutions()
def use_llvm_tool(self, name, search_env=None, required=False, quiet=False,
- use_installed=False):
+ search_paths=None, use_installed=False):
"""Find the executable program 'name', optionally using the specified
environment variable as an override before searching the build directory
and then optionally the configuration's PATH."""
@@ -413,8 +413,11 @@
tool = self.config.environment.get(search_env)
if not tool:
- # Use the build directory version.
- tool = lit.util.which(name, self.config.llvm_tools_dir)
+ if search_paths is None:
+ search_paths = [self.config.llvm_tools_dir]
+ # Use the specified search paths.
+ path = os.pathsep.join(search_paths)
+ tool = lit.util.which(name, path)
if not tool and use_installed:
# Otherwise look in the path, if enabled.
@@ -503,7 +506,7 @@
# Discover the 'clang' and 'clangcc' to use.
self.config.clang = self.use_llvm_tool(
'clang', search_env='CLANG', required=required,
- use_installed=use_installed)
+ search_paths=paths, use_installed=use_installed)
if self.config.clang:
self.config.available_features.add('clang')
builtin_include_dir = self.get_clang_builtin_include_dir(
@@ -595,20 +598,24 @@
lib_dir_props = [self.config.name.lower() + '_libs_dir',
'lld_libs_dir', 'llvm_libs_dir']
- paths = [getattr(self.config, pp) for pp in lib_dir_props
- if getattr(self.config, pp, None)]
+ lib_paths = [getattr(self.config, pp) for pp in lib_dir_props
+ if getattr(self.config, pp, None)]
- self.with_environment('LD_LIBRARY_PATH', paths, append_path=True)
+ self.with_environment('LD_LIBRARY_PATH', lib_paths, append_path=True)
# Discover the LLD executables to use.
ld_lld = self.use_llvm_tool('ld.lld', required=required,
+ search_paths=paths,
use_installed=use_installed)
lld_link = self.use_llvm_tool('lld-link', required=required,
+ search_paths=paths,
use_installed=use_installed)
ld64_lld = self.use_llvm_tool('ld64.lld', required=required,
+ search_paths=paths,
use_installed=use_installed)
wasm_ld = self.use_llvm_tool('wasm-ld', required=required,
+ search_paths=paths,
use_installed=use_installed)
was_found = ld_lld and lld_link and ld64_lld and wasm_ld
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D103156.347925.patch
Type: text/x-patch
Size: 4965 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210526/db25a96c/attachment.bin>
More information about the llvm-commits
mailing list