Loading android/filegroup.go +12 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ type bazelFilegroupAttributes struct { type bazelAidlLibraryAttributes struct { Srcs bazel.LabelListAttribute Strip_import_prefix *string Deps bazel.LabelListAttribute } // api srcs can be contained in filegroups. Loading Loading @@ -120,9 +121,12 @@ func (fg *fileGroup) ConvertWithBp2build(ctx TopDownMutatorContext) { // and then convert if fg.ShouldConvertToAidlLibrary(ctx) { tags := []string{"apex_available=//apex_available:anyapex"} deps := bazel.MakeLabelListAttribute(BazelLabelForModuleDeps(ctx, fg.properties.Aidl.Deps)) attrs := &bazelAidlLibraryAttributes{ Srcs: srcs, Strip_import_prefix: fg.properties.Path, Deps: deps, } props := bazel.BazelTargetModuleProperties{ Loading Loading @@ -199,6 +203,14 @@ type fileGroupProperties struct { // Create a make variable with the specified name that contains the list of files in the // filegroup, relative to the root of the source tree. Export_to_make_var *string // aidl is explicitly provided for implicit aidl dependencies // TODO(b/278298615): aidl prop is a no-op in Soong and is an escape hatch // to include implicit aidl dependencies for bazel migration compatibility Aidl struct { // List of aidl files or filegroup depended on by srcs Deps []string `android:"path"` } } type fileGroup struct { Loading bp2build/filegroup_conversion_test.go +36 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,42 @@ func TestFilegroupWithAidlSrcs(t *testing.T) { } } func TestFilegroupWithAidlDeps(t *testing.T) { bp := ` filegroup { name: "bar", srcs: ["bar.aidl"], } filegroup { name: "foo", srcs: ["aidl/foo.aidl"], path: "aidl", aidl: { deps: [":bar"], } }` t.Run("filegroup with aidl deps", func(t *testing.T) { expectedBazelTargets := []string{ MakeBazelTargetNoRestrictions("aidl_library", "bar", AttrNameToString{ "srcs": `["bar.aidl"]`, "tags": `["apex_available=//apex_available:anyapex"]`, }), MakeBazelTargetNoRestrictions("aidl_library", "foo", AttrNameToString{ "srcs": `["aidl/foo.aidl"]`, "strip_import_prefix": `"aidl"`, "deps": `[":bar"]`, "tags": `["apex_available=//apex_available:anyapex"]`, }), } runFilegroupTestCase(t, Bp2buildTestCase{ Description: "filegroup with aidl deps", Blueprint: bp, ExpectedBazelTargets: expectedBazelTargets, }) }) } func TestFilegroupWithAidlAndNonAidlSrcs(t *testing.T) { runFilegroupTestCase(t, Bp2buildTestCase{ Description: "filegroup with aidl and non-aidl srcs", Loading Loading
android/filegroup.go +12 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,7 @@ type bazelFilegroupAttributes struct { type bazelAidlLibraryAttributes struct { Srcs bazel.LabelListAttribute Strip_import_prefix *string Deps bazel.LabelListAttribute } // api srcs can be contained in filegroups. Loading Loading @@ -120,9 +121,12 @@ func (fg *fileGroup) ConvertWithBp2build(ctx TopDownMutatorContext) { // and then convert if fg.ShouldConvertToAidlLibrary(ctx) { tags := []string{"apex_available=//apex_available:anyapex"} deps := bazel.MakeLabelListAttribute(BazelLabelForModuleDeps(ctx, fg.properties.Aidl.Deps)) attrs := &bazelAidlLibraryAttributes{ Srcs: srcs, Strip_import_prefix: fg.properties.Path, Deps: deps, } props := bazel.BazelTargetModuleProperties{ Loading Loading @@ -199,6 +203,14 @@ type fileGroupProperties struct { // Create a make variable with the specified name that contains the list of files in the // filegroup, relative to the root of the source tree. Export_to_make_var *string // aidl is explicitly provided for implicit aidl dependencies // TODO(b/278298615): aidl prop is a no-op in Soong and is an escape hatch // to include implicit aidl dependencies for bazel migration compatibility Aidl struct { // List of aidl files or filegroup depended on by srcs Deps []string `android:"path"` } } type fileGroup struct { Loading
bp2build/filegroup_conversion_test.go +36 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,42 @@ func TestFilegroupWithAidlSrcs(t *testing.T) { } } func TestFilegroupWithAidlDeps(t *testing.T) { bp := ` filegroup { name: "bar", srcs: ["bar.aidl"], } filegroup { name: "foo", srcs: ["aidl/foo.aidl"], path: "aidl", aidl: { deps: [":bar"], } }` t.Run("filegroup with aidl deps", func(t *testing.T) { expectedBazelTargets := []string{ MakeBazelTargetNoRestrictions("aidl_library", "bar", AttrNameToString{ "srcs": `["bar.aidl"]`, "tags": `["apex_available=//apex_available:anyapex"]`, }), MakeBazelTargetNoRestrictions("aidl_library", "foo", AttrNameToString{ "srcs": `["aidl/foo.aidl"]`, "strip_import_prefix": `"aidl"`, "deps": `[":bar"]`, "tags": `["apex_available=//apex_available:anyapex"]`, }), } runFilegroupTestCase(t, Bp2buildTestCase{ Description: "filegroup with aidl deps", Blueprint: bp, ExpectedBazelTargets: expectedBazelTargets, }) }) } func TestFilegroupWithAidlAndNonAidlSrcs(t *testing.T) { runFilegroupTestCase(t, Bp2buildTestCase{ Description: "filegroup with aidl and non-aidl srcs", Loading