зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1574056
- Make `mach vendor rust` use now native `cargo vendor`. r=chmanchester
Note that cargo vendor always uses the native version even when cargo-vendor was already installed, so there is no concern wrt that. Differential Revision: https://phabricator.services.mozilla.com/D43007 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
88be4edfa8
Коммит
f7da81f01b
|
@ -34,31 +34,13 @@ class VendorRust(MozbuildObject):
|
|||
|
||||
def check_cargo_version(self, cargo):
|
||||
'''
|
||||
Ensure that cargo is new enough. cargo 0.12 added support
|
||||
for source replacement, which is required for vendoring to work.
|
||||
Ensure that cargo is new enough. cargo 1.37 added support
|
||||
for the vendor command.
|
||||
'''
|
||||
out = subprocess.check_output([cargo, '--version']).splitlines()[0]
|
||||
if not out.startswith('cargo'):
|
||||
return False
|
||||
return LooseVersion(out.split()[1]) >= b'0.13'
|
||||
|
||||
def check_cargo_vendor_version(self, cargo):
|
||||
'''
|
||||
Ensure that cargo-vendor is new enough. cargo-vendor 0.1.13 and newer
|
||||
strips out .cargo-ok, .orig and .rej files, and deals with [patch]
|
||||
replacements in Cargo.toml files which we want. Version 0.1.14 and up
|
||||
handles local modifications to vendored crates (bug 1323557).
|
||||
'''
|
||||
for l in subprocess.check_output([cargo, 'install', '--list']).splitlines():
|
||||
# The line looks like one of the following:
|
||||
# cargo-vendor v0.1.12:
|
||||
# cargo-vendor v0.1.12 (file:///path/to/local/build/cargo-vendor):
|
||||
# and we want to extract the version part of it
|
||||
m = re.match('cargo-vendor v((\d+\.)*\d+)', l)
|
||||
if m:
|
||||
version = m.group(1)
|
||||
return LooseVersion(version) >= b'0.1.23'
|
||||
return False
|
||||
return LooseVersion(out.split()[1]) >= b'1.37'
|
||||
|
||||
def check_modified_files(self):
|
||||
'''
|
||||
|
@ -115,30 +97,10 @@ Please commit or stash these changes before vendoring, or re-run with `--ignore-
|
|||
cargo = self.get_cargo_path()
|
||||
if not self.check_cargo_version(cargo):
|
||||
self.log(logging.ERROR, 'cargo_version', {},
|
||||
'Cargo >= 0.13 required (install Rust 1.12 or newer)')
|
||||
'Cargo >= 1.37 required (install Rust 1.37 or newer)')
|
||||
return None
|
||||
else:
|
||||
self.log(logging.DEBUG, 'cargo_version', {}, 'cargo is new enough')
|
||||
have_vendor = any(l.strip() == 'vendor' for l in subprocess.check_output(
|
||||
[cargo, '--list']).splitlines())
|
||||
if not have_vendor:
|
||||
self.log(logging.INFO, 'installing', {},
|
||||
'Installing cargo-vendor (this may take a few minutes)...')
|
||||
env = self.check_openssl()
|
||||
self.run_process(args=[cargo, 'install', 'cargo-vendor'],
|
||||
append_env=env)
|
||||
elif not self.check_cargo_vendor_version(cargo):
|
||||
self.log(
|
||||
logging.INFO, 'cargo_vendor', {},
|
||||
('cargo-vendor >= 0.1.23 required; '
|
||||
'force-reinstalling (this may take a few minutes)...')
|
||||
)
|
||||
env = self.check_openssl()
|
||||
self.run_process(args=[cargo, 'install', '--force', 'cargo-vendor'],
|
||||
append_env=env)
|
||||
else:
|
||||
self.log(logging.DEBUG, 'cargo_vendor', {},
|
||||
'sufficiently new cargo-vendor is already installed')
|
||||
|
||||
return cargo
|
||||
|
||||
|
@ -360,8 +322,7 @@ license file's hash.
|
|||
# changes. See bug 1324462
|
||||
subprocess.check_call([cargo, 'update', '-p', 'gkrust'], cwd=self.topsrcdir)
|
||||
|
||||
subprocess.check_call([cargo, 'vendor', '--quiet', '--sync',
|
||||
'Cargo.lock'] + [vendor_dir], cwd=self.topsrcdir)
|
||||
subprocess.check_call([cargo, 'vendor', '--quiet', vendor_dir], cwd=self.topsrcdir)
|
||||
|
||||
if not self._check_licenses(vendor_dir):
|
||||
self.log(
|
||||
|
|
Загрузка…
Ссылка в новой задаче