Skip to content

cargo: preserve target context in execution configurations - #4305

Open
jrandolf wants to merge 2 commits into
bazelbuild:mainfrom
jrandolf:feat/cargo-target-context
Open

jrandolf wants to merge 2 commits into
bazelbuild:mainfrom
jrandolf:feat/cargo-target-context

Conversation

@jrandolf

Copy link
Copy Markdown
Contributor

Add an opt-in Cargo target-context setting for generators implementing resolver-v2 feature separation. Rust rules preserve the original target marker until a dependency enters an execution configuration, then expose the originating triple to host-side selects. An optional per-rule map can share configurations only when the generator knows their dependencies and features are equivalent. Unset contexts remain disabled.

The interface is documented in docs/cargo_target_context.md; cargo_build_script forwards the map to the binary that compiles the script. The setting uses the default universal scope instead of requiring the newer explicit scope attribute. Transition labels are anchored to rules_rust's repository mapping. The current Rust dylib rule is covered alongside the other library forms.

The analysis regressions inspect real Rust library, procedural-macro, host dependency and build-script configurations. They cover the empty default, native contexts, and a Linux target with host-side tools. The cross-platform case uses an analysis-only C++ toolchain and does not attempt to execute a Linux binary on macOS. Existing coverage tests also pass with their marker aligned to the compiler's incoming transition.

Related: hermeticbuild/rules_rs#158 and hermeticbuild/rules_rs#277.

Fixes #4300.

Validation: bazel test //test/unit/cargo_context:default_test //test/unit/cargo_context:native_test //test/unit/cargo_context:cross_test //test/unit/cargo_context:mapping_test //test/unit/coverage:all (6 tests passed); formatting and whitespace checks passed.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Preserve Cargo target context when dependencies transition to the compiler host

1 participant