From: Kai Wasserbäch <debian@carbon-project.org>
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 <didier@raboud.com> patch for
 #569321.
Last-Update: 2010-06-07
Origin: vendor
Forwarded: http://public.kitware.com/Bug/view.php?id=10279

--- a/Modules/FindPythonInterp.cmake
+++ b/Modules/FindPythonInterp.cmake
@@ -19,19 +19,35 @@
 # (To distributed this file outside of CMake, substitute the full
 #  License text for the above reference.)
 
-FIND_PROGRAM(PYTHON_EXECUTABLE
-  NAMES 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.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
+# <debian@carbon-project.org> in 2010 and based on suggestions and patches by
+# Didier Raboud <didier@raboud.com> and Jakub Wilk <jwilk@debian.org> 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.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.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
+# <debian@carbon-project.org> in 2010 and based on suggestions and patches by
+# Didier Raboud <didier@raboud.com> and Jakub Wilk <jwilk@debian.org> 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.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
