diff options
author | Dan Crosta <dcrosta@10gen.com> | 2012-01-31 11:19:42 -0500 |
---|---|---|
committer | Dan Crosta <dcrosta@10gen.com> | 2012-01-31 11:19:42 -0500 |
commit | d664454f3ec706ad1b0ea054213cc0e899ff7a2f (patch) | |
tree | 3be59bf9ddb78f6bcd9ba281243097ea4765f994 | |
parent | c4c624cb973af1f6d225333aefa51fe06e04e22f (diff) | |
download | mongo-d664454f3ec706ad1b0ea054213cc0e899ff7a2f.tar.gz |
even better python version/binary detection
-rw-r--r-- | SConstruct | 19 |
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() |