mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Auto merge of #14452 - PeterZhizhin:upgrade-pip-with-new-virtualenv, r=frewsxcv
Commit that fixes the issue #11074 by upgrading pip whenever virtuale… <!-- Please describe your changes on the following line: --> I have kind of resolved the issue #11074 by adding bool variable which is set to `True` if we had created the virtualenv and `False` otherwise. Then it updates pip by executing `pip install --upgrade pip` in the same way as packages are updated. I am a little bit worried that I have almost duplicated the installation routine from the `for` loop but I am not sure whether I should add a function or not. I think it is the best way of doing this because it does not need any Internet access for regular work (only for the first time you execute mach) as @larsbergstrom worried [here](https://github.com/servo/servo/pull/11149). It also doesn't add any extra latency on a no-op build. I have checked the solution inside a docker container based on debian wheezy. Before the patch `./mach` failed to run because it wasn't able to install some packages. Now it runs successfully. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #11074 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because it changes only mach_bootstrap.py <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14452) <!-- Reviewable:end -->
This commit is contained in:
commit
ea59e7bb68
1 changed files with 17 additions and 0 deletions
|
@ -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, '-')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue