From 7620bc75cba3c6b1a58d589ed20fd0f674c4ecc4 Mon Sep 17 00:00:00 2001
From: Marco Biasini <marco.biasini@unibas.ch>
Date: Sun, 3 Jun 2012 11:10:35 +0200
Subject: [PATCH] prefer versioned python binaries to non-versioned ones

On many systems, there are several parallel python
installations. There is usually a "python" symlink that
points to the currently active python version. That might
not be the one we need. Instead of picking up that one, we
now search for python$VERSION and as a last resort use
python.
---
 cmake_support/FindPython.cmake | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/cmake_support/FindPython.cmake b/cmake_support/FindPython.cmake
index 66c62f51c..1548454db 100644
--- a/cmake_support/FindPython.cmake
+++ b/cmake_support/FindPython.cmake
@@ -42,7 +42,7 @@ endmacro()
 
 
 macro(_find_python PYTHON_ROOT VERSION)
-  string(REPLACE "." "" _VERSION_NO_DOTS ${VERSION})
+  string(REPLACE "." "" _VERSION_NO_DOTS "${VERSION}")
   if(PYTHON_ROOT)
     find_library(PYTHON_LIBRARIES
       NAMES "python${_VERSION_NO_DOTS}" "python${VERSION}"
@@ -69,17 +69,17 @@ macro(_find_python PYTHON_ROOT VERSION)
 endmacro()
 
 macro(_find_python_bin PYTHON_ROOT VERSION)
-  string(REPLACE "." "" _VERSION_NO_DOTS ${VERSION})
+  string(REPLACE "." "" _VERSION_NO_DOTS "${VERSION}")
   if(PYTHON_ROOT)
     find_program(PYTHON_BINARY
-      NAMES "python" "python${_VERSION_NO_DOTS}" "python${VERSION}"
+      NAMES "python${_VERSION_NO_DOTS}" "python${VERSION}"
       HINTS "${PYTHON_ROOT}"
       PATH_SUFFIXES bin
       NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH
     )
   else()
     find_program(PYTHON_BINARY
-      NAMES "python" "python${_VERSION_NO_DOTS}" "python${VERSION}"
+      NAMES "python${_VERSION_NO_DOTS}" "python${VERSION}"
       HINTS "${CMAKE_PREFIX_PATH}"
       PATH_SUFFIXES bin
     )  
@@ -105,6 +105,10 @@ macro(check_for_python_lib)
       endif()
     endforeach()
   endif()
+  # fallback to non-versioned naming scheme
+  if (NOT $PYTHON_LIBRARIES)
+    _find_python("${PYTHON_ROOT}" "")
+  endif()
 endmacro()
 
 macro(check_for_python_binary)
@@ -121,6 +125,9 @@ macro(check_for_python_binary)
       endif()
     endforeach()
   endif()
+  if (NOT PYTHON_BINARY)
+    _find_python("${PYTHON_ROOT}" "")
+  endif()
 endmacro()
 
 if(NOT PYTHON_ROOT)
-- 
GitLab