From b1a016d4b56804d13ce1696acc41525d313a9cbc Mon Sep 17 00:00:00 2001 From: Sam Yates <halfflat@gmail.com> Date: Mon, 25 Jan 2021 17:31:31 +0100 Subject: [PATCH] Respect CMAKE_INSTALL_PREFIX in python lib path (#1325) * Respect CMAKE_INSTALL_PREFIX in python lib path * Set `base` and `platbase` to the CMAKE_INSTALL_PREFIX, if defined, when asking Python for the default python lib install path. * Differentiate between explicit and default prefix. * Test for defaulted CMAKE_INSTALL_PREFIX, in which case, use the system python site packages path, so that it's overall less excitingly awful in python virtual environments. If you want /usr/local, set it. --- python/CMakeLists.txt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 744a0d18..8ecc727a 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -81,7 +81,20 @@ file(COPY "${PROJECT_SOURCE_DIR}/VERSION" DESTINATION "${python_mod_path}") # Set the installation path # Ask Python where it keeps its system (platform) packages. -execute_process (COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_path('platlib'))" OUTPUT_VARIABLE ARB_PYTHON_LIB_PATH_DEFAULT OUTPUT_STRIP_TRAILING_WHITESPACE) + +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + file(WRITE "${CMAKE_BINARY_DIR}/install-prefix" "") +else() + file(WRITE "${CMAKE_BINARY_DIR}/install-prefix" "${CMAKE_INSTALL_PREFIX}") +endif() + +execute_process( + COMMAND ${PYTHON_EXECUTABLE} -c + "import sys,sysconfig;pfx=sys.stdin.read();print(sysconfig.get_path('platlib',vars={} if pfx=='' else {'base':pfx,'platbase':pfx}))" + INPUT_FILE "${CMAKE_BINARY_DIR}/install-prefix" + OUTPUT_VARIABLE ARB_PYTHON_LIB_PATH_DEFAULT + OUTPUT_STRIP_TRAILING_WHITESPACE) + # Default to installing in that path, override with user specified ARB_PYTHON_LIB_PATH set(ARB_PYTHON_LIB_PATH ${ARB_PYTHON_LIB_PATH_DEFAULT} CACHE PATH "path for installing Python module for Arbor.") message(STATUS "Python module installation path: ${ARB_PYTHON_LIB_PATH}") -- GitLab