Switch back to pinning Rust by Nightly date instead of commit hash…

… this time using a `rust-toolchain` file compatible with rustup:
https://github.com/rust-lang-nursery/rustup.rs/#the-toolchain-file

And upgrade to rustc 1.21.0-nightly (c11f689d2 2017-08-29)

----

Now if both `system-rust` and `system-cargo` are set to `true` in `.servobuild`’s `[tools]` section,
and the corresponding `rustc` and `cargo` binaries are in fact rustup’s wrappers,
then rustup will use the correct version based on `rust-toolchain`.

CC https://github.com/servo/servo/issues/11361

Unlike https://github.com/servo/servo/pull/17927,
this does not make mach use rustup directly.
This commit is contained in:
Simon Sapin 2017-08-31 11:17:33 +02:00
parent d795ceae17
commit 56b4f3ae70
7 changed files with 80 additions and 88 deletions

View file

@ -136,7 +136,6 @@ class MachCommands(CommandBase):
if dry_run:
import toml
import json
import httplib
import colorama
@ -262,31 +261,16 @@ class MachCommands(CommandBase):
@Command('rustup',
description='Update the Rust version to latest Nightly',
category='devenv')
@CommandArgument('--master',
action='store_true',
help='Use the latest commit of the "master" branch')
def rustup(self, master=False):
if master:
url = "https://api.github.com/repos/rust-lang/rust/git/refs/heads/master"
commit = json.load(urllib2.urlopen(url))["object"]["sha"]
else:
import toml
import re
url = "https://static.rust-lang.org/dist/channel-rust-nightly.toml"
version = toml.load(urllib2.urlopen(url))["pkg"]["rustc"]["version"]
short_commit = re.search("\(([0-9a-f]+) ", version).group(1)
url = "https://api.github.com/repos/rust-lang/rust/commits/" + short_commit
commit = json.load(urllib2.urlopen(url))["sha"]
filename = path.join(self.context.topdir, "rust-commit-hash")
def rustup(self):
url = "https://static.rust-lang.org/dist/channel-rust-nightly-date.txt"
nightly_date = urllib2.urlopen(url).read()
filename = path.join(self.context.topdir, "rust-toolchain")
with open(filename, "w") as f:
f.write(commit + "\n")
f.write("nightly-%s\n" % nightly_date)
# Reset self.config["tools"]["rust-root"]
self._rust_version = None
# Reset self.config["tools"]["rust-root"] and self.config["tools"]["cargo-root"]
self._rust_nightly_date = None
self.set_use_stable_rust(False)
# Reset self.config["tools"]["cargo-root"]
self._cargo_build_id = None
self.set_cargo_root()
self.fetch()