[Lldb-commits] [lldb] b3757f3 - [lldb/CMake] Autodetect Python dependency
Davidino Italiano via lldb-commits
lldb-commits at lists.llvm.org
Mon Jan 6 10:17:23 PST 2020
> On Jan 6, 2020, at 9:07 AM, Jonas Devlieghere via lldb-commits <lldb-commits at lists.llvm.org> wrote:
>
>
> Author: Jonas Devlieghere
> Date: 2020-01-06T09:05:05-08:00
> New Revision: b3757f3091d1c718a91f5b06b7364b2af28339fa
>
> URL: https://github.com/llvm/llvm-project/commit/b3757f3091d1c718a91f5b06b7364b2af28339fa
> DIFF: https://github.com/llvm/llvm-project/commit/b3757f3091d1c718a91f5b06b7364b2af28339fa.diff
>
> LOG: [lldb/CMake] Autodetect Python dependency
>
> Python was the last remaining "optional" dependency for LLDB. This moves
> the code to find Python into FindPythonInterpAndLibs using the same
> principles as FindCursesAndPanel.
>
> Differential revision: https://reviews.llvm.org/D72107
>
> Added:
> lldb/cmake/modules/FindPythonInterpAndLibs.cmake
> lldb/lldb/cmake/modules/FindPythonInterpAndLibs.cmake
>
> Modified:
> lldb/cmake/modules/LLDBConfig.cmake
>
> Removed:
>
>
>
> ################################################################################
> diff --git a/lldb/cmake/modules/FindPythonInterpAndLibs.cmake b/lldb/cmake/modules/FindPythonInterpAndLibs.cmake
> new file mode 100644
> index 000000000000..fcbf0212d72b
> --- /dev/null
> +++ b/lldb/cmake/modules/FindPythonInterpAndLibs.cmake
> @@ -0,0 +1,51 @@
> +#.rst:
> +# FindPythonInterpAndLibs
> +# -----------
> +#
> +# Find the python interpreter and libraries as a whole.
> +
> +if(PYTHON_LIBRARIES AND PYTHON_INCLUDE_DIRS AND PYTHON_EXECUTABLE)
> + set(PYTHONINTERPANDLIBS_FOUND TRUE)
> +else()
> + if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
> + find_package(Python3 COMPONENTS Interpreter Development QUIET)
> + if (Python3_FOUND AND Python3_Interpreter_FOUND)
> + set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
> + set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
> + set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
> + mark_as_advanced(
> + PYTHON_LIBRARIES
> + PYTHON_INCLUDE_DIRS
> + PYTHON_EXECUTABLE)
> + endif()
> + else()
> + find_package(PythonInterp QUIET)
> + find_package(PythonLibs QUIET)
> + if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND)
> + if (NOT CMAKE_CROSSCOMPILING)
> + string(REPLACE "." ";" pythonlibs_version_list ${PYTHONLIBS_VERSION_STRING})
> + list(GET pythonlibs_version_list 0 pythonlibs_major)
> + list(GET pythonlibs_version_list 1 pythonlibs_minor)
> +
> + # Ignore the patch version. Some versions of macOS report a
> diff erent
> + # patch version for the system provided interpreter and libraries.
> + if (CMAKE_CROSSCOMPILING OR (PYTHON_VERSION_MAJOR VERSION_EQUAL pythonlibs_major AND
> + PYTHON_VERSION_MINOR VERSION_EQUAL pythonlibs_minor))
> + mark_as_advanced(
> + PYTHON_LIBRARIES
> + PYTHON_INCLUDE_DIRS
> + PYTHON_EXECUTABLE)
> + endif()
> + endif()
> + endif()
> + endif()
> +
> + include(FindPackageHandleStandardArgs)
> + find_package_handle_standard_args(PythonInterpAndLibs
> + FOUND_VAR
> + PYTHONINTERPANDLIBS_FOUND
> + REQUIRED_VARS
> + PYTHON_LIBRARIES
> + PYTHON_INCLUDE_DIRS
> + PYTHON_EXECUTABLE)
> +endif()
>
> diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake
> index 52b8257951be..12fb97fc9d7d 100644
> --- a/lldb/cmake/modules/LLDBConfig.cmake
> +++ b/lldb/cmake/modules/LLDBConfig.cmake
> @@ -51,16 +51,8 @@ add_optional_dependency(LLDB_ENABLE_LIBEDIT "Enable editline support in LLDB" Li
> add_optional_dependency(LLDB_ENABLE_CURSES "Enable curses support in LLDB" CursesAndPanel CURSESANDPANEL_FOUND)
> add_optional_dependency(LLDB_ENABLE_LZMA "Enable LZMA compression support in LLDB" LibLZMA LIBLZMA_FOUND)
> add_optional_dependency(LLDB_ENABLE_LUA "Enable Lua scripting support in LLDB" Lua LUA_FOUND)
> +add_optional_dependency(LLDB_ENABLE_PYTHON "Enable Python scripting support in LLDB" PythonInterpAndLibs PYTHONINTERPANDLIBS_FOUND)
>
> -set(default_enable_python ON)
> -
> -if(CMAKE_SYSTEM_NAME MATCHES "Android")
> - set(default_enable_python OFF)
> -elseif(IOS)
> - set(default_enable_python OFF)
> -endif()
> -
> -option(LLDB_ENABLE_PYTHON "Enable Python scripting integration." ${default_enable_python})
> option(LLDB_RELOCATABLE_PYTHON "Use the PYTHONHOME environment variable to locate Python." OFF)
> option(LLDB_USE_SYSTEM_SIX "Use six.py shipped with system and do not install a copy of it" OFF)
> option(LLDB_USE_ENTITLEMENTS "When codesigning, use entitlements if available" ON)
> @@ -142,48 +134,13 @@ if (LLDB_ENABLE_LIBEDIT)
> endif()
>
> if (LLDB_ENABLE_PYTHON)
> - if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
> - find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
> - if(Python3_VERSION VERSION_LESS 3.5)
> - message(SEND_ERROR "Python 3.5 or newer is required (found: ${Python3_VERSION}")
> - endif()
> - set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
> - include_directories(${Python3_INCLUDE_DIRS})
> -
> - if (NOT LLDB_RELOCATABLE_PYTHON)
> - get_filename_component(PYTHON_HOME "${Python3_EXECUTABLE}" DIRECTORY)
> - file(TO_CMAKE_PATH "${PYTHON_HOME}" LLDB_PYTHON_HOME)
> - endif()
> - else()
> - find_package(PythonInterp REQUIRED)
> - find_package(PythonLibs REQUIRED)
> -
> - if (NOT CMAKE_CROSSCOMPILING)
> - string(REPLACE "." ";" pythonlibs_version_list ${PYTHONLIBS_VERSION_STRING})
> - list(GET pythonlibs_version_list 0 pythonlibs_major)
> - list(GET pythonlibs_version_list 1 pythonlibs_minor)
> -
> - # Ignore the patch version. Some versions of macOS report a
> diff erent patch
> - # version for the system provided interpreter and libraries.
> - if (NOT PYTHON_VERSION_MAJOR VERSION_EQUAL pythonlibs_major OR
> - NOT PYTHON_VERSION_MINOR VERSION_EQUAL pythonlibs_minor)
> - message(FATAL_ERROR "Found incompatible Python interpreter (${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR})"
> - " and Python libraries (${pythonlibs_major}.${pythonlibs_minor})")
> - endif()
> - endif()
> -
> - if (PYTHON_INCLUDE_DIR)
> - include_directories(${PYTHON_INCLUDE_DIR})
> - endif()
> + include_directories(${PYTHON_INCLUDE_DIRS})
> + if (NOT LLDB_RELOCATABLE_PYTHON)
> + get_filename_component(PYTHON_HOME "${PYTHON_EXECUTABLE}" DIRECTORY)
> + file(TO_CMAKE_PATH "${PYTHON_HOME}" LLDB_PYTHON_HOME)
> endif()
> endif()
>
> -if (NOT LLDB_ENABLE_PYTHON)
> - unset(PYTHON_INCLUDE_DIR)
> - unset(PYTHON_LIBRARIES)
> - unset(PYTHON_EXECUTABLE)
> -endif()
> -
> if (LLVM_EXTERNAL_CLANG_SOURCE_DIR)
> include_directories(${LLVM_EXTERNAL_CLANG_SOURCE_DIR}/include)
> else ()
>
> diff --git a/lldb/lldb/cmake/modules/FindPythonInterpAndLibs.cmake b/lldb/lldb/cmake/modules/FindPythonInterpAndLibs.cmake
> new file mode 100644
> index 000000000000..90c902f74ae5
> --- /dev/null
> +++ b/lldb/lldb/cmake/modules/FindPythonInterpAndLibs.cmake
> @@ -0,0 +1,51 @@
> +#.rst:
> +# FindPythonInterpndLibs
> +# -----------
> +#
> +# Find the python interpreter and libraries as a whole.
> +
> +if(PYTHON_LIBRARIES AND PYTHON_INCLUDE_DIRS AND PYTHON_EXECUTABLE)
> + set(PYTHONINTERPANDLIBS_FOUND TRUE)
> +else()
> + if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
> + find_package(Python3 COMPONENTS Interpreter Development QUIET)
> + if (Python3_FOUND AND Python3_Interpreter_FOUND)
> + set(PYTHON_LIBRARIES ${Python3_LIBRARIES})
> + set(PYTHON_INCLUDE_DIRS ${Python3_INCLUDE_DIRS})
> + set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
> + mark_as_advanced(
> + PYTHON_LIBRARIES
> + PYTHON_INCLUDE_DIRS
> + PYTHON_EXECUTABLE)
> + endif()
> + else()
> + find_package(PythonInterp QUIET)
> + find_package(PythonLibs QUIET)
> + if(PYTHONINTERP_FOUND AND PYTHONLIBS_FOUND)
> + if (NOT CMAKE_CROSSCOMPILING)
> + string(REPLACE "." ";" pythonlibs_version_list ${PYTHONLIBS_VERSION_STRING})
> + list(GET pythonlibs_version_list 0 pythonlibs_major)
> + list(GET pythonlibs_version_list 1 pythonlibs_minor)
> +
> + # Ignore the patch version. Some versions of macOS report a
> diff erent
> + # patch version for the system provided interpreter and libraries.
> + if (CMAKE_CROSSCOMPILING OR (PYTHON_VERSION_MAJOR VERSION_EQUAL pythonlibs_major AND
> + PYTHON_VERSION_MINOR VERSION_EQUAL pythonlibs_minor))
> + mark_as_advanced(
> + PYTHON_LIBRARIES
> + PYTHON_INCLUDE_DIRS
> + PYTHON_EXECUTABLE)
> + endif()
> + endif()
> + endif()
> + endif()
> +c
> + include(FindPackageHandleStandardArgs)
> + find_package_handle_standard_args(PythonInterpAndLibs
> + FOUND_VAR
> + PYTHONINTERPANDLIBS_FOUND
> + REQUIRED_VARS
> + PYTHON_LIBRARIES
> + PYTHON_INCLUDE_DIRS
> + PYTHON_EXECUTABLE)
> +endif()
>
I see a bunch of tests failing after this: "ImportError: No module named site".
Reverting seems to fix the problem. If you need any info to reproduce let me know.
--
Davide
More information about the lldb-commits
mailing list