diff --git a/android/proto.go b/android/proto.go index 49b3733d2..b21efd640 100644 --- a/android/proto.go +++ b/android/proto.go @@ -283,6 +283,15 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz } } + // TODO - b/246997908: Handle potential orphaned proto_library targets + // To create proto_library targets in the same package, we split the .proto files + // This means that if a proto_library in a subpackage imports another proto_library from the parent package + // (or a different subpackage), it will not find it. + // The CcProtoGen action itself runs fine because we construct the correct ProtoInfo, + // but the FileDescriptorSet of each proto_library might not be compile-able + if pkg != ctx.ModuleDir() { + tags.Append(bazel.MakeStringListAttribute([]string{"manual"})) + } ctx.CreateBazelTargetModule( bazel.BazelTargetModuleProperties{Rule_class: "proto_library"}, CommonAttributes{Name: name, Dir: proptools.StringPtr(pkg), Tags: tags}, diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go index e5ae73e48..622ec4ab0 100644 --- a/bp2build/cc_library_conversion_test.go +++ b/bp2build/cc_library_conversion_test.go @@ -4967,6 +4967,7 @@ cc_library_static { tc.ExpectedBazelTargets = []string{ MakeBazelTarget("proto_library", "foo_proto", AttrNameToString{ "srcs": `["//bar:bar.proto"]`, + "tags": `["manual"]`, }), } runCcLibraryTestCase(t, tc) @@ -4976,6 +4977,7 @@ cc_library_static { tc.ExpectedBazelTargets = []string{ MakeBazelTarget("proto_library", "foo_proto", AttrNameToString{ "srcs": `["//baz/subbaz:baz.proto"]`, + "tags": `["manual"]`, }), } runCcLibraryTestCase(t, tc) @@ -5035,6 +5037,7 @@ cc_library_static { "srcs": `["//bar:bar.proto"]`, "strip_import_prefix": `""`, "import_prefix": `"bar"`, + "tags": `["manual"]`, }), } runCcLibraryTestCase(t, tc) @@ -5046,6 +5049,7 @@ cc_library_static { "srcs": `["//baz/subbaz:baz.proto"]`, "strip_import_prefix": `""`, "import_prefix": `"baz/subbaz"`, + "tags": `["manual"]`, }), } runCcLibraryTestCase(t, tc)