diff options
Diffstat (limited to 'android/proto.go')
-rw-r--r-- | android/proto.go | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/android/proto.go b/android/proto.go index b9365a70f..4cd73e3a8 100644 --- a/android/proto.go +++ b/android/proto.go @@ -330,7 +330,8 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz Label: l, }) } - protoLibrariesInIncludeDir := createProtoLibraryTargetsForIncludeDirs(ctx, protoIncludeDirs) + // Partitioning by packages can create dupes of protoIncludeDirs, so dedupe it first. + protoLibrariesInIncludeDir := createProtoLibraryTargetsForIncludeDirs(ctx, SortedUniqueStrings(protoIncludeDirs)) transitiveProtoLibraries.Append(protoLibrariesInIncludeDir) } @@ -401,7 +402,13 @@ func createProtoLibraryTargetsForIncludeDirs(ctx Bp2buildMutatorContext, include if rel != "." { attrs.Import_prefix = proptools.StringPtr(rel) } - ctx.CreateBazelTargetModule( + + // If a specific directory is listed in proto.include_dirs of two separate modules (one host-specific and another device-specific), + // we do not want to create the proto_library with target_compatible_with of the first visited of these two modules + // As a workarounds, delete `target_compatible_with` + alwaysEnabled := bazel.BoolAttribute{} + alwaysEnabled.Value = proptools.BoolPtr(true) + ctx.CreateBazelTargetModuleWithRestrictions( bazel.BazelTargetModuleProperties{Rule_class: "proto_library"}, CommonAttributes{ Name: label, @@ -411,6 +418,7 @@ func createProtoLibraryTargetsForIncludeDirs(ctx Bp2buildMutatorContext, include Tags: bazel.MakeStringListAttribute([]string{"manual"}), }, &attrs, + alwaysEnabled, ) } } |