From: Kefu Chai Date: Sat, 16 Apr 2022 01:10:20 +0000 (+0800) Subject: cmake/modules: always use the python3 specified in command line X-Git-Tag: v16.2.8~4^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=30e1e26928501966bf46c6e414efbade2d4c498a;p=ceph.git cmake/modules: always use the python3 specified in command line if another python3 with higher version is found by find_package(Python3), the cmake's install script would just install the python modules/extensions into that python3's dist-package directory, and the packaging script would fail to find these artifacts when trying to package them. so we need to ensure that the install directories for python modeules/extensions are always "versioned" with WITH_PYTHON3 cmake option. Signed-off-by: Kefu Chai (cherry picked from commit e2babdfae8c99f39f99a7c8a8f966299b2e62b19) --- diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake index ff01aaf818a7..f93c12609bb0 100644 --- a/cmake/modules/Distutils.cmake +++ b/cmake/modules/Distutils.cmake @@ -1,5 +1,16 @@ include(CMakeParseArguments) +# ensure that we are using the exact python version specified by +# 'WITH_PYTHON3', in case some included 3rd party libraries call +# 'find_package(Python3 ...) without specifying the exact version number. if +# the building host happens to have a higher version of python3, that version +# would be picked up instead by find_package(Python3). and that is not want we +# expect. +find_package(Python3 ${WITH_PYTHON3} + QUIET + REQUIRED + COMPONENTS Interpreter) + function(distutils_install_module name) set(py_srcs setup.py README.rst requirements.txt test-requirements.txt bin ${name}) foreach(src ${py_srcs})