Skip to content

Commit 281989f

Browse files
committed
Auto merge of #10911 - Nemo157:override-to-resolver-1, r=epage
Override to resolver=1 in published package As discussed in #10112 this avoids inconsistent dependency resolution in development and packaged builds when an edition 2021 crate is published from a workspace using the default resolver=1.
2 parents 015143c + d953c3b commit 281989f

File tree

7 files changed

+60
-4
lines changed

7 files changed

+60
-4
lines changed

src/cargo/core/resolver/types.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,12 @@ impl ResolveBehavior {
119119
}
120120
}
121121

122-
pub fn to_manifest(&self) -> Option<String> {
122+
pub fn to_manifest(&self) -> String {
123123
match self {
124-
ResolveBehavior::V1 => None,
125-
ResolveBehavior::V2 => Some("2".to_string()),
124+
ResolveBehavior::V1 => "1",
125+
ResolveBehavior::V2 => "2",
126126
}
127+
.to_owned()
127128
}
128129
}
129130

src/cargo/util/toml/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1342,7 +1342,7 @@ impl TomlManifest {
13421342
.unwrap()
13431343
.clone();
13441344
package.workspace = None;
1345-
package.resolver = ws.resolve_behavior().to_manifest();
1345+
package.resolver = Some(ws.resolve_behavior().to_manifest());
13461346
if let Some(license_file) = &package.license_file {
13471347
let license_file = license_file
13481348
.as_defined()

tests/testsuite/features_namespaced.rs

+2
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,7 @@ version = "0.1.0"
951951
description = "foo"
952952
homepage = "https://example.com/"
953953
license = "MIT"
954+
resolver = "1"
954955
955956
[dependencies.opt-dep1]
956957
version = "1.0"
@@ -1058,6 +1059,7 @@ version = "0.1.0"
10581059
description = "foo"
10591060
homepage = "https://example.com/"
10601061
license = "MIT"
1062+
resolver = "1"
10611063
10621064
[dependencies.bar]
10631065
version = "1.0"

tests/testsuite/inheritable_workspace_fields.rs

+5
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ keywords = ["cli"]
218218
categories = ["development-tools"]
219219
license = "MIT"
220220
repository = "https://github.com/example/example"
221+
resolver = "1"
221222
222223
[badges.gitlab]
223224
branch = "master"
@@ -348,6 +349,7 @@ fn inherit_own_dependencies() {
348349
name = "bar"
349350
version = "0.2.0"
350351
authors = []
352+
resolver = "1"
351353
352354
[dependencies.dep]
353355
version = "0.1"
@@ -452,6 +454,7 @@ fn inherit_own_detailed_dependencies() {
452454
name = "bar"
453455
version = "0.2.0"
454456
authors = []
457+
resolver = "1"
455458
456459
[dependencies.dep]
457460
version = "0.1.2"
@@ -688,6 +691,7 @@ categories = ["development-tools"]
688691
license = "MIT"
689692
license-file = "LICENSE"
690693
repository = "https://github.com/example/example"
694+
resolver = "1"
691695
692696
[badges.gitlab]
693697
branch = "master"
@@ -819,6 +823,7 @@ fn inherit_dependencies() {
819823
name = "bar"
820824
version = "0.2.0"
821825
authors = []
826+
resolver = "1"
822827
823828
[dependencies.dep]
824829
version = "0.1"

tests/testsuite/package.rs

+45
Original file line numberDiff line numberDiff line change
@@ -1119,6 +1119,7 @@ authors = []
11191119
exclude = ["*.txt"]
11201120
description = "foo"
11211121
license = "MIT"
1122+
resolver = "1"
11221123
11231124
[package.metadata]
11241125
foo = "bar"
@@ -1189,6 +1190,7 @@ fn ignore_workspace_specifier() {
11891190
name = "bar"
11901191
version = "0.1.0"
11911192
authors = []
1193+
resolver = "1"
11921194
"#,
11931195
cargo::core::package::MANIFEST_PREAMBLE
11941196
);
@@ -2325,3 +2327,46 @@ See [..]
23252327
assert!(p.root().join("target/package/foo-0.0.1.crate").is_file());
23262328
assert!(p.root().join("target/package/bar-0.0.1.crate").is_file());
23272329
}
2330+
2331+
#[cargo_test]
2332+
fn workspace_overrides_resolver() {
2333+
let p = project()
2334+
.file(
2335+
"Cargo.toml",
2336+
r#"
2337+
[workspace]
2338+
members = ["bar"]
2339+
"#,
2340+
)
2341+
.file(
2342+
"bar/Cargo.toml",
2343+
r#"
2344+
[package]
2345+
name = "bar"
2346+
version = "0.1.0"
2347+
edition = "2021"
2348+
"#,
2349+
)
2350+
.file("bar/src/lib.rs", "")
2351+
.build();
2352+
2353+
p.cargo("package --no-verify").cwd("bar").run();
2354+
2355+
let f = File::open(&p.root().join("target/package/bar-0.1.0.crate")).unwrap();
2356+
let rewritten_toml = format!(
2357+
r#"{}
2358+
[package]
2359+
edition = "2021"
2360+
name = "bar"
2361+
version = "0.1.0"
2362+
resolver = "1"
2363+
"#,
2364+
cargo::core::package::MANIFEST_PREAMBLE
2365+
);
2366+
validate_crate_contents(
2367+
f,
2368+
"bar-0.1.0.crate",
2369+
&["Cargo.toml", "Cargo.toml.orig", "src/lib.rs"],
2370+
&[("Cargo.toml", &rewritten_toml)],
2371+
);
2372+
}

tests/testsuite/publish.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,7 @@ fn publish_git_with_version() {
11781178
authors = []\n\
11791179
description = \"foo\"\n\
11801180
license = \"MIT\"\n\
1181+
resolver = \"1\"\n\
11811182
\n\
11821183
[dependencies.dep1]\n\
11831184
version = \"1.0\"\n\
@@ -1284,6 +1285,7 @@ homepage = "foo"
12841285
documentation = "foo"
12851286
license = "MIT"
12861287
repository = "foo"
1288+
resolver = "1"
12871289
12881290
[dev-dependencies]
12891291
"#,

tests/testsuite/weak_dep_features.rs

+1
Original file line numberDiff line numberDiff line change
@@ -608,6 +608,7 @@ version = "0.1.0"
608608
description = "foo"
609609
homepage = "https://example.com/"
610610
license = "MIT"
611+
resolver = "1"
611612
612613
[dependencies.bar]
613614
version = "1.0"

0 commit comments

Comments
 (0)