https://github.com/Cisco-Talos/clamav/commit/f4280e9a690f2a5b657118e515b089f494a1e464 From: Matt Jolly Date: Wed, 30 Nov 2022 16:14:39 +1100 Subject: [PATCH] CMake: Enable selection of a specific python impl On distros with multiple python impls it can be useful to select a specific version rather than whatever CMake thinks is appopriate. This patch enables users to instruct CMake to look for a specific version of python by passing `-DPYTHON_FIND_VER`. --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -223,20 +223,26 @@ if(ENABLE_TESTS) find_package(Libcheck REQUIRED) # Used to generate the test files and for the application feature test framework - find_package(Python3 REQUIRED) + # In distros that support multiple implementations of python it is helpful to specify the impl to use + if(DEFINED PYTHON_FIND_VERSION) + find_package(Python3 EXACT ${PYTHON_FIND_VERSION} REQUIRED) + else() + find_package(Python3 REQUIRED) + # Not requesting a specific python impl; try using pytest from the PATH + execute_process( + COMMAND pytest --version + RESULT_VARIABLE PYTEST_EXIT_CODE + ERROR_QUIET OUTPUT_QUIET + ) - # First try using pytest from the PATH - execute_process( - COMMAND pytest --version - RESULT_VARIABLE PYTEST_EXIT_CODE - ERROR_QUIET OUTPUT_QUIET - ) + if(${PYTEST_EXIT_CODE} EQUAL 0) + # pytest found in the path. + set(PythonTest_COMMAND "pytest;-v") + endif() + endif() - if(${PYTEST_EXIT_CODE} EQUAL 0) - # pytest found in the path. - set(PythonTest_COMMAND "pytest;-v") - else() - # Not in the path, try using: python3 -m pytest + if("${PythonTest_COMMAND}" STREQUAL "") + # Not in the path or specified a python impl; try using: python3 -m pytest execute_process( COMMAND ${Python3_EXECUTABLE} -m pytest --version RESULT_VARIABLE PYTEST_MODULE_EXIT_CODE