-
Notifications
You must be signed in to change notification settings - Fork 413
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
Use cargo tree
to determine feature dependent optional deps
#2636
Conversation
3eab4cb
to
80ab8f0
Compare
5fae2ea
to
3ac66cd
Compare
3ac66cd
to
6747d08
Compare
cargo tree
to determine resolver = 2
dep treescargo tree
to determine feature dependent optional deps
6747d08
to
2129099
Compare
I recommend reviewers take this change one commit at a time. There are two very noisy commits with a bunch of rendered output. |
I also don't think this closes #2212 since if I understand the issue correctly, |
2129099
to
f04b4e5
Compare
f04b4e5
to
2370c5c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice! Thank you!!
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [rules_rust](https://togithub.com/bazelbuild/rules_rust) | http_archive | minor | `0.42.1` -> `0.43.0` | --- ### Release Notes <details> <summary>bazelbuild/rules_rust (rules_rust)</summary> ### [`v0.43.0`](https://togithub.com/bazelbuild/rules_rust/releases/tag/0.43.0) [Compare Source](https://togithub.com/bazelbuild/rules_rust/compare/0.42.1...0.43.0) ### 0.43.0 ```python load("@​bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "rules_rust", integrity = "sha256-SnzocNvQp1YK1TW/aUVhR6RSROo1l2RilE1V20WFnK0=", urls = ["https://github.com/bazelbuild/rules_rust/releases/download/0.43.0/rules_rust-v0.43.0.tar.gz"], ) ``` Additional documentation can be found at: https://bazelbuild.github.io/rules_rust/#setup #### What's Changed - Bzlmod-aware runfiles library by [@​dzbarsky](https://togithub.com/dzbarsky) in [bazelbuild/rules_rust#2566 - Add clippy_flag flag to allow flags to be added in succession. by [@​granaghan](https://togithub.com/granaghan) in [bazelbuild/rules_rust#2625 - Add aspect_rules_js to MODULE.bazel by [@​dzbarsky](https://togithub.com/dzbarsky) in [bazelbuild/rules_rust#2618 - Register a default rust toolchain. by [@​matts1](https://togithub.com/matts1) in [bazelbuild/rules_rust#2624 - Nit: Fix link to example in rust_bindgen.md by [@​hauserx](https://togithub.com/hauserx) in [bazelbuild/rules_rust#2628 - Add context to error messages by [@​illicitonion](https://togithub.com/illicitonion) in [bazelbuild/rules_rust#2408 - Update `cargo_bootstrap_repository` interface to match dependency macros by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2630 - Added debug logging for spliced manifests to crate_universe by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2629 - also rewrite -isystem in addition to -sysroot by [@​adrianimboden](https://togithub.com/adrianimboden) in [bazelbuild/rules_rust#2631 - Support loading http credentials from netrc by [@​golovasteek](https://togithub.com/golovasteek) in [bazelbuild/rules_rust#2623 - Updated Buildifier version for crate_universe by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2634 - Follow-up documentation/fixes to lockfile API by [@​illicitonion](https://togithub.com/illicitonion) in [bazelbuild/rules_rust#2637 - Add docs and examples of complicated build scripts by [@​illicitonion](https://togithub.com/illicitonion) in [bazelbuild/rules_rust#2635 - Added Rust 1.78.0 by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2639 - Remove `incompatible_test_attr_crate_and_srcs_mutually_exclusive` by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2641 - Minor cleanup for crate_universe by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2644 - Use `cargo tree` to determine feature dependent optional deps by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2636 - Release 0.43.0 by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2642 - Update cross to fix crate_universe builds in releases by [@​UebelAndre](https://togithub.com/UebelAndre) in [bazelbuild/rules_rust#2645 #### New Contributors - [@​hauserx](https://togithub.com/hauserx) made their first contribution in [bazelbuild/rules_rust#2628 - [@​adrianimboden](https://togithub.com/adrianimboden) made their first contribution in [bazelbuild/rules_rust#2631 - [@​golovasteek](https://togithub.com/golovasteek) made their first contribution in [bazelbuild/rules_rust#2623 **Full Changelog**: bazelbuild/rules_rust@0.42.1...0.43.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/bazel-contrib/toolchains_llvm). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNTEuMiIsInVwZGF0ZWRJblZlciI6IjM3LjM1MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
The Cargo Feature Resolver version 2 behavior is currently not supported by the
cargo metadata
sub command (rust-lang/cargo#9863) whichcrate_universe
uses to determine the dependencies of a target, leading to inaccuracies when dependencies are introduced via feature resolution for a particular configuration.In #1710 functionality was added to use
cargo tree
to perform feature resolution for each supported platform. This change expands on this trick to collect dependency information at the same time and use that to determine whether or not to include optional dependencies located in standardcargo metadata
output in the rendered Bazel targets. Non optional ortarget.cfg
(conditional) dependencies behave as they did before this change.Implementation details:
FeatureGenerator
was replaced byTreeResolver
cargo-bazel-lock.json
files but is expected to be more correct.