Only search for Python-2 interpreters
authorKlaus Aehlig <aehlig@google.com>
Mon, 21 Sep 2015 08:39:19 +0000 (10:39 +0200)
committerKlaus Aehlig <aehlig@google.com>
Mon, 21 Sep 2015 09:19:41 +0000 (11:19 +0200)
Ganeti is not yet ready for Python 3. Therefore, at configure-time,
we effectively have two constraints for the version of Python to
use: ">=2.6" and "<3.0". As, unfortunuately, the AM_PYTHON_PATH
macro only supports minimal-version constraints, we afterwards verify
that we got an interpreter for Python 2. We also tune the search
heuristics to first check binaries that most likely are interpreters
for Python 2. To also work with older versions of the autotools, we
do the "<3.0" check manually and no rely on it already being supported
in the AM_PYTHON_CHECK_VERSION macro.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

configure.ac

index ee6dcee..fd2c7a5 100644 (file)
@@ -886,7 +886,20 @@ fi
 AC_SUBST(MAN_HAS_WARNINGS)
 
 # Check for Python
+# We need a Python-2 interpreter, version at least 2.6. As AM_PATH_PYTHON
+# only supports a "minimal version" constraint, we check <3.0 afterwards.
+# We  tune _AM_PYTHON_INTERPRETER_LIST to first check interpreters that are
+# likely interpreters for Python 2.
+m4_define_default([_AM_PYTHON_INTERPRETER_LIST], [python2 python2.7 python2.6 python])
 AM_PATH_PYTHON(2.6)
+if $PYTHON -c "import sys
+if (sys.hexversion >> 24) < 3:
+  sys.exit(1)
+else:
+  sys.exit(0)
+"; then
+  AC_MSG_FAILURE([Can only work with an interpreter for Python 2])
+fi
 
 AC_PYTHON_MODULE(OpenSSL, t)
 AC_PYTHON_MODULE(simplejson, t)