diff options
author | Gabriel Poesia <gabriel.poesia@gmail.com> | 2016-06-30 00:05:56 -0300 |
---|---|---|
committer | Gabriel Poesia <gabriel.poesia@gmail.com> | 2016-06-30 00:15:50 -0300 |
commit | a1a1dec4d538f293577ca6e30f0f32003c519bf4 (patch) | |
tree | 1fb1495bac04acf6afd00682d25397095908d5a6 /python/servo/command_base.py | |
parent | e30b288ed638f1903d30c8c5402b93b77b76b7b4 (diff) | |
download | servo-a1a1dec4d538f293577ca6e30f0f32003c519bf4.tar.gz servo-a1a1dec4d538f293577ca6e30f0f32003c519bf4.zip |
Add mach build-stable to build with stable rustc
Github issue: #11806
Building with current stable rust (1.9.0) still fails because of
feature pragmas in some dependencies (e.g. serde_item).
Diffstat (limited to 'python/servo/command_base.py')
-rw-r--r-- | python/servo/command_base.py | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/python/servo/command_base.py b/python/servo/command_base.py index 990bc9a586c..9f4f9096316 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -184,9 +184,7 @@ class CommandBase(object): self.config["tools"].setdefault("system-cargo", False) self.config["tools"].setdefault("rust-root", "") self.config["tools"].setdefault("cargo-root", "") - if not self.config["tools"]["system-rust"]: - self.config["tools"]["rust-root"] = path.join( - context.sharedir, "rust", self.rust_path()) + self.set_use_stable_rust(False) if not self.config["tools"]["system-cargo"]: self.config["tools"]["cargo-root"] = path.join( context.sharedir, "cargo", self.cargo_build_id()) @@ -205,16 +203,33 @@ class CommandBase(object): self.config["android"].setdefault("platform", "android-18") self.config["android"].setdefault("target", "arm-linux-androideabi") - _rust_path = None + _use_stable_rust = False + _rust_version = None + _rust_version_is_stable = False _cargo_build_id = None + def set_use_stable_rust(self, use_stable_rust=True): + self._use_stable_rust = use_stable_rust + if not self.config["tools"]["system-rust"]: + self.config["tools"]["rust-root"] = path.join( + self.context.sharedir, "rust", self.rust_path()) + + def use_stable_rust(self): + return self._use_stable_rust + def rust_path(self): - if self._rust_path is None: - filename = path.join(self.context.topdir, "rust-nightly-date") + if self._use_stable_rust: + return "rustc-%s-%s" % (self.rust_version(), host_triple()) + else: + return "%s/rustc-nightly-%s" % (self.rust_version(), host_triple()) + + def rust_version(self): + if self._rust_version is None or self._use_stable_rust != self._rust_version_is_stable: + filename = path.join(self.context.topdir, + "rust-stable-version" if self._use_stable_rust else "rust-nightly-date") with open(filename) as f: - date = f.read().strip() - self._rust_path = ("%s/rustc-nightly-%s" % (date, host_triple())) - return self._rust_path + self._rust_version = f.read().strip() + return self._rust_version def cargo_build_id(self): if self._cargo_build_id is None: @@ -317,7 +332,9 @@ class CommandBase(object): env["CARGO_HOME"] = self.config["tools"]["cargo-home-dir"] - if "CARGO_TARGET_DIR" not in env: + if self.use_stable_rust(): + env["CARGO_TARGET_DIR"] = path.join(self.context.topdir, "ports/stable-rust/target") + elif "CARGO_TARGET_DIR" not in env: env["CARGO_TARGET_DIR"] = path.join(self.context.topdir, "target") if extra_lib: @@ -426,7 +443,8 @@ class CommandBase(object): if not (self.config['tools']['system-rust'] or (rustc_binary_exists and target_exists)): print("looking for rustc at %s" % (rustc_path)) - Registrar.dispatch("bootstrap-rust", context=self.context, target=filter(None, [target])) + Registrar.dispatch("bootstrap-rust", context=self.context, target=filter(None, [target]), + stable=self._use_stable_rust) cargo_path = path.join(self.config["tools"]["cargo-root"], "cargo", "bin", "cargo" + BIN_SUFFIX) |