[Lldb-commits] [PATCH] D146335: [lldb] Introduce CMake variable LLDB_ENFORCE_STRICT_TEST_REQUIREMENTS
Alex Langford via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Mon Mar 20 10:41:30 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc47da7f10946: [lldb] Introduce CMake variable LLDB_ENFORCE_STRICT_TEST_REQUIREMENTS (authored by bulbazord).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D146335/new/
https://reviews.llvm.org/D146335
Files:
lldb/cmake/modules/AddLLDB.cmake
lldb/cmake/modules/LLDBConfig.cmake
lldb/test/CMakeLists.txt
Index: lldb/test/CMakeLists.txt
===================================================================
--- lldb/test/CMakeLists.txt
+++ lldb/test/CMakeLists.txt
@@ -1,5 +1,30 @@
# Test runner infrastructure for LLDB. This configures the LLDB test trees
# for use by Lit, and delegates to LLVM's lit test handlers.
+# Lit requires a Python3 interpreter, let's be careful and fail early if it's
+# not present.
+if (NOT DEFINED Python3_EXECUTABLE)
+ message(FATAL_ERROR
+ "LLDB test suite requires a Python3 interpreter but none "
+ "was found. Please install Python3 or disable tests with "
+ "`LLDB_INCLUDE_TESTS=OFF`.")
+endif()
+
+if(LLDB_ENFORCE_STRICT_TEST_REQUIREMENTS)
+ message(STATUS "Enforcing strict test requirements for LLDB")
+ set(useful_python_modules
+ psutil # Lit uses psutil to do per-test timeouts.
+ )
+ foreach(module ${useful_python_modules})
+ lldb_find_python_module(${module})
+ if (NOT PY_${module}_FOUND)
+ message(FATAL_ERROR
+ "Python module '${module}' not found. Please install it via pip or via "
+ "your operating system's package manager. Alternatively, disable "
+ "strict testing requirements with "
+ "`LLDB_ENFORCE_STRICT_TEST_REQUIREMENTS=OFF`")
+ endif()
+ endforeach()
+endif()
if(LLDB_BUILT_STANDALONE)
# In order to run check-lldb-* we need the correct map_config directives in
Index: lldb/cmake/modules/LLDBConfig.cmake
===================================================================
--- lldb/cmake/modules/LLDBConfig.cmake
+++ lldb/cmake/modules/LLDBConfig.cmake
@@ -71,6 +71,8 @@
option(LLDB_USE_SYSTEM_DEBUGSERVER "Use the system's debugserver for testing (Darwin only)." OFF)
option(LLDB_SKIP_STRIP "Whether to skip stripping of binaries when installing lldb." OFF)
option(LLDB_SKIP_DSYM "Whether to skip generating a dSYM when installing lldb." OFF)
+option(LLDB_ENFORCE_STRICT_TEST_REQUIREMENTS
+ "Fail to configure if certain requirements are not met for testing." OFF)
set(LLDB_GLOBAL_INIT_DIRECTORY "" CACHE STRING
"Path to the global lldbinit directory. Relative paths are resolved relative to the
Index: lldb/cmake/modules/AddLLDB.cmake
===================================================================
--- lldb/cmake/modules/AddLLDB.cmake
+++ lldb/cmake/modules/AddLLDB.cmake
@@ -349,6 +349,25 @@
endif()
endfunction()
+function(lldb_find_python_module module)
+ set(MODULE_FOUND PY_${module}_FOUND)
+ if (DEFINED ${MODULE_FOUND})
+ return()
+ endif()
+
+ execute_process(COMMAND "${Python3_EXECUTABLE}" "-c" "import ${module}"
+ RESULT_VARIABLE status
+ ERROR_QUIET)
+
+ if (status)
+ set(${MODULE_FOUND} OFF CACHE BOOL "Failed to find python module '${module}'")
+ message(STATUS "Could NOT find Python module '${module}'")
+ else()
+ set(${MODULE_FOUND} ON CACHE BOOL "Found python module '${module}'")
+ message(STATUS "Found Python module '${module}'")
+ endif()
+endfunction()
+
# Removes all module flags from the current CMAKE_CXX_FLAGS. Used for
# the Objective-C++ code in lldb which we don't want to build with modules.
# Reasons for this are that modules with Objective-C++ would require that
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146335.506645.patch
Type: text/x-patch
Size: 3180 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20230320/136e5176/attachment.bin>
More information about the lldb-commits
mailing list