diff --git a/bp2build/aar_conversion_test.go b/bp2build/aar_conversion_test.go index ce20721c9..59aacbb15 100644 --- a/bp2build/aar_conversion_test.go +++ b/bp2build/aar_conversion_test.go @@ -15,10 +15,10 @@ package bp2build import ( + "testing" + "android/soong/android" "android/soong/java" - - "testing" ) func TestConvertAndroidLibrary(t *testing.T) { @@ -34,7 +34,8 @@ func TestConvertAndroidLibrary(t *testing.T) { "res/res.png": "", "manifest/AndroidManifest.xml": "", }, - Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + ` + StubbedBuildDefinitions: []string{"static_lib_dep"}, + Blueprint: simpleModule("android_library", "static_lib_dep") + ` android_library { name: "TestLib", srcs: ["lib.java"], @@ -81,7 +82,7 @@ func TestConvertAndroidLibraryWithNoSources(t *testing.T) { "res/res.png": "", "AndroidManifest.xml": "", }, - Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "lib_dep") + ` + Blueprint: simpleModule("android_library", "lib_dep") + ` android_library { name: "TestLib", srcs: [], @@ -107,18 +108,24 @@ func TestConvertAndroidLibraryImport(t *testing.T) { ModuleTypeUnderTestFactory: java.AARImportFactory, Filesystem: map[string]string{ "import.aar": "", + "dep.aar": "", }, + StubbedBuildDefinitions: []string{"static_lib_dep", "prebuilt_static_import_dep"}, // Bazel's aar_import can only export *_import targets, so we expect // only "static_import_dep" in exports, but both "static_lib_dep" and // "static_import_dep" in deps - Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + - SimpleModuleDoNotConvertBp2build("android_library_import", "static_import_dep") + ` + Blueprint: simpleModule("android_library", "static_lib_dep") + ` android_library_import { name: "TestImport", aars: ["import.aar"], static_libs: ["static_lib_dep", "static_import_dep"], sdk_version: "current", } + +// TODO: b/301007952 - This dep is needed because android_library_import must have aars set. +android_library_import { + name: "static_import_dep", +} `, ExpectedBazelTargets: []string{ MakeBazelTarget( diff --git a/bp2build/android_app_conversion_test.go b/bp2build/android_app_conversion_test.go index 0d206b0e7..0daa4fe69 100644 --- a/bp2build/android_app_conversion_test.go +++ b/bp2build/android_app_conversion_test.go @@ -78,7 +78,8 @@ func TestAndroidAppAllSupportedFields(t *testing.T) { "manifest/AndroidManifest.xml": "", "assets_/asset.png": "", }, - Blueprint: SimpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + ` + StubbedBuildDefinitions: []string{"static_lib_dep"}, + Blueprint: simpleModule("android_app", "static_lib_dep") + ` android_app { name: "TestApp", srcs: ["app.java"], @@ -177,7 +178,8 @@ func TestAndroidAppCertIsModule(t *testing.T) { ModuleTypeUnderTest: "android_app", ModuleTypeUnderTestFactory: java.AndroidAppFactory, Filesystem: map[string]string{}, - Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "foocert") + ` + StubbedBuildDefinitions: []string{"foocert"}, + Blueprint: simpleModule("filegroup", "foocert") + ` android_app { name: "TestApp", certificate: ":foocert", @@ -262,7 +264,8 @@ func TestAndroidAppLibs(t *testing.T) { ModuleTypeUnderTest: "android_app", ModuleTypeUnderTestFactory: java.AndroidAppFactory, Filesystem: map[string]string{}, - Blueprint: SimpleModuleDoNotConvertBp2build("java_library", "barLib") + ` + StubbedBuildDefinitions: []string{"barLib"}, + Blueprint: simpleModule("java_library", "barLib") + ` android_app { name: "foo", libs: ["barLib"], @@ -291,8 +294,9 @@ func TestAndroidAppKotlinSrcs(t *testing.T) { Filesystem: map[string]string{ "res/res.png": "", }, - Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "foocert") + - SimpleModuleDoNotConvertBp2build("java_library", "barLib") + ` + StubbedBuildDefinitions: []string{"foocert", "barLib"}, + Blueprint: simpleModule("filegroup", "foocert") + + simpleModule("java_library", "barLib") + ` android_app { name: "foo", srcs: ["a.java", "b.kt"], @@ -334,6 +338,7 @@ func TestAndroidAppCommonSrcs(t *testing.T) { Filesystem: map[string]string{ "res/res.png": "", }, + StubbedBuildDefinitions: []string{"barLib"}, Blueprint: ` android_app { name: "foo", @@ -348,7 +353,6 @@ android_app { } java_library{ name: "barLib", - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ diff --git a/bp2build/apex_conversion_test.go b/bp2build/apex_conversion_test.go index d6db6778a..2a58d0103 100644 --- a/bp2build/apex_conversion_test.go +++ b/bp2build/apex_conversion_test.go @@ -74,38 +74,34 @@ func TestApexBundleSimple(t *testing.T) { ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee.key", "com.android.apogee.certificate", "native_shared_lib_1", "native_shared_lib_2", + "prebuilt_1", "prebuilt_2", "com.android.apogee-file_contexts", "cc_binary_1", "sh_binary_2"}, Blueprint: ` apex_key { name: "com.android.apogee.key", public_key: "com.android.apogee.avbpubkey", private_key: "com.android.apogee.pem", - bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", - bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_1", - bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_2", - bazel_module: { bp2build_available: false }, } prebuilt_etc { name: "prebuilt_1", - bazel_module: { bp2build_available: false }, } prebuilt_etc { name: "prebuilt_2", - bazel_module: { bp2build_available: false }, } filegroup { @@ -113,11 +109,10 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } -cc_binary { name: "cc_binary_1", bazel_module: { bp2build_available: false } } -sh_binary { name: "sh_binary_2", bazel_module: { bp2build_available: false } } +cc_binary { name: "cc_binary_1"} +sh_binary { name: "sh_binary_2"} apex { name: "com.android.apogee", @@ -202,6 +197,7 @@ func TestApexBundleSimple_fileContextsInAnotherAndroidBp(t *testing.T) { Description: "apex - file contexts is a module in another Android.bp", ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, + StubbedBuildDefinitions: []string{"//a/b:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "a/b/Android.bp": ` filegroup { @@ -209,7 +205,6 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } `, }, @@ -252,6 +247,7 @@ func TestApexBundleSimple_fileContextsIsNotSpecified(t *testing.T) { Description: "apex - file contexts is not specified", ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { @@ -259,7 +255,6 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } `, }, @@ -281,12 +276,12 @@ func TestApexBundleCompileMultilibBoth(t *testing.T) { Description: "apex - example with compile_multilib=both", ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, + StubbedBuildDefinitions: append(multilibStubNames(), "//system/sepolicy/apex:com.android.apogee-file_contexts"), Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } `, }, @@ -373,12 +368,12 @@ func TestApexBundleCompileMultilibFirstAndDefaultValue(t *testing.T) { Description: "apex - example with " + compileMultiLibProp, ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, + StubbedBuildDefinitions: append(multilibStubNames(), "//system/sepolicy/apex:com.android.apogee-file_contexts"), Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } `, }, @@ -393,12 +388,12 @@ func TestApexBundleCompileMultilib32(t *testing.T) { Description: "apex - example with compile_multilib=32", ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, + StubbedBuildDefinitions: append(multilibStubNames(), "//system/sepolicy/apex:com.android.apogee-file_contexts"), Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } `, }, @@ -425,12 +420,12 @@ func TestApexBundleCompileMultilib64(t *testing.T) { Description: "apex - example with compile_multilib=64", ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, + StubbedBuildDefinitions: append(multilibStubNames(), "//system/sepolicy/apex:com.android.apogee-file_contexts"), Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } `, }, @@ -458,31 +453,31 @@ filegroup { }}) } +func multilibStubNames() []string { + return []string{"native_shared_lib_for_both", "native_shared_lib_for_first", "native_shared_lib_for_lib32", "native_shared_lib_for_lib64", + "native_shared_lib_for_lib64", "unnested_native_shared_lib"} +} + func createMultilibBlueprint(compile_multilib string) string { return fmt.Sprintf(` cc_library { name: "native_shared_lib_for_both", - bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_for_first", - bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_for_lib32", - bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_for_lib64", - bazel_module: { bp2build_available: false }, } cc_library { name: "unnested_native_shared_lib", - bazel_module: { bp2build_available: false }, } apex { @@ -519,12 +514,12 @@ func TestApexBundleDefaultPropertyValues(t *testing.T) { Description: "apex - default property values", ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } `, }, @@ -546,12 +541,12 @@ func TestApexBundleHasBazelModuleProps(t *testing.T) { Description: "apex - has bazel module props", ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } `, }, @@ -575,38 +570,35 @@ func TestBp2BuildOverrideApex(t *testing.T) { ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee.key", "com.android.apogee.certificate", "native_shared_lib_1", + "native_shared_lib_2", "prebuilt_1", "prebuilt_2", "com.android.apogee-file_contexts", "cc_binary_1", + "sh_binary_2", "com.android.apogee", "com.google.android.apogee.key", "com.google.android.apogee.certificate"}, Blueprint: ` apex_key { name: "com.android.apogee.key", public_key: "com.android.apogee.avbpubkey", private_key: "com.android.apogee.pem", - bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", - bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_1", - bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_2", - bazel_module: { bp2build_available: false }, } prebuilt_etc { name: "prebuilt_1", - bazel_module: { bp2build_available: false }, } prebuilt_etc { name: "prebuilt_2", - bazel_module: { bp2build_available: false }, } filegroup { @@ -614,11 +606,10 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } -cc_binary { name: "cc_binary_1", bazel_module: { bp2build_available: false } } -sh_binary { name: "sh_binary_2", bazel_module: { bp2build_available: false } } +cc_binary { name: "cc_binary_1" } +sh_binary { name: "sh_binary_2" } apex { name: "com.android.apogee", @@ -643,20 +634,17 @@ apex { "prebuilt_1", "prebuilt_2", ], - bazel_module: { bp2build_available: false }, } apex_key { name: "com.google.android.apogee.key", public_key: "com.google.android.apogee.avbpubkey", private_key: "com.google.android.apogee.pem", - bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.google.android.apogee.certificate", certificate: "com.google.android.apogee", - bazel_module: { bp2build_available: false }, } override_apex { @@ -717,28 +705,27 @@ func TestOverrideApexTest(t *testing.T) { ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee.certificate", "native_shared_lib_1", + "prebuilt_1", "com.android.apogee-file_contexts", "cc_binary_1", "sh_binary_2", + "com.android.apogee", "com.google.android.apogee.key", "com.google.android.apogee.certificate", "com.android.apogee.key"}, Blueprint: ` apex_key { name: "com.android.apogee.key", public_key: "com.android.apogee.avbpubkey", private_key: "com.android.apogee.pem", - bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", - bazel_module: { bp2build_available: false }, } cc_library { name: "native_shared_lib_1", - bazel_module: { bp2build_available: false }, } prebuilt_etc { name: "prebuilt_1", - bazel_module: { bp2build_available: false }, } filegroup { @@ -746,11 +733,10 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } -cc_binary { name: "cc_binary_1", bazel_module: { bp2build_available: false } } -sh_binary { name: "sh_binary_2", bazel_module: { bp2build_available: false } } +cc_binary { name: "cc_binary_1"} +sh_binary { name: "sh_binary_2"} apex_test { name: "com.android.apogee", @@ -773,20 +759,17 @@ apex_test { prebuilts: [ "prebuilt_1", ], - bazel_module: { bp2build_available: false }, } apex_key { name: "com.google.android.apogee.key", public_key: "com.google.android.apogee.avbpubkey", private_key: "com.google.android.apogee.pem", - bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.google.android.apogee.certificate", certificate: "com.google.android.apogee", - bazel_module: { bp2build_available: false }, } override_apex { @@ -835,12 +818,12 @@ func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInDifferentAndroid Description: "override_apex - manifest of base apex is empty, base apex and override_apex is in different Android.bp", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, "a/b/Android.bp": ` apex { @@ -869,12 +852,12 @@ func TestApexBundleSimple_manifestIsSet_baseApexOverrideApexInDifferentAndroidBp Description: "override_apex - manifest of base apex is set, base apex and override_apex is in different Android.bp", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, "a/b/Android.bp": ` apex { @@ -904,12 +887,12 @@ func TestApexBundleSimple_manifestIsEmpty_baseApexOverrideApexInSameAndroidBp(t Description: "override_apex - manifest of base apex is empty, base apex and override_apex is in same Android.bp", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, }, Blueprint: ` @@ -937,12 +920,12 @@ func TestApexBundleSimple_manifestIsSet_baseApexOverrideApexInSameAndroidBp(t *t Description: "override_apex - manifest of base apex is set, base apex and override_apex is in same Android.bp", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, }, Blueprint: ` @@ -971,12 +954,12 @@ func TestApexBundleSimple_packageNameOverride(t *testing.T) { Description: "override_apex - override package name", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, }, Blueprint: ` @@ -1006,24 +989,22 @@ func TestApexBundleSimple_NoPrebuiltsOverride(t *testing.T) { Description: "override_apex - no override", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"prebuilt_file", "com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, }, Blueprint: ` prebuilt_etc { name: "prebuilt_file", - bazel_module: { bp2build_available: false }, } apex { name: "com.android.apogee", - bazel_module: { bp2build_available: false }, - prebuilts: ["prebuilt_file"] + prebuilts: ["prebuilt_file"] } override_apex { @@ -1046,35 +1027,32 @@ func TestApexBundleSimple_PrebuiltsOverride(t *testing.T) { Description: "override_apex - ooverride", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"prebuilt_file", "prebuilt_file2", "com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, }, Blueprint: ` prebuilt_etc { name: "prebuilt_file", - bazel_module: { bp2build_available: false }, } prebuilt_etc { name: "prebuilt_file2", - bazel_module: { bp2build_available: false }, } apex { name: "com.android.apogee", - bazel_module: { bp2build_available: false }, - prebuilts: ["prebuilt_file"] + prebuilts: ["prebuilt_file"] } override_apex { name: "com.google.android.apogee", base: ":com.android.apogee", - prebuilts: ["prebuilt_file2"] + prebuilts: ["prebuilt_file2"] } `, ExpectedBazelTargets: []string{ @@ -1092,24 +1070,22 @@ func TestApexBundleSimple_PrebuiltsOverrideEmptyList(t *testing.T) { Description: "override_apex - override with empty list", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"prebuilt_file", "com.android.apogee", "//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, }, Blueprint: ` prebuilt_etc { name: "prebuilt_file", - bazel_module: { bp2build_available: false }, } apex { name: "com.android.apogee", - bazel_module: { bp2build_available: false }, - prebuilts: ["prebuilt_file"] + prebuilts: ["prebuilt_file"] } override_apex { @@ -1133,12 +1109,12 @@ func TestApexBundleSimple_NoLoggingParentOverride(t *testing.T) { Description: "override_apex - logging_parent - no override", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, }, Blueprint: ` @@ -1168,12 +1144,12 @@ func TestApexBundleSimple_LoggingParentOverride(t *testing.T) { Description: "override_apex - logging_parent - override", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"//system/sepolicy/apex:com.android.apogee-file_contexts"}, Filesystem: map[string]string{ "system/sepolicy/apex/Android.bp": ` filegroup { name: "com.android.apogee-file_contexts", srcs: [ "apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, }`, }, Blueprint: ` @@ -1205,11 +1181,11 @@ func TestBp2BuildOverrideApex_CertificateNil(t *testing.T) { ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee.certificate", "com.android.apogee-file_contexts", "com.android.apogee"}, Blueprint: ` android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", - bazel_module: { bp2build_available: false }, } filegroup { @@ -1217,7 +1193,6 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } apex { @@ -1225,7 +1200,6 @@ apex { manifest: "apogee_manifest.json", file_contexts: ":com.android.apogee-file_contexts", certificate: ":com.android.apogee.certificate", - bazel_module: { bp2build_available: false }, } override_apex { @@ -1250,11 +1224,11 @@ func TestApexCertificateIsModule(t *testing.T) { ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee-file_contexts", "com.android.apogee.certificate"}, Blueprint: ` android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", - bazel_module: { bp2build_available: false }, } apex { @@ -1263,7 +1237,7 @@ apex { file_contexts: ":com.android.apogee-file_contexts", certificate: ":com.android.apogee.certificate", } -` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee-file_contexts"), +` + simpleModule("filegroup", "com.android.apogee-file_contexts"), ExpectedBazelTargets: []string{ MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ "certificate": `":com.android.apogee.certificate"`, @@ -1279,6 +1253,7 @@ func TestApexWithStubLib(t *testing.T) { ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"myapex-file_contexts"}, Blueprint: ` cc_library{ name: "foo", @@ -1299,7 +1274,7 @@ apex { binaries: ["bar"], native_shared_libs: ["foo"], } -` + SimpleModuleDoNotConvertBp2build("filegroup", "myapex-file_contexts"), +` + simpleModule("filegroup", "myapex-file_contexts"), ExpectedBazelTargets: []string{ MakeBazelTarget("cc_binary", "bar", AttrNameToString{ "local_includes": `["."]`, @@ -1350,6 +1325,7 @@ func TestApexCertificateIsSrc(t *testing.T) { ModuleTypeUnderTest: "apex", ModuleTypeUnderTestFactory: apex.BundleFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee-file_contexts"}, Blueprint: ` apex { name: "com.android.apogee", @@ -1357,7 +1333,7 @@ apex { file_contexts: ":com.android.apogee-file_contexts", certificate: "com.android.apogee.certificate", } -` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee-file_contexts"), +` + simpleModule("filegroup", "com.android.apogee-file_contexts"), ExpectedBazelTargets: []string{ MakeBazelTarget("apex", "com.android.apogee", AttrNameToString{ "certificate_name": `"com.android.apogee.certificate"`, @@ -1373,11 +1349,12 @@ func TestBp2BuildOverrideApex_CertificateIsModule(t *testing.T) { ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee.certificate", "com.android.apogee-file_contexts", + "com.android.apogee", "com.google.android.apogee.certificate"}, Blueprint: ` android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", - bazel_module: { bp2build_available: false }, } filegroup { @@ -1385,7 +1362,6 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } apex { @@ -1393,13 +1369,11 @@ apex { manifest: "apogee_manifest.json", file_contexts: ":com.android.apogee-file_contexts", certificate: ":com.android.apogee.certificate", - bazel_module: { bp2build_available: false }, } android_app_certificate { name: "com.google.android.apogee.certificate", certificate: "com.google.android.apogee", - bazel_module: { bp2build_available: false }, } override_apex { @@ -1424,11 +1398,11 @@ func TestBp2BuildOverrideApex_CertificateIsSrc(t *testing.T) { ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee.certificate", "com.android.apogee", "com.android.apogee-file_contexts"}, Blueprint: ` android_app_certificate { name: "com.android.apogee.certificate", certificate: "com.android.apogee", - bazel_module: { bp2build_available: false }, } filegroup { @@ -1436,7 +1410,6 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } apex { @@ -1469,8 +1442,9 @@ func TestApexTestBundleSimple(t *testing.T) { ModuleTypeUnderTest: "apex_test", ModuleTypeUnderTestFactory: apex.TestApexBundleFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"cc_test_1"}, Blueprint: ` -cc_test { name: "cc_test_1", bazel_module: { bp2build_available: false } } +cc_test { name: "cc_test_1"} apex_test { name: "test_com.android.apogee", @@ -1497,6 +1471,7 @@ func TestApexBundle_overridePlusProductVars(t *testing.T) { Description: "apex - overriding a module that uses product vars", ModuleTypeUnderTest: "override_apex", ModuleTypeUnderTestFactory: apex.OverrideApexFactory, + StubbedBuildDefinitions: []string{"foo-file_contexts"}, Blueprint: ` soong_config_string_variable { name: "library_linking_strategy", @@ -1535,7 +1510,6 @@ filegroup { srcs: [ "com.android.apogee-file_contexts", ], - bazel_module: { bp2build_available: false }, } apex { diff --git a/bp2build/apex_key_conversion_test.go b/bp2build/apex_key_conversion_test.go index 8f6e843c5..140afb76a 100644 --- a/bp2build/apex_key_conversion_test.go +++ b/bp2build/apex_key_conversion_test.go @@ -83,14 +83,15 @@ func TestApexKey_KeysAreModules(t *testing.T) { ModuleTypeUnderTest: "apex_key", ModuleTypeUnderTestFactory: apex.ApexKeyFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"com.android.apogee.avbpubkey", "com.android.apogee.pem"}, Blueprint: ` apex_key { name: "com.android.apogee.key", public_key: ":com.android.apogee.avbpubkey", private_key: ":com.android.apogee.pem", } -` + SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.avbpubkey") + - SimpleModuleDoNotConvertBp2build("filegroup", "com.android.apogee.pem"), +` + simpleModule("filegroup", "com.android.apogee.avbpubkey") + + simpleModule("filegroup", "com.android.apogee.pem"), ExpectedBazelTargets: []string{MakeBazelTargetNoRestrictions("apex_key", "com.android.apogee.key", AttrNameToString{ "private_key": `":com.android.apogee.pem"`, "public_key": `":com.android.apogee.avbpubkey"`, diff --git a/bp2build/build_conversion_test.go b/bp2build/build_conversion_test.go index cefa17158..23eae1d43 100644 --- a/bp2build/build_conversion_test.go +++ b/bp2build/build_conversion_test.go @@ -1743,7 +1743,8 @@ func TestCommonBp2BuildModuleAttrs(t *testing.T) { Description: "Required into data test", ModuleTypeUnderTest: "filegroup", ModuleTypeUnderTestFactory: android.FileGroupFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + ` + StubbedBuildDefinitions: []string{"reqd"}, + Blueprint: simpleModule("filegroup", "reqd") + ` filegroup { name: "fg_foo", required: ["reqd"], @@ -1759,7 +1760,8 @@ filegroup { Description: "Required into data test, cyclic self reference is filtered out", ModuleTypeUnderTest: "filegroup", ModuleTypeUnderTestFactory: android.FileGroupFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + ` + StubbedBuildDefinitions: []string{"reqd"}, + Blueprint: simpleModule("filegroup", "reqd") + ` filegroup { name: "fg_foo", required: ["reqd", "fg_foo"], @@ -1775,8 +1777,9 @@ filegroup { Description: "Required via arch into data test", ModuleTypeUnderTest: "python_library", ModuleTypeUnderTestFactory: python.PythonLibraryFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("python_library", "reqdx86") + - SimpleModuleDoNotConvertBp2build("python_library", "reqdarm") + ` + StubbedBuildDefinitions: []string{"reqdx86", "reqdarm"}, + Blueprint: simpleModule("python_library", "reqdx86") + + simpleModule("python_library", "reqdarm") + ` python_library { name: "fg_foo", arch: { @@ -1809,7 +1812,8 @@ python_library { "data.bin": "", "src.py": "", }, - Blueprint: SimpleModuleDoNotConvertBp2build("python_library", "reqd") + ` + StubbedBuildDefinitions: []string{"reqd"}, + Blueprint: simpleModule("python_library", "reqd") + ` python_library { name: "fg_foo", data: ["data.bin"], @@ -1831,7 +1835,8 @@ python_library { Description: "All props-to-attrs at once together test", ModuleTypeUnderTest: "filegroup", ModuleTypeUnderTestFactory: android.FileGroupFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("filegroup", "reqd") + ` + StubbedBuildDefinitions: []string{"reqd"}, + Blueprint: simpleModule("filegroup", "reqd") + ` filegroup { name: "fg_foo", required: ["reqd"], diff --git a/bp2build/cc_binary_conversion_test.go b/bp2build/cc_binary_conversion_test.go index 3d3b860fa..c67970375 100644 --- a/bp2build/cc_binary_conversion_test.go +++ b/bp2build/cc_binary_conversion_test.go @@ -44,10 +44,11 @@ func generateBazelTargetsForTest(targets []testBazelTarget, hod android.HostOrDe } type ccBinaryBp2buildTestCase struct { - description string - filesystem map[string]string - blueprint string - targets []testBazelTarget + description string + filesystem map[string]string + blueprint string + targets []testBazelTarget + stubbedBuildDefinitions []string } func registerCcBinaryModuleTypes(ctx android.RegistrationContext) { @@ -81,6 +82,7 @@ func runCcBinaryTestCase(t *testing.T, testCase ccBinaryBp2buildTestCase) { Description: description, Blueprint: binaryReplacer.Replace(testCase.blueprint), Filesystem: testCase.filesystem, + StubbedBuildDefinitions: testCase.stubbedBuildDefinitions, }) }) } @@ -97,6 +99,7 @@ func runCcHostBinaryTestCase(t *testing.T, testCase ccBinaryBp2buildTestCase) { Description: description, Blueprint: hostBinaryReplacer.Replace(testCase.blueprint), Filesystem: testCase.filesystem, + StubbedBuildDefinitions: testCase.stubbedBuildDefinitions, }) }) } @@ -107,6 +110,7 @@ func TestBasicCcBinary(t *testing.T) { filesystem: map[string]string{ soongCcVersionLibBpPath: soongCcVersionLibBp, }, + stubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion"}, blueprint: ` {rule_name} { name: "foo", @@ -264,7 +268,8 @@ func TestCcBinaryLdflagsSplitBySpaceExceptSoongAdded(t *testing.T) { func TestCcBinarySplitSrcsByLang(t *testing.T) { runCcHostBinaryTestCase(t, ccBinaryBp2buildTestCase{ - description: "split srcs by lang", + description: "split srcs by lang", + stubbedBuildDefinitions: []string{"fg_foo"}, blueprint: ` {rule_name} { name: "foo", @@ -276,7 +281,7 @@ func TestCcBinarySplitSrcsByLang(t *testing.T) { ], include_build_directory: false, } -` + SimpleModuleDoNotConvertBp2build("filegroup", "fg_foo"), +` + simpleModule("filegroup", "fg_foo"), targets: []testBazelTarget{ {"cc_binary", "foo", AttrNameToString{ "srcs": `[ @@ -300,17 +305,17 @@ func TestCcBinarySplitSrcsByLang(t *testing.T) { func TestCcBinaryDoNotDistinguishBetweenDepsAndImplementationDeps(t *testing.T) { runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{ description: "no implementation deps", + stubbedBuildDefinitions: []string{"generated_hdr", "export_generated_hdr", "static_dep", "implementation_static_dep", + "whole_static_dep", "not_explicitly_exported_whole_static_dep", "shared_dep", "implementation_shared_dep"}, blueprint: ` genrule { name: "generated_hdr", cmd: "nothing to see here", - bazel_module: { bp2build_available: false }, } genrule { name: "export_generated_hdr", cmd: "nothing to see here", - bazel_module: { bp2build_available: false }, } {rule_name} { @@ -326,12 +331,12 @@ genrule { export_generated_headers: ["export_generated_hdr"], } ` + - SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep") + - SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep") + - SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep"), + simpleModule("cc_library_static", "static_dep") + + simpleModule("cc_library_static", "implementation_static_dep") + + simpleModule("cc_library_static", "whole_static_dep") + + simpleModule("cc_library_static", "not_explicitly_exported_whole_static_dep") + + simpleModule("cc_library", "shared_dep") + + simpleModule("cc_library", "implementation_shared_dep"), targets: []testBazelTarget{ {"cc_binary", "foo", AttrNameToString{ "deps": `[ @@ -502,6 +507,7 @@ func TestCcBinaryPropertiesToFeatures(t *testing.T) { func TestCcBinarySharedProto(t *testing.T) { runCcBinaryTests(t, ccBinaryBp2buildTestCase{ + stubbedBuildDefinitions: []string{"libprotobuf-cpp-full", "libprotobuf-cpp-lite"}, blueprint: soongCcProtoLibraries + `{rule_name} { name: "foo", srcs: ["foo.proto"], @@ -524,6 +530,7 @@ func TestCcBinarySharedProto(t *testing.T) { func TestCcBinaryStaticProto(t *testing.T) { runCcBinaryTests(t, ccBinaryBp2buildTestCase{ + stubbedBuildDefinitions: []string{"libprotobuf-cpp-full", "libprotobuf-cpp-lite"}, blueprint: soongCcProtoLibraries + `{rule_name} { name: "foo", srcs: ["foo.proto"], @@ -1224,13 +1231,13 @@ func TestCCBinaryRscriptSrc(t *testing.T) { func TestCcBinaryStatic_SystemSharedLibUsedAsDep(t *testing.T) { runCcBinaryTestCase(t, ccBinaryBp2buildTestCase{ - description: "cc_library_static system_shared_lib empty for linux_bionic variant", + stubbedBuildDefinitions: []string{"libm", "libc"}, + description: "cc_library_static system_shared_lib empty for linux_bionic variant", blueprint: soongCcLibraryStaticPreamble + - SimpleModuleDoNotConvertBp2build("cc_library", "libc") + ` + simpleModule("cc_library", "libc") + ` cc_library { name: "libm", - bazel_module: { bp2build_available: false }, } cc_binary { diff --git a/bp2build/cc_library_conversion_test.go b/bp2build/cc_library_conversion_test.go index 76dc5904b..ec603c294 100644 --- a/bp2build/cc_library_conversion_test.go +++ b/bp2build/cc_library_conversion_test.go @@ -35,19 +35,16 @@ cc_defaults { soongCcVersionLibBp = ` cc_library_static { name: "libbuildversion", - bazel_module: { bp2build_available: false }, } ` soongCcProtoLibraries = ` cc_library { name: "libprotobuf-cpp-lite", - bazel_module: { bp2build_available: false }, } cc_library { name: "libprotobuf-cpp-full", - bazel_module: { bp2build_available: false }, }` soongCcProtoPreamble = soongCcLibraryPreamble + soongCcProtoLibraries @@ -55,6 +52,7 @@ cc_library { func runCcLibraryTestCase(t *testing.T, tc Bp2buildTestCase) { t.Helper() + tc.StubbedBuildDefinitions = append(tc.StubbedBuildDefinitions, "libprotobuf-cpp-lite", "libprotobuf-cpp-full") RunBp2BuildTestCase(t, registerCcLibraryModuleTypes, tc) } @@ -73,6 +71,7 @@ func TestCcLibrarySimple(t *testing.T) { Description: "cc_library - simple example", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion", "some-headers"}, Filesystem: map[string]string{ soongCcVersionLibBpPath: soongCcVersionLibBp, "android.cpp": "", @@ -95,7 +94,7 @@ func TestCcLibrarySimple(t *testing.T) { "foo-dir/a.h": "", }, Blueprint: soongCcLibraryPreamble + - SimpleModuleDoNotConvertBp2build("cc_library_headers", "some-headers") + ` + simpleModule("cc_library_headers", "some-headers") + ` cc_library { name: "foo-lib", srcs: ["impl.cpp"], @@ -169,6 +168,7 @@ func TestCcLibraryTrimmedLdAndroid(t *testing.T) { Description: "cc_library - trimmed example of //bionic/linker:ld-android", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"libc_headers"}, Filesystem: map[string]string{ "ld-android.cpp": "", "linked_list.h": "", @@ -177,7 +177,7 @@ func TestCcLibraryTrimmedLdAndroid(t *testing.T) { "linker_cfi.h": "", }, Blueprint: soongCcLibraryPreamble + - SimpleModuleDoNotConvertBp2build("cc_library_headers", "libc_headers") + ` + simpleModule("cc_library_headers", "libc_headers") + ` cc_library { name: "fake-ld-android", srcs: ["ld_android.cpp"], @@ -320,54 +320,49 @@ cc_library { cc_library_static { name: "static_dep_for_shared", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_dep_for_static", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_dep_for_both", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "whole_static_lib_for_shared", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "whole_static_lib_for_static", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "whole_static_lib_for_both", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "whole_and_static_lib_for_both", - bazel_module: { bp2build_available: false }, } cc_library { name: "shared_dep_for_shared", - bazel_module: { bp2build_available: false }, } cc_library { name: "shared_dep_for_static", - bazel_module: { bp2build_available: false }, } cc_library { name: "shared_dep_for_both", - bazel_module: { bp2build_available: false }, } `, + StubbedBuildDefinitions: []string{"static_dep_for_shared", "static_dep_for_static", + "static_dep_for_both", "whole_static_lib_for_shared", "whole_static_lib_for_static", + "whole_static_lib_for_both", "whole_and_static_lib_for_both", "shared_dep_for_shared", + "shared_dep_for_static", "shared_dep_for_both", + }, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ "copts": `[ @@ -458,24 +453,34 @@ cc_library { }, include_build_directory: false, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_shared") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_shared") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_static") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_static") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "static_dep_for_both") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "implementation_static_dep_for_both") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_shared") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_shared") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_static") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_static") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "whole_static_dep_for_both") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "not_explicitly_exported_whole_static_dep_for_both") + - SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_shared") + - SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_shared") + - SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_static") + - SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_static") + - SimpleModuleDoNotConvertBp2build("cc_library", "shared_dep_for_both") + - SimpleModuleDoNotConvertBp2build("cc_library", "implementation_shared_dep_for_both"), +` + simpleModule("cc_library_static", "static_dep_for_shared") + + simpleModule("cc_library_static", "implementation_static_dep_for_shared") + + simpleModule("cc_library_static", "static_dep_for_static") + + simpleModule("cc_library_static", "implementation_static_dep_for_static") + + simpleModule("cc_library_static", "static_dep_for_both") + + simpleModule("cc_library_static", "implementation_static_dep_for_both") + + simpleModule("cc_library_static", "whole_static_dep_for_shared") + + simpleModule("cc_library_static", "not_explicitly_exported_whole_static_dep_for_shared") + + simpleModule("cc_library_static", "whole_static_dep_for_static") + + simpleModule("cc_library_static", "not_explicitly_exported_whole_static_dep_for_static") + + simpleModule("cc_library_static", "whole_static_dep_for_both") + + simpleModule("cc_library_static", "not_explicitly_exported_whole_static_dep_for_both") + + simpleModule("cc_library", "shared_dep_for_shared") + + simpleModule("cc_library", "implementation_shared_dep_for_shared") + + simpleModule("cc_library", "shared_dep_for_static") + + simpleModule("cc_library", "implementation_shared_dep_for_static") + + simpleModule("cc_library", "shared_dep_for_both") + + simpleModule("cc_library", "implementation_shared_dep_for_both"), + StubbedBuildDefinitions: []string{"static_dep_for_shared", "implementation_static_dep_for_shared", + "static_dep_for_static", "implementation_static_dep_for_static", "static_dep_for_both", + "implementation_static_dep_for_both", "whole_static_dep_for_shared", + "not_explicitly_exported_whole_static_dep_for_shared", "whole_static_dep_for_static", + "not_explicitly_exported_whole_static_dep_for_static", "whole_static_dep_for_both", + "not_explicitly_exported_whole_static_dep_for_both", "shared_dep_for_shared", + "implementation_shared_dep_for_shared", "shared_dep_for_static", + "implementation_shared_dep_for_static", "shared_dep_for_both", + "implementation_shared_dep_for_both", + }, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ "copts": `[ @@ -550,6 +555,8 @@ func TestCcLibraryWholeStaticLibsAlwaysLink(t *testing.T) { ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Dir: "foo/bar", + StubbedBuildDefinitions: []string{"//foo/bar:prebuilt_whole_static_lib_for_shared", "//foo/bar:prebuilt_whole_static_lib_for_static", + "//foo/bar:prebuilt_whole_static_lib_for_both"}, Filesystem: map[string]string{ "foo/bar/Android.bp": ` cc_library { @@ -666,6 +673,10 @@ cc_library_static { name: "x86_dep_for_static" } cc_library_static { name: "android_dep_for_shared" } `, }, + StubbedBuildDefinitions: []string{"//foo/bar:static_dep_for_shared", "//foo/bar:static_dep_for_static", + "//foo/bar:static_dep_for_both", "//foo/bar:arm_static_dep_for_shared", "//foo/bar:arm_whole_static_dep_for_shared", + "//foo/bar:arm_shared_dep_for_shared", "//foo/bar:x86_dep_for_static", "//foo/bar:android_dep_for_shared", + }, Blueprint: soongCcLibraryPreamble, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "a_bp2build_cc_library_static", AttrNameToString{ @@ -747,6 +758,7 @@ func TestCcLibrarySharedStaticPropsWithMixedSources(t *testing.T) { ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Dir: "foo/bar", + StubbedBuildDefinitions: []string{"//foo/bar:shared_filegroup", "//foo/bar:static_filegroup", "//foo/bar:both_filegroup"}, Filesystem: map[string]string{ "foo/bar/both_source.cpp": "", "foo/bar/both_source.cc": "", @@ -1018,10 +1030,10 @@ func TestCcLibrarySharedLibs(t *testing.T) { Description: "cc_library shared_libs", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"mylib"}, Blueprint: soongCcLibraryPreamble + ` cc_library { name: "mylib", - bazel_module: { bp2build_available: false }, } cc_library { @@ -1182,6 +1194,10 @@ func TestCcLibraryExcludeLibs(t *testing.T) { ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"arm_whole_static_lib_excludes", "malloc_not_svelte_whole_static_lib", + "arm_static_lib_excludes", "malloc_not_svelte_whole_static_lib_excludes", "arm_shared_lib_excludes", + "malloc_not_svelte_static_lib_excludes", "arm_shared_lib_excludes", "malloc_not_svelte_shared_lib", + }, Blueprint: soongCcLibraryStaticPreamble + ` cc_library { name: "foo_static", @@ -1223,37 +1239,30 @@ cc_library { cc_library { name: "arm_whole_static_lib_excludes", - bazel_module: { bp2build_available: false }, } cc_library { name: "malloc_not_svelte_whole_static_lib", - bazel_module: { bp2build_available: false }, } cc_library { name: "malloc_not_svelte_whole_static_lib_excludes", - bazel_module: { bp2build_available: false }, } cc_library { name: "arm_static_lib_excludes", - bazel_module: { bp2build_available: false }, } cc_library { name: "malloc_not_svelte_static_lib_excludes", - bazel_module: { bp2build_available: false }, } cc_library { name: "arm_shared_lib_excludes", - bazel_module: { bp2build_available: false }, } cc_library { name: "malloc_not_svelte_shared_lib", - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: makeCcLibraryTargets("foo_static", AttrNameToString{ @@ -1289,6 +1298,7 @@ func TestCcLibraryProductVariablesHeaderLibs(t *testing.T) { ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"malloc_not_svelte_header_lib"}, Blueprint: soongCcLibraryStaticPreamble + ` cc_library { name: "foo_static", @@ -1303,7 +1313,6 @@ cc_library { cc_library { name: "malloc_not_svelte_header_lib", - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: makeCcLibraryTargets("foo_static", AttrNameToString{ @@ -1813,10 +1822,10 @@ func TestCcLibrary_SystemSharedLibsLinuxBionicEmpty(t *testing.T) { Description: "cc_library system_shared_libs empty for linux_bionic variant", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"libc_musl"}, Blueprint: soongCcLibraryPreamble + ` cc_library { name: "libc_musl", - bazel_module: { bp2build_available: false }, } cc_library { @@ -1844,6 +1853,7 @@ func TestCcLibrary_SystemSharedLibsBionicEmpty(t *testing.T) { Description: "cc_library system_shared_libs empty for bionic variant", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"libc_musl"}, Blueprint: soongCcLibraryPreamble + ` cc_library { name: "libc_musl", @@ -1875,10 +1885,10 @@ func TestCcLibrary_SystemSharedLibsMuslEmpty(t *testing.T) { Description: "cc_library system_shared_lib empty for musl variant", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"libc_musl"}, Blueprint: soongCcLibraryPreamble + ` cc_library { name: "libc_musl", - bazel_module: { bp2build_available: false }, } cc_library { @@ -1928,14 +1938,13 @@ func TestCcLibrary_SystemSharedLibsSharedAndRoot(t *testing.T) { Description: "cc_library system_shared_libs set for shared and root", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"libc", "libm"}, Blueprint: soongCcLibraryPreamble + ` cc_library { name: "libc", - bazel_module: { bp2build_available: false }, } cc_library { name: "libm", - bazel_module: { bp2build_available: false }, } cc_library { @@ -2506,6 +2515,7 @@ func TestCcLibraryExternalConvertedProtoFilegroups(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"//path/to/A:a_fg_proto"}, Filesystem: map[string]string{ "path/to/A/Android.bp": ` filegroup { @@ -2549,11 +2559,12 @@ func TestCcLibraryProtoFilegroups(t *testing.T) { runCcLibraryTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"a_fg_proto", "b_protos", "c-proto-srcs", "proto-srcs-d"}, Blueprint: soongCcProtoPreamble + - SimpleModuleDoNotConvertBp2build("filegroup", "a_fg_proto") + - SimpleModuleDoNotConvertBp2build("filegroup", "b_protos") + - SimpleModuleDoNotConvertBp2build("filegroup", "c-proto-srcs") + - SimpleModuleDoNotConvertBp2build("filegroup", "proto-srcs-d") + ` + simpleModule("filegroup", "a_fg_proto") + + simpleModule("filegroup", "b_protos") + + simpleModule("filegroup", "c-proto-srcs") + + simpleModule("filegroup", "proto-srcs-d") + ` cc_library { name: "a", srcs: [":a_fg_proto"], @@ -2849,11 +2860,11 @@ func TestCcLibraryStubsAcrossConfigsDuplicatesRemoved(t *testing.T) { Filesystem: map[string]string{ "bar.map.txt": "", }, + StubbedBuildDefinitions: []string{"barlib"}, Blueprint: ` cc_library { name: "barlib", stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, } cc_library { name: "foolib", @@ -2884,16 +2895,15 @@ func TestCcLibraryExcludesLibsHost(t *testing.T) { Filesystem: map[string]string{ "bar.map.txt": "", }, - Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "bazlib") + ` + StubbedBuildDefinitions: []string{"bazlib", "quxlib", "barlib"}, + Blueprint: simpleModule("cc_library", "bazlib") + ` cc_library { name: "quxlib", stubs: { symbol_file: "bar.map.txt", versions: ["current"] }, - bazel_module: { bp2build_available: false }, } cc_library { name: "barlib", stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, } cc_library { name: "foolib", @@ -3007,18 +3017,18 @@ func TestCCLibraryRuntimeDeps(t *testing.T) { cc_library { name: "foo", - runtime_libs: ["foo"], + runtime_libs: ["bar"], }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "bar", AttrNameToString{ "local_includes": `["."]`, }), MakeBazelTarget("cc_library_static", "foo_bp2build_cc_library_static", AttrNameToString{ - "runtime_deps": `[":foo"]`, + "runtime_deps": `[":bar"]`, "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ - "runtime_deps": `[":foo"]`, + "runtime_deps": `[":bar"]`, "local_includes": `["."]`, }), }, @@ -3229,6 +3239,7 @@ func TestCcLibraryWithNonAdjacentAidlFilegroup(t *testing.T) { Description: "cc_library with non aidl filegroup", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"//path/to/A:A_aidl"}, Filesystem: map[string]string{ "path/to/A/Android.bp": ` filegroup { @@ -3518,6 +3529,7 @@ func TestCcLibraryWithAidlAndLibs(t *testing.T) { Description: "cc_aidl_library depends on libs from parent cc_library_static", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"bar-static", "baz-static", "bar-shared", "baz-shared"}, Blueprint: ` cc_library_static { name: "foo", @@ -3539,10 +3551,10 @@ cc_library_static { "baz-shared", ], }` + - SimpleModuleDoNotConvertBp2build("cc_library_static", "bar-static") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "baz-static") + - SimpleModuleDoNotConvertBp2build("cc_library", "bar-shared") + - SimpleModuleDoNotConvertBp2build("cc_library", "baz-shared"), + simpleModule("cc_library_static", "bar-static") + + simpleModule("cc_library_static", "baz-static") + + simpleModule("cc_library", "bar-shared") + + simpleModule("cc_library", "baz-shared"), ExpectedBazelTargets: []string{ MakeBazelTarget("aidl_library", "foo_aidl_library", AttrNameToString{ "srcs": `["Foo.aidl"]`, @@ -4086,17 +4098,16 @@ func TestCcLibraryInApexWithStubSharedLibs(t *testing.T) { Description: "cc_library with in apex with stub shared_libs and export_shared_lib_headers", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"barlib", "bazlib"}, Blueprint: ` cc_library { name: "barlib", stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, apex_available: ["//apex_available:platform",], } cc_library { name: "bazlib", stubs: { symbol_file: "bar.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, apex_available: ["//apex_available:platform",], } cc_library { @@ -4472,6 +4483,7 @@ func TestCcLibraryYaccConversion(t *testing.T) { Description: "cc_library is built from .y/.yy files", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, + StubbedBuildDefinitions: []string{"staticlib", "sharedlib"}, Blueprint: soongCcLibraryPreamble + `cc_library { name: "a", srcs: [ @@ -4488,11 +4500,9 @@ func TestCcLibraryYaccConversion(t *testing.T) { } cc_library_static { name: "staticlib", - bazel_module: { bp2build_available: false }, } cc_library { name: "sharedlib", - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ @@ -4746,7 +4756,7 @@ cc_library_static { canonical_path_from_root: true, } } -` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"), +` + simpleModule("cc_library", "libprotobuf-cpp-lite"), Filesystem: map[string]string{ "bar/Android.bp": "", "baz/subbaz/Android.bp": "", @@ -4814,7 +4824,7 @@ cc_library_static { canonical_path_from_root: false, } } -` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"), +` + simpleModule("cc_library", "libprotobuf-cpp-lite"), Filesystem: map[string]string{ "bar/Android.bp": "", "baz/subbaz/Android.bp": "", @@ -4884,7 +4894,7 @@ cc_library_static { include_dirs: ["bar"], } } -` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"), +` + simpleModule("cc_library", "libprotobuf-cpp-lite"), Filesystem: map[string]string{ "bar/Android.bp": "", "bar/bar.proto": "", @@ -4955,7 +4965,7 @@ cc_library_static { include_dirs: ["baz"], } } -` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"), +` + simpleModule("cc_library", "libprotobuf-cpp-lite"), Filesystem: map[string]string{ "bar/Android.bp": "", // package boundary "baz/Android.bp": "", @@ -4990,7 +5000,14 @@ func TestProtoLocalIncludeDirs(t *testing.T) { Description: "cc_library depends on .proto files using proto.local_include_dirs", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"), + Blueprint: ` +cc_library { + name: "libprotobuf-cpp-lite", + // TODO: b/285631638 - A stubbed proto library dependency does not work as a protolib + // dependency of cc_library_static. + bazel_module: { bp2build_available: false }, +} +`, Filesystem: map[string]string{ "foo/Android.bp": `cc_library_static { name: "foo", @@ -5047,7 +5064,7 @@ func TestProtoLibraryForIncludeDirsIsOsAgnostic(t *testing.T) { Description: "proto_library generated for proto.include_dirs is compatible for all axes", ModuleTypeUnderTest: "cc_library", ModuleTypeUnderTestFactory: cc.LibraryFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite") + ` + Blueprint: simpleModule("cc_library", "libprotobuf-cpp-lite") + ` cc_library { name: "foo_device", device_supported: true, // this is the default behavior, but added explicitly here for illustration diff --git a/bp2build/cc_library_headers_conversion_test.go b/bp2build/cc_library_headers_conversion_test.go index 40e84510b..0fa20866f 100644 --- a/bp2build/cc_library_headers_conversion_test.go +++ b/bp2build/cc_library_headers_conversion_test.go @@ -131,30 +131,26 @@ func TestCcLibraryHeadersOsSpecificHeader(t *testing.T) { ModuleTypeUnderTest: "cc_library_headers", ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"android-lib", "base-lib", "darwin-lib", + "linux-lib", "linux_bionic-lib", "windows-lib"}, Blueprint: soongCcLibraryPreamble + ` cc_library_headers { name: "android-lib", - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "base-lib", - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "darwin-lib", - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "linux-lib", - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "linux_bionic-lib", - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "windows-lib", - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "foo_headers", @@ -205,14 +201,13 @@ func TestCcLibraryHeadersOsSpecficHeaderLibsExportHeaderLibHeaders(t *testing.T) ModuleTypeUnderTest: "cc_library_headers", ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"android-lib", "exported-lib"}, Blueprint: soongCcLibraryPreamble + ` cc_library_headers { name: "android-lib", - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "exported-lib", - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "foo_headers", @@ -333,6 +328,7 @@ func TestCcLibraryHeadersExportedStaticLibHeadersReexported(t *testing.T) { ModuleTypeUnderTest: "cc_library_headers", ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"foo_export"}, Blueprint: soongCcLibraryHeadersPreamble + ` cc_library_headers { name: "foo_headers", @@ -340,7 +336,7 @@ cc_library_headers { static_libs: ["foo_export", "foo_no_reexport"], bazel_module: { bp2build_available: true }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"), +` + simpleModule("cc_library_headers", "foo_export"), ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{ "deps": `[":foo_export"]`, @@ -355,6 +351,7 @@ func TestCcLibraryHeadersExportedSharedLibHeadersReexported(t *testing.T) { ModuleTypeUnderTest: "cc_library_headers", ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"foo_export"}, Blueprint: soongCcLibraryHeadersPreamble + ` cc_library_headers { name: "foo_headers", @@ -362,7 +359,7 @@ cc_library_headers { shared_libs: ["foo_export", "foo_no_reexport"], bazel_module: { bp2build_available: true }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"), +` + simpleModule("cc_library_headers", "foo_export"), ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{ "deps": `[":foo_export"]`, @@ -377,6 +374,7 @@ func TestCcLibraryHeadersExportedHeaderLibHeadersReexported(t *testing.T) { ModuleTypeUnderTest: "cc_library_headers", ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"foo_export"}, Blueprint: soongCcLibraryHeadersPreamble + ` cc_library_headers { name: "foo_headers", @@ -384,7 +382,7 @@ cc_library_headers { header_libs: ["foo_export", "foo_no_reexport"], bazel_module: { bp2build_available: true }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"), +` + simpleModule("cc_library_headers", "foo_export"), ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{ "deps": `[":foo_export"]`, @@ -399,13 +397,14 @@ func TestCcLibraryHeadersWholeStaticLibsReexported(t *testing.T) { ModuleTypeUnderTest: "cc_library_headers", ModuleTypeUnderTestFactory: cc.LibraryHeaderFactory, Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"foo_export"}, Blueprint: soongCcLibraryHeadersPreamble + ` cc_library_headers { name: "foo_headers", whole_static_libs: ["foo_export"], bazel_module: { bp2build_available: true }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_headers", "foo_export"), +` + simpleModule("cc_library_headers", "foo_export"), ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_headers", "foo_headers", AttrNameToString{ "deps": `[":foo_export"]`, diff --git a/bp2build/cc_library_shared_conversion_test.go b/bp2build/cc_library_shared_conversion_test.go index b3dd6b177..6f600da5c 100644 --- a/bp2build/cc_library_shared_conversion_test.go +++ b/bp2build/cc_library_shared_conversion_test.go @@ -38,6 +38,7 @@ func registerCcLibrarySharedModuleTypes(ctx android.RegistrationContext) { func runCcLibrarySharedTestCase(t *testing.T, tc Bp2buildTestCase) { t.Helper() t.Parallel() + tc.StubbedBuildDefinitions = append(tc.StubbedBuildDefinitions, "libbuildversion", "libprotobuf-cpp-lite", "libprotobuf-cpp-full") (&tc).ModuleTypeUnderTest = "cc_library_shared" (&tc).ModuleTypeUnderTestFactory = cc.LibrarySharedFactory RunBp2BuildTestCase(t, registerCcLibrarySharedModuleTypes, tc) @@ -45,7 +46,8 @@ func runCcLibrarySharedTestCase(t *testing.T, tc Bp2buildTestCase) { func TestCcLibrarySharedSimple(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ - Description: "cc_library_shared simple overall test", + Description: "cc_library_shared simple overall test", + StubbedBuildDefinitions: []string{"header_lib_1", "header_lib_2", "whole_static_lib_1", "whole_static_lib_2", "shared_lib_1", "shared_lib_2"}, Filesystem: map[string]string{ // NOTE: include_dir headers *should not* appear in Bazel hdrs later (?) "include_dir_1/include_dir_1_a.h": "", @@ -70,37 +72,31 @@ func TestCcLibrarySharedSimple(t *testing.T) { cc_library_headers { name: "header_lib_1", export_include_dirs: ["header_lib_1"], - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "header_lib_2", export_include_dirs: ["header_lib_2"], - bazel_module: { bp2build_available: false }, } cc_library_shared { name: "shared_lib_1", srcs: ["shared_lib_1.cc"], - bazel_module: { bp2build_available: false }, } cc_library_shared { name: "shared_lib_2", srcs: ["shared_lib_2.cc"], - bazel_module: { bp2build_available: false }, } cc_library_static { name: "whole_static_lib_1", srcs: ["whole_static_lib_1.cc"], - bazel_module: { bp2build_available: false }, } cc_library_static { name: "whole_static_lib_2", srcs: ["whole_static_lib_2.cc"], - bazel_module: { bp2build_available: false }, } cc_library_shared { @@ -186,16 +182,15 @@ cc_library_shared { func TestCcLibrarySharedArchSpecificSharedLib(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ - Description: "cc_library_shared arch-specific shared_libs with whole_static_libs", - Filesystem: map[string]string{}, + Description: "cc_library_shared arch-specific shared_libs with whole_static_libs", + Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"static_dep", "shared_dep"}, Blueprint: soongCcLibrarySharedPreamble + ` cc_library_static { name: "static_dep", - bazel_module: { bp2build_available: false }, } cc_library_shared { name: "shared_dep", - bazel_module: { bp2build_available: false }, } cc_library_shared { name: "foo_shared", @@ -510,6 +505,7 @@ func TestCcLibrarySharedUseVersionLib(t *testing.T) { Filesystem: map[string]string{ soongCcVersionLibBpPath: soongCcVersionLibBp, }, + StubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion"}, Blueprint: soongCcProtoPreamble + `cc_library_shared { name: "foo", use_version_lib: true, @@ -564,11 +560,11 @@ func TestCcLibrarySharedStubs_UseImplementationInSameApex(t *testing.T) { Description: "cc_library_shared stubs", ModuleTypeUnderTest: "cc_library_shared", ModuleTypeUnderTestFactory: cc.LibrarySharedFactory, + StubbedBuildDefinitions: []string{"a"}, Blueprint: soongCcLibrarySharedPreamble + ` cc_library_shared { name: "a", stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, include_build_directory: false, apex_available: ["made_up_apex"], } @@ -593,11 +589,11 @@ func TestCcLibrarySharedStubs_UseStubsInDifferentApex(t *testing.T) { Description: "cc_library_shared stubs", ModuleTypeUnderTest: "cc_library_shared", ModuleTypeUnderTestFactory: cc.LibrarySharedFactory, + StubbedBuildDefinitions: []string{"a"}, Blueprint: soongCcLibrarySharedPreamble + ` cc_library_shared { name: "a", stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, include_build_directory: false, apex_available: ["apex_a"], } @@ -627,19 +623,18 @@ func TestCcLibrarySharedStubs_UseStubsFromMultipleApiDomains(t *testing.T) { Description: "cc_library_shared stubs", ModuleTypeUnderTest: "cc_library_shared", ModuleTypeUnderTestFactory: cc.LibrarySharedFactory, + StubbedBuildDefinitions: []string{"libplatform_stable", "libapexfoo_stable"}, Blueprint: soongCcLibrarySharedPreamble + ` cc_library_shared { name: "libplatform_stable", stubs: { symbol_file: "libplatform_stable.map.txt", versions: ["28", "29", "current"] }, apex_available: ["//apex_available:platform"], - bazel_module: { bp2build_available: false }, include_build_directory: false, } cc_library_shared { name: "libapexfoo_stable", stubs: { symbol_file: "libapexfoo_stable.map.txt", versions: ["28", "29", "current"] }, apex_available: ["apexfoo"], - bazel_module: { bp2build_available: false }, include_build_directory: false, } cc_library_shared { @@ -684,11 +679,11 @@ func TestCcLibrarySharedStubs_IgnorePlatformAvailable(t *testing.T) { Description: "cc_library_shared stubs", ModuleTypeUnderTest: "cc_library_shared", ModuleTypeUnderTestFactory: cc.LibrarySharedFactory, + StubbedBuildDefinitions: []string{"a"}, Blueprint: soongCcLibrarySharedPreamble + ` cc_library_shared { name: "a", stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, include_build_directory: false, apex_available: ["//apex_available:platform", "apex_a"], } @@ -720,11 +715,11 @@ func TestCcLibraryDoesNotDropStubDepIfNoVariationAcrossAxis(t *testing.T) { Description: "cc_library depeends on impl for all configurations", ModuleTypeUnderTest: "cc_library_shared", ModuleTypeUnderTestFactory: cc.LibrarySharedFactory, + StubbedBuildDefinitions: []string{"a"}, Blueprint: soongCcLibrarySharedPreamble + ` cc_library_shared { name: "a", stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, apex_available: ["//apex_available:platform"], } cc_library_shared { @@ -747,11 +742,11 @@ func TestCcLibrarySharedStubs_MultipleApexAvailable(t *testing.T) { runCcLibrarySharedTestCase(t, Bp2buildTestCase{ ModuleTypeUnderTest: "cc_library_shared", ModuleTypeUnderTestFactory: cc.LibrarySharedFactory, + StubbedBuildDefinitions: []string{"a"}, Blueprint: soongCcLibrarySharedPreamble + ` cc_library_shared { name: "a", stubs: { symbol_file: "a.map.txt", versions: ["28", "29", "current"] }, - bazel_module: { bp2build_available: false }, include_build_directory: false, apex_available: ["//apex_available:platform", "apex_a", "apex_b"], } @@ -929,14 +924,14 @@ func TestCCLibrarySharedRuntimeDeps(t *testing.T) { cc_library_shared { name: "foo", - runtime_libs: ["foo"], + runtime_libs: ["bar"], }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "bar", AttrNameToString{ "local_includes": `["."]`, }), MakeBazelTarget("cc_library_shared", "foo", AttrNameToString{ - "runtime_deps": `[":foo"]`, + "runtime_deps": `[":bar"]`, "local_includes": `["."]`, }), }, diff --git a/bp2build/cc_library_static_conversion_test.go b/bp2build/cc_library_static_conversion_test.go index b9508e95b..0587aaea1 100644 --- a/bp2build/cc_library_static_conversion_test.go +++ b/bp2build/cc_library_static_conversion_test.go @@ -96,41 +96,37 @@ func TestCcLibraryStaticSimple(t *testing.T) { "implicit_include_1.h": "", "implicit_include_2.h": "", }, + StubbedBuildDefinitions: []string{"header_lib_1", "header_lib_2", + "static_lib_1", "static_lib_2", "whole_static_lib_1", "whole_static_lib_2"}, Blueprint: soongCcLibraryStaticPreamble + ` cc_library_headers { name: "header_lib_1", export_include_dirs: ["header_lib_1"], - bazel_module: { bp2build_available: false }, } cc_library_headers { name: "header_lib_2", export_include_dirs: ["header_lib_2"], - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_lib_1", srcs: ["static_lib_1.cc"], - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_lib_2", srcs: ["static_lib_2.cc"], - bazel_module: { bp2build_available: false }, } cc_library_static { name: "whole_static_lib_1", srcs: ["whole_static_lib_1.cc"], - bazel_module: { bp2build_available: false }, } cc_library_static { name: "whole_static_lib_2", srcs: ["whole_static_lib_2.cc"], - bazel_module: { bp2build_available: false }, } cc_library_static { @@ -392,16 +388,15 @@ cc_library_static { func TestCcLibraryStaticArchSpecificStaticLib(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ - Description: "cc_library_static arch-specific static_libs", - Filesystem: map[string]string{}, + Description: "cc_library_static arch-specific static_libs", + Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"static_dep", "static_dep2"}, Blueprint: soongCcLibraryStaticPreamble + ` cc_library_static { name: "static_dep", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_dep2", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "foo_static", @@ -425,16 +420,15 @@ cc_library_static { func TestCcLibraryStaticOsSpecificStaticLib(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ - Description: "cc_library_static os-specific static_libs", - Filesystem: map[string]string{}, + Description: "cc_library_static os-specific static_libs", + Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"static_dep", "static_dep2"}, Blueprint: soongCcLibraryStaticPreamble + ` cc_library_static { name: "static_dep", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_dep2", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "foo_static", @@ -460,22 +454,20 @@ func TestCcLibraryStaticBaseArchOsSpecificStaticLib(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static base, arch and os-specific static_libs", Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"static_dep", "static_dep2", "static_dep3", + "static_dep4"}, Blueprint: soongCcLibraryStaticPreamble + ` cc_library_static { name: "static_dep", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_dep2", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_dep3", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "static_dep4", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "foo_static", @@ -756,12 +748,12 @@ cc_library_static { func TestCcLibraryStaticMultipleDepSameName(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ - Description: "cc_library_static multiple dep same name panic", - Filesystem: map[string]string{}, + Description: "cc_library_static multiple dep same name panic", + Filesystem: map[string]string{}, + StubbedBuildDefinitions: []string{"static_dep"}, Blueprint: soongCcLibraryStaticPreamble + ` cc_library_static { name: "static_dep", - bazel_module: { bp2build_available: false }, } cc_library_static { name: "foo_static", @@ -961,17 +953,16 @@ cc_library_static { func TestCcLibraryStaticGeneratedHeadersAllPartitions(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ + StubbedBuildDefinitions: []string{"generated_hdr", "export_generated_hdr"}, Blueprint: soongCcLibraryStaticPreamble + ` genrule { name: "generated_hdr", cmd: "nothing to see here", - bazel_module: { bp2build_available: false }, } genrule { name: "export_generated_hdr", cmd: "nothing to see here", - bazel_module: { bp2build_available: false }, } cc_library_static { @@ -1005,19 +996,18 @@ cc_library_static { func TestCcLibraryStaticGeneratedHeadersMultipleExports(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ + StubbedBuildDefinitions: []string{"generated_hdr", "export_generated_hdr"}, Blueprint: soongCcLibraryStaticPreamble + ` genrule { name: "generated_hdr", cmd: "nothing to see here", export_include_dirs: ["foo", "bar"], - bazel_module: { bp2build_available: false }, } genrule { name: "export_generated_hdr", cmd: "nothing to see here", export_include_dirs: ["a", "b"], - bazel_module: { bp2build_available: false }, } cc_library_static { @@ -1040,22 +1030,26 @@ cc_library_static { func TestCcLibraryStaticArchSrcsExcludeSrcsGeneratedFiles(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ Description: "cc_library_static arch srcs/exclude_srcs with generated files", + StubbedBuildDefinitions: []string{"//dep:generated_src_other_pkg", "//dep:generated_hdr_other_pkg", + "//dep:generated_src_other_pkg_x86", "//dep:generated_hdr_other_pkg_x86", "//dep:generated_hdr_other_pkg_android", + "generated_src", "generated_src_not_x86", "generated_src_android", "generated_hdr", + }, Filesystem: map[string]string{ "common.cpp": "", "for-x86.cpp": "", "not-for-x86.cpp": "", "not-for-everything.cpp": "", - "dep/Android.bp": SimpleModuleDoNotConvertBp2build("genrule", "generated_src_other_pkg") + - SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg") + - SimpleModuleDoNotConvertBp2build("genrule", "generated_src_other_pkg_x86") + - SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg_x86") + - SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr_other_pkg_android"), + "dep/Android.bp": simpleModule("genrule", "generated_src_other_pkg") + + simpleModule("genrule", "generated_hdr_other_pkg") + + simpleModule("genrule", "generated_src_other_pkg_x86") + + simpleModule("genrule", "generated_hdr_other_pkg_x86") + + simpleModule("genrule", "generated_hdr_other_pkg_android"), }, Blueprint: soongCcLibraryStaticPreamble + - SimpleModuleDoNotConvertBp2build("genrule", "generated_src") + - SimpleModuleDoNotConvertBp2build("genrule", "generated_src_not_x86") + - SimpleModuleDoNotConvertBp2build("genrule", "generated_src_android") + - SimpleModuleDoNotConvertBp2build("genrule", "generated_hdr") + ` + simpleModule("genrule", "generated_src") + + simpleModule("genrule", "generated_src_not_x86") + + simpleModule("genrule", "generated_src_android") + + simpleModule("genrule", "generated_hdr") + ` cc_library_static { name: "foo_static", srcs: ["common.cpp", "not-for-*.cpp"], @@ -1340,11 +1334,11 @@ cc_library_static { func TestStaticLibrary_SystemSharedLibsBionicEmpty(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ - Description: "cc_library_static system_shared_lib empty for bionic variant", + Description: "cc_library_static system_shared_lib empty for bionic variant", + StubbedBuildDefinitions: []string{"libc_musl"}, Blueprint: soongCcLibraryStaticPreamble + ` cc_library { name: "libc_musl", - bazel_module: { bp2build_available: false }, } cc_library_static { @@ -1374,11 +1368,11 @@ func TestStaticLibrary_SystemSharedLibsLinuxBionicEmpty(t *testing.T) { // only for linux_bionic, but `android` had `["libc", "libdl", "libm"]. // b/195791252 tracks the fix. runCcLibraryStaticTestCase(t, Bp2buildTestCase{ - Description: "cc_library_static system_shared_lib empty for linux_bionic variant", + Description: "cc_library_static system_shared_lib empty for linux_bionic variant", + StubbedBuildDefinitions: []string{"libc_musl"}, Blueprint: soongCcLibraryStaticPreamble + ` cc_library { name: "libc_musl", - bazel_module: { bp2build_available: false }, } cc_library_static { @@ -1458,12 +1452,12 @@ cc_library_static { func TestStaticLibrary_SystemSharedLibsBionic(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ - Description: "cc_library_static system_shared_libs set for bionic variant", + Description: "cc_library_static system_shared_libs set for bionic variant", + StubbedBuildDefinitions: []string{"libc", "libc_musl"}, Blueprint: soongCcLibraryStaticPreamble + - SimpleModuleDoNotConvertBp2build("cc_library", "libc") + ` + simpleModule("cc_library", "libc") + ` cc_library { name: "libc_musl", - bazel_module: { bp2build_available: false }, } cc_library_static { @@ -1491,13 +1485,13 @@ cc_library_static { func TestStaticLibrary_SystemSharedLibsLinuxRootAndLinuxBionic(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ - Description: "cc_library_static system_shared_libs set for root and linux_bionic variant", + Description: "cc_library_static system_shared_libs set for root and linux_bionic variant", + StubbedBuildDefinitions: []string{"libc", "libm", "libc_musl"}, Blueprint: soongCcLibraryStaticPreamble + - SimpleModuleDoNotConvertBp2build("cc_library", "libc") + - SimpleModuleDoNotConvertBp2build("cc_library", "libm") + ` + simpleModule("cc_library", "libc") + + simpleModule("cc_library", "libm") + ` cc_library { name: "libc_musl", - bazel_module: { bp2build_available: false }, } cc_library_static { @@ -1525,9 +1519,10 @@ cc_library_static { func TestCcLibrarystatic_SystemSharedLibUsedAsDep(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ - Description: "cc_library_static system_shared_lib empty for linux_bionic variant", + Description: "cc_library_static system_shared_lib empty for linux_bionic variant", + StubbedBuildDefinitions: []string{"libc", "libm"}, Blueprint: soongCcLibraryStaticPreamble + - SimpleModuleDoNotConvertBp2build("cc_library", "libc") + ` + simpleModule("cc_library", "libc") + ` cc_library { name: "libm", @@ -1535,7 +1530,6 @@ cc_library { symbol_file: "libm.map.txt", versions: ["current"], }, - bazel_module: { bp2build_available: false }, apex_available: ["com.android.runtime"], } @@ -1613,6 +1607,7 @@ cc_library_static { func TestCcLibraryStaticProto(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ + StubbedBuildDefinitions: []string{"libprotobuf-cpp-full", "libprotobuf-cpp-lite"}, Blueprint: soongCcProtoPreamble + `cc_library_static { name: "foo", srcs: ["foo.proto"], @@ -1639,6 +1634,7 @@ func TestCcLibraryStaticUseVersionLib(t *testing.T) { Filesystem: map[string]string{ soongCcVersionLibBpPath: soongCcVersionLibBp, }, + StubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion", "libprotobuf-cpp-full", "libprotobuf-cpp-lite"}, Blueprint: soongCcProtoPreamble + `cc_library_static { name: "foo", use_version_lib: true, @@ -1658,6 +1654,8 @@ func TestCcLibraryStaticUseVersionLibHasDep(t *testing.T) { Filesystem: map[string]string{ soongCcVersionLibBpPath: soongCcVersionLibBp, }, + StubbedBuildDefinitions: []string{"//build/soong/cc/libbuildversion:libbuildversion", "libprotobuf-cpp-full", "libprotobuf-cpp-lite"}, + Blueprint: soongCcProtoPreamble + `cc_library_static { name: "foo", use_version_lib: true, @@ -1674,6 +1672,7 @@ func TestCcLibraryStaticUseVersionLibHasDep(t *testing.T) { func TestCcLibraryStaticStdInFlags(t *testing.T) { runCcLibraryStaticTestCase(t, Bp2buildTestCase{ + StubbedBuildDefinitions: []string{"libprotobuf-cpp-full", "libprotobuf-cpp-lite"}, Blueprint: soongCcProtoPreamble + `cc_library_static { name: "foo", cflags: ["-std=candcpp"], @@ -1767,14 +1766,14 @@ func TestCCLibraryStaticRuntimeDeps(t *testing.T) { cc_library_static { name: "foo", - runtime_libs: ["foo"], + runtime_libs: ["bar"], }`, ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_shared", "bar", AttrNameToString{ "local_includes": `["."]`, }), MakeBazelTarget("cc_library_static", "foo", AttrNameToString{ - "runtime_deps": `[":foo"]`, + "runtime_deps": `[":bar"]`, "local_includes": `["."]`, }), }, @@ -2260,6 +2259,7 @@ func TestCcLibraryWithProtoInGeneratedSrcs(t *testing.T) { Description: "cc_library with a .proto file generated from a genrule", ModuleTypeUnderTest: "cc_library_static", ModuleTypeUnderTestFactory: cc.LibraryStaticFactory, + StubbedBuildDefinitions: []string{"libprotobuf-cpp-lite"}, Blueprint: soongCcLibraryPreamble + ` cc_library_static { name: "mylib", @@ -2269,7 +2269,7 @@ genrule { name: "myprotogen", out: ["myproto.proto"], } -` + SimpleModuleDoNotConvertBp2build("cc_library", "libprotobuf-cpp-lite"), +` + simpleModule("cc_library", "libprotobuf-cpp-lite"), ExpectedBazelTargets: []string{ MakeBazelTarget("cc_library_static", "mylib", AttrNameToString{ "local_includes": `["."]`, diff --git a/bp2build/cc_object_conversion_test.go b/bp2build/cc_object_conversion_test.go index ecfcb5a93..e1e2f43d7 100644 --- a/bp2build/cc_object_conversion_test.go +++ b/bp2build/cc_object_conversion_test.go @@ -317,7 +317,8 @@ func TestCcObjectLinkerScript(t *testing.T) { func TestCcObjectDepsAndLinkerScriptSelects(t *testing.T) { runCcObjectTestCase(t, Bp2buildTestCase{ - Description: "cc_object setting deps and linker_script across archs", + Description: "cc_object setting deps and linker_script across archs", + StubbedBuildDefinitions: []string{"x86_obj", "x86_64_obj", "arm_obj"}, Blueprint: `cc_object { name: "foo", srcs: ["base.cpp"], @@ -343,7 +344,6 @@ cc_object { system_shared_libs: [], srcs: ["x86.cpp"], include_build_directory: false, - bazel_module: { bp2build_available: false }, } cc_object { @@ -351,7 +351,6 @@ cc_object { system_shared_libs: [], srcs: ["x86_64.cpp"], include_build_directory: false, - bazel_module: { bp2build_available: false }, } cc_object { @@ -359,7 +358,6 @@ cc_object { system_shared_libs: [], srcs: ["arm.cpp"], include_build_directory: false, - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ diff --git a/bp2build/cc_test_conversion_test.go b/bp2build/cc_test_conversion_test.go index 74a5c0d11..679a36461 100644 --- a/bp2build/cc_test_conversion_test.go +++ b/bp2build/cc_test_conversion_test.go @@ -24,10 +24,11 @@ import ( ) type ccTestBp2buildTestCase struct { - description string - blueprint string - filesystem map[string]string - targets []testBazelTarget + description string + blueprint string + filesystem map[string]string + targets []testBazelTarget + stubbedBuildDefinitions []string } func registerCcTestModuleTypes(ctx android.RegistrationContext) { @@ -52,6 +53,7 @@ func runCcTestTestCase(t *testing.T, testCase ccTestBp2buildTestCase) { ModuleTypeUnderTestFactory: cc.TestFactory, Description: description, Blueprint: testCase.blueprint, + StubbedBuildDefinitions: testCase.stubbedBuildDefinitions, }) }) } @@ -59,6 +61,8 @@ func runCcTestTestCase(t *testing.T, testCase ccTestBp2buildTestCase) { func TestBasicCcTest(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ description: "basic cc_test with commonly used attributes", + stubbedBuildDefinitions: []string{"libbuildversion", "libprotobuf-cpp-lite", "libprotobuf-cpp-full", + "foolib", "hostlib", "data_mod", "cc_bin", "cc_lib", "cc_test_lib2", "libgtest_main", "libgtest"}, blueprint: ` cc_test { name: "mytest", @@ -89,14 +93,14 @@ cc_test_library { host_supported: true, include_build_directory: false, } -` + SimpleModuleDoNotConvertBp2build("cc_library", "foolib") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "hostlib") + - SimpleModuleDoNotConvertBp2build("genrule", "data_mod") + - SimpleModuleDoNotConvertBp2build("cc_binary", "cc_bin") + - SimpleModuleDoNotConvertBp2build("cc_library", "cc_lib") + - SimpleModuleDoNotConvertBp2build("cc_test_library", "cc_test_lib2") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"), +` + simpleModule("cc_library", "foolib") + + simpleModule("cc_library_static", "hostlib") + + simpleModule("genrule", "data_mod") + + simpleModule("cc_binary", "cc_bin") + + simpleModule("cc_library", "cc_lib") + + simpleModule("cc_test_library", "cc_test_lib2") + + simpleModule("cc_library_static", "libgtest_main") + + simpleModule("cc_library_static", "libgtest"), targets: []testBazelTarget{ {"cc_library_shared", "cc_test_lib1", AttrNameToString{}}, {"cc_library_static", "cc_test_lib1_bp2build_cc_library_static", AttrNameToString{}}, @@ -188,7 +192,8 @@ cc_test { func TestCcTest_TestOptions_Tags(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ - description: "cc test with test_options.tags converted to tags", + description: "cc test with test_options.tags converted to tags", + stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"}, blueprint: ` cc_test { name: "mytest", @@ -196,8 +201,8 @@ cc_test { srcs: ["test.cpp"], test_options: { tags: ["no-remote"] }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"), +` + simpleModule("cc_library_static", "libgtest_main") + + simpleModule("cc_library_static", "libgtest"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "tags": `["no-remote"]`, @@ -230,14 +235,15 @@ func TestCcTest_TestConfig(t *testing.T) { filesystem: map[string]string{ "test_config.xml": "", }, + stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"}, blueprint: ` cc_test { name: "mytest", srcs: ["test.cpp"], test_config: "test_config.xml", } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"), +` + simpleModule("cc_library_static", "libgtest_main") + + simpleModule("cc_library_static", "libgtest"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "local_includes": `["."]`, @@ -269,13 +275,14 @@ func TestCcTest_TestConfigAndroidTestXML(t *testing.T) { "AndroidTest.xml": "", "DynamicConfig.xml": "", }, + stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"}, blueprint: ` cc_test { name: "mytest", srcs: ["test.cpp"], } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"), +` + simpleModule("cc_library_static", "libgtest_main") + + simpleModule("cc_library_static", "libgtest"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "local_includes": `["."]`, @@ -307,6 +314,7 @@ func TestCcTest_TestConfigTemplateOptions(t *testing.T) { filesystem: map[string]string{ "test_config_template.xml": "", }, + stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"}, blueprint: ` cc_test { name: "mytest", @@ -315,8 +323,8 @@ cc_test { auto_gen_config: true, isolated: true, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") + - SimpleModuleDoNotConvertBp2build("cc_library", "liblog"), +` + simpleModule("cc_library_static", "libgtest_isolated_main") + + simpleModule("cc_library", "liblog"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "auto_generate_test_config": "True", @@ -347,15 +355,16 @@ cc_test { func TestCcTest_WithExplicitGTestDepInAndroidBp(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ - description: "cc test that lists libgtest in Android.bp should not have dups of libgtest in BUILD file", + description: "cc test that lists libgtest in Android.bp should not have dups of libgtest in BUILD file", + stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"}, blueprint: ` cc_test { name: "mytest", srcs: ["test.cpp"], static_libs: ["libgtest"], } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"), +` + simpleModule("cc_library_static", "libgtest_main") + + simpleModule("cc_library_static", "libgtest"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "local_includes": `["."]`, @@ -382,15 +391,16 @@ cc_test { func TestCcTest_WithIsolatedTurnedOn(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ - description: "cc test that sets `isolated: true` should run with ligtest_isolated_main instead of libgtest_main", + description: "cc test that sets `isolated: true` should run with ligtest_isolated_main instead of libgtest_main", + stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"}, blueprint: ` cc_test { name: "mytest", srcs: ["test.cpp"], isolated: true, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") + - SimpleModuleDoNotConvertBp2build("cc_library", "liblog"), +` + simpleModule("cc_library_static", "libgtest_isolated_main") + + simpleModule("cc_library", "liblog"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "local_includes": `["."]`, @@ -415,7 +425,8 @@ cc_test { func TestCcTest_GtestExplicitlySpecifiedInAndroidBp(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ - description: "If `gtest` is explicit in Android.bp, it should be explicit in BUILD files as well", + description: "If `gtest` is explicit in Android.bp, it should be explicit in BUILD files as well", + stubbedBuildDefinitions: []string{"libgtest_main", "libgtest"}, blueprint: ` cc_test { name: "mytest_with_gtest", @@ -425,8 +436,8 @@ cc_test { name: "mytest_with_no_gtest", gtest: false, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_main") + - SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest"), +` + simpleModule("cc_library_static", "libgtest_main") + + simpleModule("cc_library_static", "libgtest"), targets: []testBazelTarget{ {"cc_test", "mytest_with_gtest", AttrNameToString{ "local_includes": `["."]`, @@ -466,7 +477,8 @@ cc_test { func TestCcTest_DisableMemtagHeap(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ - description: "cc test that disable memtag_heap", + description: "cc test that disable memtag_heap", + stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"}, blueprint: ` cc_test { name: "mytest", @@ -477,8 +489,8 @@ cc_test { memtag_heap: false, }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") + - SimpleModuleDoNotConvertBp2build("cc_library", "liblog"), +` + simpleModule("cc_library_static", "libgtest_isolated_main") + + simpleModule("cc_library", "liblog"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "local_includes": `["."]`, @@ -499,7 +511,8 @@ cc_test { func TestCcTest_RespectArm64MemtagHeap(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ - description: "cc test that disable memtag_heap", + description: "cc test that disable memtag_heap", + stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"}, blueprint: ` cc_test { name: "mytest", @@ -513,8 +526,8 @@ cc_test { } }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") + - SimpleModuleDoNotConvertBp2build("cc_library", "liblog"), +` + simpleModule("cc_library_static", "libgtest_isolated_main") + + simpleModule("cc_library", "liblog"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "local_includes": `["."]`, @@ -535,7 +548,8 @@ cc_test { func TestCcTest_IgnoreNoneArm64MemtagHeap(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ - description: "cc test that disable memtag_heap", + description: "cc test that disable memtag_heap", + stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"}, blueprint: ` cc_test { name: "mytest", @@ -549,8 +563,8 @@ cc_test { } }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") + - SimpleModuleDoNotConvertBp2build("cc_library", "liblog"), +` + simpleModule("cc_library_static", "libgtest_isolated_main") + + simpleModule("cc_library", "liblog"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "local_includes": `["."]`, @@ -574,7 +588,8 @@ cc_test { func TestCcTest_Arm64MemtagHeapOverrideNoConfigOne(t *testing.T) { runCcTestTestCase(t, ccTestBp2buildTestCase{ - description: "cc test that disable memtag_heap", + description: "cc test that disable memtag_heap", + stubbedBuildDefinitions: []string{"libgtest_isolated_main", "liblog"}, blueprint: ` cc_test { name: "mytest", @@ -594,8 +609,8 @@ cc_test { } }, } -` + SimpleModuleDoNotConvertBp2build("cc_library_static", "libgtest_isolated_main") + - SimpleModuleDoNotConvertBp2build("cc_library", "liblog"), +` + simpleModule("cc_library_static", "libgtest_isolated_main") + + simpleModule("cc_library", "liblog"), targets: []testBazelTarget{ {"cc_test", "mytest", AttrNameToString{ "local_includes": `["."]`, diff --git a/bp2build/genrule_conversion_test.go b/bp2build/genrule_conversion_test.go index 2a10a14d4..7e9b17bca 100644 --- a/bp2build/genrule_conversion_test.go +++ b/bp2build/genrule_conversion_test.go @@ -93,7 +93,6 @@ func TestGenruleCliVariableReplacement(t *testing.T) { out: ["foo_tool.out"], srcs: ["foo_tool.in"], cmd: "cp $(in) $(out)", - bazel_module: { bp2build_available: false }, } %s { @@ -124,6 +123,7 @@ func TestGenruleCliVariableReplacement(t *testing.T) { ModuleTypeUnderTestFactory: tc.factory, Blueprint: fmt.Sprintf(bp, tc.moduleType, tc.moduleType), ExpectedBazelTargets: expectedBazelTargets, + StubbedBuildDefinitions: []string{"foo.tool", "other.tool"}, }) }) } @@ -262,6 +262,7 @@ func TestGenruleLocationsAbsoluteLabel(t *testing.T) { Blueprint: fmt.Sprintf(bp, tc.moduleType), ExpectedBazelTargets: expectedBazelTargets, Filesystem: otherGenruleBp(tc.moduleType), + StubbedBuildDefinitions: []string{"//other:foo.tool"}, }) }) } @@ -326,6 +327,7 @@ func TestGenruleSrcsLocationsAbsoluteLabel(t *testing.T) { Blueprint: fmt.Sprintf(bp, tc.moduleType), ExpectedBazelTargets: expectedBazelTargets, Filesystem: otherGenruleBp(tc.moduleType), + StubbedBuildDefinitions: []string{"//other:foo.tool", "//other:other.tool"}, }) }) } @@ -390,6 +392,7 @@ func TestGenruleLocationLabelShouldSubstituteFirstToolLabel(t *testing.T) { Blueprint: fmt.Sprintf(bp, tc.moduleType), ExpectedBazelTargets: expectedBazelTargets, Filesystem: otherGenruleBp(tc.moduleType), + StubbedBuildDefinitions: []string{"//other:foo.tool", "//other:other.tool"}, }) }) } @@ -454,6 +457,7 @@ func TestGenruleLocationsLabelShouldSubstituteFirstToolLabel(t *testing.T) { Blueprint: fmt.Sprintf(bp, tc.moduleType), ExpectedBazelTargets: expectedBazelTargets, Filesystem: otherGenruleBp(tc.moduleType), + StubbedBuildDefinitions: []string{"//other:foo.tool", "//other:other.tool"}, }) }) } @@ -948,6 +952,7 @@ genrule { ModuleTypeUnderTest: "genrule", ModuleTypeUnderTestFactory: genrule.GenRuleFactory, ExpectedBazelTargets: expectedBazelTargets, + StubbedBuildDefinitions: []string{"//mynamespace/dir:mymodule"}, }) }) diff --git a/bp2build/java_binary_host_conversion_test.go b/bp2build/java_binary_host_conversion_test.go index 39e55c410..7d8ab635a 100644 --- a/bp2build/java_binary_host_conversion_test.go +++ b/bp2build/java_binary_host_conversion_test.go @@ -26,6 +26,7 @@ func runJavaBinaryHostTestCase(t *testing.T, tc Bp2buildTestCase) { t.Helper() (&tc).ModuleTypeUnderTest = "java_binary_host" (&tc).ModuleTypeUnderTestFactory = java.BinaryHostFactory + tc.StubbedBuildDefinitions = append(tc.StubbedBuildDefinitions, "//other:jni-lib-1") RunBp2BuildTestCase(t, func(ctx android.RegistrationContext) { ctx.RegisterModuleType("cc_library_host_shared", cc.LibraryHostSharedFactory) ctx.RegisterModuleType("java_library", java.LibraryFactory) @@ -81,8 +82,9 @@ func TestJavaBinaryHost(t *testing.T) { func TestJavaBinaryHostRuntimeDeps(t *testing.T) { runJavaBinaryHostTestCase(t, Bp2buildTestCase{ - Description: "java_binary_host with srcs, exclude_srcs, jni_libs, javacflags, and manifest.", - Filesystem: testFs, + Description: "java_binary_host with srcs, exclude_srcs, jni_libs, javacflags, and manifest.", + Filesystem: testFs, + StubbedBuildDefinitions: []string{"java-dep-1"}, Blueprint: `java_binary_host { name: "java-binary-host-1", static_libs: ["java-dep-1"], @@ -93,7 +95,6 @@ func TestJavaBinaryHostRuntimeDeps(t *testing.T) { java_library { name: "java-dep-1", srcs: ["a.java"], - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ @@ -111,8 +112,9 @@ java_library { func TestJavaBinaryHostLibs(t *testing.T) { runJavaBinaryHostTestCase(t, Bp2buildTestCase{ - Description: "java_binary_host with srcs, libs.", - Filesystem: testFs, + Description: "java_binary_host with srcs, libs.", + Filesystem: testFs, + StubbedBuildDefinitions: []string{"prebuilt_java-lib-dep-1"}, Blueprint: `java_binary_host { name: "java-binary-host-libs", libs: ["java-lib-dep-1"], @@ -123,7 +125,6 @@ func TestJavaBinaryHostLibs(t *testing.T) { java_import_host{ name: "java-lib-dep-1", jars: ["foo.jar"], - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go index 3260b1e9f..7e4e44ec8 100644 --- a/bp2build/java_library_conversion_test.go +++ b/bp2build/java_library_conversion_test.go @@ -69,6 +69,7 @@ java_library { func TestJavaLibraryConvertsStaticLibsToDepsAndExports(t *testing.T) { runJavaLibraryTestCase(t, Bp2buildTestCase{ + StubbedBuildDefinitions: []string{"java-lib-2", "java-lib-3"}, Blueprint: `java_library { name: "java-lib-1", srcs: ["a.java"], @@ -82,14 +83,12 @@ java_library { name: "java-lib-2", srcs: ["b.java"], sdk_version: "current", - bazel_module: { bp2build_available: false }, } java_library { name: "java-lib-3", srcs: ["c.java"], sdk_version: "current", - bazel_module: { bp2build_available: false }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ @@ -108,6 +107,7 @@ java_library { func TestJavaLibraryConvertsStaticLibsToExportsIfNoSrcs(t *testing.T) { runJavaLibraryTestCase(t, Bp2buildTestCase{ + StubbedBuildDefinitions: []string{"java-lib-2"}, Blueprint: `java_library { name: "java-lib-1", static_libs: ["java-lib-2"], @@ -118,7 +118,6 @@ func TestJavaLibraryConvertsStaticLibsToExportsIfNoSrcs(t *testing.T) { java_library { name: "java-lib-2", srcs: ["a.java"], - bazel_module: { bp2build_available: false }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ @@ -144,6 +143,7 @@ java_library { func TestJavaLibraryPlugins(t *testing.T) { runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{ + StubbedBuildDefinitions: []string{"java-plugin-1"}, Blueprint: `java_library { name: "java-lib-1", plugins: ["java-plugin-1"], @@ -154,7 +154,6 @@ func TestJavaLibraryPlugins(t *testing.T) { java_plugin { name: "java-plugin-1", srcs: ["a.java"], - bazel_module: { bp2build_available: false }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ @@ -195,6 +194,7 @@ func TestJavaLibraryJavaVersion(t *testing.T) { func TestJavaLibraryErrorproneEnabledManually(t *testing.T) { runJavaLibraryTestCaseWithRegistrationCtxFunc(t, Bp2buildTestCase{ + StubbedBuildDefinitions: []string{"plugin2"}, Blueprint: `java_library { name: "java-lib-1", srcs: ["a.java"], @@ -209,7 +209,6 @@ func TestJavaLibraryErrorproneEnabledManually(t *testing.T) { java_plugin { name: "plugin2", srcs: ["a.java"], - bazel_module: { bp2build_available: false }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ @@ -420,13 +419,12 @@ func TestJavaLibraryResourcesExcludeFile(t *testing.T) { func TestJavaLibraryResourcesWithMultipleDirs(t *testing.T) { runJavaLibraryTestCase(t, Bp2buildTestCase{ Filesystem: map[string]string{ - "res/a.res": "", - "res1/b.res": "", - "res2/b.java": "", + "res/a.res": "", + "res1/b.res": "", }, Blueprint: `java_library { name: "java-lib-1", - java_resource_dirs: ["res", "res1", "res2"], + java_resource_dirs: ["res", "res1"], sdk_version: "current", }`, ExpectedBazelTargets: []string{ @@ -619,6 +617,7 @@ func TestJavaLibraryAidlNonAdjacentAidlFilegroup(t *testing.T) { Description: "java_library with non adjacent aidl filegroup", ModuleTypeUnderTest: "java_library", ModuleTypeUnderTestFactory: java.LibraryFactory, + StubbedBuildDefinitions: []string{"A_aidl"}, Filesystem: map[string]string{ "path/to/A/Android.bp": ` filegroup { @@ -656,7 +655,7 @@ func TestConvertArmNeonVariant(t *testing.T) { Description: "Android Library - simple arch feature", ModuleTypeUnderTest: "android_library", ModuleTypeUnderTestFactory: java.AndroidLibraryFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + ` + Blueprint: simpleModule("android_library", "static_lib_dep") + ` android_library { name: "TestLib", manifest: "manifest/AndroidManifest.xml", @@ -694,7 +693,7 @@ func TestConvertMultipleArchFeatures(t *testing.T) { Description: "Android Library - multiple arch features", ModuleTypeUnderTest: "android_library", ModuleTypeUnderTestFactory: java.AndroidLibraryFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + ` + Blueprint: simpleModule("android_library", "static_lib_dep") + ` android_library { name: "TestLib", manifest: "manifest/AndroidManifest.xml", @@ -740,7 +739,7 @@ func TestConvertExcludeSrcsArchFeature(t *testing.T) { Description: "Android Library - exclude_srcs with arch feature", ModuleTypeUnderTest: "android_library", ModuleTypeUnderTestFactory: java.AndroidLibraryFactory, - Blueprint: SimpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + ` + Blueprint: simpleModule("android_library", "static_lib_dep") + ` android_library { name: "TestLib", manifest: "manifest/AndroidManifest.xml", @@ -848,33 +847,10 @@ func TestJavaLibraryKotlinCommonSrcs(t *testing.T) { }) } -func TestJavaLibraryLibsWithNoSrcs(t *testing.T) { - runJavaLibraryTestCase(t, Bp2buildTestCase{ - Description: "java_library that has libs but no srcs", - Blueprint: `java_library { - name: "java-lib-1", - libs: ["java-lib-2"], - sdk_version: "current", - bazel_module: { bp2build_available: true }, -} - -java_library{ - name: "java-lib-2", - bazel_module: { bp2build_available: false }, -} -`, - ExpectedBazelTargets: []string{ - MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ - "sdk_version": `"current"`, - }), - MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), - }, - }) -} - func TestJavaLibraryArchVariantDeps(t *testing.T) { runJavaLibraryTestCase(t, Bp2buildTestCase{ - Description: "java_library with arch variant libs", + Description: "java_library with arch variant libs", + StubbedBuildDefinitions: []string{"java-lib-2", "java-lib-3", "java-lib-4"}, Blueprint: `java_library { name: "java-lib-1", srcs: ["a.java"], @@ -891,17 +867,14 @@ func TestJavaLibraryArchVariantDeps(t *testing.T) { java_library{ name: "java-lib-2", - bazel_module: { bp2build_available: false }, } java_library{ name: "java-lib-3", - bazel_module: { bp2build_available: false }, } java_library{ name: "java-lib-4", - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ @@ -1050,14 +1023,3 @@ filegroup { ctx.RegisterModuleType("filegroup", android.FileGroupFactory) }) } - -func TestJavaSdkVersionCorePlatformDoesNotConvert(t *testing.T) { - runJavaLibraryTestCase(t, Bp2buildTestCase{ - Blueprint: `java_library { - name: "java-lib-1", - sdk_version: "core_platform", - bazel_module: { bp2build_available: true }, -}`, - ExpectedBazelTargets: []string{}, - }) -} diff --git a/bp2build/java_plugin_conversion_test.go b/bp2build/java_plugin_conversion_test.go index f2b6f20a4..b284112c6 100644 --- a/bp2build/java_plugin_conversion_test.go +++ b/bp2build/java_plugin_conversion_test.go @@ -32,7 +32,8 @@ func runJavaPluginTestCase(t *testing.T, tc Bp2buildTestCase) { func TestJavaPlugin(t *testing.T) { runJavaPluginTestCase(t, Bp2buildTestCase{ - Description: "java_plugin with srcs, libs, static_libs", + Description: "java_plugin with srcs, libs, static_libs", + StubbedBuildDefinitions: []string{"java-lib-1", "java-lib-2"}, Blueprint: `java_plugin { name: "java-plug-1", srcs: ["a.java", "b.java"], @@ -45,13 +46,11 @@ func TestJavaPlugin(t *testing.T) { java_library { name: "java-lib-1", srcs: ["b.java"], - bazel_module: { bp2build_available: false }, } java_library { name: "java-lib-2", srcs: ["c.java"], - bazel_module: { bp2build_available: false }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_plugin", "java-plug-1", AttrNameToString{ @@ -75,7 +74,8 @@ java_library { func TestJavaPluginNoSrcs(t *testing.T) { runJavaPluginTestCase(t, Bp2buildTestCase{ - Description: "java_plugin without srcs converts (static) libs to deps", + Description: "java_plugin without srcs converts (static) libs to deps", + StubbedBuildDefinitions: []string{"java-lib-1", "java-lib-2"}, Blueprint: `java_plugin { name: "java-plug-1", libs: ["java-lib-1"], diff --git a/bp2build/platform_compat_config_conversion_test.go b/bp2build/platform_compat_config_conversion_test.go index 4dfcce3a3..d74db5d0b 100644 --- a/bp2build/platform_compat_config_conversion_test.go +++ b/bp2build/platform_compat_config_conversion_test.go @@ -37,6 +37,7 @@ func TestPlatformCompatConfig(t *testing.T) { name: "foo", src: ":lib", }`, + StubbedBuildDefinitions: []string{"//a/b:lib"}, Filesystem: map[string]string{ "a/b/Android.bp": ` java_library { diff --git a/bp2build/python_binary_conversion_test.go b/bp2build/python_binary_conversion_test.go index 4ccdba786..b69c4eab7 100644 --- a/bp2build/python_binary_conversion_test.go +++ b/bp2build/python_binary_conversion_test.go @@ -30,6 +30,7 @@ func TestPythonBinaryHostSimple(t *testing.T) { "b/e.py": "", "files/data.txt": "", }, + StubbedBuildDefinitions: []string{"bar"}, Blueprint: `python_binary_host { name: "foo", main: "a.py", @@ -42,7 +43,6 @@ func TestPythonBinaryHostSimple(t *testing.T) { python_library_host { name: "bar", srcs: ["b/e.py"], - bazel_module: { bp2build_available: false }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("py_binary", "foo", AttrNameToString{ @@ -196,6 +196,7 @@ func TestPythonBinaryMainIsLabel(t *testing.T) { Description: "python_binary_host main label in same package", ModuleTypeUnderTest: "python_binary_host", ModuleTypeUnderTestFactory: python.PythonBinaryHostFactory, + StubbedBuildDefinitions: []string{"a"}, Blueprint: `python_binary_host { name: "foo", main: ":a", @@ -204,7 +205,6 @@ func TestPythonBinaryMainIsLabel(t *testing.T) { genrule { name: "a", - bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ @@ -282,6 +282,7 @@ func TestPythonBinaryDuplicatesInRequired(t *testing.T) { Description: "python_binary_host duplicates in required attribute of the module and its defaults", ModuleTypeUnderTest: "python_binary_host", ModuleTypeUnderTestFactory: python.PythonBinaryHostFactory, + StubbedBuildDefinitions: []string{"r1", "r2"}, Blueprint: `python_binary_host { name: "foo", main: "a.py", @@ -298,8 +299,8 @@ python_defaults { "r1", "r2", ], -}` + SimpleModuleDoNotConvertBp2build("genrule", "r1") + - SimpleModuleDoNotConvertBp2build("genrule", "r2"), +}` + simpleModule("genrule", "r1") + + simpleModule("genrule", "r2"), ExpectedBazelTargets: []string{ MakeBazelTarget("py_binary", "foo", AttrNameToString{ diff --git a/bp2build/python_library_conversion_test.go b/bp2build/python_library_conversion_test.go index 595acd2e4..497df8091 100644 --- a/bp2build/python_library_conversion_test.go +++ b/bp2build/python_library_conversion_test.go @@ -13,12 +13,13 @@ import ( type PythonLibBp2Build func(ctx android.TopDownMutatorContext) type pythonLibBp2BuildTestCase struct { - description string - filesystem map[string]string - blueprint string - expectedBazelTargets []testBazelTarget - dir string - expectedError error + description string + filesystem map[string]string + blueprint string + expectedBazelTargets []testBazelTarget + dir string + expectedError error + stubbedBuildDefinitions []string } func convertPythonLibTestCaseToBp2build_Host(tc pythonLibBp2BuildTestCase) Bp2buildTestCase { @@ -44,12 +45,13 @@ func convertPythonLibTestCaseToBp2build(tc pythonLibBp2BuildTestCase) Bp2buildTe filesystemCopy[k] = v } return Bp2buildTestCase{ - Description: tc.description, - Filesystem: filesystemCopy, - Blueprint: tc.blueprint, - ExpectedBazelTargets: bp2BuildTargets, - Dir: tc.dir, - ExpectedErr: tc.expectedError, + Description: tc.description, + Filesystem: filesystemCopy, + Blueprint: tc.blueprint, + ExpectedBazelTargets: bp2BuildTargets, + Dir: tc.dir, + ExpectedErr: tc.expectedError, + StubbedBuildDefinitions: tc.stubbedBuildDefinitions, } } @@ -104,6 +106,7 @@ func TestSimplePythonLib(t *testing.T) { "b/e.py": "", "files/data.txt": "", }, + stubbedBuildDefinitions: []string{"bar"}, blueprint: `%s { name: "foo", srcs: ["**/*.py"], @@ -115,7 +118,6 @@ func TestSimplePythonLib(t *testing.T) { python_library { name: "bar", srcs: ["b/e.py"], - bazel_module: { bp2build_available: false }, }`, expectedBazelTargets: []testBazelTarget{ { diff --git a/bp2build/python_test_conversion_test.go b/bp2build/python_test_conversion_test.go index 4ff1fa16d..fa2e48507 100644 --- a/bp2build/python_test_conversion_test.go +++ b/bp2build/python_test_conversion_test.go @@ -15,8 +15,9 @@ package bp2build import ( - "android/soong/python" "testing" + + "android/soong/python" ) func TestPythonTestHostSimple(t *testing.T) { @@ -31,6 +32,7 @@ func TestPythonTestHostSimple(t *testing.T) { "b/e.py": "", "files/data.txt": "", }, + StubbedBuildDefinitions: []string{"bar"}, Blueprint: `python_test_host { name: "foo", main: "a.py", @@ -43,7 +45,6 @@ func TestPythonTestHostSimple(t *testing.T) { python_library_host { name: "bar", srcs: ["b/e.py"], - bazel_module: { bp2build_available: false }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("py_test", "foo", AttrNameToString{ diff --git a/bp2build/soong_config_module_type_conversion_test.go b/bp2build/soong_config_module_type_conversion_test.go index 8302ce87b..5ec6bab29 100644 --- a/bp2build/soong_config_module_type_conversion_test.go +++ b/bp2build/soong_config_module_type_conversion_test.go @@ -15,10 +15,11 @@ package bp2build import ( - "android/soong/android" - "android/soong/cc" "fmt" "testing" + + "android/soong/android" + "android/soong/cc" ) func runSoongConfigModuleTypeTest(t *testing.T, tc Bp2buildTestCase) { @@ -364,9 +365,9 @@ custom_cc_library_static { }` otherDeps := ` -cc_library_static { name: "soc_a_dep", bazel_module: { bp2build_available: false } } -cc_library_static { name: "soc_b_dep", bazel_module: { bp2build_available: false } } -cc_library_static { name: "soc_default_static_dep", bazel_module: { bp2build_available: false } } +cc_library_static { name: "soc_a_dep"} +cc_library_static { name: "soc_b_dep"} +cc_library_static { name: "soc_default_static_dep"} ` runSoongConfigModuleTypeTest(t, Bp2buildTestCase{ @@ -377,6 +378,7 @@ cc_library_static { name: "soc_default_static_dep", bazel_module: { bp2build_ava Filesystem: map[string]string{ "foo/bar/Android.bp": otherDeps, }, + StubbedBuildDefinitions: []string{"//foo/bar:soc_a_dep", "//foo/bar:soc_b_dep", "//foo/bar:soc_default_static_dep"}, ExpectedBazelTargets: []string{`cc_library_static( name = "foo", copts = select({ @@ -763,9 +765,9 @@ cc_binary { }` otherDeps := ` -cc_library { name: "lib_a", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_b", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_default", bazel_module: { bp2build_available: false } } +cc_library { name: "lib_a"} +cc_library { name: "lib_b"} +cc_library { name: "lib_default"} ` runSoongConfigModuleTypeTest(t, Bp2buildTestCase{ @@ -773,6 +775,7 @@ cc_library { name: "lib_default", bazel_module: { bp2build_available: false } } ModuleTypeUnderTest: "cc_binary", ModuleTypeUnderTestFactory: cc.BinaryFactory, Blueprint: bp, + StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b", "//foo/bar:lib_default"}, Filesystem: map[string]string{ "foo/bar/Android.bp": otherDeps, }, @@ -852,15 +855,16 @@ cc_binary { }` otherDeps := ` -cc_library { name: "lib_a", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_b", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_c", bazel_module: { bp2build_available: false } } +cc_library { name: "lib_a"} +cc_library { name: "lib_b"} +cc_library { name: "lib_c"} ` runSoongConfigModuleTypeTest(t, Bp2buildTestCase{ Description: "soong config variables - generates selects for library_linking_strategy", ModuleTypeUnderTest: "cc_binary", ModuleTypeUnderTestFactory: cc.BinaryFactory, + StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b", "//foo/bar:lib_c"}, Blueprint: bp, Filesystem: map[string]string{ "foo/bar/Android.bp": otherDeps, @@ -949,9 +953,9 @@ cc_binary { }` otherDeps := ` -cc_library { name: "lib_a", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_b", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_default", bazel_module: { bp2build_available: false } } +cc_library { name: "lib_a"} +cc_library { name: "lib_b"} +cc_library { name: "lib_default"} ` runSoongConfigModuleTypeTest(t, Bp2buildTestCase{ @@ -962,6 +966,7 @@ cc_library { name: "lib_default", bazel_module: { bp2build_available: false } } Filesystem: map[string]string{ "foo/bar/Android.bp": otherDeps, }, + StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b", "//foo/bar:lib_default"}, ExpectedBazelTargets: []string{`cc_binary( name = "library_linking_strategy_sample_binary", deps = select({ @@ -1031,8 +1036,8 @@ cc_binary { }` otherDeps := ` -cc_library { name: "lib_a", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_b", bazel_module: { bp2build_available: false } } +cc_library { name: "lib_a"} +cc_library { name: "lib_b"} ` runSoongConfigModuleTypeTest(t, Bp2buildTestCase{ @@ -1040,6 +1045,7 @@ cc_library { name: "lib_b", bazel_module: { bp2build_available: false } } ModuleTypeUnderTest: "cc_binary", ModuleTypeUnderTestFactory: cc.BinaryFactory, Blueprint: bp, + StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b"}, Filesystem: map[string]string{ "foo/bar/Android.bp": otherDeps, }, @@ -1118,9 +1124,9 @@ cc_binary { }` otherDeps := ` -cc_library { name: "lib_a", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_b", bazel_module: { bp2build_available: false } } -cc_library { name: "lib_default", bazel_module: { bp2build_available: false } } +cc_library { name: "lib_a"} +cc_library { name: "lib_b"} +cc_library { name: "lib_default"} ` runSoongConfigModuleTypeTest(t, Bp2buildTestCase{ @@ -1131,6 +1137,7 @@ cc_library { name: "lib_default", bazel_module: { bp2build_available: false } } Filesystem: map[string]string{ "foo/bar/Android.bp": otherDeps, }, + StubbedBuildDefinitions: []string{"//foo/bar:lib_a", "//foo/bar:lib_b", "//foo/bar:lib_default"}, ExpectedBazelTargets: []string{`cc_binary( name = "alphabet_binary", deps = select({ diff --git a/bp2build/testing.go b/bp2build/testing.go index 82d40cfe4..dbabc067e 100644 --- a/bp2build/testing.go +++ b/bp2build/testing.go @@ -22,6 +22,7 @@ specific-but-shared functionality among tests in package import ( "fmt" "path/filepath" + "regexp" "sort" "strings" "testing" @@ -37,6 +38,9 @@ var ( buildDir string ) +var labelRegex = regexp.MustCompile(`^//([^: ]+):([^ ]+)$`) +var simpleModuleNameRegex = regexp.MustCompile(`^[^: /]+$`) + func checkError(t *testing.T, errs []error, expectedErr error) bool { t.Helper() @@ -87,9 +91,12 @@ type Bp2buildTestCase struct { // in the directory under test. The BUILD file has the given contents. This BUILD file // will also be treated as "BUILD file to keep" by the simulated bp2build environment. AlreadyExistingBuildContents string - // StubbedBuildDefinitions, if non-empty, adds stub definitions to an already-present source - // BUILD file in the directory under test, for each target name given. These stub definitions - // are added to the BUILD file given in AlreadyExistingBuildContents, if it is set. + + // StubbedBuildDefinitions, if non-empty, adds stub definitions to already-present source + // BUILD files for each bazel label given. The BUILD files with these stub definitions + // are added to the BUILD file given in AlreadyExistingBuildContents. + // Labels may be of the form //pkg/to:target_name (which would be defined in pkg/to/BUILD.bazel) + // or `target_name` (which would be defined in ./BUILD.bazel). StubbedBuildDefinitions []string Filesystem map[string]string @@ -120,32 +127,51 @@ func RunBp2BuildTestCase(t *testing.T, registerModuleTypes func(ctx android.Regi func runBp2BuildTestCaseWithSetup(t *testing.T, extraPreparer android.FixturePreparer, tc Bp2buildTestCase) { t.Helper() + if tc.Filesystem == nil { + tc.Filesystem = map[string]string{} + } checkDir := "." if tc.Dir != "" { checkDir = tc.Dir } keepExistingBuildDirs := tc.KeepBuildFileForDirs buildFilesToParse := []string{} + + if len(tc.StubbedBuildDefinitions) > 0 { + for _, buildDef := range tc.StubbedBuildDefinitions { + globalLabelMatch := labelRegex.FindStringSubmatch(buildDef) + var dir, targetName string + if len(globalLabelMatch) > 0 { + dir = globalLabelMatch[1] + targetName = globalLabelMatch[2] + } else { + if !simpleModuleNameRegex.MatchString(buildDef) { + t.Errorf("Stubbed build definition '%s' must be either a simple module name or of global target syntax (//foo/bar:baz).", buildDef) + return + } + dir = "." + targetName = buildDef + } + buildFilePath := filepath.Join(dir, "BUILD") + tc.Filesystem[buildFilePath] += + MakeBazelTarget( + "bp2build_test_stub", + targetName, + AttrNameToString{}) + keepExistingBuildDirs = append(keepExistingBuildDirs, dir) + buildFilesToParse = append(buildFilesToParse, buildFilePath) + } + } + if len(tc.AlreadyExistingBuildContents) > 0 { + buildFilePath := filepath.Join(checkDir, "BUILD") + tc.Filesystem[buildFilePath] += tc.AlreadyExistingBuildContents + keepExistingBuildDirs = append(keepExistingBuildDirs, checkDir) + buildFilesToParse = append(buildFilesToParse, buildFilePath) + } filesystem := make(map[string][]byte) for f, content := range tc.Filesystem { filesystem[f] = []byte(content) } - alreadyExistingBuildContents := tc.AlreadyExistingBuildContents - if len(tc.StubbedBuildDefinitions) > 0 { - for _, targetName := range tc.StubbedBuildDefinitions { - alreadyExistingBuildContents += MakeBazelTarget( - "bp2build_test_stub", - targetName, - AttrNameToString{}) - } - } - if len(alreadyExistingBuildContents) > 0 { - buildFilePath := filepath.Join(checkDir, "BUILD") - filesystem[buildFilePath] = []byte(alreadyExistingBuildContents) - keepExistingBuildDirs = append(keepExistingBuildDirs, checkDir) - buildFilesToParse = append(buildFilesToParse, buildFilePath) - } - preparers := []android.FixturePreparer{ extraPreparer, android.FixtureMergeMockFs(filesystem), @@ -600,11 +626,10 @@ func registerCustomModuleForBp2buildConversion(ctx *android.TestContext) { ctx.RegisterForBazelConversion() } -func SimpleModuleDoNotConvertBp2build(typ, name string) string { +func simpleModule(typ, name string) string { return fmt.Sprintf(` %s { name: "%s", - bazel_module: { bp2build_available: false }, }`, typ, name) } diff --git a/java/java.go b/java/java.go index fdb635e3f..4f31af685 100644 --- a/java/java.go +++ b/java/java.go @@ -3391,7 +3391,6 @@ func (i *Import) ConvertWithBp2build(ctx android.TopDownMutatorContext) { javaLibraryBazelTargetModuleProperties(), android.CommonAttributes{Name: name + "-neverlink"}, neverlinkAttrs) - } var _ android.MixedBuildBuildable = (*Import)(nil)