diff --git a/bp2build/aar_conversion_test.go b/bp2build/aar_conversion_test.go index 09d9dc103..a24378cdb 100644 --- a/bp2build/aar_conversion_test.go +++ b/bp2build/aar_conversion_test.go @@ -37,19 +37,19 @@ func TestConvertAndroidLibrary(t *testing.T) { }, Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + ` android_library { - name: "TestLib", - srcs: ["lib.java"], - arch: { - arm: { - srcs: ["arm.java"], - }, - x86: { - srcs: ["x86.java"], - } + name: "TestLib", + srcs: ["lib.java"], + arch: { + arm: { + srcs: ["arm.java"], }, - manifest: "manifest/AndroidManifest.xml", - static_libs: ["static_lib_dep"], - java_version: "7", + x86: { + srcs: ["x86.java"], + } + }, + manifest: "manifest/AndroidManifest.xml", + static_libs: ["static_lib_dep"], + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -66,12 +66,9 @@ android_library { "resource_files": `["res/res.png"]`, "deps": `[":static_lib_dep"]`, "exports": `[":static_lib_dep"]`, - "java_version": `"7"`, + "sdk_version": `"current"`, // use as default }), - MakeNeverlinkDuplicateTargetWithAttrs( - "android_library", - "TestLib", - AttrNameToString{"java_version": `"7"`}), + MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) } @@ -87,10 +84,11 @@ func TestConvertAndroidLibraryWithNoSources(t *testing.T) { }, Blueprint: simpleModuleDoNotConvertBp2build("android_library", "lib_dep") + ` android_library { - name: "TestLib", - srcs: [], - manifest: "AndroidManifest.xml", - libs: ["lib_dep"], + name: "TestLib", + srcs: [], + manifest: "AndroidManifest.xml", + libs: ["lib_dep"], + sdk_version: "current", } `, ExpectedErr: fmt.Errorf("Module has direct dependencies but no sources. Bazel will not allow this."), @@ -121,6 +119,7 @@ android_library_import { name: "TestImport", aars: ["import.aar"], static_libs: ["static_lib_dep", "static_import_dep"], + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -133,7 +132,8 @@ android_library_import { ":static_lib_dep", ":static_import_dep", ]`, - "exports": `[":static_import_dep"]`, + "exports": `[":static_import_dep"]`, + "sdk_version": `"current"`, // use as default }, ), MakeNeverlinkDuplicateTarget("android_library", "TestImport"), @@ -153,9 +153,10 @@ func TestConvertAndroidLibraryKotlin(t *testing.T) { }, Blueprint: ` android_library { - name: "TestLib", - srcs: ["a.java", "b.kt"], - common_srcs: ["c.kt"], + name: "TestLib", + srcs: ["a.java", "b.kt"], + common_srcs: ["c.kt"], + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -170,6 +171,7 @@ android_library { "common_srcs": `["c.kt"]`, "manifest": `"AndroidManifest.xml"`, "resource_files": `[]`, + "sdk_version": `"current"`, // use as default }), MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) @@ -186,9 +188,10 @@ func TestConvertAndroidLibraryKotlinCflags(t *testing.T) { }, Blueprint: ` android_library { - name: "TestLib", - srcs: ["a.java", "b.kt"], - kotlincflags: ["-flag1", "-flag2"], + name: "TestLib", + srcs: ["a.java", "b.kt"], + kotlincflags: ["-flag1", "-flag2"], + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -206,6 +209,7 @@ android_library { ]`, "manifest": `"AndroidManifest.xml"`, "resource_files": `[]`, + "sdk_version": `"current"`, // use as default }), MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) diff --git a/bp2build/android_app_conversion_test.go b/bp2build/android_app_conversion_test.go index 8ed94b498..25494a162 100644 --- a/bp2build/android_app_conversion_test.go +++ b/bp2build/android_app_conversion_test.go @@ -44,9 +44,9 @@ func TestMinimalAndroidApp(t *testing.T) { }, Blueprint: ` android_app { - name: "TestApp", - srcs: ["app.java"], - sdk_version: "current", + name: "TestApp", + srcs: ["app.java"], + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -75,17 +75,17 @@ func TestAndroidAppAllSupportedFields(t *testing.T) { }, Blueprint: simpleModuleDoNotConvertBp2build("android_app", "static_lib_dep") + ` android_app { - name: "TestApp", - srcs: ["app.java"], - sdk_version: "current", - package_name: "com.google", - resource_dirs: ["resa", "resb"], - manifest: "manifest/AndroidManifest.xml", - static_libs: ["static_lib_dep"], - java_version: "7", - certificate: "foocert", - required: ["static_lib_dep"], - asset_dirs: ["assets_"], + name: "TestApp", + srcs: ["app.java"], + sdk_version: "current", + package_name: "com.google", + resource_dirs: ["resa", "resb"], + manifest: "manifest/AndroidManifest.xml", + static_libs: ["static_lib_dep"], + java_version: "7", + certificate: "foocert", + required: ["static_lib_dep"], + asset_dirs: ["assets_"], } `, ExpectedBazelTargets: []string{ @@ -120,16 +120,16 @@ func TestAndroidAppArchVariantSrcs(t *testing.T) { }, Blueprint: ` android_app { - name: "TestApp", - sdk_version: "current", - arch: { - arm: { - srcs: ["arm.java"], - }, - x86: { - srcs: ["x86.java"], - } + name: "TestApp", + sdk_version: "current", + arch: { + arm: { + srcs: ["arm.java"], + }, + x86: { + srcs: ["x86.java"], } + } } `, ExpectedBazelTargets: []string{ @@ -154,8 +154,9 @@ func TestAndroidAppCertIsModule(t *testing.T) { Filesystem: map[string]string{}, Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + ` android_app { - name: "TestApp", - certificate: ":foocert", + name: "TestApp", + certificate: ":foocert", + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -163,6 +164,7 @@ android_app { "certificate": `":foocert"`, "manifest": `"AndroidManifest.xml"`, "resource_files": `[]`, + "sdk_version": `"current"`, // use as default }), }}) } @@ -177,8 +179,9 @@ func TestAndroidAppCertIsSrcFile(t *testing.T) { }, Blueprint: ` android_app { - name: "TestApp", - certificate: "foocert", + name: "TestApp", + certificate: "foocert", + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -186,6 +189,7 @@ android_app { "certificate": `"foocert"`, "manifest": `"AndroidManifest.xml"`, "resource_files": `[]`, + "sdk_version": `"current"`, // use as default }), }}) } @@ -200,8 +204,9 @@ func TestAndroidAppCertIsNotSrcOrModule(t *testing.T) { }, Blueprint: ` android_app { - name: "TestApp", - certificate: "foocert", + name: "TestApp", + certificate: "foocert", + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -209,6 +214,7 @@ android_app { "certificate_name": `"foocert"`, "manifest": `"AndroidManifest.xml"`, "resource_files": `[]`, + "sdk_version": `"current"`, // use as default }), }}) } @@ -219,22 +225,20 @@ func TestAndroidAppLibs(t *testing.T) { ModuleTypeUnderTest: "android_app", ModuleTypeUnderTestFactory: java.AndroidAppFactory, Filesystem: map[string]string{}, - Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + ` + Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + + simpleModuleDoNotConvertBp2build("java_library", "barLib") + ` android_app { - name: "foo", - libs: ["barLib"] -} -java_library{ - name: "barLib", + name: "foo", + libs: ["barLib"], + sdk_version: "current", } `, ExpectedBazelTargets: []string{ - MakeBazelTarget("java_library", "barLib", AttrNameToString{}), - MakeNeverlinkDuplicateTarget("java_library", "barLib"), MakeBazelTarget("android_binary", "foo", AttrNameToString{ "manifest": `"AndroidManifest.xml"`, "resource_files": `[]`, "deps": `[":barLib-neverlink"]`, + "sdk_version": `"current"`, // use as default }), }}) } @@ -247,21 +251,18 @@ func TestAndroidAppKotlinSrcs(t *testing.T) { Filesystem: map[string]string{ "res/res.png": "", }, - Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + ` + Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + + simpleModuleDoNotConvertBp2build("java_library", "barLib") + ` android_app { - name: "foo", - srcs: ["a.java", "b.kt"], - certificate: ":foocert", - manifest: "fooManifest.xml", - libs: ["barLib"] -} -java_library{ - name: "barLib", + name: "foo", + srcs: ["a.java", "b.kt"], + certificate: ":foocert", + manifest: "fooManifest.xml", + libs: ["barLib"], + sdk_version: "current", } `, ExpectedBazelTargets: []string{ - MakeBazelTarget("java_library", "barLib", AttrNameToString{}), - MakeNeverlinkDuplicateTarget("java_library", "barLib"), MakeBazelTarget("android_library", "foo_kt", AttrNameToString{ "srcs": `[ "a.java", @@ -270,11 +271,13 @@ java_library{ "manifest": `"fooManifest.xml"`, "resource_files": `["res/res.png"]`, "deps": `[":barLib-neverlink"]`, + "sdk_version": `"current"`, // use as default }), MakeBazelTarget("android_binary", "foo", AttrNameToString{ "deps": `[":foo_kt"]`, "certificate": `":foocert"`, "manifest": `"fooManifest.xml"`, + "sdk_version": `"current"`, // use as default }), }}) } @@ -289,31 +292,33 @@ func TestAndroidAppCommonSrcs(t *testing.T) { }, Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + ` android_app { - name: "foo", - srcs: ["a.java"], - common_srcs: ["b.kt"], - certificate: "foocert", - manifest: "fooManifest.xml", - libs: ["barLib"], + name: "foo", + srcs: ["a.java"], + common_srcs: ["b.kt"], + certificate: "foocert", + manifest: "fooManifest.xml", + libs: ["barLib"], + sdk_version: "current", } java_library{ - name: "barLib", + name: "barLib", + bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ - MakeBazelTarget("java_library", "barLib", AttrNameToString{}), - MakeNeverlinkDuplicateTarget("java_library", "barLib"), MakeBazelTarget("android_library", "foo_kt", AttrNameToString{ "srcs": `["a.java"]`, "common_srcs": `["b.kt"]`, "manifest": `"fooManifest.xml"`, "resource_files": `["res/res.png"]`, "deps": `[":barLib-neverlink"]`, + "sdk_version": `"current"`, // use as default }), MakeBazelTarget("android_binary", "foo", AttrNameToString{ "deps": `[":foo_kt"]`, "certificate_name": `"foocert"`, "manifest": `"fooManifest.xml"`, + "sdk_version": `"current"`, // use as default }), }}) } @@ -328,11 +333,12 @@ func TestAndroidAppKotlinCflags(t *testing.T) { }, Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + ` android_app { - name: "foo", - srcs: ["a.java", "b.kt"], - certificate: ":foocert", - manifest: "fooManifest.xml", - kotlincflags: ["-flag1", "-flag2"], + name: "foo", + srcs: ["a.java", "b.kt"], + certificate: ":foocert", + manifest: "fooManifest.xml", + kotlincflags: ["-flag1", "-flag2"], + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -347,11 +353,13 @@ android_app { "-flag1", "-flag2", ]`, + "sdk_version": `"current"`, // use as default }), MakeBazelTarget("android_binary", "foo", AttrNameToString{ "deps": `[":foo_kt"]`, "certificate": `":foocert"`, "manifest": `"fooManifest.xml"`, + "sdk_version": `"current"`, }), }}) } @@ -364,11 +372,11 @@ func TestAndroidAppManifestSdkVersionsProvided(t *testing.T) { Filesystem: map[string]string{}, Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + ` android_app { - name: "foo", - sdk_version: "current", - min_sdk_version: "24", - max_sdk_version: "30", - target_sdk_version: "29", + name: "foo", + sdk_version: "current", + min_sdk_version: "24", + max_sdk_version: "30", + target_sdk_version: "29", } `, ExpectedBazelTargets: []string{ @@ -393,8 +401,8 @@ func TestAndroidAppMinAndTargetSdkDefaultToSdkVersion(t *testing.T) { Filesystem: map[string]string{}, Blueprint: simpleModuleDoNotConvertBp2build("filegroup", "foocert") + ` android_app { - name: "foo", - sdk_version: "30", + name: "foo", + sdk_version: "30", } `, ExpectedBazelTargets: []string{ diff --git a/bp2build/java_host_for_device_conversion_test.go b/bp2build/java_host_for_device_conversion_test.go index 448cba461..1fa712657 100644 --- a/bp2build/java_host_for_device_conversion_test.go +++ b/bp2build/java_host_for_device_conversion_test.go @@ -48,6 +48,7 @@ java_library { name: "java-lib-2", srcs: ["b.java"], bazel_module: { bp2build_available: true }, + sdk_version: "current", }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_host_for_device", "java-lib-1", AttrNameToString{ @@ -57,7 +58,8 @@ java_library { "sdk_version": `"none"`, }), MakeBazelTarget("java_library", "java-lib-2", AttrNameToString{ - "srcs": `["b.java"]`, + "srcs": `["b.java"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-2"), }, diff --git a/bp2build/java_library_conversion_test.go b/bp2build/java_library_conversion_test.go index 5c769a53c..7429ae6df 100644 --- a/bp2build/java_library_conversion_test.go +++ b/bp2build/java_library_conversion_test.go @@ -42,22 +42,26 @@ func TestJavaLibrary(t *testing.T) { srcs: ["a.java", "b.java"], exclude_srcs: ["b.java"], libs: ["java-lib-2"], + sdk_version: "current", bazel_module: { bp2build_available: true }, } java_library { name: "java-lib-2", srcs: ["b.java"], + sdk_version: "current", bazel_module: { bp2build_available: true }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ - "srcs": `["a.java"]`, - "deps": `[":java-lib-2-neverlink"]`, + "srcs": `["a.java"]`, + "deps": `[":java-lib-2-neverlink"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), MakeBazelTarget("java_library", "java-lib-2", AttrNameToString{ - "srcs": `["b.java"]`, + "srcs": `["b.java"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-2"), }, @@ -71,18 +75,21 @@ func TestJavaLibraryConvertsStaticLibsToDepsAndExports(t *testing.T) { srcs: ["a.java"], libs: ["java-lib-2"], static_libs: ["java-lib-3"], + sdk_version: "current", bazel_module: { bp2build_available: true }, } 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{ @@ -92,7 +99,8 @@ java_library { ":java-lib-2-neverlink", ":java-lib-3", ]`, - "exports": `[":java-lib-3"]`, + "exports": `[":java-lib-3"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -104,6 +112,7 @@ func TestJavaLibraryConvertsStaticLibsToExportsIfNoSrcs(t *testing.T) { Blueprint: `java_library { name: "java-lib-1", static_libs: ["java-lib-2"], + sdk_version: "current", bazel_module: { bp2build_available: true }, } @@ -114,25 +123,40 @@ java_library { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ - "exports": `[":java-lib-2"]`, + "exports": `[":java-lib-2"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, }) } +func TestJavaLibraryFailsToConvertNoSdkVersion(t *testing.T) { + runJavaLibraryTestCase(t, Bp2buildTestCase{ + Blueprint: ` +java_library { + name: "lib", + bazel_module: { bp2build_available: true }, +} +`, + ExpectedBazelTargets: []string{}, // no targets expected because sdk_version is not set + }) +} + func TestJavaLibraryFailsToConvertLibsWithNoSrcs(t *testing.T) { runJavaLibraryTestCase(t, Bp2buildTestCase{ ExpectedErr: fmt.Errorf("Module has direct dependencies but no sources. Bazel will not allow this."), 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", srcs: ["a.java"], + sdk_version: "current", bazel_module: { bp2build_available: false }, }`, ExpectedBazelTargets: []string{}, @@ -144,6 +168,7 @@ func TestJavaLibraryPlugins(t *testing.T) { Blueprint: `java_library { name: "java-lib-1", plugins: ["java-plugin-1"], + sdk_version: "current", bazel_module: { bp2build_available: true }, } @@ -154,7 +179,8 @@ java_plugin { }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ - "plugins": `[":java-plugin-1"]`, + "plugins": `[":java-plugin-1"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -169,16 +195,21 @@ func TestJavaLibraryJavaVersion(t *testing.T) { name: "java-lib-1", srcs: ["a.java"], java_version: "11", + sdk_version: "current", }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ "srcs": `["a.java"]`, "java_version": `"11"`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTargetWithAttrs( "java_library", "java-lib-1", - AttrNameToString{"java_version": `"11"`}), + AttrNameToString{ + "java_version": `"11"`, + "sdk_version": `"current"`, + }), }, }) } @@ -189,6 +220,7 @@ func TestJavaLibraryErrorproneEnabledManually(t *testing.T) { name: "java-lib-1", srcs: ["a.java"], javacflags: ["-Xsuper-fast"], + sdk_version: "current", errorprone: { enabled: true, javacflags: ["-Xep:SpeedLimit:OFF"], @@ -209,6 +241,7 @@ java_plugin { "plugins": `[":plugin2"]`, "srcs": `["a.java"]`, "errorprone_force_enable": `True`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -222,6 +255,7 @@ func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledByDefault(t *testing.T Blueprint: `java_library { name: "java-lib-1", srcs: ["a.java"], + sdk_version: "current", javacflags: ["-Xsuper-fast"], errorprone: { javacflags: ["-Xep:SpeedLimit:OFF"], @@ -229,8 +263,9 @@ func TestJavaLibraryErrorproneJavacflagsErrorproneDisabledByDefault(t *testing.T }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ - "javacopts": `["-Xsuper-fast"]`, - "srcs": `["a.java"]`, + "javacopts": `["-Xsuper-fast"]`, + "srcs": `["a.java"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -243,6 +278,7 @@ func TestJavaLibraryErrorproneDisabledManually(t *testing.T) { name: "java-lib-1", srcs: ["a.java"], javacflags: ["-Xsuper-fast"], + sdk_version: "current", errorprone: { enabled: false, }, @@ -253,7 +289,8 @@ func TestJavaLibraryErrorproneDisabledManually(t *testing.T) { "-Xsuper-fast", "-XepDisableAllChecks", ]`, - "srcs": `["a.java"]`, + "srcs": `["a.java"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -266,14 +303,15 @@ func TestJavaLibraryLogTags(t *testing.T) { ModuleTypeUnderTest: "java_library", ModuleTypeUnderTestFactory: java.LibraryFactory, Blueprint: `java_library { - name: "example_lib", - srcs: [ - "a.java", - "b.java", - "a.logtag", - "b.logtag", - ], - bazel_module: { bp2build_available: true }, + name: "example_lib", + srcs: [ + "a.java", + "b.java", + "a.logtag", + "b.logtag", + ], + sdk_version: "current", + bazel_module: { bp2build_available: true }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("event_log_tags", "example_lib_logtags", AttrNameToString{ @@ -288,6 +326,7 @@ func TestJavaLibraryLogTags(t *testing.T) { "b.java", ":example_lib_logtags", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "example_lib"), }}) @@ -301,9 +340,10 @@ func TestJavaLibraryResources(t *testing.T) { "adir/res/b.res": "", "adir/res/dir1/b.res": "", "adir/Android.bp": `java_library { - name: "java-lib-1", - java_resources: ["res/a.res", "res/b.res"], - bazel_module: { bp2build_available: true }, + name: "java-lib-1", + java_resources: ["res/a.res", "res/b.res"], + sdk_version: "current", + bazel_module: { bp2build_available: true }, }`, }, Blueprint: "", @@ -314,6 +354,7 @@ func TestJavaLibraryResources(t *testing.T) { "res/b.res", ]`, "resource_strip_prefix": `"adir"`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -328,8 +369,9 @@ func TestJavaLibraryResourceDirs(t *testing.T) { "res/dir1/b.res": "", }, Blueprint: `java_library { - name: "java-lib-1", + name: "java-lib-1", java_resource_dirs: ["res"], + sdk_version: "current", }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ @@ -339,6 +381,7 @@ func TestJavaLibraryResourceDirs(t *testing.T) { "res/b.res", "res/dir1/b.res", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -352,14 +395,16 @@ func TestJavaLibraryResourcesExcludeDir(t *testing.T) { "res/exclude/b.res": "", }, Blueprint: `java_library { - name: "java-lib-1", + name: "java-lib-1", java_resource_dirs: ["res"], + sdk_version: "current", exclude_java_resource_dirs: ["res/exclude"], }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_library", "java-lib-1", AttrNameToString{ "resource_strip_prefix": `"res"`, "resources": `["res/a.res"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -374,8 +419,9 @@ func TestJavaLibraryResourcesExcludeFile(t *testing.T) { "res/dir1/exclude.res": "", }, Blueprint: `java_library { - name: "java-lib-1", + name: "java-lib-1", java_resource_dirs: ["res"], + sdk_version: "current", exclude_java_resources: ["res/dir1/exclude.res"], }`, ExpectedBazelTargets: []string{ @@ -385,6 +431,7 @@ func TestJavaLibraryResourcesExcludeFile(t *testing.T) { "res/a.res", "res/dir1/b.res", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -398,8 +445,9 @@ func TestJavaLibraryResourcesWithMultipleDirs(t *testing.T) { "res1/b.res": "", }, Blueprint: `java_library { - name: "java-lib-1", + name: "java-lib-1", java_resource_dirs: ["res", "res1"], + sdk_version: "current", }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_resources", "java-lib-1_resource_dir_res1", AttrNameToString{ @@ -410,6 +458,7 @@ func TestJavaLibraryResourcesWithMultipleDirs(t *testing.T) { "additional_resources": `["java-lib-1_resource_dir_res1"]`, "resources": `["res/a.res"]`, "resource_strip_prefix": `"res"`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -422,9 +471,10 @@ func TestJavaLibraryJavaResourcesAndResourceDirs(t *testing.T) { "resdir/a.res": "", }, Blueprint: `java_library { - name: "java-lib-1", - java_resources: ["res1", "res2"], - java_resource_dirs: ["resdir"], + name: "java-lib-1", + java_resources: ["res1", "res2"], + java_resource_dirs: ["resdir"], + sdk_version: "current", }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_resources", "java-lib-1_resource_dir_resdir", AttrNameToString{ @@ -438,6 +488,7 @@ func TestJavaLibraryJavaResourcesAndResourceDirs(t *testing.T) { "res1", "res2", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -450,14 +501,15 @@ func TestJavaLibraryAidl(t *testing.T) { ModuleTypeUnderTest: "java_library", ModuleTypeUnderTestFactory: java.LibraryFactory, Blueprint: `java_library { - name: "example_lib", - srcs: [ - "a.java", - "b.java", - "a.aidl", - "b.aidl", - ], - bazel_module: { bp2build_available: true }, + name: "example_lib", + srcs: [ + "a.java", + "b.java", + "a.aidl", + "b.aidl", + ], + bazel_module: { bp2build_available: true }, + sdk_version: "current", }`, ExpectedBazelTargets: []string{ MakeBazelTarget("aidl_library", "example_lib_aidl_library", AttrNameToString{ @@ -476,6 +528,7 @@ func TestJavaLibraryAidl(t *testing.T) { "a.java", "b.java", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "example_lib"), }}) @@ -488,12 +541,13 @@ func TestJavaLibraryAidlSrcsNoFileGroup(t *testing.T) { ModuleTypeUnderTestFactory: java.LibraryFactory, Blueprint: ` java_library { - name: "example_lib", - srcs: [ - "a.java", - "b.aidl", - ], - bazel_module: { bp2build_available: true }, + name: "example_lib", + srcs: [ + "a.java", + "b.aidl", + ], + sdk_version: "current", + bazel_module: { bp2build_available: true }, }`, ExpectedBazelTargets: []string{ MakeBazelTarget("aidl_library", "example_lib_aidl_library", AttrNameToString{ @@ -503,9 +557,10 @@ java_library { "deps": `[":example_lib_aidl_library"]`, }), MakeBazelTarget("java_library", "example_lib", AttrNameToString{ - "deps": `[":example_lib_java_aidl_library"]`, - "exports": `[":example_lib_java_aidl_library"]`, - "srcs": `["a.java"]`, + "deps": `[":example_lib_java_aidl_library"]`, + "exports": `[":example_lib_java_aidl_library"]`, + "srcs": `["a.java"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "example_lib"), }, @@ -535,14 +590,15 @@ filegroup { ], } java_library { - name: "example_lib", - srcs: [ - "a.java", - "b.java", - ":aidl_files", - ":random_other_files", - ], - bazel_module: { bp2build_available: true }, + name: "example_lib", + srcs: [ + "a.java", + "b.java", + ":aidl_files", + ":random_other_files", + ], + sdk_version: "current", + bazel_module: { bp2build_available: true }, }`, ExpectedBazelTargets: []string{ MakeBazelTargetNoRestrictions("aidl_library", "aidl_files", AttrNameToString{ @@ -563,6 +619,7 @@ java_library { "b.java", ":random_other_files", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "example_lib"), MakeBazelTargetNoRestrictions("filegroup", "random_other_files", AttrNameToString{ @@ -585,24 +642,26 @@ func TestJavaLibraryAidlNonAdjacentAidlFilegroup(t *testing.T) { Filesystem: map[string]string{ "path/to/A/Android.bp": ` filegroup { - name: "A_aidl", - srcs: ["aidl/A.aidl"], - path: "aidl", + name: "A_aidl", + srcs: ["aidl/A.aidl"], + path: "aidl", }`, }, Blueprint: ` java_library { - name: "foo", - srcs: [ - ":A_aidl", - ], + name: "foo", + srcs: [ + ":A_aidl", + ], + sdk_version: "current", }`, ExpectedBazelTargets: []string{ MakeBazelTarget("java_aidl_library", "foo_java_aidl_library", AttrNameToString{ "deps": `["//path/to/A:A_aidl"]`, }), MakeBazelTarget("java_library", "foo", AttrNameToString{ - "exports": `[":foo_java_aidl_library"]`, + "exports": `[":foo_java_aidl_library"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "foo"), }, @@ -619,16 +678,17 @@ func TestConvertArmNeonVariant(t *testing.T) { ModuleTypeUnderTestFactory: java.AndroidLibraryFactory, Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + ` android_library { - name: "TestLib", - manifest: "manifest/AndroidManifest.xml", - srcs: ["lib.java"], - arch: { - arm: { - neon: { - srcs: ["arm_neon.java"], - }, - }, - }, + name: "TestLib", + manifest: "manifest/AndroidManifest.xml", + srcs: ["lib.java"], + sdk_version: "current", + arch: { + arm: { + neon: { + srcs: ["arm_neon.java"], + }, + }, + }, } `, ExpectedBazelTargets: []string{ @@ -642,6 +702,7 @@ android_library { })`, "manifest": `"manifest/AndroidManifest.xml"`, "resource_files": `[]`, + "sdk_version": `"current"`, // use as default }), MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) @@ -655,19 +716,20 @@ func TestConvertMultipleArchFeatures(t *testing.T) { ModuleTypeUnderTestFactory: java.AndroidLibraryFactory, Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + ` android_library { - name: "TestLib", - manifest: "manifest/AndroidManifest.xml", - srcs: ["lib.java"], - arch: { - x86: { - ssse3: { - srcs: ["ssse3.java"], - }, - sse4_1: { - srcs: ["sse4_1.java"], - }, - }, - }, + name: "TestLib", + manifest: "manifest/AndroidManifest.xml", + srcs: ["lib.java"], + sdk_version: "current", + arch: { + x86: { + ssse3: { + srcs: ["ssse3.java"], + }, + sse4_1: { + srcs: ["sse4_1.java"], + }, + }, + }, } `, ExpectedBazelTargets: []string{ @@ -686,6 +748,7 @@ android_library { })`, "manifest": `"manifest/AndroidManifest.xml"`, "resource_files": `[]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) @@ -699,17 +762,18 @@ func TestConvertExcludeSrcsArchFeature(t *testing.T) { ModuleTypeUnderTestFactory: java.AndroidLibraryFactory, Blueprint: simpleModuleDoNotConvertBp2build("android_library", "static_lib_dep") + ` android_library { - name: "TestLib", - manifest: "manifest/AndroidManifest.xml", - srcs: ["lib.java"], - arch: { - arm: { - srcs: ["arm_non_neon.java"], - neon: { - exclude_srcs: ["arm_non_neon.java"], - }, - }, - }, + name: "TestLib", + manifest: "manifest/AndroidManifest.xml", + srcs: ["lib.java"], + arch: { + arm: { + srcs: ["arm_non_neon.java"], + neon: { + exclude_srcs: ["arm_non_neon.java"], + }, + }, + }, + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -724,6 +788,7 @@ android_library { })`, "manifest": `"manifest/AndroidManifest.xml"`, "resource_files": `[]`, + "sdk_version": `"current"`, // use as default }), MakeNeverlinkDuplicateTarget("android_library", "TestLib"), }}) @@ -736,6 +801,7 @@ func TestJavaLibraryKotlinSrcs(t *testing.T) { name: "java-lib-1", srcs: ["a.java", "b.java", "c.kt"], bazel_module: { bp2build_available: true }, + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -745,6 +811,7 @@ func TestJavaLibraryKotlinSrcs(t *testing.T) { "b.java", "c.kt", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("kt_jvm_library", "java-lib-1"), }, @@ -759,6 +826,7 @@ func TestJavaLibraryKotlincflags(t *testing.T) { srcs: [ "a.kt"], kotlincflags: ["-flag1", "-flag2"], bazel_module: { bp2build_available: true }, + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -768,6 +836,7 @@ func TestJavaLibraryKotlincflags(t *testing.T) { "-flag1", "-flag2", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("kt_jvm_library", "java-lib-1"), }, @@ -782,6 +851,7 @@ func TestJavaLibraryKotlinCommonSrcs(t *testing.T) { srcs: ["a.java", "b.java"], common_srcs: ["c.kt"], bazel_module: { bp2build_available: true }, + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -791,6 +861,7 @@ func TestJavaLibraryKotlinCommonSrcs(t *testing.T) { "b.java", ]`, "common_srcs": `["c.kt"]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("kt_jvm_library", "java-lib-1"), }, @@ -804,6 +875,7 @@ func TestJavaLibraryArchVariantDeps(t *testing.T) { name: "java-lib-1", srcs: ["a.java"], libs: ["java-lib-2"], + sdk_version: "current", target: { android: { libs: ["java-lib-3"], @@ -813,16 +885,19 @@ func TestJavaLibraryArchVariantDeps(t *testing.T) { bazel_module: { bp2build_available: true }, } - java_library{ - name: "java-lib-2", + java_library{ + name: "java-lib-2", + bazel_module: { bp2build_available: false }, } - java_library{ - name: "java-lib-3", + java_library{ + name: "java-lib-3", + bazel_module: { bp2build_available: false }, } - java_library{ - name: "java-lib-4", + java_library{ + name: "java-lib-4", + bazel_module: { bp2build_available: false }, } `, ExpectedBazelTargets: []string{ @@ -839,14 +914,9 @@ func TestJavaLibraryArchVariantDeps(t *testing.T) { ], "//conditions:default": [], })`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), - MakeBazelTarget("java_library", "java-lib-2", AttrNameToString{}), - MakeNeverlinkDuplicateTarget("java_library", "java-lib-2"), - MakeBazelTarget("java_library", "java-lib-3", AttrNameToString{}), - MakeNeverlinkDuplicateTarget("java_library", "java-lib-3"), - MakeBazelTarget("java_library", "java-lib-4", AttrNameToString{}), - MakeNeverlinkDuplicateTarget("java_library", "java-lib-4"), }, }) } @@ -857,6 +927,7 @@ func TestJavaLibraryArchVariantSrcsWithExcludes(t *testing.T) { Blueprint: `java_library { name: "java-lib-1", srcs: ["a.java", "b.java"], + sdk_version: "current", target: { android: { exclude_srcs: ["a.java"], @@ -871,6 +942,7 @@ func TestJavaLibraryArchVariantSrcsWithExcludes(t *testing.T) { "//build/bazel/platforms/os:android": [], "//conditions:default": ["a.java"], })`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), }, @@ -888,6 +960,7 @@ func TestJavaLibraryJavaResourcesSingleFilegroup(t *testing.T) { Blueprint: `java_library { name: "java-lib-1", srcs: ["a.java"], + sdk_version: "current", java_resources: [":filegroup1"], bazel_module: { bp2build_available: true }, } @@ -904,6 +977,7 @@ filegroup { "srcs": `["a.java"]`, "resources": `[":filegroup1"]`, "resource_strip_prefix": `"foo"`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), MakeBazelTargetNoRestrictions("filegroup", "filegroup1", AttrNameToString{ @@ -927,6 +1001,7 @@ func TestJavaLibraryJavaResourcesMultipleFilegroup(t *testing.T) { name: "java-lib-1", srcs: ["a.java"], java_resources: ["a.res", ":filegroup1", ":filegroup2"], + sdk_version: "current", bazel_module: { bp2build_available: true }, } @@ -959,6 +1034,7 @@ filegroup { "java-lib-1_filegroup_resources_filegroup1", "java-lib-1_filegroup_resources_filegroup2", ]`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-lib-1"), MakeBazelTargetNoRestrictions("filegroup", "filegroup1", AttrNameToString{ diff --git a/bp2build/java_proto_conversion_test.go b/bp2build/java_proto_conversion_test.go index f546cf45d..5d6b08814 100644 --- a/bp2build/java_proto_conversion_test.go +++ b/bp2build/java_proto_conversion_test.go @@ -68,6 +68,7 @@ func TestJavaProto(t *testing.T) { type: "%s", }, srcs: ["a.proto"], + sdk_version: "current", }` protoLibrary := MakeBazelTarget("proto_library", "java-protos_proto", AttrNameToString{ @@ -86,10 +87,12 @@ func TestJavaProto(t *testing.T) { tc.javaLibraryType, javaLibraryName, AttrNameToString{ - "deps": `[":java-protos_proto"]`, + "deps": `[":java-protos_proto"]`, + "sdk_version": `"current"`, }), MakeBazelTarget("java_library", "java-protos", AttrNameToString{ - "exports": fmt.Sprintf(`[":%s"]`, javaLibraryName), + "exports": fmt.Sprintf(`[":%s"]`, javaLibraryName), + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTarget("java_library", "java-protos"), }, @@ -104,6 +107,7 @@ func TestJavaProtoDefault(t *testing.T) { name: "java-protos", srcs: ["a.proto"], java_version: "7", + sdk_version: "current", } `, ExpectedBazelTargets: []string{ @@ -116,15 +120,20 @@ func TestJavaProtoDefault(t *testing.T) { AttrNameToString{ "deps": `[":java-protos_proto"]`, "java_version": `"7"`, + "sdk_version": `"current"`, }), MakeBazelTarget("java_library", "java-protos", AttrNameToString{ "exports": `[":java-protos_java_proto_lite"]`, "java_version": `"7"`, + "sdk_version": `"current"`, }), MakeNeverlinkDuplicateTargetWithAttrs( "java_library", "java-protos", - AttrNameToString{"java_version": `"7"`}), + AttrNameToString{ + "java_version": `"7"`, + "sdk_version": `"current"`, + }), }, }) } diff --git a/bp2build/testing.go b/bp2build/testing.go index 18ae82de9..42d955e42 100644 --- a/bp2build/testing.go +++ b/bp2build/testing.go @@ -688,7 +688,9 @@ func makeCcStubSuiteTargets(name string, attrs AttrNameToString) string { } func MakeNeverlinkDuplicateTarget(moduleType string, name string) string { - return MakeNeverlinkDuplicateTargetWithAttrs(moduleType, name, AttrNameToString{}) + return MakeNeverlinkDuplicateTargetWithAttrs(moduleType, name, AttrNameToString{ + "sdk_version": `"current"`, // use as default + }) } func MakeNeverlinkDuplicateTargetWithAttrs(moduleType string, name string, extraAttrs AttrNameToString) string { diff --git a/java/java.go b/java/java.go index 4b01c316d..6c448a2f0 100644 --- a/java/java.go +++ b/java/java.go @@ -2905,6 +2905,11 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) var deps bazel.LabelListAttribute var staticDeps bazel.LabelListAttribute + if proptools.String(m.deviceProperties.Sdk_version) == "" && m.DeviceSupported() { + ctx.MarkBp2buildUnconvertible(bp2build_metrics_proto.UnconvertedReasonType_PROPERTY_UNSUPPORTED, "sdk_version unset") + return &javaCommonAttributes{}, &bp2BuildJavaInfo{}, false + } + archVariantProps := m.GetArchVariantProperties(ctx, &CommonProperties{}) for axis, configToProps := range archVariantProps { for config, _props := range configToProps {