Skip to content

Commit

Permalink
fix(vendor): Ensure sort happens for vendor
Browse files Browse the repository at this point in the history
  • Loading branch information
epage committed Jun 3, 2024
1 parent 7a05add commit 196f772
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 18 deletions.
5 changes: 0 additions & 5 deletions src/cargo/util/toml/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2777,11 +2777,6 @@ fn prepare_targets_for_publish(
};
prepared.push(target);
}
// Ensure target order is deterministic, particularly for `cargo vendor` where re-vendoring
// should not cause changes.
//
// `unstable` should be deterministic because we enforce that `t.name` is unique
prepared.sort_unstable_by_key(|t| t.name.clone());

if prepared.is_empty() {
Ok(None)
Expand Down
10 changes: 8 additions & 2 deletions src/cargo/util/toml/targets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -744,7 +744,7 @@ fn toml_targets_and_inferred(
autodiscover_flag_name: &str,
) -> Vec<TomlTarget> {
let inferred_targets = inferred_to_toml_targets(inferred);
match toml_targets {
let mut toml_targets = match toml_targets {
None => {
if let Some(false) = autodiscover {
vec![]
Expand Down Expand Up @@ -819,7 +819,13 @@ https://github.com/rust-lang/cargo/issues/5330",

targets
}
}
};
// Ensure target order is deterministic, particularly for `cargo vendor` where re-vendoring
// should not cause changes.
//
// `unstable` should be deterministic because we enforce that `t.name` is unique
toml_targets.sort_unstable_by_key(|t| t.name.clone());
toml_targets
}

fn inferred_to_toml_targets(inferred: &[(String, PathBuf)]) -> Vec<TomlTarget> {
Expand Down
2 changes: 1 addition & 1 deletion tests/testsuite/required_features.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1474,12 +1474,12 @@ fn truncated_install_warning_message() {
[FINISHED] `release` profile [optimized] target(s) in [..]
[WARNING] none of the package's binaries are available for install using the selected features
bin \"foo1\" requires the features: `feature1`, `feature2`, `feature3`
bin \"foo10\" requires the features: `feature1`, `feature2`, `feature3`, `feature4`, `feature5`
bin \"foo2\" requires the features: `feature2`
bin \"foo3\" requires the features: `feature3`
bin \"foo4\" requires the features: `feature4`, `feature1`
bin \"foo5\" requires the features: `feature1`, `feature2`, `feature3`, `feature4`, `feature5`
bin \"foo6\" requires the features: `feature1`, `feature2`, `feature3`, `feature4`, `feature5`
bin \"foo7\" requires the features: `feature1`, `feature2`, `feature3`, `feature4`, `feature5`
4 more targets also requires features not enabled. See them in the Cargo.toml file.
Consider enabling some of the needed features by passing, e.g., `--features=\"feature1 feature2 feature3\"`").run();
}
23 changes: 13 additions & 10 deletions tests/testsuite/vendor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -924,7 +924,9 @@ fn git_deterministic() {
p.change_file(".cargo/config.toml", &output);

let git_dep_manifest = p.read_file("vendor/git_dep/Cargo.toml");
assert_e2e().eq(git_dep_manifest, str![[r##"
assert_e2e().eq(
git_dep_manifest,
str![[r##"
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
Expand Down Expand Up @@ -960,20 +962,16 @@ name = "git_dep"
path = "src/lib.rs"
[[example]]
name = "c"
path = "examples/c.rs"
name = "a"
path = "examples/a.rs"
[[example]]
name = "b"
path = "examples/b.rs"
[[example]]
name = "a"
path = "examples/a.rs"
[[example]]
name = "z"
path = "examples/z.rs"
name = "c"
path = "examples/c.rs"
[[example]]
name = "x"
Expand All @@ -983,7 +981,12 @@ path = "examples/x.rs"
name = "y"
path = "examples/y.rs"
"##]]);
[[example]]
name = "z"
path = "examples/z.rs"
"##]],
);
}

#[cargo_test]
Expand Down

0 comments on commit 196f772

Please sign in to comment.