]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake/modules: always use the python3 specified in command line
authorKefu Chai <tchaikov@gmail.com>
Sat, 16 Apr 2022 01:10:20 +0000 (09:10 +0800)
committerKefu Chai <tchaikov@gmail.com>
Wed, 20 Apr 2022 00:53:05 +0000 (08:53 +0800)
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 <tchaikov@gmail.com>
(cherry picked from commit e2babdfae8c99f39f99a7c8a8f966299b2e62b19)

cmake/modules/Distutils.cmake

index ff01aaf818a71d161c8d2c2ae65d827f1e0b772e..f93c12609bb0ebd5cf945a19bf3b8cc7c07f73be 100644 (file)
@@ -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})