when Miri tests are not passing, do not add Miri component
This commit is contained in:
parent
6c1b220fd7
commit
9138d3bb80
|
@ -208,6 +208,7 @@ name = "build-manifest"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"serde",
|
"serde",
|
||||||
|
"serde_json",
|
||||||
"toml",
|
"toml",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -7,3 +7,4 @@ edition = "2018"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
toml = "0.5"
|
toml = "0.5"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
|
serde_json = "1.0"
|
||||||
|
|
|
@ -11,10 +11,11 @@ use serde::Serialize;
|
||||||
|
|
||||||
use std::collections::BTreeMap;
|
use std::collections::BTreeMap;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fs;
|
use std::fs::{self, File};
|
||||||
use std::io::{self, Read, Write};
|
use std::io::{self, Read, Write};
|
||||||
use std::path::{PathBuf, Path};
|
use std::path::{PathBuf, Path};
|
||||||
use std::process::{Command, Stdio};
|
use std::process::{Command, Stdio};
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
static HOSTS: &[&str] = &[
|
static HOSTS: &[&str] = &[
|
||||||
"aarch64-unknown-linux-gnu",
|
"aarch64-unknown-linux-gnu",
|
||||||
|
@ -366,6 +367,7 @@ impl Builder {
|
||||||
self.lldb_git_commit_hash = self.git_commit_hash("lldb", "x86_64-unknown-linux-gnu");
|
self.lldb_git_commit_hash = self.git_commit_hash("lldb", "x86_64-unknown-linux-gnu");
|
||||||
self.miri_git_commit_hash = self.git_commit_hash("miri", "x86_64-unknown-linux-gnu");
|
self.miri_git_commit_hash = self.git_commit_hash("miri", "x86_64-unknown-linux-gnu");
|
||||||
|
|
||||||
|
self.check_toolstate();
|
||||||
self.digest_and_sign();
|
self.digest_and_sign();
|
||||||
let manifest = self.build_manifest();
|
let manifest = self.build_manifest();
|
||||||
self.write_channel_files(&self.rust_release, &manifest);
|
self.write_channel_files(&self.rust_release, &manifest);
|
||||||
|
@ -375,6 +377,22 @@ impl Builder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// If a tool does not pass its tests, don't ship it.
|
||||||
|
/// Right now, we do this only for Miri.
|
||||||
|
fn check_toolstate(&mut self) {
|
||||||
|
// Get the toolstate for this rust revision.
|
||||||
|
let toolstates = File::open(self.input.join("toolstates-linux.json"))
|
||||||
|
.expect("failed to open toolstates file");
|
||||||
|
let toolstates: HashMap<String, String> = serde_json::from_reader(&toolstates)
|
||||||
|
.expect("toolstates file contains malformed JSON");
|
||||||
|
// Mark some tools as missing based on toolstate.
|
||||||
|
if toolstates.get("miri").map(|s| &*s as &str) != Some("test-pass") {
|
||||||
|
println!("Miri tests are not passing, removing component");
|
||||||
|
self.miri_version = None;
|
||||||
|
self.miri_git_commit_hash = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Hash all files, compute their signatures, and collect the hashes in `self.digests`.
|
/// Hash all files, compute their signatures, and collect the hashes in `self.digests`.
|
||||||
fn digest_and_sign(&mut self) {
|
fn digest_and_sign(&mut self) {
|
||||||
for file in t!(self.input.read_dir()).map(|e| t!(e).path()) {
|
for file in t!(self.input.read_dir()).map(|e| t!(e).path()) {
|
||||||
|
|
Loading…
Reference in New Issue