Skip to content

Commit

Permalink
CMake: Switch use of distutils.sysconfig to sysconfig in Python 3.12
Browse files Browse the repository at this point in the history
Part of #1395
  • Loading branch information
rdb committed Oct 15, 2023
1 parent c48fcba commit 39e4e41
Showing 1 changed file with 26 additions and 10 deletions.
36 changes: 26 additions & 10 deletions dtool/Package.cmake
Expand Up @@ -257,16 +257,32 @@ if(HAVE_PYTHON)
set(_ARCH_DIR ".")

elseif(PYTHON_EXECUTABLE)
execute_process(
COMMAND ${PYTHON_EXECUTABLE}
-c "from distutils.sysconfig import get_python_lib; print(get_python_lib(False))"
OUTPUT_VARIABLE _LIB_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND ${PYTHON_EXECUTABLE}
-c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True))"
OUTPUT_VARIABLE _ARCH_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
# Python 3.12 drops the distutils module, so we have to use the newer
# sysconfig module instead. Earlier versions of Python had the newer
# module too, but it was broken in Debian/Ubuntu, see #1230
if(PYTHON_VERSION_STRING VERSION_LESS "3.12")
execute_process(
COMMAND ${PYTHON_EXECUTABLE}
-c "from distutils.sysconfig import get_python_lib; print(get_python_lib(False))"
OUTPUT_VARIABLE _LIB_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND ${PYTHON_EXECUTABLE}
-c "from distutils.sysconfig import get_python_lib; print(get_python_lib(True))"
OUTPUT_VARIABLE _ARCH_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
else()
execute_process(
COMMAND ${PYTHON_EXECUTABLE}
-c "import sysconfig; print(sysconfig.get_path('purelib'))"
OUTPUT_VARIABLE _LIB_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND ${PYTHON_EXECUTABLE}
-c "import sysconfig; print(sysconfig.get_path('platlib'))"
OUTPUT_VARIABLE _ARCH_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()

else()
set(_LIB_DIR "")
Expand Down

0 comments on commit 39e4e41

Please sign in to comment.