Loading android/bazel.go +5 −2 Original line number Diff line number Diff line Loading @@ -32,10 +32,13 @@ const ( Bp2BuildTopLevel = "." ) // Bp2buildAidlLibrary describes a filegroup module that are converted to aidl_library type Bp2buildAidlLibrary interface { // FileGroupAsLibrary describes a filegroup module that is converted to some library // such as aidl_library or proto_library. type FileGroupAsLibrary interface { ShouldConvertToAidlLibrary(ctx BazelConversionPathContext) bool ShouldConvertToProtoLibrary(ctx BazelConversionPathContext) bool GetAidlLibraryLabel(ctx BazelConversionPathContext) string GetProtoLibraryLabel(ctx BazelConversionPathContext) string } type BazelConversionStatus struct { Loading android/filegroup.go +45 −6 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ var PrepareForTestWithFilegroup = FixtureRegisterWithContext(func(ctx Registrati ctx.RegisterModuleType("filegroup", FileGroupFactory) }) var convertedProtoLibrarySuffix = "_bp2build_converted" // IsFilegroup checks that a module is a filegroup type func IsFilegroup(ctx bazel.OtherModuleContext, m blueprint.Module) bool { return ctx.OtherModuleType(m) == "filegroup" Loading Loading @@ -117,6 +119,20 @@ func (fg *fileGroup) ConvertWithBp2build(ctx TopDownMutatorContext) { ctx.CreateBazelTargetModule(props, CommonAttributes{Name: fg.Name()}, attrs) } else { if fg.ShouldConvertToProtoLibrary(ctx) { attrs := &ProtoAttrs{ Srcs: srcs, Strip_import_prefix: fg.properties.Path, } ctx.CreateBazelTargetModule( bazel.BazelTargetModuleProperties{Rule_class: "proto_library"}, CommonAttributes{Name: fg.Name() + convertedProtoLibrarySuffix}, attrs) } // TODO(b/242847534): Still convert to a filegroup because other unconverted // modules may depend on the filegroup attrs := &bazelFilegroupAttributes{ Srcs: srcs, } Loading Loading @@ -150,14 +166,14 @@ type fileGroupProperties struct { type fileGroup struct { ModuleBase BazelModuleBase Bp2buildAidlLibrary FileGroupAsLibrary properties fileGroupProperties srcs Paths } var _ MixedBuildBuildable = (*fileGroup)(nil) var _ SourceFileProducer = (*fileGroup)(nil) var _ Bp2buildAidlLibrary = (*fileGroup)(nil) var _ FileGroupAsLibrary = (*fileGroup)(nil) // filegroup contains a list of files that are referenced by other modules // properties (such as "srcs") using the syntax ":<name>". filegroup are Loading Loading @@ -243,11 +259,19 @@ func (fg *fileGroup) ProcessBazelQueryResponse(ctx ModuleContext) { } func (fg *fileGroup) ShouldConvertToAidlLibrary(ctx BazelConversionPathContext) bool { return fg.shouldConvertToLibrary(ctx, ".aidl") } func (fg *fileGroup) ShouldConvertToProtoLibrary(ctx BazelConversionPathContext) bool { return fg.shouldConvertToLibrary(ctx, ".proto") } func (fg *fileGroup) shouldConvertToLibrary(ctx BazelConversionPathContext, suffix string) bool { if len(fg.properties.Srcs) == 0 || !fg.ShouldConvertWithBp2build(ctx) { return false } for _, src := range fg.properties.Srcs { if !strings.HasSuffix(src, ".aidl") { if !strings.HasSuffix(src, suffix) { return false } } Loading @@ -255,6 +279,14 @@ func (fg *fileGroup) ShouldConvertToAidlLibrary(ctx BazelConversionPathContext) } func (fg *fileGroup) GetAidlLibraryLabel(ctx BazelConversionPathContext) string { return fg.getFileGroupAsLibraryLabel(ctx) } func (fg *fileGroup) GetProtoLibraryLabel(ctx BazelConversionPathContext) string { return fg.getFileGroupAsLibraryLabel(ctx) + convertedProtoLibrarySuffix } func (fg *fileGroup) getFileGroupAsLibraryLabel(ctx BazelConversionPathContext) string { if ctx.OtherModuleDir(fg.module) == ctx.ModuleDir() { return ":" + fg.Name() } else { Loading @@ -265,12 +297,19 @@ func (fg *fileGroup) GetAidlLibraryLabel(ctx BazelConversionPathContext) string // Given a name in srcs prop, check to see if the name references a filegroup // and the filegroup is converted to aidl_library func IsConvertedToAidlLibrary(ctx BazelConversionPathContext, name string) bool { if fg, ok := ToFileGroupAsLibrary(ctx, name); ok { return fg.ShouldConvertToAidlLibrary(ctx) } return false } func ToFileGroupAsLibrary(ctx BazelConversionPathContext, name string) (FileGroupAsLibrary, bool) { if module, ok := ctx.ModuleFromName(name); ok { if IsFilegroup(ctx, module) { if fg, ok := module.(Bp2buildAidlLibrary); ok { return fg.ShouldConvertToAidlLibrary(ctx) if fg, ok := module.(FileGroupAsLibrary); ok { return fg, true } } } return false return nil, false } android/proto.go +57 −30 Original line number Diff line number Diff line Loading @@ -157,9 +157,10 @@ func ProtoRule(rule *RuleBuilder, protoFile Path, flags ProtoFlags, deps Paths, type Bp2buildProtoInfo struct { Type *string Name string Proto_libs bazel.LabelList } type protoAttrs struct { type ProtoAttrs struct { Srcs bazel.LabelListAttribute Strip_import_prefix *string Deps bazel.LabelListAttribute Loading @@ -179,9 +180,28 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz return info, false } var protoLibraries bazel.LabelList var directProtoSrcs bazel.LabelList // For filegroups that should be converted to proto_library just collect the // labels of converted proto_library targets. for _, protoSrc := range srcs.Value.Includes { src := protoSrc.OriginalModuleName if fg, ok := ToFileGroupAsLibrary(ctx, src); ok && fg.ShouldConvertToProtoLibrary(ctx) { protoLibraries.Add(&bazel.Label{ Label: fg.GetProtoLibraryLabel(ctx), }) } else { directProtoSrcs.Add(&protoSrc) } } info.Name = m.Name() + "_proto" attrs := protoAttrs{ Srcs: srcs, if len(directProtoSrcs.Includes) > 0 { attrs := ProtoAttrs{ Srcs: bazel.MakeLabelListAttribute(directProtoSrcs), } for axis, configToProps := range m.GetArchVariantProperties(ctx, &ProtoProperties{}) { Loading Loading @@ -218,5 +238,12 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz CommonAttributes{Name: info.Name}, &attrs) protoLibraries.Add(&bazel.Label{ Label: ":" + info.Name, }) } info.Proto_libs = protoLibraries return info, true } bp2build/cc_library_conversion_test.go +124 −0 Original line number Diff line number Diff line Loading @@ -2261,6 +2261,130 @@ func TestCcLibraryProtoIncludeDirsUnknown(t *testing.T) { }) } func TestCcLibraryConvertedProtoFilegroups(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: soongCcProtoPreamble + ` filegroup { name: "a_fg_proto", srcs: ["a_fg.proto"], } cc_library { name: "a", srcs: [ ":a_fg_proto", "a.proto", ], proto: { export_proto_headers: true, }, include_build_directory: false, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("proto_library", "a_proto", AttrNameToString{ "srcs": `["a.proto"]`, }), MakeBazelTarget("cc_lite_proto_library", "a_cc_proto_lite", AttrNameToString{ "deps": `[ ":a_fg_proto_bp2build_converted", ":a_proto", ]`, }), MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ "deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTarget("cc_library_shared", "a", AttrNameToString{ "dynamic_deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTargetNoRestrictions("proto_library", "a_fg_proto_bp2build_converted", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), MakeBazelTargetNoRestrictions("filegroup", "a_fg_proto", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), }, }) } func TestCcLibraryConvertedProtoFilegroupsNoProtoFiles(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: soongCcProtoPreamble + ` filegroup { name: "a_fg_proto", srcs: ["a_fg.proto"], } cc_library { name: "a", srcs: [ ":a_fg_proto", ], proto: { export_proto_headers: true, }, include_build_directory: false, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_lite_proto_library", "a_cc_proto_lite", AttrNameToString{ "deps": `[":a_fg_proto_bp2build_converted"]`, }), MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ "deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTarget("cc_library_shared", "a", AttrNameToString{ "dynamic_deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTargetNoRestrictions("proto_library", "a_fg_proto_bp2build_converted", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), MakeBazelTargetNoRestrictions("filegroup", "a_fg_proto", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), }, }) } func TestCcLibraryExternalConvertedProtoFilegroups(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Filesystem: map[string]string{ "path/to/A/Android.bp": ` filegroup { name: "a_fg_proto", srcs: ["a_fg.proto"], }`, }, Blueprint: soongCcProtoPreamble + ` cc_library { name: "a", srcs: [ ":a_fg_proto", "a.proto", ], proto: { export_proto_headers: true, }, include_build_directory: false, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("proto_library", "a_proto", AttrNameToString{ "srcs": `["a.proto"]`, }), MakeBazelTarget("cc_lite_proto_library", "a_cc_proto_lite", AttrNameToString{ "deps": `[ "//path/to/A:a_fg_proto_bp2build_converted", ":a_proto", ]`, }), MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ "deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTarget("cc_library_shared", "a", AttrNameToString{ "dynamic_deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), }, }) } func TestCcLibraryProtoFilegroups(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", Loading bp2build/filegroup_conversion_test.go +42 −2 Original line number Diff line number Diff line Loading @@ -15,10 +15,10 @@ package bp2build import ( "android/soong/android" "fmt" "testing" "android/soong/android" ) func runFilegroupTestCase(t *testing.T, tc Bp2buildTestCase) { Loading Loading @@ -121,3 +121,43 @@ filegroup { ]`}), }}) } func TestFilegroupWithProtoSrcs(t *testing.T) { runFilegroupTestCase(t, Bp2buildTestCase{ Description: "filegroup with proto and non-proto srcs", Filesystem: map[string]string{}, Blueprint: ` filegroup { name: "foo", srcs: ["proto/foo.proto"], path: "proto", }`, ExpectedBazelTargets: []string{ MakeBazelTargetNoRestrictions("proto_library", "foo_bp2build_converted", AttrNameToString{ "srcs": `["proto/foo.proto"]`, "strip_import_prefix": `"proto"`}), MakeBazelTargetNoRestrictions("filegroup", "foo", AttrNameToString{ "srcs": `["proto/foo.proto"]`}), }}) } func TestFilegroupWithProtoAndNonProtoSrcs(t *testing.T) { runFilegroupTestCase(t, Bp2buildTestCase{ Description: "filegroup with proto and non-proto srcs", Filesystem: map[string]string{}, Blueprint: ` filegroup { name: "foo", srcs: [ "foo.proto", "buf.cpp", ], }`, ExpectedBazelTargets: []string{ MakeBazelTargetNoRestrictions("filegroup", "foo", AttrNameToString{ "srcs": `[ "foo.proto", "buf.cpp", ]`}), }}) } Loading
android/bazel.go +5 −2 Original line number Diff line number Diff line Loading @@ -32,10 +32,13 @@ const ( Bp2BuildTopLevel = "." ) // Bp2buildAidlLibrary describes a filegroup module that are converted to aidl_library type Bp2buildAidlLibrary interface { // FileGroupAsLibrary describes a filegroup module that is converted to some library // such as aidl_library or proto_library. type FileGroupAsLibrary interface { ShouldConvertToAidlLibrary(ctx BazelConversionPathContext) bool ShouldConvertToProtoLibrary(ctx BazelConversionPathContext) bool GetAidlLibraryLabel(ctx BazelConversionPathContext) string GetProtoLibraryLabel(ctx BazelConversionPathContext) string } type BazelConversionStatus struct { Loading
android/filegroup.go +45 −6 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ var PrepareForTestWithFilegroup = FixtureRegisterWithContext(func(ctx Registrati ctx.RegisterModuleType("filegroup", FileGroupFactory) }) var convertedProtoLibrarySuffix = "_bp2build_converted" // IsFilegroup checks that a module is a filegroup type func IsFilegroup(ctx bazel.OtherModuleContext, m blueprint.Module) bool { return ctx.OtherModuleType(m) == "filegroup" Loading Loading @@ -117,6 +119,20 @@ func (fg *fileGroup) ConvertWithBp2build(ctx TopDownMutatorContext) { ctx.CreateBazelTargetModule(props, CommonAttributes{Name: fg.Name()}, attrs) } else { if fg.ShouldConvertToProtoLibrary(ctx) { attrs := &ProtoAttrs{ Srcs: srcs, Strip_import_prefix: fg.properties.Path, } ctx.CreateBazelTargetModule( bazel.BazelTargetModuleProperties{Rule_class: "proto_library"}, CommonAttributes{Name: fg.Name() + convertedProtoLibrarySuffix}, attrs) } // TODO(b/242847534): Still convert to a filegroup because other unconverted // modules may depend on the filegroup attrs := &bazelFilegroupAttributes{ Srcs: srcs, } Loading Loading @@ -150,14 +166,14 @@ type fileGroupProperties struct { type fileGroup struct { ModuleBase BazelModuleBase Bp2buildAidlLibrary FileGroupAsLibrary properties fileGroupProperties srcs Paths } var _ MixedBuildBuildable = (*fileGroup)(nil) var _ SourceFileProducer = (*fileGroup)(nil) var _ Bp2buildAidlLibrary = (*fileGroup)(nil) var _ FileGroupAsLibrary = (*fileGroup)(nil) // filegroup contains a list of files that are referenced by other modules // properties (such as "srcs") using the syntax ":<name>". filegroup are Loading Loading @@ -243,11 +259,19 @@ func (fg *fileGroup) ProcessBazelQueryResponse(ctx ModuleContext) { } func (fg *fileGroup) ShouldConvertToAidlLibrary(ctx BazelConversionPathContext) bool { return fg.shouldConvertToLibrary(ctx, ".aidl") } func (fg *fileGroup) ShouldConvertToProtoLibrary(ctx BazelConversionPathContext) bool { return fg.shouldConvertToLibrary(ctx, ".proto") } func (fg *fileGroup) shouldConvertToLibrary(ctx BazelConversionPathContext, suffix string) bool { if len(fg.properties.Srcs) == 0 || !fg.ShouldConvertWithBp2build(ctx) { return false } for _, src := range fg.properties.Srcs { if !strings.HasSuffix(src, ".aidl") { if !strings.HasSuffix(src, suffix) { return false } } Loading @@ -255,6 +279,14 @@ func (fg *fileGroup) ShouldConvertToAidlLibrary(ctx BazelConversionPathContext) } func (fg *fileGroup) GetAidlLibraryLabel(ctx BazelConversionPathContext) string { return fg.getFileGroupAsLibraryLabel(ctx) } func (fg *fileGroup) GetProtoLibraryLabel(ctx BazelConversionPathContext) string { return fg.getFileGroupAsLibraryLabel(ctx) + convertedProtoLibrarySuffix } func (fg *fileGroup) getFileGroupAsLibraryLabel(ctx BazelConversionPathContext) string { if ctx.OtherModuleDir(fg.module) == ctx.ModuleDir() { return ":" + fg.Name() } else { Loading @@ -265,12 +297,19 @@ func (fg *fileGroup) GetAidlLibraryLabel(ctx BazelConversionPathContext) string // Given a name in srcs prop, check to see if the name references a filegroup // and the filegroup is converted to aidl_library func IsConvertedToAidlLibrary(ctx BazelConversionPathContext, name string) bool { if fg, ok := ToFileGroupAsLibrary(ctx, name); ok { return fg.ShouldConvertToAidlLibrary(ctx) } return false } func ToFileGroupAsLibrary(ctx BazelConversionPathContext, name string) (FileGroupAsLibrary, bool) { if module, ok := ctx.ModuleFromName(name); ok { if IsFilegroup(ctx, module) { if fg, ok := module.(Bp2buildAidlLibrary); ok { return fg.ShouldConvertToAidlLibrary(ctx) if fg, ok := module.(FileGroupAsLibrary); ok { return fg, true } } } return false return nil, false }
android/proto.go +57 −30 Original line number Diff line number Diff line Loading @@ -157,9 +157,10 @@ func ProtoRule(rule *RuleBuilder, protoFile Path, flags ProtoFlags, deps Paths, type Bp2buildProtoInfo struct { Type *string Name string Proto_libs bazel.LabelList } type protoAttrs struct { type ProtoAttrs struct { Srcs bazel.LabelListAttribute Strip_import_prefix *string Deps bazel.LabelListAttribute Loading @@ -179,9 +180,28 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz return info, false } var protoLibraries bazel.LabelList var directProtoSrcs bazel.LabelList // For filegroups that should be converted to proto_library just collect the // labels of converted proto_library targets. for _, protoSrc := range srcs.Value.Includes { src := protoSrc.OriginalModuleName if fg, ok := ToFileGroupAsLibrary(ctx, src); ok && fg.ShouldConvertToProtoLibrary(ctx) { protoLibraries.Add(&bazel.Label{ Label: fg.GetProtoLibraryLabel(ctx), }) } else { directProtoSrcs.Add(&protoSrc) } } info.Name = m.Name() + "_proto" attrs := protoAttrs{ Srcs: srcs, if len(directProtoSrcs.Includes) > 0 { attrs := ProtoAttrs{ Srcs: bazel.MakeLabelListAttribute(directProtoSrcs), } for axis, configToProps := range m.GetArchVariantProperties(ctx, &ProtoProperties{}) { Loading Loading @@ -218,5 +238,12 @@ func Bp2buildProtoProperties(ctx Bp2buildMutatorContext, m *ModuleBase, srcs baz CommonAttributes{Name: info.Name}, &attrs) protoLibraries.Add(&bazel.Label{ Label: ":" + info.Name, }) } info.Proto_libs = protoLibraries return info, true }
bp2build/cc_library_conversion_test.go +124 −0 Original line number Diff line number Diff line Loading @@ -2261,6 +2261,130 @@ func TestCcLibraryProtoIncludeDirsUnknown(t *testing.T) { }) } func TestCcLibraryConvertedProtoFilegroups(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: soongCcProtoPreamble + ` filegroup { name: "a_fg_proto", srcs: ["a_fg.proto"], } cc_library { name: "a", srcs: [ ":a_fg_proto", "a.proto", ], proto: { export_proto_headers: true, }, include_build_directory: false, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("proto_library", "a_proto", AttrNameToString{ "srcs": `["a.proto"]`, }), MakeBazelTarget("cc_lite_proto_library", "a_cc_proto_lite", AttrNameToString{ "deps": `[ ":a_fg_proto_bp2build_converted", ":a_proto", ]`, }), MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ "deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTarget("cc_library_shared", "a", AttrNameToString{ "dynamic_deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTargetNoRestrictions("proto_library", "a_fg_proto_bp2build_converted", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), MakeBazelTargetNoRestrictions("filegroup", "a_fg_proto", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), }, }) } func TestCcLibraryConvertedProtoFilegroupsNoProtoFiles(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Blueprint: soongCcProtoPreamble + ` filegroup { name: "a_fg_proto", srcs: ["a_fg.proto"], } cc_library { name: "a", srcs: [ ":a_fg_proto", ], proto: { export_proto_headers: true, }, include_build_directory: false, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_lite_proto_library", "a_cc_proto_lite", AttrNameToString{ "deps": `[":a_fg_proto_bp2build_converted"]`, }), MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ "deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTarget("cc_library_shared", "a", AttrNameToString{ "dynamic_deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTargetNoRestrictions("proto_library", "a_fg_proto_bp2build_converted", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), MakeBazelTargetNoRestrictions("filegroup", "a_fg_proto", AttrNameToString{ "srcs": `["a_fg.proto"]`, }), }, }) } func TestCcLibraryExternalConvertedProtoFilegroups(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Filesystem: map[string]string{ "path/to/A/Android.bp": ` filegroup { name: "a_fg_proto", srcs: ["a_fg.proto"], }`, }, Blueprint: soongCcProtoPreamble + ` cc_library { name: "a", srcs: [ ":a_fg_proto", "a.proto", ], proto: { export_proto_headers: true, }, include_build_directory: false, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("proto_library", "a_proto", AttrNameToString{ "srcs": `["a.proto"]`, }), MakeBazelTarget("cc_lite_proto_library", "a_cc_proto_lite", AttrNameToString{ "deps": `[ "//path/to/A:a_fg_proto_bp2build_converted", ":a_proto", ]`, }), MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ "deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), MakeBazelTarget("cc_library_shared", "a", AttrNameToString{ "dynamic_deps": `[":libprotobuf-cpp-lite"]`, "whole_archive_deps": `[":a_cc_proto_lite"]`, }), }, }) } func TestCcLibraryProtoFilegroups(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", Loading
bp2build/filegroup_conversion_test.go +42 −2 Original line number Diff line number Diff line Loading @@ -15,10 +15,10 @@ package bp2build import ( "android/soong/android" "fmt" "testing" "android/soong/android" ) func runFilegroupTestCase(t *testing.T, tc Bp2buildTestCase) { Loading Loading @@ -121,3 +121,43 @@ filegroup { ]`}), }}) } func TestFilegroupWithProtoSrcs(t *testing.T) { runFilegroupTestCase(t, Bp2buildTestCase{ Description: "filegroup with proto and non-proto srcs", Filesystem: map[string]string{}, Blueprint: ` filegroup { name: "foo", srcs: ["proto/foo.proto"], path: "proto", }`, ExpectedBazelTargets: []string{ MakeBazelTargetNoRestrictions("proto_library", "foo_bp2build_converted", AttrNameToString{ "srcs": `["proto/foo.proto"]`, "strip_import_prefix": `"proto"`}), MakeBazelTargetNoRestrictions("filegroup", "foo", AttrNameToString{ "srcs": `["proto/foo.proto"]`}), }}) } func TestFilegroupWithProtoAndNonProtoSrcs(t *testing.T) { runFilegroupTestCase(t, Bp2buildTestCase{ Description: "filegroup with proto and non-proto srcs", Filesystem: map[string]string{}, Blueprint: ` filegroup { name: "foo", srcs: [ "foo.proto", "buf.cpp", ], }`, ExpectedBazelTargets: []string{ MakeBazelTargetNoRestrictions("filegroup", "foo", AttrNameToString{ "srcs": `[ "foo.proto", "buf.cpp", ]`}), }}) }