From c76c72c01731e35b66a2d5fbc0b8e87a35b6c512 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 22 Jun 2020 12:24:34 +0200 Subject: [PATCH] Added USERSPACE_PYTHON_PREFIX cmake variable to allow install IfcPython in userspace instead of system-wide. --- cmake/CMakeLists.txt | 1 + src/ifcwrap/CMakeLists.txt | 15 +++++++++++---- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index adc1fd8dd3..8e32cf2e7c 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -49,6 +49,7 @@ endif() if (${BUILD_CONVERT}) OPTION(GLTF_SUPPORT "Build IfcConvert with glTF support (requires json.hpp)." OFF) endif() +OPTION(USERSPACE_PYTHON_PREFIX "Installs IfcPython for the current user only instead of system-wide." OFF) # TODO QtViewer is deprecated ATM as it uses the 0.4 API # OPTION(BUILD_QTVIEWER "Build IfcOpenShell Qt GUI Viewer (requires Qt 4 framework)." OFF) diff --git a/src/ifcwrap/CMakeLists.txt b/src/ifcwrap/CMakeLists.txt index 92ad91de80..d4463e5a4f 100644 --- a/src/ifcwrap/CMakeLists.txt +++ b/src/ifcwrap/CMakeLists.txt @@ -68,10 +68,17 @@ endif() # directory in which the wrapper can be installed. FIND_PACKAGE(PythonInterp) IF(PYTHONINTERP_FOUND AND NOT "${PYTHON_EXECUTABLE}" STREQUAL "") - EXECUTE_PROCESS( - COMMAND ${PYTHON_EXECUTABLE} -c "import sys; from distutils.sysconfig import get_python_lib; sys.stdout.write(get_python_lib(1))" - OUTPUT_VARIABLE python_package_dir - ) + IF (USERSPACE_PYTHON_PREFIX) + EXECUTE_PROCESS( + COMMAND ${PYTHON_EXECUTABLE} -c "import sys; import site; sys.stdout.write(site.USER_SITE)" + OUTPUT_VARIABLE python_package_dir + ) + ELSE () + EXECUTE_PROCESS( + COMMAND ${PYTHON_EXECUTABLE} -c "import sys; from distutils.sysconfig import get_python_lib; sys.stdout.write(get_python_lib(1))" + OUTPUT_VARIABLE python_package_dir + ) + ENDIF() IF("${python_package_dir}" STREQUAL "") MESSAGE(WARNING "Unable to locate Python site-package directory, unable to install the Python wrapper")