From bb638eba5046b5de3cd409c3f3804d50b0d75486 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Sat, 26 Nov 2022 13:36:38 +0000 Subject: Output min_sdk_version to snapshot The min_sdk_version was added to the java_import in Tiramisu. This change will propagate the min_sdk_version set on a java_library to the java_import snapshot. If possible the min_sdk_version will be resolved into a numerical version to ensure consistent behavior across build releases. Bug: 260560424 Test: m nothing BUILD_NUMBER=fixed packages/modules/common/build/mainline_modules_sdks.sh # Ran above before and after this change and made sure that only # Tiramisu, UpsideDownCake and latest were changed and those changes # were the addition of a min_sdk_version property. # # Ran the following command in tm-mainline-prod: # lunch cf_x86_64_phone-userdebug # m ART_MODULE_BUILD_FROM_SOURCE=false nothing`. # # It failed with: # module "prebuilt_okhttp-norepackage" variant "android_common": should support min_sdk_version(33) for "AdServicesApk": min_sdk_version is not specified. # # Unpacked the Tiramisu art snapshot generated with this change into # tm-mainline-prod and reran the previous command and it succeeded. Change-Id: I9d9d730845554fc175d17f38c038e4e3c7d39e07 --- sdk/java_sdk_test.go | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) (limited to 'sdk/java_sdk_test.go') diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go index 51903ce39..2ade146b7 100644 --- a/sdk/java_sdk_test.go +++ b/sdk/java_sdk_test.go @@ -352,6 +352,73 @@ java_import { }) } +func TestSnapshotWithJavaLibrary_MinSdkVersion(t *testing.T) { + runTest := func(t *testing.T, targetBuildRelease, minSdkVersion, expectedMinSdkVersion string) { + result := android.GroupFixturePreparers( + prepareForSdkTestWithJava, + android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { + variables.Platform_version_active_codenames = []string{"S", "Tiramisu", "Unfinalized"} + }), + android.FixtureMergeEnv(map[string]string{ + "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease, + }), + ).RunTestWithBp(t, fmt.Sprintf(` + sdk { + name: "mysdk", + java_header_libs: ["mylib"], + } + + java_library { + name: "mylib", + srcs: ["Test.java"], + system_modules: "none", + sdk_version: "none", + compile_dex: true, + min_sdk_version: "%s", + } + `, minSdkVersion)) + + expectedMinSdkVersionLine := "" + if expectedMinSdkVersion != "" { + expectedMinSdkVersionLine = fmt.Sprintf(" min_sdk_version: %q,\n", expectedMinSdkVersion) + } + + CheckSnapshot(t, result, "mysdk", "", + checkAndroidBpContents(fmt.Sprintf(` +// This is auto-generated. DO NOT EDIT. + +java_import { + name: "mylib", + prefer: false, + visibility: ["//visibility:public"], + apex_available: ["//apex_available:platform"], + jars: ["java/mylib.jar"], +%s} +`, expectedMinSdkVersionLine)), + ) + } + + t.Run("min_sdk_version=S in S", func(t *testing.T) { + // min_sdk_version was not added to java_import until Tiramisu. + runTest(t, "S", "S", "") + }) + + t.Run("min_sdk_version=S in Tiramisu", func(t *testing.T) { + // The canonical form of S is 31. + runTest(t, "Tiramisu", "S", "31") + }) + + t.Run("min_sdk_version=24 in Tiramisu", func(t *testing.T) { + // A numerical min_sdk_version is already in canonical form. + runTest(t, "Tiramisu", "24", "24") + }) + + t.Run("min_sdk_version=Unfinalized in latest", func(t *testing.T) { + // An unfinalized min_sdk_version has no numeric value yet. + runTest(t, "", "Unfinalized", "Unfinalized") + }) +} + func TestSnapshotWithJavaSystemserverLibrary(t *testing.T) { result := android.GroupFixturePreparers( prepareForSdkTestWithJava, -- cgit v1.2.3-59-g8ed1b