aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authorPeter <piter.zh@gmail.com>2016-12-03 20:06:00 +0300
committerPeter <piter.zh@gmail.com>2016-12-03 20:07:11 +0300
commit044b5ff26b4998f18a104140c2dc1d39541509be (patch)
tree21ee794d45ad2a22dd7214e98bb6ca715ef11444 /python
parentc974b61d7fe3b63dc6ec81e52b7a4894f537e7a0 (diff)
downloadservo-044b5ff26b4998f18a104140c2dc1d39541509be.tar.gz
servo-044b5ff26b4998f18a104140c2dc1d39541509be.zip
Commit that fixes the issue #11074 by upgrading pip whenever virtualenv is created.
Diffstat (limited to 'python')
-rw-r--r--python/mach_bootstrap.py17
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, '-')