[PATCH] D103156: [lit] Fix testing of standalone clang and lld builds

James Henderson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri May 28 02:51:00 PDT 2021


jhenderson updated this revision to Diff 348478.
jhenderson added a comment.

Rebase. I'll try landing this once the pre-merge checks complete, if there are no objections.

FYI: I'm off next week, so if this doesn't fix things, and the issue is an issue that needs resolving faster, I'd recommend reverting the original change.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103156/new/

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.348478.patch
Type: text/x-patch
Size: 4965 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210528/a686c83a/attachment.bin>


More information about the llvm-commits mailing list