Fix possible orphaned proto_library targets

This is a fix for aosp/2693190 that handled .proto files that end up in
different bazel packages. It did it by creating proto_library targets in
the correct bazel package.

Changing the granularity causes issues if the the new proto_library in
the subpackage imports a .proto file from a parent package or a
different package. e.g.
```
tmp
├── foo.proto
└── subdir/import_foo.proto # contains an `import "foo.proto"`
└── subdir/Android.bp # package boundary
├── Android.bp # contains a cc_library with foo.proto and
# subdir/import_foo.proto
```

At ToT, the ProtoInfo we provide to CcProtoGen is correct, but the
proto_library in subdir/BUILD will not compile because it does not have
a dep on the proto_library in ./BUILD

This CL creates a workaround by adding `manual` to the proto_library
targets. This CL is based on the assumption that the buildable unit in
bp2build is cc_library_*, and not proto_library necessarily (atleast
till we do a manual/automated cleanup)

Test: Created an integration test in build/bazel
Test: go test ./bp2build
Bug: 292583584
Bug: 246997908
Change-Id: I73120be2411967cb144f37ed4417f76ecf1a6ffa
This commit is contained in:
Spandan Das
2023-08-14 16:52:24 +00:00
parent 95e8fe9e1e
commit 215adb43d3
2 changed files with 13 additions and 0 deletions

View File

@@ -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)