Merge topic 'FindPython-fix-SABIModule-detection'

5fdfb2283a FindPython: fix SABIModule detection failure

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !12285
This commit is contained in:
Brad King
2026-07-21 10:05:47 -04:00
committed by Kitware Robot
3 changed files with 28 additions and 9 deletions
+12 -8
View File
@@ -3772,7 +3772,7 @@ if (("Development.Module" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS
${__${_PYTHON_PREFIX}_REGISTRY_PATHS}
PATH_SUFFIXES ${_${_PYTHON_PREFIX}_PATH_SUFFIXES})
if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
if (_${_PYTHON_PREFIX}_SABI_LIBRARY_RELEASE)
break()
endif()
endforeach()
@@ -3783,14 +3783,18 @@ if (("Development.Module" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS
# finalize library version information
# ABI library does not have the full version information
if (${_PYTHON_PREFIX}_Interpreter_FOUND AND NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
# update from interpreter
set (_${_PYTHON_PREFIX}_VERSION ${${_PYTHON_PREFIX}_VERSION})
set (_${_PYTHON_PREFIX}_VERSION_MAJOR ${${_PYTHON_PREFIX}_VERSION_MAJOR})
set (_${_PYTHON_PREFIX}_VERSION_MINOR ${${_PYTHON_PREFIX}_VERSION_MINOR})
set (_${_PYTHON_PREFIX}_VERSION_PATCH ${${_PYTHON_PREFIX}_VERSION_PATCH})
elseif(NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
if (NOT _${_PYTHON_PREFIX}_LIBRARY_RELEASE)
_python_get_version (SABI_LIBRARY PREFIX _${_PYTHON_PREFIX}_)
if (_${_PYTHON_PREFIX}_VERSION EQUAL "${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}")
# not able to extract full version from library name
if (${_PYTHON_PREFIX}_Interpreter_FOUND)
# update from interpreter
set (_${_PYTHON_PREFIX}_VERSION ${${_PYTHON_PREFIX}_VERSION})
set (_${_PYTHON_PREFIX}_VERSION_MAJOR ${${_PYTHON_PREFIX}_VERSION_MAJOR})
set (_${_PYTHON_PREFIX}_VERSION_MINOR ${${_PYTHON_PREFIX}_VERSION_MINOR})
set (_${_PYTHON_PREFIX}_VERSION_PATCH ${${_PYTHON_PREFIX}_VERSION_PATCH})
endif()
endif()
endif()
if (_${_PYTHON_PREFIX}_SABI_LIBRARY_RELEASE AND NOT DEFINED ${_PYTHON_PREFIX}_FREE_THREADED)
@@ -70,6 +70,19 @@ block(SCOPE_FOR VARIABLES)
unset(_Python3_SABI_LIBRARY_RELEASE CACHE)
endblock()
block(SCOPE_FOR VARIABLES)
set(components Interpreter)
if (CMake_TEST_FindPython3_SABIModule)
list (APPEND components Development.SABIModule)
endif()
find_package(Python3 REQUIRED COMPONENTS ${components})
if (NOT Python3_FOUND)
message (FATAL_ERROR "Failed to find Python 3")
endif()
unset(_Python3_EXECUTABLE CACHE)
unset(_Python3_SABI_LIBRARY_RELEASE CACHE)
endblock()
set(components Interpreter Development)
if (CMake_TEST_FindPython3_SABIModule)
+3 -1
View File
@@ -322,7 +322,9 @@ if(CMake_TEST_FindPython_Various)
run_python(ArtifactsInteractive VARIANT "OFF"
OPTIONS -DCMake_TEST_FindPython3_NumPy=${CMake_TEST_FindPython3_NumPy}
-DPython3_ARTIFACTS_INTERACTIVE=OFF)
run_python(Android OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/android_toolchain.cmake")
if(NOT WIN32)
run_python(Android OPTIONS "-DCMAKE_TOOLCHAIN_FILE=${RunCMake_SOURCE_DIR}/android_toolchain.cmake")
endif()
endif()
if(CMake_TEST_FindPython2 OR CMake_TEST_FindPython3)