From df6e2cc52ce394578d3dbd40955f01ededabb51a Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Tue, 2 Aug 2022 10:50:46 -0700 Subject: [PATCH] Only show advice to use `cargo update --precise` for non-local packages Packages in the local workspace can't get updated this way; the user just needs to point to a different source, or otherwise update the package themselves. --- src/cargo/ops/cargo_compile.rs | 4 +++- tests/testsuite/rust_version.rs | 5 +---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/cargo/ops/cargo_compile.rs b/src/cargo/ops/cargo_compile.rs index 2ac85cad48a2..ced55770ef80 100644 --- a/src/cargo/ops/cargo_compile.rs +++ b/src/cargo/ops/cargo_compile.rs @@ -667,7 +667,7 @@ pub fn create_bcx<'a, 'cfg>( } else { String::new() } - } else { + } else if !unit.is_local() { format!( "Either upgrade to rustc {} or newer, or use\n\ cargo update -p {}@{} --precise ver\n\ @@ -678,6 +678,8 @@ pub fn create_bcx<'a, 'cfg>( unit.pkg.name(), current_version, ) + } else { + String::new() }; anyhow::bail!( diff --git a/tests/testsuite/rust_version.rs b/tests/testsuite/rust_version.rs index 1823cdad98ad..68d54190cb0c 100644 --- a/tests/testsuite/rust_version.rs +++ b/tests/testsuite/rust_version.rs @@ -124,10 +124,7 @@ fn rust_version_too_high() { .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 [..]\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 [..]", + rustc 1.9876.0 or newer, while the currently active rustc version is [..]\n\n", ) .run(); p.cargo("build --ignore-rust-version").run();