From 789eda2b83809e4248f91966a4264af2f991fa31 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 11 Apr 2024 11:40:33 -0500 Subject: [PATCH 1/3] fix: Correct fn name in log statement --- src/cargo/core/workspace.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cargo/core/workspace.rs b/src/cargo/core/workspace.rs index 9cf4a100f..652e8adab 100644 --- a/src/cargo/core/workspace.rs +++ b/src/cargo/core/workspace.rs @@ -771,7 +771,7 @@ impl<'gctx> Workspace<'gctx> { } } - debug!("find_members - {}", manifest_path.display()); + debug!("find_path_deps - {}", manifest_path.display()); self.members.push(manifest_path.clone()); let candidates = { From 11448b44fe8939f1ebae74929f6a74207e5a3d1e Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 11 Apr 2024 12:07:05 -0500 Subject: [PATCH 2/3] refactor(resolve): Abstract out MSRV policy tracking --- src/cargo/core/workspace.rs | 4 ++++ src/cargo/ops/resolve.rs | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cargo/core/workspace.rs b/src/cargo/core/workspace.rs index 652e8adab..9f2a7db43 100644 --- a/src/cargo/core/workspace.rs +++ b/src/cargo/core/workspace.rs @@ -605,6 +605,10 @@ impl<'gctx> Workspace<'gctx> { self.members().filter_map(|pkg| pkg.rust_version()).min() } + pub fn resolve_honors_rust_version(&self) -> bool { + self.gctx().cli_unstable().msrv_policy + } + pub fn custom_metadata(&self) -> Option<&toml::Value> { self.custom_metadata.as_ref() } diff --git a/src/cargo/ops/resolve.rs b/src/cargo/ops/resolve.rs index 31a375514..61c014b4c 100644 --- a/src/cargo/ops/resolve.rs +++ b/src/cargo/ops/resolve.rs @@ -323,7 +323,7 @@ pub fn resolve_with_previous<'gctx>( if ws.gctx().cli_unstable().minimal_versions { version_prefs.version_ordering(VersionOrdering::MinimumVersionsFirst) } - if ws.gctx().cli_unstable().msrv_policy { + if ws.resolve_honors_rust_version() { version_prefs.max_rust_version(ws.rust_version().cloned().map(RustVersion::into_partial)); } From cd3d31b3618221b949d7a7d60482c5a5991a7ae8 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 11 Apr 2024 12:56:53 -0500 Subject: [PATCH 3/3] feat(reslve): Respect '--ignore-rust-version' --- src/cargo/core/workspace.rs | 8 +++++++- src/cargo/util/command_prelude.rs | 1 + tests/testsuite/rust_version.rs | 12 ++++-------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/cargo/core/workspace.rs b/src/cargo/core/workspace.rs index 9f2a7db43..7b92d2e37 100644 --- a/src/cargo/core/workspace.rs +++ b/src/cargo/core/workspace.rs @@ -100,6 +100,7 @@ pub struct Workspace<'gctx> { /// The resolver behavior specified with the `resolver` field. resolve_behavior: ResolveBehavior, + honor_rust_version: Option, /// Workspace-level custom metadata custom_metadata: Option, @@ -229,6 +230,7 @@ impl<'gctx> Workspace<'gctx> { loaded_packages: RefCell::new(HashMap::new()), ignore_lock: false, resolve_behavior: ResolveBehavior::V1, + honor_rust_version: None, custom_metadata: None, } } @@ -605,8 +607,12 @@ 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 resolve_honors_rust_version(&self) -> bool { - self.gctx().cli_unstable().msrv_policy + self.gctx().cli_unstable().msrv_policy && self.honor_rust_version.unwrap_or(true) } pub fn custom_metadata(&self) -> Option<&toml::Value> { diff --git a/src/cargo/util/command_prelude.rs b/src/cargo/util/command_prelude.rs index 82d8e8c9e..6dfa3512b 100644 --- a/src/cargo/util/command_prelude.rs +++ b/src/cargo/util/command_prelude.rs @@ -504,6 +504,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()); 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 c007ba7d5..42c265609 100644 --- a/tests/testsuite/rust_version.rs +++ b/tests/testsuite/rust_version.rs @@ -347,15 +347,13 @@ fn dependency_rust_version_older_and_newer_than_package() { p.cargo("check --ignore-rust-version") .arg("-Zmsrv-policy") .masquerade_as_nightly_cargo(&["msrv-policy"]) - // This should pick 1.6.0 .with_stderr( "\ [UPDATING] `dummy-registry` index [LOCKING] 2 packages -[ADDING] bar v1.5.0 (latest: v1.6.0) [DOWNLOADING] crates ... -[DOWNLOADED] bar v1.5.0 (registry `dummy-registry`) -[CHECKING] bar v1.5.0 +[DOWNLOADED] bar v1.6.0 (registry `dummy-registry`) +[CHECKING] bar v1.6.0 [CHECKING] [..] [FINISHED] [..] ", @@ -483,15 +481,13 @@ fn workspace_with_mixed_rust_version() { p.cargo("check --ignore-rust-version") .arg("-Zmsrv-policy") .masquerade_as_nightly_cargo(&["msrv-policy"]) - // This should pick 1.6.0 .with_stderr( "\ [UPDATING] `dummy-registry` index [LOCKING] 3 packages -[ADDING] bar v1.4.0 (latest: v1.6.0) [DOWNLOADING] crates ... -[DOWNLOADED] bar v1.4.0 (registry `dummy-registry`) -[CHECKING] bar v1.4.0 +[DOWNLOADED] bar v1.6.0 (registry `dummy-registry`) +[CHECKING] bar v1.6.0 [CHECKING] [..] [FINISHED] [..] ",