diff --git a/emsdk b/emsdk index ce1bd32..0623dfa 100755 --- a/emsdk +++ b/emsdk @@ -1,4 +1,7 @@ -#!/usr/bin/env python +#!/bin/sh +# Following line is responsible for selecting the best python for current host +# This script can be called directly: `./emsdk` or indirectly: `python ./emsdk` `sh ./emsdk` or `bash ./emsdk` +"exec" "`dirname $0`/python_selector" "$0" "$@" from __future__ import print_function diff --git a/python_selector b/python_selector new file mode 100755 index 0000000..d914b32 --- /dev/null +++ b/python_selector @@ -0,0 +1,29 @@ +#!/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): + return exe_file + 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:])) \ No newline at end of file