Auto merge of #140786 - Kobzol:try-builds-no-deny-warnings, r=jieyouxu
Do not deny warnings in "fast" try builds When we do the classic ``@bors` try` build without specifying `try-job` in the PR description, we want to get a compiler toolchain for perf./crater/local experimentation as fast as possible. We don't run any tests in that case, so it seems reasonable to also ignore warnings. Fixes: https://github.com/rust-lang/rust/issues/140753 r? `@jieyouxu` try-job: dist-x86_64-linux
This commit is contained in:
commit
50aa041807
6 changed files with 42 additions and 20 deletions
|
|
@ -2567,7 +2567,6 @@ dependencies = [
|
|||
"humansize",
|
||||
"humantime",
|
||||
"log",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sysinfo",
|
||||
"tabled",
|
||||
|
|
|
|||
|
|
@ -135,12 +135,16 @@ There are several use-cases for try builds:
|
|||
- Run a specific CI job (e.g. Windows tests) on a PR, to quickly test if it
|
||||
passes the test suite executed by that job.
|
||||
|
||||
You can select which CI jobs will
|
||||
be executed in the try build by adding lines containing `try-job:
|
||||
<job pattern>` to the PR description. All such specified jobs will be executed
|
||||
in the try build once the `@bors try` command is used on the PR. If no try
|
||||
jobs are specified in this way, the jobs defined in the `try` section of
|
||||
[`jobs.yml`] will be executed by default.
|
||||
By default, if you send a comment with `@bors try`, the jobs defined in the `try` section of
|
||||
[`jobs.yml`] will be executed. We call this mode a "fast try build". Such a try build
|
||||
will not execute any tests, and it will allow compilation warnings. It is useful when you want to
|
||||
get an optimized toolchain as fast as possible, for a crater run or performance benchmarks,
|
||||
even if it might not be working fully correctly.
|
||||
|
||||
If you want to run a custom CI job in a try build and make sure that it passes all tests and does
|
||||
not produce any compilation warnings, you can select CI jobs to be executed by adding lines
|
||||
containing `try-job: <job pattern>` to the PR description. All such specified jobs will be executed
|
||||
in the try build once the `@bors try` command is used on the PR.
|
||||
|
||||
Each pattern can either be an exact name of a job or a glob pattern that matches multiple jobs,
|
||||
for example `*msvc*` or `*-alt`. You can start at most 20 jobs in a single try build. When using
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "opt-dist"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
build_helper = { path = "../../build_helper" }
|
||||
|
|
@ -15,7 +15,6 @@ fs_extra = "1"
|
|||
camino = "1"
|
||||
tar = "0.4"
|
||||
xz = { version = "0.1", package = "xz2" }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
glob = "0.3"
|
||||
tempfile = "3.5"
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ pub struct Environment {
|
|||
use_bolt: bool,
|
||||
shared_llvm: bool,
|
||||
run_tests: bool,
|
||||
fast_try_build: bool,
|
||||
}
|
||||
|
||||
impl Environment {
|
||||
|
|
@ -106,6 +107,10 @@ impl Environment {
|
|||
pub fn run_tests(&self) -> bool {
|
||||
self.run_tests
|
||||
}
|
||||
|
||||
pub fn is_fast_try_build(&self) -> bool {
|
||||
self.fast_try_build
|
||||
}
|
||||
}
|
||||
|
||||
/// What is the extension of binary executables on this platform?
|
||||
|
|
|
|||
|
|
@ -113,13 +113,16 @@ impl Bootstrap {
|
|||
"library/std",
|
||||
])
|
||||
.env("RUST_BACKTRACE", "full");
|
||||
let cmd = add_shared_x_flags(env, cmd);
|
||||
|
||||
Self { cmd, metrics_path }
|
||||
}
|
||||
|
||||
pub fn dist(env: &Environment, dist_args: &[String]) -> Self {
|
||||
let metrics_path = env.build_root().join("build").join("metrics.json");
|
||||
let cmd = cmd(&dist_args.iter().map(|arg| arg.as_str()).collect::<Vec<_>>())
|
||||
.env("RUST_BACKTRACE", "full");
|
||||
let args = dist_args.iter().map(|arg| arg.as_str()).collect::<Vec<_>>();
|
||||
let cmd = cmd(&args).env("RUST_BACKTRACE", "full");
|
||||
let cmd = add_shared_x_flags(env, cmd);
|
||||
Self { cmd, metrics_path }
|
||||
}
|
||||
|
||||
|
|
@ -184,3 +187,7 @@ impl Bootstrap {
|
|||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
fn add_shared_x_flags(env: &Environment, cmd: CmdBuilder) -> CmdBuilder {
|
||||
if env.is_fast_try_build() { cmd.arg("--set").arg("rust.deny-warnings=false") } else { cmd }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ enum EnvironmentCmd {
|
|||
#[arg(long)]
|
||||
benchmark_cargo_config: Vec<String>,
|
||||
|
||||
/// Perform tests after final build if it's not a try build
|
||||
/// Perform tests after final build if it's not a fast try build
|
||||
#[arg(long)]
|
||||
run_tests: bool,
|
||||
},
|
||||
|
|
@ -111,11 +111,14 @@ enum EnvironmentCmd {
|
|||
},
|
||||
}
|
||||
|
||||
fn is_try_build() -> bool {
|
||||
/// For a fast try build, we want to only build the bare minimum of components to get a
|
||||
/// working toolchain, and not run any tests.
|
||||
fn is_fast_try_build() -> bool {
|
||||
std::env::var("DIST_TRY_BUILD").unwrap_or_else(|_| "0".to_string()) != "0"
|
||||
}
|
||||
|
||||
fn create_environment(args: Args) -> anyhow::Result<(Environment, Vec<String>)> {
|
||||
let is_fast_try_build = is_fast_try_build();
|
||||
let (env, args) = match args.env {
|
||||
EnvironmentCmd::Local {
|
||||
target_triple,
|
||||
|
|
@ -144,6 +147,7 @@ fn create_environment(args: Args) -> anyhow::Result<(Environment, Vec<String>)>
|
|||
.skipped_tests(skipped_tests)
|
||||
.benchmark_cargo_config(benchmark_cargo_config)
|
||||
.run_tests(run_tests)
|
||||
.fast_try_build(is_fast_try_build)
|
||||
.build()?;
|
||||
|
||||
(env, shared.build_args)
|
||||
|
|
@ -167,6 +171,7 @@ fn create_environment(args: Args) -> anyhow::Result<(Environment, Vec<String>)>
|
|||
.use_bolt(!is_aarch64)
|
||||
.skipped_tests(vec![])
|
||||
.run_tests(true)
|
||||
.fast_try_build(is_fast_try_build)
|
||||
.build()?;
|
||||
|
||||
(env, shared.build_args)
|
||||
|
|
@ -187,6 +192,7 @@ fn create_environment(args: Args) -> anyhow::Result<(Environment, Vec<String>)>
|
|||
.use_bolt(false)
|
||||
.skipped_tests(vec![])
|
||||
.run_tests(true)
|
||||
.fast_try_build(is_fast_try_build)
|
||||
.build()?;
|
||||
|
||||
(env, shared.build_args)
|
||||
|
|
@ -350,9 +356,8 @@ fn execute_pipeline(
|
|||
|
||||
// After dist has finished, run a subset of the test suite on the optimized artifacts to discover
|
||||
// possible regressions.
|
||||
// The tests are not executed for try builds, which can be in various broken states, so we don't
|
||||
// want to gatekeep them with tests.
|
||||
if !is_try_build() && env.run_tests() {
|
||||
// The tests are not executed for fast try builds, which can be broken and might not pass them.
|
||||
if !is_fast_try_build() && env.run_tests() {
|
||||
timer.section("Run tests", |_| run_tests(env))?;
|
||||
}
|
||||
|
||||
|
|
@ -361,7 +366,10 @@ fn execute_pipeline(
|
|||
|
||||
fn main() -> anyhow::Result<()> {
|
||||
// Make sure that we get backtraces for easier debugging in CI
|
||||
std::env::set_var("RUST_BACKTRACE", "1");
|
||||
unsafe {
|
||||
// SAFETY: we are the only thread running at this point
|
||||
std::env::set_var("RUST_BACKTRACE", "1");
|
||||
}
|
||||
|
||||
env_logger::builder()
|
||||
.filter_level(LevelFilter::Info)
|
||||
|
|
@ -393,9 +401,9 @@ fn main() -> anyhow::Result<()> {
|
|||
|
||||
let (env, mut build_args) = create_environment(args).context("Cannot create environment")?;
|
||||
|
||||
// Skip components that are not needed for try builds to speed them up
|
||||
if is_try_build() {
|
||||
log::info!("Skipping building of unimportant components for a try build");
|
||||
// Skip components that are not needed for fast try builds to speed them up
|
||||
if is_fast_try_build() {
|
||||
log::info!("Skipping building of unimportant components for a fast try build");
|
||||
for target in [
|
||||
"rust-docs",
|
||||
"rustc-docs",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue