Skip to content

Commit 808f89d

Browse files
abezukorUebelAndrescentini
authored
Add build_script_link_deps to crate annotation system. (#3272)
[`link_deps` is a property of `cargo_build_script`](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-link_deps). This PR adds that ability to add it to third party crates via an annotation. --------- Co-authored-by: UebelAndre <[email protected]> Co-authored-by: scentini <[email protected]>
1 parent 90f8af5 commit 808f89d

17 files changed

+30
-13
lines changed

crate_universe/extensions.bzl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,6 +1083,9 @@ _annotation = tag_class(
10831083
"build_script_env": attr.string_dict(
10841084
doc = "Additional environment variables to set on a crate's `cargo_build_script::env` attribute.",
10851085
),
1086+
"build_script_link_deps": _relative_label_list(
1087+
doc = "A list of labels to add to a crate's `cargo_build_script::link_deps` attribute.",
1088+
),
10861089
"build_script_proc_macro_deps": _relative_label_list(
10871090
doc = "A list of labels to add to a crate's `cargo_build_script::proc_macro_deps` attribute.",
10881091
),

crate_universe/private/crate.bzl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ def _annotation(
9393
build_script_data_glob = None,
9494
build_script_deps = None,
9595
build_script_env = None,
96+
build_script_link_deps = None,
9697
build_script_proc_macro_deps = None,
9798
build_script_rundir = None,
9899
build_script_rustc_env = None,
@@ -135,6 +136,7 @@ def _annotation(
135136
build_script_deps (list, optional): A list of labels to add to a crate's `cargo_build_script::deps` attribute.
136137
build_script_env (dict, optional): Additional environment variables to set on a crate's
137138
`cargo_build_script::env` attribute.
139+
build_script_link_deps: A list of labels to add to a crate's `cargo_build_script::link_deps` attribute.
138140
build_script_proc_macro_deps (list, optional): A list of labels to add to a crate's
139141
`cargo_build_script::proc_macro_deps` attribute.
140142
build_script_rundir (str, optional): An override for the build script's rundir attribute.
@@ -196,6 +198,7 @@ def _annotation(
196198
build_script_data_glob = build_script_data_glob,
197199
build_script_deps = _stringify_list(build_script_deps),
198200
build_script_env = build_script_env,
201+
build_script_link_deps = build_script_link_deps,
199202
build_script_proc_macro_deps = _stringify_list(build_script_proc_macro_deps),
200203
build_script_rundir = build_script_rundir,
201204
build_script_rustc_env = build_script_rustc_env,

crate_universe/src/config.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,10 @@ pub(crate) struct CrateAnnotations {
281281
/// [deps](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-deps) attribute.
282282
pub(crate) build_script_deps: Option<Select<BTreeSet<Label>>>,
283283

284+
/// Additional dependencies to pass to a build script's
285+
/// [link_deps](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-link_deps) attribute.
286+
pub(crate) build_script_link_deps: Option<Select<BTreeSet<Label>>>,
287+
284288
/// Additional data to pass to a build script's
285289
/// [proc_macro_deps](https://bazelbuild.github.io/rules_rust/cargo.html#cargo_build_script-proc_macro_deps) attribute.
286290
pub(crate) build_script_proc_macro_deps: Option<Select<BTreeSet<Label>>>,
@@ -404,6 +408,7 @@ impl Add for CrateAnnotations {
404408
rustc_env_files: select_merge(self.rustc_env_files, rhs.rustc_env_files),
405409
rustc_flags: select_merge(self.rustc_flags, rhs.rustc_flags),
406410
build_script_deps: select_merge(self.build_script_deps, rhs.build_script_deps),
411+
build_script_link_deps: select_merge(self.build_script_link_deps, rhs.build_script_link_deps),
407412
build_script_proc_macro_deps: select_merge(self.build_script_proc_macro_deps, rhs.build_script_proc_macro_deps),
408413
build_script_compile_data: select_merge(self.build_script_compile_data, rhs.build_script_compile_data),
409414
build_script_data: select_merge(self.build_script_data, rhs.build_script_data),

crate_universe/src/context/crate_context.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,12 @@ impl CrateContext {
618618
attrs.extra_deps = Select::merge(attrs.extra_deps.clone(), extra.clone());
619619
}
620620

621+
//Link Deps
622+
if let Some(extra) = &crate_extra.build_script_link_deps {
623+
attrs.extra_link_deps =
624+
Select::merge(attrs.extra_link_deps.clone(), extra.clone())
625+
}
626+
621627
// Proc macro deps
622628
if let Some(extra) = &crate_extra.build_script_proc_macro_deps {
623629
attrs.extra_proc_macro_deps =

crate_universe/src/lockfile.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ mod test {
290290
);
291291

292292
assert_eq!(
293-
Digest("1b234facd16c77da17df02dc1bad7bcd08154883d27c04fc35aadb36b3c305a6".to_owned()),
293+
Digest("2c4ee31fbefac161d2f3c6cae7fb8995c6311e292386a0500ac84e2586589dae".to_owned()),
294294
digest,
295295
);
296296
}

examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_none.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"checksum": "07feae63b62c36dfcee6215163c2da995f5b8a3a4086cbaedadc0edf9463fc2f",
2+
"checksum": "c2498f19defd6d3a2461a4f13fc911297131c751189a07bcb6f50ec50bbb5c2d",
33
"crates": {
44
"direct-cargo-bazel-deps 0.0.1": {
55
"name": "direct-cargo-bazel-deps",

examples/crate_universe/alias_rule/cargo-bazel-lock_global_alias_annotation_opt.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"checksum": "9178d0ef0fe03c0b7b5b1ce979b0aa90433f33d0aee48da3a99a22926ccd0d0c",
2+
"checksum": "de69dd9816441d185331c72ec4688207925f1b226d5bd088b24c9275237fad28",
33
"crates": {
44
"direct-cargo-bazel-deps 0.0.1": {
55
"name": "direct-cargo-bazel-deps",

examples/crate_universe/alias_rule/cargo-bazel-lock_global_custom_annotation_none.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"checksum": "77603e5382a2c6122f03edee856500632417d73756a3d24f8c9080f2f7a6ab49",
2+
"checksum": "f1d35c24a12de8768e9eecd38950effecf870637e05d227f4924e6150a92d265",
33
"crates": {
44
"direct-cargo-bazel-deps 0.0.1": {
55
"name": "direct-cargo-bazel-deps",

examples/crate_universe/alias_rule/cargo-bazel-lock_global_dbg_annotation_fastbuild.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"checksum": "e579ea2e2b66d6f7e33113955b0b9e9b5b582a41e6194c14b0ede4b49ca3c0ce",
2+
"checksum": "f7b1c20279b69f092d077064059fa660f8bf45d0ccdad7326bbba1ad30c08b5f",
33
"crates": {
44
"direct-cargo-bazel-deps 0.0.1": {
55
"name": "direct-cargo-bazel-deps",

examples/crate_universe/alias_rule/cargo-bazel-lock_global_opt_annotation_alias.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"checksum": "3f48b251668fbd406111656111a51c9f1504236674ca3ae7d77767b49d6c2fc2",
2+
"checksum": "be6e10e57d0876aa9f6fba965fca771a5891561dd2a04f74029d5d8ae057a987",
33
"crates": {
44
"direct-cargo-bazel-deps 0.0.1": {
55
"name": "direct-cargo-bazel-deps",

0 commit comments

Comments
 (0)