2019-06-13 00:55:29 +02:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
|
|
# Copyright 2019 The Emscripten Authors. All rights reserved.
|
|
|
|
|
# Emscripten is available under two separate licenses, the MIT license and the
|
|
|
|
|
# University of Illinois/NCSA Open Source License. Both these licenses can be
|
|
|
|
|
# found in the LICENSE file.
|
|
|
|
|
|
|
|
|
|
"""Provides a way to run a script on the preferred Python version"""
|
|
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
import subprocess
|
|
|
|
|
import sys
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def which(program):
|
|
|
|
|
for path in [""] + os.environ.get("PATH", "").split(os.pathsep):
|
|
|
|
|
exe_file = os.path.join(path, program)
|
|
|
|
|
if os.path.isfile(exe_file) and os.access(exe_file, os.X_OK):
|
2019-06-14 00:47:29 +02:00
|
|
|
# in case of pyenv we might have `python3` command available, but it's just a stub
|
|
|
|
|
# https://github.com/emscripten-core/emscripten/issues/8792
|
|
|
|
|
p = subprocess.Popen([exe_file, "--version"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
|
|
|
p.communicate()
|
|
|
|
|
if p.returncode == 0:
|
|
|
|
|
return exe_file
|
2019-06-13 00:55:29 +02:00
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
# Look for the best choice for python, favours Python3 over Python2
|
|
|
|
|
# In case of Windows it uses always python that was used for this script
|
|
|
|
|
if sys.platform in ["linux", "linux2", "darwin"]:
|
|
|
|
|
python = which("python3") or which("python") or sys.executable
|
|
|
|
|
else:
|
|
|
|
|
python = sys.executable
|
|
|
|
|
|
|
|
|
|
sys.exit(subprocess.call([python] + sys.argv[1:]))
|