Skip to content

Commit 950c5f7

Browse files
committed
[cmake] Correctly define PIP_TARGET based on PIP_INSTALL_PREFIX
1 parent 813f7df commit 950c5f7

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

CMakeLists.txt

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,26 @@ macro(ADD_BINDINGS PYTHON PYTHON_EXECUTABLE SOURCES)
106106
endif()
107107
if(DEFINED PIP_INSTALL_PREFIX)
108108
_pip_has_install_system(${PYTHON_EXECUTABLE} PIP_HAS_INSTALL_SYSTEM)
109-
execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sys; print(\"python{}.{}\".format(sys.version_info.major, sys.version_info.minor));" OUTPUT_VARIABLE PYTHON_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
109+
execute_process(
110+
COMMAND
111+
${PYTHON_EXECUTABLE} -c
112+
"from distutils import sysconfig; print(sysconfig.get_python_lib(prefix = '${PIP_INSTALL_PREFIX}', plat_specific = True))"
113+
RESULT_VARIABLE PYTHON_INSTALL_DESTINATION_FOUND
114+
OUTPUT_VARIABLE PIP_TARGET
115+
OUTPUT_STRIP_TRAILING_WHITESPACE)
116+
# Debian/Ubuntu has a specific problem here See
117+
# https://github.com/mesonbuild/meson/issues/8739 for an overview of the
118+
# problem
110119
if(EXISTS /etc/debian_version)
111-
set(PIP_TARGET "${PIP_INSTALL_PREFIX}/lib/${PYTHON_VERSION}/dist-packages/")
112-
else()
113-
set(PIP_TARGET "${PIP_INSTALL_PREFIX}/lib/${PYTHON_VERSION}/site-packages/")
120+
execute_process(
121+
COMMAND
122+
${PYTHON_EXECUTABLE} -c
123+
"import sys; print(\"python{}.{}\".format(sys.version_info.major, sys.version_info.minor));"
124+
OUTPUT_VARIABLE PYTHON_VERSION
125+
OUTPUT_STRIP_TRAILING_WHITESPACE)
126+
string(REPLACE "python3/" "${PYTHON_VERSION}/"
127+
PIP_TARGET
128+
"${PIP_TARGET}")
114129
endif()
115130
set(PIP_EXTRA_OPTIONS --target "${PIP_TARGET}")
116131
if(${PIP_HAS_INSTALL_SYSTEM})

0 commit comments

Comments
 (0)