[Cmake-commits] CMake branch, next, updated. v2.8.7-2156-g7216188

Rolf Eike Beer eike at sf-mail.de
Thu Jan 19 18:05:00 EST 2012


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  72161887ffaca3b13fb253887b7d99935f437a58 (commit)
       via  aa11536c38846b08c8adef6c6a55f0f249cae439 (commit)
       via  0fe4d69b6f5cfa4c2cd7afc6c0a42eb03638b712 (commit)
      from  27530aba6884bea977f96340fc204c8ac909d219 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=72161887ffaca3b13fb253887b7d99935f437a58
commit 72161887ffaca3b13fb253887b7d99935f437a58
Merge: 27530ab aa11536
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Thu Jan 19 18:04:58 2012 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Jan 19 18:04:58 2012 -0500

    Merge topic 'python-version' into next
    
    aa11536 FindPythonInterp: fix version parsing
    0fe4d69 FindPythonInterp: make version selectable


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=aa11536c38846b08c8adef6c6a55f0f249cae439
commit aa11536c38846b08c8adef6c6a55f0f249cae439
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Thu Jan 19 23:31:38 2012 +0100
Commit:     Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Thu Jan 19 23:59:48 2012 +0100

    FindPythonInterp: fix version parsing
    
    On dashmacmini2 the test showed output like this:
    
    -- Found PythonInterp: /usr/bin/python (found version "Unknown option: --
    usage: /usr/bin/python [option] ... [-c cmd | file | -] [arg] ...
    Try `python -h' for more information.")
    
    On my machine where python outputs "Python 2.7" this worked, but
    PYTHON_VERSION_MAJOR, PYTHON_VERSION_MINOR, and PYTHON_VERSION_PATCH were all
    set to "2.7".
    
    Add some checks that the version output has the expected form before using it.

diff --git a/Modules/FindPythonInterp.cmake b/Modules/FindPythonInterp.cmake
index 128dcd5..d5a2a5e 100644
--- a/Modules/FindPythonInterp.cmake
+++ b/Modules/FindPythonInterp.cmake
@@ -89,11 +89,15 @@ endif()
 # determine python version string
 if(PYTHON_EXECUTABLE)
     execute_process(COMMAND "${PYTHON_EXECUTABLE}" --version ERROR_VARIABLE _VERSION OUTPUT_QUIET ERROR_STRIP_TRAILING_WHITESPACE)
-    string(REPLACE "Python " "" PYTHON_VERSION_STRING "${_VERSION}")
-    string(REGEX REPLACE "^([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" PYTHON_VERSION_MAJOR "${PYTHON_VERSION_STRING}")
-    string(REGEX REPLACE "^[0-9]+\\.([0-9])+\\.[0-9]+.*" "\\1" PYTHON_VERSION_MINOR "${PYTHON_VERSION_STRING}")
-    string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" PYTHON_VERSION_PATCH "${PYTHON_VERSION_STRING}")
-endif()
+    if(_VERSION MATCHES "^Python [0-9]+\\.[0-9]+.*")
+        string(REPLACE "Python " "" PYTHON_VERSION_STRING "${_VERSION}")
+        string(REGEX REPLACE "^([0-9]+)\\.[0-9]+.*" "\\1" PYTHON_VERSION_MAJOR "${PYTHON_VERSION_STRING}")
+        string(REGEX REPLACE "^[0-9]+\\.([0-9])+.*" "\\1" PYTHON_VERSION_MINOR "${PYTHON_VERSION_STRING}")
+        if(PYTHON_VERSION_STRING MATCHES "^[0-9]+\\.[0-9]+\\.[0-9]+.*")
+            string(REGEX REPLACE "^[0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" PYTHON_VERSION_PATCH "${PYTHON_VERSION_STRING}")
+        endif()
+    endif()
+endif(PYTHON_EXECUTABLE)
 
 # handle the QUIETLY and REQUIRED arguments and set PYTHONINTERP_FOUND to TRUE if
 # all listed variables are TRUE

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0fe4d69b6f5cfa4c2cd7afc6c0a42eb03638b712
commit 0fe4d69b6f5cfa4c2cd7afc6c0a42eb03638b712
Author:     Rolf Eike Beer <eike at sf-mail.de>
AuthorDate: Tue Jan 17 18:25:10 2012 +0100
Commit:     Rolf Eike Beer <eike at sf-mail.de>
CommitDate: Wed Jan 18 18:29:16 2012 +0100

    FindPythonInterp: make version selectable
    
    This allows the developer to tell FindPythonInterp which Python version should
    be searched for. This allows the right version to be chosen for a project
    without user assistance if there are specific requirements. This is especially
    useful as it is common to have major versions 2 and 3 installed in parallel,
    which are partly incompatible.

diff --git a/Modules/FindPythonInterp.cmake b/Modules/FindPythonInterp.cmake
index a10ec23..128dcd5 100644
--- a/Modules/FindPythonInterp.cmake
+++ b/Modules/FindPythonInterp.cmake
@@ -26,14 +26,51 @@
 # (To distribute this file outside of CMake, substitute the full
 #  License text for the above reference.)
 
+unset(_Python_NAMES)
+
+set(_PYTHON1_VERSIONS 1.6 1.5)
+set(_PYTHON2_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+set(_PYTHON3_VERSIONS 3.3 3.2 3.1 3.0)
+
+if(PythonInterp_FIND_VERSION)
+    if(PythonInterp_FIND_VERSION MATCHES "^[0-9]+\\.[0-9]+(\\.[0-9]+.*)?$")
+        string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*" "\\1" _PYTHON_FIND_MAJ_MIN "${PythonInterp_FIND_VERSION}")
+        string(REGEX REPLACE "^([0-9]+).*" "\\1" _PYTHON_FIND_MAJ "${_PYTHON_FIND_MAJ_MIN}")
+        list(APPEND _Python_NAMES python${_PYTHON_FIND_MAJ_MIN} python${_PYTHON_FIND_MAJ})
+        unset(_PYTHON_FIND_OTHER_VERSIONS)
+        if(NOT PythonInterp_FIND_VERSION_EXACT)
+            foreach(_PYTHON_V ${_PYTHON${_PYTHON_FIND_MAJ}_VERSIONS})
+                if(NOT _PYTHON_V VERSION_LESS _PYTHON_FIND_MAJ_MIN)
+                    list(APPEND _PYTHON_FIND_OTHER_VERSIONS ${_PYTHON_V})
+                endif()
+             endforeach()
+        endif(NOT PythonInterp_FIND_VERSION_EXACT)
+        unset(_PYTHON_FIND_MAJ_MIN)
+        unset(_PYTHON_FIND_MAJ)
+    else(PythonInterp_FIND_VERSION MATCHES "^[0-9]+\\.[0-9]+(\\.[0-9]+.*)?$")
+        list(APPEND _Python_NAMES python${PythonInterp_FIND_VERSION})
+        set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON${PythonInterp_FIND_VERSION}_VERSIONS})
+    endif(PythonInterp_FIND_VERSION MATCHES "^[0-9]+\\.[0-9]+(\\.[0-9]+.*)?$")
+else(PythonInterp_FIND_VERSION)
+    set(_PYTHON_FIND_OTHER_VERSIONS ${_PYTHON3_VERSIONS} ${_PYTHON2_VERSIONS} ${_PYTHON1_VERSIONS})
+endif(PythonInterp_FIND_VERSION)
+
+list(APPEND _Python_NAMES python)
+
 # Search for the current active python version first
-find_program(PYTHON_EXECUTABLE NAMES python)
+find_program(PYTHON_EXECUTABLE NAMES ${_Python_NAMES})
 
 # Set up the versions we know about, in the order we will search. Always add
 # the user supplied additional versions to the front.
 set(_Python_VERSIONS
   ${Python_ADDITIONAL_VERSIONS}
-  2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0 1.6 1.5)
+  ${_PYTHON_FIND_OTHER_VERSIONS}
+  )
+
+unset(_PYTHON_FIND_OTHER_VERSIONS)
+unset(_PYTHON1_VERSIONS)
+unset(_PYTHON2_VERSIONS)
+unset(_PYTHON3_VERSIONS)
 
 # Search for newest python version if python executable isn't found
 if(NOT PYTHON_EXECUTABLE)

-----------------------------------------------------------------------

Summary of changes:
 Modules/FindPythonInterp.cmake |   55 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 48 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list