diff --git a/src/bin/cargo/commands/fix.rs b/src/bin/cargo/commands/fix.rs index 8a901de8ae5..8190cf07e95 100644 --- a/src/bin/cargo/commands/fix.rs +++ b/src/bin/cargo/commands/fix.rs @@ -72,7 +72,7 @@ pub fn exec(gctx: &mut GlobalContext, args: &ArgMatches) -> CliResult { // code as we can. let root_manifest = args.root_manifest(gctx)?; let mut ws = Workspace::new(&root_manifest, gctx)?; - ws.set_honor_rust_version(args.honor_rust_version()); + ws.set_resolve_honors_rust_version(args.honor_rust_version()); let mut opts = args.compile_options(gctx, mode, Some(&ws), ProfileChecking::LegacyTestOnly)?; if !opts.filter.is_specific() { diff --git a/src/cargo/core/workspace.rs b/src/cargo/core/workspace.rs index c3b04806ea0..c73d0ce3801 100644 --- a/src/cargo/core/workspace.rs +++ b/src/cargo/core/workspace.rs @@ -104,7 +104,6 @@ pub struct Workspace<'gctx> { /// The resolver behavior specified with the `resolver` field. resolve_behavior: ResolveBehavior, resolve_honors_rust_version: bool, - honor_rust_version: Option, /// Workspace-level custom metadata custom_metadata: Option, @@ -235,7 +234,6 @@ impl<'gctx> Workspace<'gctx> { ignore_lock: false, resolve_behavior: ResolveBehavior::V1, resolve_honors_rust_version: false, - honor_rust_version: None, custom_metadata: None, } } @@ -649,18 +647,14 @@ impl<'gctx> Workspace<'gctx> { self.members().filter_map(|pkg| pkg.rust_version()).min() } - pub fn set_honor_rust_version(&mut self, honor_rust_version: Option) { - self.honor_rust_version = honor_rust_version; - } - - pub fn honor_rust_version(&self) -> Option { - self.honor_rust_version + pub fn set_resolve_honors_rust_version(&mut self, honor_rust_version: Option) { + if let Some(honor_rust_version) = honor_rust_version { + self.resolve_honors_rust_version = honor_rust_version; + } } pub fn resolve_honors_rust_version(&self) -> bool { - // Give CLI precedence - self.honor_rust_version - .unwrap_or(self.resolve_honors_rust_version) + self.resolve_honors_rust_version } pub fn custom_metadata(&self) -> Option<&toml::Value> { diff --git a/src/cargo/ops/cargo_install.rs b/src/cargo/ops/cargo_install.rs index 18943dbe46e..a662e891f38 100644 --- a/src/cargo/ops/cargo_install.rs +++ b/src/cargo/ops/cargo_install.rs @@ -819,7 +819,9 @@ fn make_ws_rustc_target<'gctx>( let mut ws = if source_id.is_git() || source_id.is_path() { Workspace::new(pkg.manifest_path(), gctx)? } else { - Workspace::ephemeral(pkg, gctx, None, false)? + let mut ws = Workspace::ephemeral(pkg, gctx, None, false)?; + ws.set_resolve_honors_rust_version(Some(false)); + ws }; ws.set_ignore_lock(gctx.lock_update_allowed()); ws.set_require_optional_deps(false); diff --git a/src/cargo/ops/fix.rs b/src/cargo/ops/fix.rs index 88c90e31af4..743bd486646 100644 --- a/src/cargo/ops/fix.rs +++ b/src/cargo/ops/fix.rs @@ -108,7 +108,7 @@ pub fn fix( check_resolver_change(&original_ws, opts)?; } let mut ws = Workspace::new(&root_manifest, gctx)?; - ws.set_honor_rust_version(original_ws.honor_rust_version()); + ws.set_resolve_honors_rust_version(Some(original_ws.resolve_honors_rust_version())); // Spin up our lock server, which our subprocesses will use to synchronize fixes. let lock_server = LockServer::new()?; diff --git a/src/cargo/util/command_prelude.rs b/src/cargo/util/command_prelude.rs index 0f3d3dc437c..63435b50eaa 100644 --- a/src/cargo/util/command_prelude.rs +++ b/src/cargo/util/command_prelude.rs @@ -505,7 +505,7 @@ pub trait ArgMatchesExt { fn workspace<'a>(&self, gctx: &'a GlobalContext) -> CargoResult> { let root = self.root_manifest(gctx)?; let mut ws = Workspace::new(&root, gctx)?; - ws.set_honor_rust_version(self.honor_rust_version()); + ws.set_resolve_honors_rust_version(self.honor_rust_version()); if gctx.cli_unstable().avoid_dev_deps { ws.set_require_optional_deps(false); } diff --git a/tests/testsuite/rust_version.rs b/tests/testsuite/rust_version.rs index 058028462fd..399779b19fe 100644 --- a/tests/testsuite/rust_version.rs +++ b/tests/testsuite/rust_version.rs @@ -1146,11 +1146,10 @@ fn cargo_install_ignores_msrv_config() { [DOWNLOADING] crates ... [DOWNLOADED] foo v0.0.1 (registry [..]) [INSTALLING] foo v0.0.1 -[LOCKING] 2 packages to latest Rust 1.60 compatible versions -[ADDING] dep v1.0.0 (latest: v1.1.0) +[LOCKING] 2 packages to latest compatible versions [DOWNLOADING] crates ... -[DOWNLOADED] dep v1.0.0 (registry [..]) -[COMPILING] dep v1.0.0 +[DOWNLOADED] dep v1.1.0 (registry [..]) +[COMPILING] dep v1.1.0 [COMPILING] foo v0.0.1 [FINISHED] `release` profile [optimized] target(s) in [..] [INSTALLING] [CWD]/home/.cargo/bin/foo[EXE]