Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

download targeted transitive deps of with artifact deps' target platform #14723

Merged
merged 3 commits into from
Oct 30, 2024

Conversation

elchukc
Copy link
Contributor

@elchukc elchukc commented Oct 23, 2024

What does this PR try to resolve?

Fixes #12554. download_accessible will now download platform-specified deps of artifact deps with target = ....

It will also resolve the panic in cargo tree -Z bindeps in #10593 (comment), where:

  • a dependency of an artifact dependency is platform specified
  • artifact dep itself is { target = } with the same platform as its own dependency
  • the platform is not activated.

Essentially, no entry found for key was happening because for artifact deps with {.., target = <target>}, transitive deps that specified their platform as <target> were not downloaded. This is why adding --target all to cargo tree -Z bindeps made the bug dissapear.

How should we test and review this PR?

Tests included in this PR should be enough.

Test artifact_dep::proc_macro_in_artifact_dep still throws; this PR will be ready for review once the test does not panic.

Additional Information

used set needs to be target-aware
r? @weihanglo

@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 23, 2024
@elchukc elchukc force-pushed the enhance_download_accessible branch 3 times, most recently from 17f5797 to dd0a20d Compare October 30, 2024 17:12
resolve: &Resolve,
pkg_id: PackageId,
has_dev_units: HasDevUnits,
requested_kinds: &[CompileKind],
requested_kind: CompileKind,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems mostly correct to me. Cargo allows only one target platform per artifact deps. Thanks folks. 👍🏾

With this RFC the approach here might still have some issues but it is not even landed yet so no need to worry
https://rust-lang.github.io/rfcs/3176-cargo-multi-dep-artifacts.html

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What we would do in that situation is just call collect_used_deps for each target. This errs on the side of walking the tree multiple times, once for each target, rather than trying to keep state so that we only walk once.

@elchukc elchukc marked this pull request as ready for review October 30, 2024 18:47
@elchukc elchukc changed the title WIP download targeted transitive deps of with artifact deps' target platform download targeted transitive deps of with artifact deps' target platform Oct 30, 2024
src/cargo/core/package.rs Outdated Show resolved Hide resolved
@epage
Copy link
Contributor

epage commented Oct 30, 2024

Thanks!

@bors r+

@bors
Copy link
Collaborator

bors commented Oct 30, 2024

📌 Commit d125262 has been approved by epage

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 30, 2024
@bors
Copy link
Collaborator

bors commented Oct 30, 2024

⌛ Testing commit d125262 with merge e09a5b8...

@bors
Copy link
Collaborator

bors commented Oct 30, 2024

☀️ Test successful - checks-actions
Approved by: epage
Pushing e09a5b8 to master...

@bors bors merged commit e09a5b8 into rust-lang:master Oct 30, 2024
22 checks passed
@elchukc elchukc deleted the enhance_download_accessible branch November 1, 2024 20:30
bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 2, 2024
Update cargo

18 commits in e75214ea4936d2f2c909a71a1237042cc0e14b07..0310497822a7a673a330a5dd068b7aaa579a265e
2024-10-25 16:34:32 +0000 to 2024-11-01 19:27:56 +0000
- Add more metadata to `rustc_fingerprint` (rust-lang/cargo#14761)
- test(rustfix): switch to a simpler case for dedup-suggestions (rust-lang/cargo#14765)
- chore(deps): update rust crate security-framework to v3 (rust-lang/cargo#14766)
- chore(deps): update rust crate gix to 0.67.0 (rust-lang/cargo#14762)
- fix(util): Respect all `..`s in `normalize_path` (rust-lang/cargo#14750)
- test(doc): Resolve flaky test (rust-lang/cargo#14760)
- refactor(test): Remove dead 'expect_stdout_contains_n' check (rust-lang/cargo#14759)
- add unstable -Zroot-dir flag to configure the path from which rustc should be invoked (rust-lang/cargo#14752)
- docs(resolver): Further v3 prep (rust-lang/cargo#14753)
- fix: track version in fingerprint dep-info files (rust-lang/cargo#14751)
- test: Remove unused msrv-policy (rust-lang/cargo#14748)
- download targeted transitive deps of with artifact deps'  target platform (rust-lang/cargo#14723)
- Remove requirement for --target when invoking Cargo with -Zbuild-std (rust-lang/cargo#14317)
- docs(fingerprint): document the encoding of Cargo's depinfo (rust-lang/cargo#14745)
- Allow build scripts to report error messages through `cargo::error` (rust-lang/cargo#14743)
- fix(publish): Downgrade version-exists error to warning on dry-run (rust-lang/cargo#14742)
- fix: clean up for deprecated and removed commands (rust-lang/cargo#14739)
- Deprecate `cargo verify-project` (rust-lang/cargo#14736)
@rustbot rustbot added this to the 1.84.0 milestone Nov 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

bindeps: Enhance download_accessible to download all potential dependencies
6 participants