summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Crosta <dcrosta@10gen.com>2012-01-31 11:19:42 -0500
committerDan Crosta <dcrosta@10gen.com>2012-01-31 11:19:42 -0500
commitd664454f3ec706ad1b0ea054213cc0e899ff7a2f (patch)
tree3be59bf9ddb78f6bcd9ba281243097ea4765f994
parentc4c624cb973af1f6d225333aefa51fe06e04e22f (diff)
downloadmongo-d664454f3ec706ad1b0ea054213cc0e899ff7a2f.tar.gz
even better python version/binary detection
-rw-r--r--SConstruct19
1 files changed, 16 insertions, 3 deletions
diff --git a/SConstruct b/SConstruct
index 8d31c8f21a6..ea003f367a0 100644
--- a/SConstruct
+++ b/SConstruct
@@ -760,9 +760,22 @@ def smoke_python_name():
# then we assume that "python" points to a 2.5 or
# greater python VM. otherwise, explicitly use 2.5
# which we assume to be installed.
- if sys.version_info >= (2, 5):
- return "python"
- return "python2.5"
+ import subprocess
+ version = re.compile(r'[Pp]ython ([\d\.]+)', re.MULTILINE)
+ binaries = ['python', 'python2.5', 'python2.6', 'python2.7', 'python25', 'python26', 'python27']
+ for binary in binaries:
+ try:
+ # py-2.4 compatible replacement for shell backticks
+ output = subprocess.Popen([binary, '--version'], stdout=subprocess.PIPE).communicate()[0]
+ match = version.search(output)
+ if match and float(match.group(1)) >= 2.5:
+ return binary
+ except Exception, e:
+ print >> sys.stderr, "error detecting suitable python:", e
+ pass
+
+ # if that all fails, fall back to "python"
+ return "python"
def setupBuildInfoFile( outFile ):
version = utils.getGitVersion()