continue;
}
+ let guidance = if ws.is_ephemeral() {
+ if ws.ignore_lock() {
+ "Try re-running cargo install with `--locked`".to_string()
+ } else {
+ String::new()
+ }
+ } else {
+ format!(
+ "Either upgrade to rustc {} or newer, or use\n\
+ cargo update -p {}@{} --precise ver\n\
+ where `ver` is the latest version of `{}` supporting rustc {}",
+ version,
+ unit.pkg.name(),
+ unit.pkg.version(),
+ unit.pkg.name(),
+ current_version,
+ )
+ };
+
anyhow::bail!(
"package `{}` cannot be built because it requires rustc {} or newer, \
- while the currently active rustc version is {}",
+ while the currently active rustc version is {}\n{}",
unit.pkg,
version,
current_version,
+ guidance,
);
}
}
.with_status(101)
.with_stderr(
"error: package `foo v0.0.1 ([..])` cannot be built because it requires \
- rustc 1.9876.0 or newer, while the currently active rustc version is [..]",
+ rustc 1.9876.0 or newer, while the currently active rustc version is [..]\n\
+ Either upgrade to rustc 1.9876.0 or newer, or use\n\
+ cargo update -p foo@0.0.1 --precise ver\n\
+ where `ver` is the latest version of `foo` supporting rustc [..]",
)
.run();
p.cargo("build --ignore-rust-version").run();
Downloading crates ...\n \
Downloaded bar v0.0.1 (registry `[..]`)\n\
error: package `bar v0.0.1` cannot be built because it requires \
- rustc 1.2345.0 or newer, while the currently active rustc version is [..]",
+ rustc 1.2345.0 or newer, while the currently active rustc version is [..]\n\
+ Either upgrade to rustc 1.2345.0 or newer, or use\n\
+ cargo update -p bar@0.0.1 --precise ver\n\
+ where `ver` is the latest version of `bar` supporting rustc [..]",
)
.run();
p.cargo("build --ignore-rust-version").run();