Use cargo tree to determine feature dependent optional deps#2636
Merged
UebelAndre merged 4 commits intobazelbuild:mainfrom May 8, 2024
Merged
Use cargo tree to determine feature dependent optional deps#2636UebelAndre merged 4 commits intobazelbuild:mainfrom
cargo tree to determine feature dependent optional deps#2636UebelAndre merged 4 commits intobazelbuild:mainfrom
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
Collaborator
Author
|
I recommend reviewers take this change one commit at a time. There are two very noisy commits with a bunch of rendered output. |
Collaborator
Author
|
I also don't think this closes #2212 since if I understand the issue correctly, |
2129099 to
f04b4e5
Compare
Merged
f04b4e5 to
2370c5c
Compare
illicitonion
approved these changes
May 8, 2024
Collaborator
illicitonion
left a comment
There was a problem hiding this comment.
Very nice! Thank you!!
rrbutani
referenced
this pull request
in bazel-contrib/toolchains_llvm
May 9, 2024
[](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 [https://github.com/bazelbuild/rules_rust/pull/2566](https://togithub.com/bazelbuild/rules_rust/pull/2566) - Add clippy_flag flag to allow flags to be added in succession. by [@​granaghan](https://togithub.com/granaghan) in [https://github.com/bazelbuild/rules_rust/pull/2625](https://togithub.com/bazelbuild/rules_rust/pull/2625) - Add aspect_rules_js to MODULE.bazel by [@​dzbarsky](https://togithub.com/dzbarsky) in [https://github.com/bazelbuild/rules_rust/pull/2618](https://togithub.com/bazelbuild/rules_rust/pull/2618) - Register a default rust toolchain. by [@​matts1](https://togithub.com/matts1) in [https://github.com/bazelbuild/rules_rust/pull/2624](https://togithub.com/bazelbuild/rules_rust/pull/2624) - Nit: Fix link to example in rust_bindgen.md by [@​hauserx](https://togithub.com/hauserx) in [https://github.com/bazelbuild/rules_rust/pull/2628](https://togithub.com/bazelbuild/rules_rust/pull/2628) - Add context to error messages by [@​illicitonion](https://togithub.com/illicitonion) in [https://github.com/bazelbuild/rules_rust/pull/2408](https://togithub.com/bazelbuild/rules_rust/pull/2408) - Update `cargo_bootstrap_repository` interface to match dependency macros by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2630](https://togithub.com/bazelbuild/rules_rust/pull/2630) - Added debug logging for spliced manifests to crate_universe by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2629](https://togithub.com/bazelbuild/rules_rust/pull/2629) - also rewrite -isystem in addition to -sysroot by [@​adrianimboden](https://togithub.com/adrianimboden) in [https://github.com/bazelbuild/rules_rust/pull/2631](https://togithub.com/bazelbuild/rules_rust/pull/2631) - Support loading http credentials from netrc by [@​golovasteek](https://togithub.com/golovasteek) in [https://github.com/bazelbuild/rules_rust/pull/2623](https://togithub.com/bazelbuild/rules_rust/pull/2623) - Updated Buildifier version for crate_universe by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2634](https://togithub.com/bazelbuild/rules_rust/pull/2634) - Follow-up documentation/fixes to lockfile API by [@​illicitonion](https://togithub.com/illicitonion) in [https://github.com/bazelbuild/rules_rust/pull/2637](https://togithub.com/bazelbuild/rules_rust/pull/2637) - Add docs and examples of complicated build scripts by [@​illicitonion](https://togithub.com/illicitonion) in [https://github.com/bazelbuild/rules_rust/pull/2635](https://togithub.com/bazelbuild/rules_rust/pull/2635) - Added Rust 1.78.0 by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2639](https://togithub.com/bazelbuild/rules_rust/pull/2639) - Remove `incompatible_test_attr_crate_and_srcs_mutually_exclusive` by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2641](https://togithub.com/bazelbuild/rules_rust/pull/2641) - Minor cleanup for crate_universe by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2644](https://togithub.com/bazelbuild/rules_rust/pull/2644) - Use `cargo tree` to determine feature dependent optional deps by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2636](https://togithub.com/bazelbuild/rules_rust/pull/2636) - Release 0.43.0 by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2642](https://togithub.com/bazelbuild/rules_rust/pull/2642) - Update cross to fix crate_universe builds in releases by [@​UebelAndre](https://togithub.com/UebelAndre) in [https://github.com/bazelbuild/rules_rust/pull/2645](https://togithub.com/bazelbuild/rules_rust/pull/2645) #### New Contributors - [@​hauserx](https://togithub.com/hauserx) made their first contribution in [https://github.com/bazelbuild/rules_rust/pull/2628](https://togithub.com/bazelbuild/rules_rust/pull/2628) - [@​adrianimboden](https://togithub.com/adrianimboden) made their first contribution in [https://github.com/bazelbuild/rules_rust/pull/2631](https://togithub.com/bazelbuild/rules_rust/pull/2631) - [@​golovasteek](https://togithub.com/golovasteek) made their first contribution in [https://github.com/bazelbuild/rules_rust/pull/2623](https://togithub.com/bazelbuild/rules_rust/pull/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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Cargo Feature Resolver version 2 behavior is currently not supported by the
cargo metadatasub command (rust-lang/cargo#9863) whichcrate_universeuses 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 treeto 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 metadataoutput in the rendered Bazel targets. Non optional ortarget.cfg(conditional) dependencies behave as they did before this change.Implementation details:
FeatureGeneratorwas replaced byTreeResolvercargo-bazel-lock.jsonfiles but is expected to be more correct.