[lit] add lit_config.substitute to interpolate lit_config.params
authorSam McCall <sam.mccall@gmail.com>
Thu, 10 Mar 2022 23:58:03 +0000 (00:58 +0100)
committerSam McCall <sam.mccall@gmail.com>
Tue, 15 Mar 2022 21:09:43 +0000 (22:09 +0100)
A version of this logic appears in ~every lit.site.cfg.in (28 copies total).
This patch just removes two, but I'll update the rest of llvm-project next.

Differential Revision: https://reviews.llvm.org/D121427

clang-tools-extra/clangd/test/lit.site.cfg.py.in
clang-tools-extra/test/lit.site.cfg.py.in
llvm/utils/lit/lit/LitConfig.py

index 2b294eaa5ae5a264dc297f57c1a1d9c36c7a2ef8..9adc1c9792c1eb7ef9555be8d0a2051e92908b2a 100644 (file)
@@ -2,24 +2,15 @@
 
 # Variables needed for common clang config.
 config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
-config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
-config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
 config.clang_libs_dir = "@CLANG_LIBS_DIR@"
-config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
 config.target_triple = "@LLVM_TARGET_TRIPLE@"
 config.host_triple = "@LLVM_HOST_TRIPLE@"
 config.python_executable = "@Python3_EXECUTABLE@"
-
 # Support substitution of the tools and libs dirs with user parameters. This is
 # used when we can't determine the tool dir at configuration time.
-try:
-    config.clang_tools_dir = config.clang_tools_dir % lit_config.params
-    config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
-    config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
-except KeyError:
-    e = sys.exc_info()[1]
-    key, = e.args
-    lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
+config.clang_tools_dir = lit_config.substitute("@CLANG_TOOLS_DIR@")
+config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
+config.llvm_libs_dir = lit_config.substitute("@LLVM_LIBS_DIR@")
 
 config.clangd_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.."
 config.clangd_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.."
index 59357f6cad06bfe757f406a599da73efe4454d22..26bd50dd3ca4d4f33d8033af7994925259656c0c 100644 (file)
@@ -2,28 +2,19 @@
 
 import sys
 
-config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
-config.llvm_libs_dir = "@LLVM_LIBS_DIR@"
 config.llvm_plugin_ext = "@LLVM_PLUGIN_EXT@"
 config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@"
 config.clang_tools_binary_dir = "@CLANG_TOOLS_BINARY_DIR@"
-config.clang_tools_dir = "@CLANG_TOOLS_DIR@"
 config.clang_libs_dir = "@SHLIBDIR@"
 config.python_executable = "@Python3_EXECUTABLE@"
 config.target_triple = "@LLVM_TARGET_TRIPLE@"
 config.clang_tidy_staticanalyzer = @CLANG_TIDY_ENABLE_STATIC_ANALYZER@
 config.has_plugins = @CLANG_PLUGIN_SUPPORT@ & ~@LLVM_INSTALL_TOOLCHAIN_ONLY@
-
 # Support substitution of the tools and libs dirs with user parameters. This is
 # used when we can't determine the tool dir at configuration time.
-try:
-    config.clang_tools_dir = config.clang_tools_dir % lit_config.params
-    config.llvm_tools_dir = config.llvm_tools_dir % lit_config.params
-    config.llvm_libs_dir = config.llvm_libs_dir % lit_config.params
-except KeyError:
-    e = sys.exc_info()[1]
-    key, = e.args
-    lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
+config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@")
+config.llvm_libs_dir = lit_config.substitute("@LLVM_LIBS_DIR@")
+config.clang_tools_dir = lit_config.substitute("@CLANG_TOOLS_DIR@")
 
 import lit.llvm
 lit.llvm.initialize(lit_config, config)
index 38b7a18c6a583ab9a731217686d4afa96e8d472b..34d0e90149af1cc7644c61979d407d1382825b6c 100644 (file)
@@ -175,6 +175,15 @@ class LitConfig(object):
             # output.
             sys.stderr.flush()
 
+    def substitute(self, string):
+        """substitute - Interpolate params into a string"""
+        try:
+          return string % self.params
+        except KeyError as e:
+          key, = e.args
+          self.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (
+              key,key))
+
     def note(self, message):
         if not self.quiet:
             self._write_message('note', message)