diff options
author | Peter <piter.zh@gmail.com> | 2016-12-03 20:06:00 +0300 |
---|---|---|
committer | Peter <piter.zh@gmail.com> | 2016-12-03 20:07:11 +0300 |
commit | 044b5ff26b4998f18a104140c2dc1d39541509be (patch) | |
tree | 21ee794d45ad2a22dd7214e98bb6ca715ef11444 /python/mach_bootstrap.py | |
parent | c974b61d7fe3b63dc6ec81e52b7a4894f537e7a0 (diff) | |
download | servo-044b5ff26b4998f18a104140c2dc1d39541509be.tar.gz servo-044b5ff26b4998f18a104140c2dc1d39541509be.zip |
Commit that fixes the issue #11074 by upgrading pip whenever virtualenv is created.
Diffstat (limited to 'python/mach_bootstrap.py')
-rw-r--r-- | python/mach_bootstrap.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/python/mach_bootstrap.py b/python/mach_bootstrap.py index c2d35278dae..d41bb1f5099 100644 --- a/python/mach_bootstrap.py +++ b/python/mach_bootstrap.py @@ -112,6 +112,7 @@ def _activate_virtualenv(topdir): script_dir = _get_virtualenv_script_dir() activate_path = os.path.join(virtualenv_path, script_dir, "activate_this.py") + need_pip_upgrade = False if not (os.path.exists(virtualenv_path) and os.path.exists(activate_path)): virtualenv = _get_exec_path(VIRTUALENV_NAMES) if not virtualenv: @@ -123,6 +124,8 @@ def _activate_virtualenv(topdir): out, err = process.communicate() print('Python virtualenv failed to execute properly:') sys.exit('Output: %s\nError: %s' % (out, err)) + # We want to upgrade pip when virtualenv created for the first time + need_pip_upgrade = True execfile(activate_path, dict(__file__=activate_path)) @@ -143,6 +146,20 @@ def _activate_virtualenv(topdir): os.path.join("tests", "wpt", "harness", "requirements_servo.txt"), ] + if need_pip_upgrade: + # Upgrade pip when virtualenv is created to fix the issue + # https://github.com/servo/servo/issues/11074 + pip = _get_exec_path(PIP_NAMES, is_valid_path=check_exec_path) + if not pip: + sys.exit("Python pip is either not installed or not found in virtualenv.") + + process = Popen([pip, "install", "-q", "-U", "pip"], stdout=PIPE, stderr=PIPE) + process.wait() + if process.returncode: + out, err = process.communicate() + print('Pip failed to upgrade itself properly:') + sys.exit('Output: %s\nError: %s' % (out, err)) + for req_rel_path in requirements_paths: req_path = os.path.join(topdir, req_rel_path) marker_file = req_rel_path.replace(os.path.sep, '-') |