mgorny created this revision. mgorny added reviewers: hhb, JDevlieghere, sgraenitz, zturner, beanz, labath.
Fix installing Python modules on systems that use /usr/lib for Python while installing other libraries in /usr/lib64. Rewrite CMake logic to query correct directories from Python, similarly to how prepare_binding_Python.py does it. Furthermore, change the regex used in get_relative_lib_dir.py to allow 'lib' without suffix. I think that the code can be further improved but I'd like to take this enterprise in smaller steps in case one of them breaks something. https://reviews.llvm.org/D67890 Files: lldb/scripts/CMakeLists.txt lldb/scripts/get_relative_lib_dir.py Index: lldb/scripts/get_relative_lib_dir.py =================================================================== --- lldb/scripts/get_relative_lib_dir.py +++ lldb/scripts/get_relative_lib_dir.py @@ -23,7 +23,7 @@ # right answer always. arch_specific_libdir = distutils.sysconfig.get_python_lib(True, False) split_libdir = arch_specific_libdir.split(os.sep) - lib_re = re.compile(r"^lib.+$") + lib_re = re.compile(r"^lib.*$") for i in range(len(split_libdir)): match = lib_re.match(split_libdir[i]) Index: lldb/scripts/CMakeLists.txt =================================================================== --- lldb/scripts/CMakeLists.txt +++ lldb/scripts/CMakeLists.txt @@ -42,15 +42,18 @@ ) if(NOT LLDB_BUILD_FRAMEWORK) - if(CMAKE_SYSTEM_NAME MATCHES "Windows") - set(swig_python_subdir site-packages) - else() - set(swig_python_subdir python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) - endif() - - set(SWIG_PYTHON_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${swig_python_subdir}) - set(SWIG_INSTALL_DIR lib${LLVM_LIBDIR_SUFFIX}) + execute_process( + COMMAND ${PYTHON_EXECUTABLE} + -c "import distutils.sysconfig, sys; print(distutils.sysconfig.get_python_lib(True, False, sys.argv[1]))" + ${CMAKE_BINARY_DIR} + OUTPUT_VARIABLE SWIG_PYTHON_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process( + COMMAND ${PYTHON_EXECUTABLE} + -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(True, False, ''))" + OUTPUT_VARIABLE SWIG_INSTALL_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) # Install the LLDB python module - install(DIRECTORY ${SWIG_PYTHON_DIR} DESTINATION ${SWIG_INSTALL_DIR}) + install(DIRECTORY ${SWIG_PYTHON_DIR}/ DESTINATION ${SWIG_INSTALL_DIR}) endif()
Index: lldb/scripts/get_relative_lib_dir.py =================================================================== --- lldb/scripts/get_relative_lib_dir.py +++ lldb/scripts/get_relative_lib_dir.py @@ -23,7 +23,7 @@ # right answer always. arch_specific_libdir = distutils.sysconfig.get_python_lib(True, False) split_libdir = arch_specific_libdir.split(os.sep) - lib_re = re.compile(r"^lib.+$") + lib_re = re.compile(r"^lib.*$") for i in range(len(split_libdir)): match = lib_re.match(split_libdir[i]) Index: lldb/scripts/CMakeLists.txt =================================================================== --- lldb/scripts/CMakeLists.txt +++ lldb/scripts/CMakeLists.txt @@ -42,15 +42,18 @@ ) if(NOT LLDB_BUILD_FRAMEWORK) - if(CMAKE_SYSTEM_NAME MATCHES "Windows") - set(swig_python_subdir site-packages) - else() - set(swig_python_subdir python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}) - endif() - - set(SWIG_PYTHON_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${swig_python_subdir}) - set(SWIG_INSTALL_DIR lib${LLVM_LIBDIR_SUFFIX}) + execute_process( + COMMAND ${PYTHON_EXECUTABLE} + -c "import distutils.sysconfig, sys; print(distutils.sysconfig.get_python_lib(True, False, sys.argv[1]))" + ${CMAKE_BINARY_DIR} + OUTPUT_VARIABLE SWIG_PYTHON_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) + execute_process( + COMMAND ${PYTHON_EXECUTABLE} + -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(True, False, ''))" + OUTPUT_VARIABLE SWIG_INSTALL_DIR + OUTPUT_STRIP_TRAILING_WHITESPACE) # Install the LLDB python module - install(DIRECTORY ${SWIG_PYTHON_DIR} DESTINATION ${SWIG_INSTALL_DIR}) + install(DIRECTORY ${SWIG_PYTHON_DIR}/ DESTINATION ${SWIG_INSTALL_DIR}) endif()
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits