diff --git a/rust/private/rustc.bzl b/rust/private/rustc.bzl index df54795d95..617c0227a6 100644 --- a/rust/private/rustc.bzl +++ b/rust/private/rustc.bzl @@ -147,6 +147,9 @@ def collect_deps(label, deps, proc_macro_deps, aliases, are_linkstamps_supported cc_info = _get_cc_info(dep) dep_build_info = _get_build_info(dep) + if cc_info and are_linkstamps_supported: + linkstamps.append(cc_info.linking_context.linkstamps()) + if crate_info: # This dependency is a rust_library @@ -174,8 +177,6 @@ def collect_deps(label, deps, proc_macro_deps, aliases, are_linkstamps_supported libs = [get_preferred_artifact(lib) for li in linker_inputs for lib in li.libraries] transitive_noncrate_libs.append(depset(libs)) transitive_noncrates.append(cc_info.linking_context.linker_inputs) - if are_linkstamps_supported: - linkstamps.append(cc_info.linking_context.linkstamps()) elif dep_build_info: if build_info: fail("Several deps are providing build information, " + diff --git a/test/unit/linkstamps/linkstamps_test.bzl b/test/unit/linkstamps/linkstamps_test.bzl index a8d6a7fb78..d7423f3b6d 100644 --- a/test/unit/linkstamps/linkstamps_test.bzl +++ b/test/unit/linkstamps/linkstamps_test.bzl @@ -2,7 +2,7 @@ load("@bazel_skylib//lib:unittest.bzl", "analysistest", "asserts") load("@rules_cc//cc:defs.bzl", "cc_library") -load("//rust:defs.bzl", "rust_binary", "rust_test") +load("//rust:defs.bzl", "rust_binary", "rust_library", "rust_test") load("//test/unit:common.bzl", "assert_action_mnemonic") def _is_running_on_linux(ctx): @@ -64,38 +64,43 @@ def _linkstamps_test(): }), ) - cc_library( - name = "cc_lib_with_linkstamp_transitively", - deps = [":cc_lib_with_linkstamp"], - ) - rust_binary( name = "some_rust_binary", srcs = ["foo.rs"], deps = [":cc_lib_with_linkstamp"], ) - rust_binary( - name = "some_rust_binary_with_multiple_paths_to_a_linkstamp", - srcs = ["foo.rs"], - deps = [":cc_lib_with_linkstamp", ":cc_lib_with_linkstamp_transitively"], + supports_linkstamps_test( + name = "rust_binary_supports_linkstamps_test", + target_under_test = ":some_rust_binary", ) - rust_test( - name = "some_rust_test1", + rust_library( + name = "some_rust_library_with_linkstamp_transitively", srcs = ["foo.rs"], deps = [":cc_lib_with_linkstamp"], ) - rust_test( - name = "some_rust_test2", + rust_binary( + name = "some_rust_binary_with_linkstamp_transitively", srcs = ["foo.rs"], - deps = [":cc_lib_with_linkstamp"], + deps = [":some_rust_library_with_linkstamp_transitively"], ) supports_linkstamps_test( - name = "rust_binary_supports_linkstamps_test", - target_under_test = ":some_rust_binary", + name = "rust_binary_with_linkstamp_transitively", + target_under_test = ":some_rust_binary_with_linkstamp_transitively", + ) + + cc_library( + name = "cc_lib_with_linkstamp_transitively", + deps = [":cc_lib_with_linkstamp"], + ) + + rust_binary( + name = "some_rust_binary_with_multiple_paths_to_a_linkstamp", + srcs = ["foo.rs"], + deps = [":cc_lib_with_linkstamp", ":cc_lib_with_linkstamp_transitively"], ) supports_linkstamps_test( @@ -103,11 +108,23 @@ def _linkstamps_test(): target_under_test = ":some_rust_binary_with_multiple_paths_to_a_linkstamp", ) + rust_test( + name = "some_rust_test1", + srcs = ["foo.rs"], + deps = [":cc_lib_with_linkstamp"], + ) + supports_linkstamps_test( name = "rust_test_supports_linkstamps_test1", target_under_test = ":some_rust_test1", ) + rust_test( + name = "some_rust_test2", + srcs = ["foo.rs"], + deps = [":cc_lib_with_linkstamp"], + ) + supports_linkstamps_test( name = "rust_test_supports_linkstamps_test2", target_under_test = ":some_rust_test2",