diff options
Diffstat (limited to 'python/mach_bootstrap.py')
-rw-r--r-- | python/mach_bootstrap.py | 41 |
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) |