Also allow denying for QEMU, and fix the link-arg problem caused by

overriding RUSTFLAGS
This commit is contained in:
datdenkikniet 2023-04-16 14:14:49 +02:00
parent 2b9e8cbf1f
commit b7e4498a71
2 changed files with 25 additions and 6 deletions

View file

@ -100,6 +100,7 @@ pub enum CargoCommand<'a> {
mode: BuildMode,
arguments: Option<ExtraArguments>,
dir: Option<PathBuf>,
deny_warnings: bool,
},
}
@ -345,8 +346,10 @@ impl core::fmt::Display for CargoCommand<'_> {
mode,
arguments: _,
dir,
deny_warnings,
} => {
let details = details(false, target, Some(mode), features, cargoarg, dir.as_ref());
let warns = *deny_warnings;
let details = details(warns, target, Some(mode), features, cargoarg, dir.as_ref());
write!(f, "Compute size of example {example} {details}")
}
}
@ -645,6 +648,8 @@ impl<'a> CargoCommand<'a> {
target: _,
// dir is exposed through `chdir`
dir: _,
// deny_warnings is exposed through `extra_env`
deny_warnings: _,
} => {
let extra = ["--example", example]
.into_iter()
@ -688,12 +693,23 @@ impl<'a> CargoCommand<'a> {
// through an argument to rustc.
CargoCommand::Clippy { .. } => None,
CargoCommand::Doc { .. } => Some(("RUSTDOCFLAGS", "-D warnings")),
CargoCommand::Qemu { deny_warnings, .. }
| CargoCommand::ExampleBuild { deny_warnings, .. }
| CargoCommand::ExampleSize { deny_warnings, .. } => {
if *deny_warnings {
// NOTE: this also needs the link-arg because .cargo/config.toml
// is ignored if you set the RUSTFLAGS env variable.
Some(("RUSTFLAGS", "-D warnings -C link-arg=-Tlink.x"))
} else {
None
}
}
CargoCommand::Check { deny_warnings, .. }
| CargoCommand::ExampleCheck { deny_warnings, .. }
| CargoCommand::Build { deny_warnings, .. }
| CargoCommand::ExampleBuild { deny_warnings, .. }
| CargoCommand::Test { deny_warnings, .. }
| CargoCommand::Qemu { deny_warnings, .. } => {
| CargoCommand::Test { deny_warnings, .. } => {
if *deny_warnings {
Some(("RUSTFLAGS", "-D warnings"))
} else {

View file

@ -381,13 +381,15 @@ pub fn qemu_run_examples<'c>(
into_iter(examples)
.flat_map(|example| {
let target = target.into();
let dir = Some(PathBuf::from("./rtic"));
let cmd_build = CargoCommand::ExampleBuild {
cargoarg: &None,
example,
target,
features: features.clone(),
mode: BuildMode::Release,
dir: Some(PathBuf::from("./rtic")),
dir: dir.clone(),
deny_warnings: globals.deny_warnings,
};
@ -397,7 +399,7 @@ pub fn qemu_run_examples<'c>(
target,
features: features.clone(),
mode: BuildMode::Release,
dir: Some(PathBuf::from("./rtic")),
dir,
deny_warnings: globals.deny_warnings,
};
@ -441,6 +443,7 @@ pub fn build_and_check_size<'c>(
mode: BuildMode::Release,
arguments: arguments.clone(),
dir: Some(PathBuf::from("./rtic")),
deny_warnings: globals.deny_warnings,
};
[cmd_build, cmd_size]