Auto merge of #22596 - shanavas786:fix-certifi, r=SimonSapin

Fix certifi import error while running ./match bootstrap

Fixes #22590

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach bootstrap` does not report any errors
- [x] These changes fix #22590

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- 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/22596)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2019-01-03 06:17:03 -05:00 committed by GitHub
commit 1753cda362
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 12 deletions

View file

@ -26,7 +26,7 @@ from mach.decorators import (
from servo.command_base import CommandBase, cd, call, BIN_SUFFIX
from servo.build_commands import notify_build_done
from servo.util import STATIC_RUST_LANG_ORG_DIST, URLOPEN_KWARGS
from servo.util import get_static_rust_lang_org_dist, get_urlopen_kwargs
@CommandProvider
@ -216,8 +216,8 @@ class MachCommands(CommandBase):
description='Update the Rust version to latest Nightly',
category='devenv')
def rustup(self):
url = STATIC_RUST_LANG_ORG_DIST + "/channel-rust-nightly-date.txt"
nightly_date = urllib2.urlopen(url, **URLOPEN_KWARGS).read()
url = get_static_rust_lang_org_dist() + "/channel-rust-nightly-date.txt"
nightly_date = urllib2.urlopen(url, **get_urlopen_kwargs()).read()
toolchain = "nightly-" + nightly_date
filename = path.join(self.context.topdir, "rust-toolchain")
with open(filename, "w") as f:

View file

@ -28,14 +28,22 @@ try:
except ImportError:
HAS_SNI = False
# The cafile parameter was added in 2.7.9
if HAS_SNI and sys.version_info >= (2, 7, 9):
import certifi
STATIC_RUST_LANG_ORG_DIST = "https://static.rust-lang.org/dist"
URLOPEN_KWARGS = {"cafile": certifi.where()}
else:
STATIC_RUST_LANG_ORG_DIST = "https://static-rust-lang-org.s3.amazonaws.com/dist"
URLOPEN_KWARGS = {}
HAS_SNI_AND_RECENT_PYTHON = HAS_SNI and sys.version_info >= (2, 7, 9)
def get_static_rust_lang_org_dist():
if HAS_SNI_AND_RECENT_PYTHON:
return "https://static.rust-lang.org/dist"
return "https://static-rust-lang-org.s3.amazonaws.com/dist"
def get_urlopen_kwargs():
# The cafile parameter was added in 2.7.9
if HAS_SNI_AND_RECENT_PYTHON:
import certifi
return {"cafile": certifi.where()}
return {}
def remove_readonly(func, path, _):
@ -96,7 +104,7 @@ def download(desc, src, writer, start_byte=0):
req = urllib2.Request(src)
if start_byte:
req = urllib2.Request(src, headers={'Range': 'bytes={}-'.format(start_byte)})
resp = urllib2.urlopen(req, **URLOPEN_KWARGS)
resp = urllib2.urlopen(req, **get_urlopen_kwargs())
fsize = None
if resp.info().getheader('Content-Length'):