diff --git a/android/filegroup.go b/android/filegroup.go index 278d46d07..38de8558f 100644 --- a/android/filegroup.go +++ b/android/filegroup.go @@ -118,6 +118,7 @@ func (fg *fileGroup) ConvertWithBp2build(ctx TopDownMutatorContext) { // If the module has a mixed bag of AIDL and non-AIDL files, split the filegroup manually // and then convert if fg.ShouldConvertToAidlLibrary(ctx) { + tags := []string{"apex_available=//apex_available:anyapex"} attrs := &bazelAidlLibraryAttributes{ Srcs: srcs, Strip_import_prefix: fg.properties.Path, @@ -128,17 +129,25 @@ func (fg *fileGroup) ConvertWithBp2build(ctx TopDownMutatorContext) { Bzl_load_location: "//build/bazel/rules/aidl:library.bzl", } - ctx.CreateBazelTargetModule(props, CommonAttributes{Name: fg.Name()}, attrs) + ctx.CreateBazelTargetModule( + props, + CommonAttributes{ + Name: fg.Name(), + Tags: bazel.MakeStringListAttribute(tags), + }, + attrs) } else { if fg.ShouldConvertToProtoLibrary(ctx) { - // TODO(b/246997908): we can remove this tag if we could figure out a - // solution for this bug. attrs := &ProtoAttrs{ Srcs: srcs, Strip_import_prefix: fg.properties.Path, } - tags := []string{"manual"} + tags := []string{ + "apex_available=//apex_available:anyapex", + // TODO(b/246997908): we can remove this tag if we could figure out a solution for this bug. + "manual", + } ctx.CreateBazelTargetModule( bazel.BazelTargetModuleProperties{Rule_class: "proto_library"}, CommonAttributes{ diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go index 48e93cd56..16d8f6e5e 100644 --- a/bp2build/cc_library_conversion_test.go +++ b/bp2build/cc_library_conversion_test.go @@ -2425,7 +2425,10 @@ cc_library { "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTargetNoRestrictions("proto_library", "a_fg_proto_bp2build_converted", AttrNameToString{ "srcs": `["a_fg.proto"]`, - "tags": `["manual"]`, + "tags": `[ + "apex_available=//apex_available:anyapex", + "manual", + ]`, }), MakeBazelTargetNoRestrictions("filegroup", "a_fg_proto", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), @@ -2464,7 +2467,10 @@ cc_library { "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTargetNoRestrictions("proto_library", "a_fg_proto_bp2build_converted", AttrNameToString{ "srcs": `["a_fg.proto"]`, - "tags": `["manual"]`, + "tags": `[ + "apex_available=//apex_available:anyapex", + "manual", + ]`, }), MakeBazelTargetNoRestrictions("filegroup", "a_fg_proto", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), @@ -3322,6 +3328,7 @@ cc_library { MakeBazelTargetNoRestrictions("aidl_library", "A_aidl", AttrNameToString{ "srcs": `["aidl/A.aidl"]`, "strip_import_prefix": `"aidl"`, + "tags": `["apex_available=//apex_available:anyapex"]`, }), MakeBazelTarget("aidl_library", "foo_aidl_library", AttrNameToString{ "srcs": `["B.aidl"]`, diff --git a/bp2build/filegroup_conversion_test.go b/bp2build/filegroup_conversion_test.go index e978fb319..7ce559d9b 100644 --- a/bp2build/filegroup_conversion_test.go +++ b/bp2build/filegroup_conversion_test.go @@ -74,6 +74,7 @@ func TestFilegroupWithAidlSrcs(t *testing.T) { expectedBazelAttrs: AttrNameToString{ "srcs": `["aidl/foo.aidl"]`, "strip_import_prefix": `"aidl"`, + "tags": `["apex_available=//apex_available:anyapex"]`, }, }, { @@ -85,18 +86,21 @@ func TestFilegroupWithAidlSrcs(t *testing.T) { }`, expectedBazelAttrs: AttrNameToString{ "srcs": `["aidl/foo.aidl"]`, + "tags": `["apex_available=//apex_available:anyapex"]`, }, }, } for _, test := range testcases { - expectedBazelTargets := []string{ - MakeBazelTargetNoRestrictions("aidl_library", "foo", test.expectedBazelAttrs), - } - runFilegroupTestCase(t, Bp2buildTestCase{ - Description: test.name, - Blueprint: test.bp, - ExpectedBazelTargets: expectedBazelTargets, + t.Run(test.name, func(t *testing.T) { + expectedBazelTargets := []string{ + MakeBazelTargetNoRestrictions("aidl_library", "foo", test.expectedBazelAttrs), + } + runFilegroupTestCase(t, Bp2buildTestCase{ + Description: test.name, + Blueprint: test.bp, + ExpectedBazelTargets: expectedBazelTargets, + }) }) } } @@ -136,7 +140,11 @@ filegroup { MakeBazelTargetNoRestrictions("proto_library", "foo_bp2build_converted", AttrNameToString{ "srcs": `["proto/foo.proto"]`, "strip_import_prefix": `"proto"`, - "tags": `["manual"]`}), + "tags": `[ + "apex_available=//apex_available:anyapex", + "manual", + ]`, + }), MakeBazelTargetNoRestrictions("filegroup", "foo", AttrNameToString{ "srcs": `["proto/foo.proto"]`}), }}) diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go index e3c485766..69d0db91c 100644 --- a/bp2build/java_library_conversion_test.go +++ b/bp2build/java_library_conversion_test.go @@ -493,6 +493,7 @@ java_library { "a.aidl", "b.aidl", ]`, + "tags": `["apex_available=//apex_available:anyapex"]`, }), MakeBazelTarget("java_aidl_library", "example_lib_java_aidl_library", AttrNameToString{ "deps": `[":aidl_files"]`, diff --git a/bp2build/testing.go b/bp2build/testing.go index ee2ab0872..856b6eed9 100644 --- a/bp2build/testing.go +++ b/bp2build/testing.go @@ -228,6 +228,7 @@ type BazelTestResult struct { // // If ignoreUnexpected=true then it will ignore directories for which there are no expected targets. func (b BazelTestResult) CompareAllBazelTargets(t *testing.T, description string, expectedTargets map[string][]string, ignoreUnexpected bool) { + t.Helper() actualTargets := b.buildFileToTargets // Generate the sorted set of directories to check. diff --git a/cc/bp2build.go b/cc/bp2build.go index 6951fc3a4..ba6dae384 100644 --- a/cc/bp2build.go +++ b/cc/bp2build.go @@ -907,6 +907,9 @@ func bp2buildCcAidlLibrary( return false }) + apexAvailableTags := android.ApexAvailableTags(ctx.Module()) + sdkAttrs := bp2BuildParseSdkAttributes(m) + if !aidlSrcs.IsEmpty() { aidlLibName := m.Name() + "_aidl_library" ctx.CreateBazelTargetModule( @@ -917,6 +920,7 @@ func bp2buildCcAidlLibrary( android.CommonAttributes{Name: aidlLibName}, &aidlLibraryAttributes{ Srcs: aidlSrcs, + Tags: apexAvailableTags, }, ) aidlLibs.Add(&bazel.LabelAttribute{Value: &bazel.Label{Label: ":" + aidlLibName}}) @@ -941,6 +945,8 @@ func bp2buildCcAidlLibrary( Deps: aidlLibs, Implementation_deps: *implementationDeps, Implementation_dynamic_deps: *implementationDynamicDeps, + Tags: apexAvailableTags, + sdkAttributes: sdkAttrs, }, ) label := &bazel.LabelAttribute{ diff --git a/cc/library.go b/cc/library.go index 31b76cdf8..a9ada97d9 100644 --- a/cc/library.go +++ b/cc/library.go @@ -264,12 +264,15 @@ type bazelCcLibraryAttributes struct { type aidlLibraryAttributes struct { Srcs bazel.LabelListAttribute Include_dir *string + Tags bazel.StringListAttribute } type ccAidlLibraryAttributes struct { Deps bazel.LabelListAttribute Implementation_deps bazel.LabelListAttribute Implementation_dynamic_deps bazel.LabelListAttribute + Tags bazel.StringListAttribute + sdkAttributes } type stripAttributes struct { diff --git a/java/java.go b/java/java.go index 2a7e4e1bf..370781599 100644 --- a/java/java.go +++ b/java/java.go @@ -2625,10 +2625,12 @@ type eventLogTagsAttributes struct { type aidlLibraryAttributes struct { Srcs bazel.LabelListAttribute + Tags bazel.StringListAttribute } type javaAidlLibraryAttributes struct { Deps bazel.LabelListAttribute + Tags bazel.StringListAttribute } // bp2BuildJavaInfo has information needed for the conversion of java*_modules @@ -2700,6 +2702,8 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) return android.IsConvertedToAidlLibrary(ctx, src.OriginalModuleName) }) + apexAvailableTags := android.ApexAvailableTags(ctx.Module()) + if !aidlSrcs.IsEmpty() { aidlLibName := m.Name() + "_aidl_library" ctx.CreateBazelTargetModule( @@ -2710,6 +2714,7 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) android.CommonAttributes{Name: aidlLibName}, &aidlLibraryAttributes{ Srcs: aidlSrcs, + Tags: apexAvailableTags, }, ) aidlLibs.Add(&bazel.LabelAttribute{Value: &bazel.Label{Label: ":" + aidlLibName}}) @@ -2724,6 +2729,7 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) android.CommonAttributes{Name: javaAidlLibName}, &javaAidlLibraryAttributes{ Deps: aidlLibs, + Tags: apexAvailableTags, }, )