aboutsummaryrefslogtreecommitdiffstats
path: root/python/mach_bootstrap.py
diff options
context:
space:
mode:
authorCorey Farwell <coreyf@rwell.org>2015-09-29 18:03:22 -0400
committerCorey Farwell <coreyf@rwell.org>2015-09-29 18:13:43 -0400
commit1a9263c2b4f3038c9c62b2000a3566fc42069266 (patch)
treebb3dd80c8c32e220569e82429450c530598808a0 /python/mach_bootstrap.py
parent8547d132f9a6f5499c437572ea5648c6baf2f621 (diff)
downloadservo-1a9263c2b4f3038c9c62b2000a3566fc42069266.tar.gz
servo-1a9263c2b4f3038c9c62b2000a3566fc42069266.zip
Expand list of Python executable names to search in PATH
Fixes #7784
Diffstat (limited to 'python/mach_bootstrap.py')
-rw-r--r--python/mach_bootstrap.py41
1 files changed, 25 insertions, 16 deletions
diff --git a/python/mach_bootstrap.py b/python/mach_bootstrap.py
index 12609b035c3..318ce7852d4 100644
--- a/python/mach_bootstrap.py
+++ b/python/mach_bootstrap.py
@@ -71,27 +71,35 @@ CATEGORIES = {
}
-def _get_exec(name, default=None):
- path = find_executable(name)
- if not path:
- return default
- return path
+def _get_exec(*names):
+ for name in names:
+ path = find_executable(name)
+ if path is not None:
+ return path
+ return None
+
+
+# Possible names of executables, sorted from most to least specific
+PYTHON_NAMES = ["python-2.7", "python2.7", "python2", "python"]
+VIRTUALENV_NAMES = ["virtualenv-2.7", "virtualenv2.7", "virtualenv2", "virtualenv"]
+PIP_NAMES = ["pip-2.7", "pip2.7", "pip2", "pip"]
def _activate_virtualenv(topdir):
virtualenv_path = os.path.join(topdir, "python", "_virtualenv")
- python = _get_exec("python2", "python")
+ python = _get_exec(*PYTHON_NAMES)
+ if python is None:
+ sys.exit("Python is not installed. Please install it prior to running mach.")
if not os.path.exists(virtualenv_path):
- virtualenv = _get_exec("virtualenv2", "virtualenv")
+ virtualenv = _get_exec(*VIRTUALENV_NAMES)
+ if virtualenv is None:
+ sys.exit("Python virtualenv is not installed. Please install it prior to running mach.")
try:
subprocess.check_call([virtualenv, "-p", python, virtualenv_path])
- except subprocess.CalledProcessError:
+ except (subprocess.CalledProcessError, OSError):
sys.exit("Python virtualenv failed to execute properly.")
- except OSError:
- sys.exit("Please install virtualenv "
- "and ensure permissions prior to running mach.")
activate_path = os.path.join(virtualenv_path, "bin", "activate_this.py")
execfile(activate_path, dict(__file__=activate_path))
@@ -117,13 +125,14 @@ def _activate_virtualenv(topdir):
except OSError:
open(marker_path, 'w').close()
+ pip = _get_exec(*PIP_NAMES)
+ if pip is None:
+ sys.exit("Python pip is not installed. Please install it prior to running mach.")
+
try:
- subprocess.check_call(["pip", "install", "-q", "-r", req_path])
- except subprocess.CalledProcessError:
+ subprocess.check_call([pip, "install", "-q", "-r", req_path])
+ except (subprocess.CalledProcessError, OSError):
sys.exit("Pip failed to execute properly.")
- except OSError:
- sys.exit("Pip not found. Please install pip and verify permissions"
- " prior to running mach.")
os.utime(marker_path, None)