[llvm] r313429 - Revert lit changes related to lit.llvm module.
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 15 17:52:50 PDT 2017
Author: zturner
Date: Fri Sep 15 17:52:49 2017
New Revision: 313429
URL: http://llvm.org/viewvc/llvm-project?rev=313429&view=rev
Log:
Revert lit changes related to lit.llvm module.
It looks like this is going to be non-trivial to get working
in both Py2 and Py3, so for now I'm reverting until I have time
to fully test it under Python 3.
Removed:
llvm/trunk/utils/lit/lit/llvm/
Modified:
llvm/trunk/cmake/modules/AddLLVM.cmake
llvm/trunk/test/lit.cfg
llvm/trunk/test/lit.site.cfg.in
llvm/trunk/utils/lit/lit/util.py
Modified: llvm/trunk/cmake/modules/AddLLVM.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddLLVM.cmake?rev=313429&r1=313428&r2=313429&view=diff
==============================================================================
--- llvm/trunk/cmake/modules/AddLLVM.cmake (original)
+++ llvm/trunk/cmake/modules/AddLLVM.cmake Fri Sep 15 17:52:49 2017
@@ -1173,10 +1173,6 @@ function(configure_lit_site_cfg input ou
set(TARGET_TRIPLE "\"+config.target_triple+\"")
endif()
- string(CONCAT LIT_SITE_CFG_IN_FOOTER
- "import lit.llvm\n"
- "lit.llvm.initialize(lit_config, config)\n")
-
configure_file(${input} ${output} @ONLY)
get_filename_component(INPUT_DIR ${input} DIRECTORY)
if (EXISTS "${INPUT_DIR}/lit.cfg")
Modified: llvm/trunk/test/lit.cfg
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/lit.cfg?rev=313429&r1=313428&r2=313429&view=diff
==============================================================================
--- llvm/trunk/test/lit.cfg (original)
+++ llvm/trunk/test/lit.cfg Fri Sep 15 17:52:49 2017
@@ -10,13 +10,35 @@ import subprocess
import lit.util
import lit.formats
-from lit.llvm import llvm_config
# name: The name of this test suite.
config.name = 'LLVM'
+# Tweak PATH for Win32 to decide to use bash.exe or not.
+if sys.platform in ['win32']:
+ # Seek sane tools in directories and set to $PATH.
+ path = getattr(config, 'lit_tools_dir', None)
+ path = lit_config.getToolsPath(path,
+ config.environment['PATH'],
+ ['cmp.exe', 'grep.exe', 'sed.exe'])
+ if path is not None:
+ path = os.path.pathsep.join((path,
+ config.environment['PATH']))
+ config.environment['PATH'] = path
+
+# Choose between lit's internal shell pipeline runner and a real shell. If
+# LIT_USE_INTERNAL_SHELL is in the environment, we use that as an override.
+use_lit_shell = os.environ.get("LIT_USE_INTERNAL_SHELL")
+if use_lit_shell:
+ # 0 is external, "" is default, and everything else is internal.
+ execute_external = (use_lit_shell == "0")
+else:
+ # Otherwise we default to internal on Windows and external elsewhere, as
+ # bash on Windows is usually very slow.
+ execute_external = (not sys.platform in ['win32'])
+
# testFormat: The test format to use to interpret tests.
-config.test_format = lit.formats.ShTest(not llvm_config.use_lit_shell)
+config.test_format = lit.formats.ShTest(execute_external)
# suffixes: A list of file extensions to treat as test files. This is overriden
# by individual lit.local.cfg files in the test subdirectories.
@@ -34,27 +56,57 @@ config.test_source_root = os.path.dirnam
config.test_exec_root = os.path.join(config.llvm_obj_root, 'test')
# Tweak the PATH to include the tools dir.
-llvm_config.with_environment('PATH', config.llvm_tools_dir, append_path=True)
+path = os.path.pathsep.join((config.llvm_tools_dir, config.environment['PATH']))
+config.environment['PATH'] = path
-# Propagate some variables from the host environment.
-llvm_config.with_system_environment(['HOME', 'INCLUDE', 'LIB', 'TMP', 'TEMP', 'ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH'])
+# Propagate 'HOME' through the environment.
+if 'HOME' in os.environ:
+ config.environment['HOME'] = os.environ['HOME']
+
+# Propagate 'INCLUDE' through the environment.
+if 'INCLUDE' in os.environ:
+ config.environment['INCLUDE'] = os.environ['INCLUDE']
+
+# Propagate 'LIB' through the environment.
+if 'LIB' in os.environ:
+ config.environment['LIB'] = os.environ['LIB']
+
+# Propagate the temp directory. Windows requires this because it uses \Windows\
+# if none of these are present.
+if 'TMP' in os.environ:
+ config.environment['TMP'] = os.environ['TMP']
+if 'TEMP' in os.environ:
+ config.environment['TEMP'] = os.environ['TEMP']
# Propagate LLVM_SRC_ROOT into the environment.
config.environment['LLVM_SRC_ROOT'] = config.llvm_src_root
+# Propagate PYTHON_EXECUTABLE into the environment
+config.environment['PYTHON_EXECUTABLE'] = getattr(config, 'python_executable',
+ '')
+
+# Propagate path to symbolizer for ASan/MSan.
+for symbolizer in ['ASAN_SYMBOLIZER_PATH', 'MSAN_SYMBOLIZER_PATH']:
+ if symbolizer in os.environ:
+ config.environment[symbolizer] = os.environ[symbolizer]
+
# Set up OCAMLPATH to include newly built OCaml libraries.
top_ocaml_lib = os.path.join(config.llvm_lib_dir, 'ocaml')
llvm_ocaml_lib = os.path.join(top_ocaml_lib, 'llvm')
-
-llvm_config.with_system_environment('OCAMLPATH')
-llvm_config.with_environment('OCAMLPATH', top_ocaml_lib, append_path=True)
-llvm_config.with_environment('OCAMLPATH', llvm_ocaml_lib, append_path=True)
-
-llvm_config.with_system_environment('CAML_LD_LIBRARY_PATH')
-llvm_config.with_environment('CAML_LD_LIBRARY_PATH', llvm_ocaml_lib, append_path=True)
+ocamlpath = os.path.pathsep.join((llvm_ocaml_lib, top_ocaml_lib))
+if 'OCAMLPATH' in os.environ:
+ ocamlpath = os.path.pathsep.join((ocamlpath, os.environ['OCAMLPATH']))
+config.environment['OCAMLPATH'] = ocamlpath
+
+if 'CAML_LD_LIBRARY_PATH' in os.environ:
+ caml_ld_library_path = os.path.pathsep.join((llvm_ocaml_lib,
+ os.environ['CAML_LD_LIBRARY_PATH']))
+ config.environment['CAML_LD_LIBRARY_PATH'] = caml_ld_library_path
+else:
+ config.environment['CAML_LD_LIBRARY_PATH'] = llvm_ocaml_lib
# Set up OCAMLRUNPARAM to enable backtraces in OCaml tests.
-llvm_config.with_environment('OCAMLRUNPARAM', 'b')
+config.environment['OCAMLRUNPARAM'] = 'b'
# Provide the path to asan runtime lib 'libclang_rt.asan_osx_dynamic.dylib' if
# available. This is darwin specific since it's currently only needed on darwin.
@@ -248,6 +300,10 @@ for arch in config.targets_to_build.spli
### Features
+# Shell execution
+if execute_external:
+ config.available_features.add('shell')
+
# Others/can-execute.txt
if sys.platform not in ['win32']:
config.available_features.add('can-execute')
@@ -267,14 +323,45 @@ if loadable_module:
if not config.build_shared_libs:
config.available_features.add("static-libs")
+# Sanitizers.
+if 'Address' in config.llvm_use_sanitizer:
+ config.available_features.add("asan")
+else:
+ config.available_features.add("not_asan")
+if 'Memory' in config.llvm_use_sanitizer:
+ config.available_features.add("msan")
+else:
+ config.available_features.add("not_msan")
+if 'Undefined' in config.llvm_use_sanitizer:
+ config.available_features.add("ubsan")
+else:
+ config.available_features.add("not_ubsan")
+
+# Check if we should run long running tests.
+if lit_config.params.get("run_long_tests", None) == "true":
+ config.available_features.add("long_tests")
+
# Direct object generation
if not 'hexagon' in config.target_triple:
config.available_features.add("object-emission")
+if config.have_zlib:
+ config.available_features.add("zlib")
+else:
+ config.available_features.add("nozlib")
+
# LLVM can be configured with an empty default triple
# Some tests are "generic" and require a valid default triple
if config.target_triple:
config.available_features.add("default_triple")
+ if re.match(r'^x86_64.*-linux', config.target_triple):
+ config.available_features.add("x86_64-linux")
+
+# Native compilation: host arch == default triple arch
+# FIXME: Consider cases that target can be executed
+# even if host_triple were different from target_triple.
+if config.host_triple == config.target_triple:
+ config.available_features.add("native")
import subprocess
@@ -329,9 +416,19 @@ def have_ld64_plugin_support():
if have_ld64_plugin_support():
config.available_features.add('ld64_plugin')
-# Ask llvm-config about asserts and global-isel.
-llvm_config.feature_config('--assertion-mode', 'asserts')
-llvm_config.feature_config('--has-global-isel', 'global-isel')
+# Ask llvm-config about assertion mode.
+try:
+ llvm_config_cmd = subprocess.Popen(
+ [os.path.join(config.llvm_tools_dir, 'llvm-config'), '--assertion-mode'],
+ stdout = subprocess.PIPE,
+ env=config.environment)
+except OSError:
+ print("Could not find llvm-config in " + config.llvm_tools_dir)
+ exit(42)
+
+if re.search(r'ON', llvm_config_cmd.stdout.read().decode('ascii')):
+ config.available_features.add('asserts')
+llvm_config_cmd.wait()
if 'darwin' == sys.platform:
try:
@@ -344,12 +441,56 @@ if 'darwin' == sys.platform:
config.available_features.add('fma3')
sysctl_cmd.wait()
+if platform.system() in ['Windows']:
+ if re.match(r'.*-win32$', config.target_triple):
+ config.available_features.add('target-windows')
+ # For tests that require Windows to run.
+ config.available_features.add('system-windows')
+
# .debug_frame is not emitted for targeting Windows x64.
if not re.match(r'^x86_64.*-(mingw32|windows-gnu|win32)', config.target_triple):
config.available_features.add('debug_frame')
+# Check if we should use gmalloc.
+use_gmalloc_str = lit_config.params.get('use_gmalloc', None)
+if use_gmalloc_str is not None:
+ if use_gmalloc_str.lower() in ('1', 'true'):
+ use_gmalloc = True
+ elif use_gmalloc_str.lower() in ('', '0', 'false'):
+ use_gmalloc = False
+ else:
+ lit_config.fatal('user parameter use_gmalloc should be 0 or 1')
+else:
+ # Default to not using gmalloc
+ use_gmalloc = False
+
+# Allow use of an explicit path for gmalloc library.
+# Will default to '/usr/lib/libgmalloc.dylib' if not set.
+gmalloc_path_str = lit_config.params.get('gmalloc_path',
+ '/usr/lib/libgmalloc.dylib')
+
+if use_gmalloc:
+ config.environment.update({'DYLD_INSERT_LIBRARIES' : gmalloc_path_str})
+
+# Ask llvm-config about global-isel.
+try:
+ llvm_config_cmd = subprocess.Popen(
+ [os.path.join(config.llvm_tools_dir, 'llvm-config'), '--has-global-isel'],
+ stdout = subprocess.PIPE,
+ env=config.environment)
+except OSError:
+ print("Could not find llvm-config in " + config.llvm_tools_dir)
+ exit(42)
+
+if re.search(r'ON', llvm_config_cmd.stdout.read().decode('ascii')):
+ config.available_features.add('global-isel')
+llvm_config_cmd.wait()
+
if config.have_libxar:
config.available_features.add('xar')
+if config.enable_abi_breaking_checks == "1":
+ config.available_features.add('abi-breaking-checks')
+
if config.llvm_libxml2_enabled == "1":
config.available_features.add('libxml2')
Modified: llvm/trunk/test/lit.site.cfg.in
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/lit.site.cfg.in?rev=313429&r1=313428&r2=313429&view=diff
==============================================================================
--- llvm/trunk/test/lit.site.cfg.in (original)
+++ llvm/trunk/test/lit.site.cfg.in Fri Sep 15 17:52:49 2017
@@ -52,7 +52,5 @@ except KeyError:
key, = e.args
lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
- at LIT_SITE_CFG_IN_FOOTER@
-
# Let the main config do the real work.
lit_config.load_config(config, "@LLVM_SOURCE_DIR@/test/lit.cfg")
Modified: llvm/trunk/utils/lit/lit/util.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/util.py?rev=313429&r1=313428&r2=313429&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/util.py (original)
+++ llvm/trunk/utils/lit/lit/util.py Fri Sep 15 17:52:49 2017
@@ -1,7 +1,6 @@
import errno
import itertools
import math
-import numbers
import os
import platform
import signal
@@ -9,29 +8,6 @@ import subprocess
import sys
import threading
-
-def pythonize_bool(value):
- def is_string(value):
- try:
- # Python 2 and Python 3 are different here.
- return isinstance(value, basestring)
- except NameError:
- return isinstance(value, str)
-
- if value is None:
- return False
- if type(value) is bool:
- return value
- if isinstance(value, numbers.Number):
- return value != 0
- if is_string(value):
- if value.lower() in ('1', 'true', 'on', 'yes'):
- return True
- if value.lower() in ('', '0', 'false', 'off', 'no'):
- return False
- raise ValueError('"{}" is not a valid boolean'.format(value))
-
-
def to_bytes(s):
"""Return the parameter as type 'bytes', possibly encoding it.
More information about the llvm-commits
mailing list