From: Kai Wasserbäch Description: Make the Python CMake scripts more versatile in version handling. The FindPython{Interp,Libs}.cmake scripts need to cater for a set version or, failing that, in Debian, set the default version for Python in Debian. As a last resort we still try a list of hardcoded values. . This patch addresses both issues. (Closes: #569321, #580503) . Parts of this patch were based on Didier Raboud's patch for #569321. Last-Update: 2010-11-13 Origin: vendor Forwarded: http://public.kitware.com/Bug/view.php?id=10279 --- a/Modules/FindPythonInterp.cmake +++ b/Modules/FindPythonInterp.cmake @@ -19,20 +19,35 @@ # (To distribute this file outside of CMake, substitute the full # License text for the above reference.) -FIND_PROGRAM(PYTHON_EXECUTABLE - NAMES python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5 python - PATHS - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.7\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.6\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.5\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.4\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.3\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.2\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.1\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\2.0\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.6\\InstallPath] - [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\1.5\\InstallPath] - ) +# The following was added for Debian by Kai Wasserbäch +# in 2010 and based on suggestions and patches by +# Didier Raboud and Jakub Wilk to fix the +# following bugs: #569321 and #580503. +# For further information please see the Debian.NEWS file for cmake-data. +IF(CMAKE_USE_PYTHON_VERSION) + SET(CMAKE_PYTHON_VERSIONS ${CMAKE_USE_PYTHON_VERSION}) +ELSE(CMAKE_USE_PYTHON_VERSION) + SET(CMAKE_PYTHON_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0 1.6 1.5) + + FIND_PROGRAM(PYVERSIONS_EXE + NAMES pyversions + ) + IF(PYVERSIONS_EXE) + EXECUTE_PROCESS(COMMAND pyversions -dv + OUTPUT_VARIABLE _CMAKE_PYTHON_VERSIONS + OUTPUT_STRIP_TRAILING_WHITESPACE) + LIST(INSERT CMAKE_PYTHON_VERSIONS 0 ${_CMAKE_PYTHON_VERSIONS}) + LIST(REMOVE_DUPLICATES CMAKE_PYTHON_VERSIONS) + ENDIF(PYVERSIONS_EXE) +ENDIF(CMAKE_USE_PYTHON_VERSION) + +FOREACH(_CURRENT_VERSION ${CMAKE_PYTHON_VERSIONS}) + FIND_PROGRAM(PYTHON_EXECUTABLE + NAMES python${_CURRENT_VERSION} + PATHS + [HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${_CURRENT_VERSION}\\InstallPath] + ) +ENDFOREACH(_CURRENT_VERSION) # handle the QUIETLY and REQUIRED arguments and set PYTHONINTERP_FOUND to TRUE if # all listed variables are TRUE --- a/Modules/FindPythonLibs.cmake +++ b/Modules/FindPythonLibs.cmake @@ -27,7 +27,29 @@ INCLUDE(CMakeFindFrameworks) # Search for the python framework on Apple. CMAKE_FIND_FRAMEWORKS(Python) -FOREACH(_CURRENT_VERSION 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0 1.6 1.5) +# The following was added for Debian by Kai Wasserbäch +# in 2010 and based on suggestions and patches by +# Didier Raboud and Jakub Wilk to fix the +# following bugs: #569321 and #580503. +# For further information please see the Debian.NEWS file for cmake-data. +IF(CMAKE_USE_PYTHON_VERSION) + SET(CMAKE_PYTHON_VERSIONS ${CMAKE_USE_PYTHON_VERSION}) +ELSE(CMAKE_USE_PYTHON_VERSION) + SET(CMAKE_PYTHON_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0 1.6 1.5) + + FIND_PROGRAM(PYVERSIONS_EXE + NAMES pyversions + ) + IF(PYVERSIONS_EXE) + EXECUTE_PROCESS(COMMAND pyversions -dv + OUTPUT_VARIABLE _CMAKE_PYTHON_VERSIONS + OUTPUT_STRIP_TRAILING_WHITESPACE) + LIST(INSERT CMAKE_PYTHON_VERSIONS 0 ${_CMAKE_PYTHON_VERSIONS}) + LIST(REMOVE_DUPLICATES CMAKE_PYTHON_VERSIONS) + ENDIF(PYVERSIONS_EXE) +ENDIF(CMAKE_USE_PYTHON_VERSION) + +FOREACH(_CURRENT_VERSION ${CMAKE_PYTHON_VERSIONS}) STRING(REPLACE "." "" _CURRENT_VERSION_NO_DOTS ${_CURRENT_VERSION}) IF(WIN32) FIND_LIBRARY(PYTHON_DEBUG_LIBRARY