From bdcef7bfb8693a3cc2acd9d5395aa5976a5e1271 Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Sun, 19 Feb 2023 18:40:44 +0000 Subject: [PATCH] Refresh the latest script versions + preparation for local mode. Bug: 260755259 Test: local run Change-Id: I45d3651bd4b837e1338535f98d7256ca9b47e089 --- tools/finalization/build-step-1-and-2.sh | 23 ++++ tools/finalization/build-step-1-and-m.sh | 19 +++ tools/finalization/build-step-1.sh | 13 +- ...d_soong_java_droidstubs.go.apply_hack.diff | 30 ++++ ..._soong_java_droidstubs.go.revert_hack.diff | 26 ++++ tools/finalization/environment.sh | 5 +- .../finalize-aidl-vndk-sdk-resources.sh | 41 ++++-- tools/finalization/finalize-sdk-rel.sh | 23 +++- .../frameworks_base.apply_hack.diff | 129 ++++++++++++++++++ .../frameworks_base.revert_hack.diff | 125 +++++++++++++++++ .../localonly-finalize-mainline-sdk.sh | 6 +- tools/finalization/step-1.sh | 7 +- tools/finalization/step-2.sh | 8 +- 13 files changed, 416 insertions(+), 39 deletions(-) create mode 100755 tools/finalization/build-step-1-and-2.sh create mode 100755 tools/finalization/build-step-1-and-m.sh create mode 100644 tools/finalization/build_soong_java_droidstubs.go.apply_hack.diff create mode 100644 tools/finalization/build_soong_java_droidstubs.go.revert_hack.diff create mode 100644 tools/finalization/frameworks_base.apply_hack.diff create mode 100644 tools/finalization/frameworks_base.revert_hack.diff diff --git a/tools/finalization/build-step-1-and-2.sh b/tools/finalization/build-step-1-and-2.sh new file mode 100755 index 0000000000..eaaf0cd3a4 --- /dev/null +++ b/tools/finalization/build-step-1-and-2.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -ex + +function finalize_main_step12() { + local top="$(dirname "$0")"/../../../.. + source $top/build/make/tools/finalization/environment.sh + + # default target to modify tree and build SDK + local m="$top/build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=aosp_arm64 TARGET_BUILD_VARIANT=userdebug" + + # SDK codename -> int + source $top/build/make/tools/finalization/finalize-aidl-vndk-sdk-resources.sh + + # Platform/Mainline SDKs build and move to prebuilts + source $top/build/make/tools/finalization/localonly-finalize-mainline-sdk.sh + + # REL + source $top/build/make/tools/finalization/finalize-sdk-rel.sh +} + +finalize_main_step12 + diff --git a/tools/finalization/build-step-1-and-m.sh b/tools/finalization/build-step-1-and-m.sh new file mode 100755 index 0000000000..0e7129f342 --- /dev/null +++ b/tools/finalization/build-step-1-and-m.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -ex + +function finalize_main_step1_and_m() { + local top="$(dirname "$0")"/../../../.. + source $top/build/make/tools/finalization/build-step-1.sh + + local m="$top/build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=aosp_arm64 TARGET_BUILD_VARIANT=userdebug" + + # This command tests: + # The release state for AIDL. + # ABI difference between user and userdebug builds. + # Resource/SDK finalization. + AIDL_FROZEN_REL=true $m +} + +finalize_main_step1_and_m + diff --git a/tools/finalization/build-step-1.sh b/tools/finalization/build-step-1.sh index 0f562b487c..edf497ed03 100755 --- a/tools/finalization/build-step-1.sh +++ b/tools/finalization/build-step-1.sh @@ -2,21 +2,16 @@ set -ex -function finalize_main() { - local top="$(dirname "$0")"/../.. +function finalize_main_step1() { + local top="$(dirname "$0")"/../../../.. + source $top/build/make/tools/finalization/environment.sh # default target to modify tree and build SDK local m="$top/build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=aosp_arm64 TARGET_BUILD_VARIANT=userdebug" # Build finalization artifacts. source $top/build/make/tools/finalization/finalize-aidl-vndk-sdk-resources.sh - - # This command tests: - # The release state for AIDL. - # ABI difference between user and userdebug builds. - # Resource/SDK finalization. - AIDL_FROZEN_REL=true $m } -finalize_main +finalize_main_step1 diff --git a/tools/finalization/build_soong_java_droidstubs.go.apply_hack.diff b/tools/finalization/build_soong_java_droidstubs.go.apply_hack.diff new file mode 100644 index 0000000000..9ced2a97b1 --- /dev/null +++ b/tools/finalization/build_soong_java_droidstubs.go.apply_hack.diff @@ -0,0 +1,30 @@ +From 12eea1512f2612f41b5cf7004ee2e6a189d548d7 Mon Sep 17 00:00:00 2001 +From: Alex Buynytskyy +Date: Thu, 01 Sep 2022 10:44:21 -0700 +Subject: [PATCH] Hacky workaround for half-finalized builds. + +Metalava increments the SDK level by one when it's not "REL", so we +temporarily force the build to be "REL" while we're still in the +process of finalizing it. + +This CL must be reverted as part of actually declaring "REL". + +Bug: none +Test: Build +Change-Id: I8c24c6dabec0270bc384d8465c582a4ddbe8bd6c +--- + +diff --git a/java/droidstubs.go b/java/droidstubs.go +index 5777b18..ec4a0f4 100644 +--- a/java/droidstubs.go ++++ b/java/droidstubs.go +@@ -386,7 +386,8 @@ + } + if apiVersions != nil { + cmd.FlagWithArg("--current-version ", ctx.Config().PlatformSdkVersion().String()) +- cmd.FlagWithArg("--current-codename ", ctx.Config().PlatformSdkCodename()) ++ // STOPSHIP: RESTORE THIS LOGIC WHEN DECLARING "REL" BUILD ++ // cmd.FlagWithArg("--current-codename ", ctx.Config().PlatformSdkCodename()) + cmd.FlagWithInput("--apply-api-levels ", apiVersions) + } + } diff --git a/tools/finalization/build_soong_java_droidstubs.go.revert_hack.diff b/tools/finalization/build_soong_java_droidstubs.go.revert_hack.diff new file mode 100644 index 0000000000..7dec97c0f3 --- /dev/null +++ b/tools/finalization/build_soong_java_droidstubs.go.revert_hack.diff @@ -0,0 +1,26 @@ +From c0f6e8fe4c3b6803be97aeea6683631d616412f4 Mon Sep 17 00:00:00 2001 +From: Alex Buynytskyy +Date: Thu, 08 Dec 2022 17:52:52 +0000 +Subject: [PATCH] Revert "Hacky workaround for half-finalized builds." + +This reverts commit 12eea1512f2612f41b5cf7004ee2e6a189d548d7. + +Reason for revert: finalization-2 + +Change-Id: Ifc801271628808693b1cb20206f8f81c9a6c694d +--- + +diff --git a/java/droidstubs.go b/java/droidstubs.go +index ec4a0f4..5777b18 100644 +--- a/java/droidstubs.go ++++ b/java/droidstubs.go +@@ -386,8 +386,7 @@ + } + if apiVersions != nil { + cmd.FlagWithArg("--current-version ", ctx.Config().PlatformSdkVersion().String()) +- // STOPSHIP: RESTORE THIS LOGIC WHEN DECLARING "REL" BUILD +- // cmd.FlagWithArg("--current-codename ", ctx.Config().PlatformSdkCodename()) ++ cmd.FlagWithArg("--current-codename ", ctx.Config().PlatformSdkCodename()) + cmd.FlagWithInput("--apply-api-levels ", apiVersions) + } + } diff --git a/tools/finalization/environment.sh b/tools/finalization/environment.sh index 125c70406d..983e19dc4a 100755 --- a/tools/finalization/environment.sh +++ b/tools/finalization/environment.sh @@ -5,12 +5,11 @@ set -ex export FINAL_BUG_ID='0' export FINAL_PLATFORM_CODENAME='UpsideDownCake' +export CURRENT_PLATFORM_CODENAME='VanillaIceCream' export FINAL_PLATFORM_CODENAME_JAVA='UPSIDE_DOWN_CAKE' export FINAL_PLATFORM_SDK_VERSION='34' export FINAL_PLATFORM_VERSION='14' export FINAL_BUILD_PREFIX='UP1A' -export FINAL_MAINLINE_EXTENSION='6' -export FINAL_MAINLINE_SDK_COMMIT_MESSAGE='' -export FINAL_MAINLINE_SDK_BUILD_ID=0 +export FINAL_MAINLINE_EXTENSION='6' \ No newline at end of file diff --git a/tools/finalization/finalize-aidl-vndk-sdk-resources.sh b/tools/finalization/finalize-aidl-vndk-sdk-resources.sh index 019ace6e4c..61910d3da3 100755 --- a/tools/finalization/finalize-aidl-vndk-sdk-resources.sh +++ b/tools/finalization/finalize-aidl-vndk-sdk-resources.sh @@ -2,6 +2,29 @@ set -ex +function apply_droidstubs_hack() { + if ! grep -q 'STOPSHIP: RESTORE THIS LOGIC WHEN DECLARING "REL" BUILD' "$top/build/soong/java/droidstubs.go" ; then + git -C "$top/build/soong" apply --allow-empty ../../build/make/tools/finalization/build_soong_java_droidstubs.go.apply_hack.diff + fi +} + +function finalize_bionic_ndk() { + # Adding __ANDROID_API_<>__. + # If this hasn't done then it's not used and not really needed. Still, let's check and add this. + local api_level="$top/bionic/libc/include/android/api-level.h" + if ! grep -q "\__.*$((${FINAL_PLATFORM_SDK_VERSION}))" $api_level ; then + local tmpfile=$(mktemp /tmp/finalization.XXXXXX) + echo " +/** Names the \"${FINAL_PLATFORM_CODENAME:0:1}\" API level ($FINAL_PLATFORM_SDK_VERSION), for comparison against \`__ANDROID_API__\`. */ +#define __ANDROID_API_${FINAL_PLATFORM_CODENAME:0:1}__ $FINAL_PLATFORM_SDK_VERSION" > "$tmpfile" + + local api_level="$top/bionic/libc/include/android/api-level.h" + sed -i -e "/__.*$((${FINAL_PLATFORM_SDK_VERSION}-1))/r""$tmpfile" $api_level + + rm "$tmpfile" + fi +} + function finalize_modules_utils() { local shortCodename="${FINAL_PLATFORM_CODENAME:0:1}" local methodPlaceholder="INSERT_NEW_AT_LEAST_${shortCodename}_METHOD_HERE" @@ -48,25 +71,13 @@ function finalize_aidl_vndk_sdk_resources() { # default target to modify tree and build SDK local m="$top/build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=aosp_arm64 TARGET_BUILD_VARIANT=userdebug" - # This script is WIP and only finalizes part of the Android branch for release. # The full process can be found at (INTERNAL) go/android-sdk-finalization. - # Update references in the codebase to new API version (TODO) + # apply droidstubs hack to prevent tools from incrementing an API version + apply_droidstubs_hack # bionic/NDK - # Adding __ANDROID_API_<>__. - # If this hasn't done then it's not used and not really needed. Still, let's check and add this. - if ! grep -q "\__.*$((${FINAL_PLATFORM_SDK_VERSION}))" api-level.h ; then - local tmpfile=$(mktemp /tmp/finalization.XXXXXX) - echo " -/** Names the \"${FINAL_PLATFORM_CODENAME:0:1}\" API level ($FINAL_PLATFORM_SDK_VERSION), for comparison against \`__ANDROID_API__\`. */ -#define __ANDROID_API_${FINAL_PLATFORM_CODENAME:0:1}__ $FINAL_PLATFORM_SDK_VERSION" > "$tmpfile" - - local api_level="$top/bionic/libc/include/android/api-level.h" - sed -i -e "/__.*$((${FINAL_PLATFORM_SDK_VERSION}-1))/r""$tmpfile" $api_level - - rm "$tmpfile" - fi + finalize_bionic_ndk # VNDK definitions for new SDK version cp "$top/development/vndk/tools/definition-tool/datasets/vndk-lib-extra-list-current.txt" \ diff --git a/tools/finalization/finalize-sdk-rel.sh b/tools/finalization/finalize-sdk-rel.sh index 6e62a0eae1..8f8132ccb9 100755 --- a/tools/finalization/finalize-sdk-rel.sh +++ b/tools/finalization/finalize-sdk-rel.sh @@ -2,6 +2,18 @@ set -ex +function revert_droidstubs_hack() { + if grep -q 'STOPSHIP: RESTORE THIS LOGIC WHEN DECLARING "REL" BUILD' "$top/build/soong/java/droidstubs.go" ; then + git -C "$top/build/soong" apply --allow-empty ../../build/make/tools/finalization/build_soong_java_droidstubs.go.revert_hack.diff + fi +} + +function apply_prerelease_sdk_hack() { + if ! grep -q 'STOPSHIP: hack for the pre-release SDK' "$top/frameworks/base/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java" ; then + git -C "$top/frameworks/base" apply --allow-empty ../../build/make/tools/finalization/frameworks_base.apply_hack.diff + fi +} + function finalize_sdk_rel() { local top="$(dirname "$0")"/../../../.. source $top/build/make/tools/finalization/environment.sh @@ -9,6 +21,12 @@ function finalize_sdk_rel() { # default target to modify tree and build SDK local m="$top/build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=aosp_arm64 TARGET_BUILD_VARIANT=userdebug" + # revert droidstubs hack now we are switching to REL + revert_droidstubs_hack + + # let the apps built with pre-release SDK parse + apply_prerelease_sdk_hack + # adb keys $m adb LOGNAME=android-eng HOSTNAME=google.com "$top/out/host/linux-x86/bin/adb" keygen "$top/vendor/google/security/adb/${FINAL_PLATFORM_VERSION}.adb_key" @@ -18,6 +36,9 @@ function finalize_sdk_rel() { # cts echo "$FINAL_PLATFORM_VERSION" > "$top/cts/tests/tests/os/assets/platform_versions.txt" + if [ "$FINAL_PLATFORM_CODENAME" != "$CURRENT_PLATFORM_CODENAME" ]; then + echo "$CURRENT_PLATFORM_CODENAME" >> "./cts/tests/tests/os/assets/platform_versions.txt" + fi git -C "$top/cts" mv hostsidetests/theme/assets/${FINAL_PLATFORM_CODENAME} hostsidetests/theme/assets/${FINAL_PLATFORM_SDK_VERSION} # system/sepolicy @@ -29,7 +50,7 @@ function finalize_sdk_rel() { mv "$top/prebuilts/abi-dumps/ndk/current" "$top/prebuilts/abi-dumps/ndk/$FINAL_PLATFORM_SDK_VERSION" # prebuilts/abi-dumps/vndk - mv "$top/prebuilts/abi-dumps/vndk/$FINAL_PLATFORM_CODENAME" "$top/prebuilts/abi-dumps/vndk/$FINAL_PLATFORM_SDK_VERSION" + mv "$top/prebuilts/abi-dumps/vndk/$CURRENT_PLATFORM_CODENAME" "$top/prebuilts/abi-dumps/vndk/$FINAL_PLATFORM_SDK_VERSION" # prebuilts/abi-dumps/platform mv "$top/prebuilts/abi-dumps/platform/current" "$top/prebuilts/abi-dumps/platform/$FINAL_PLATFORM_SDK_VERSION" diff --git a/tools/finalization/frameworks_base.apply_hack.diff b/tools/finalization/frameworks_base.apply_hack.diff new file mode 100644 index 0000000000..545c2305fd --- /dev/null +++ b/tools/finalization/frameworks_base.apply_hack.diff @@ -0,0 +1,129 @@ +From 3c9a5321dc94124367f2f4363d85a8f488f5d4d1 Mon Sep 17 00:00:00 2001 +From: Yurii Zubrytskyi +Date: Wed, 04 May 2022 01:05:24 -0700 +Subject: [PATCH] HACK: allow apps with pre-release SDK RESTRICT AUTOMERGE + +Revert before releasing +Let the apps built with pre-release Tiramisu SDK parse ++ fix a test that didn't expect REL builds to throw + when checking for lettered versions + +Test: build +Bug: 225745567 +Bug: 231407096 +Change-Id: Ia0de2ab1a99e5f186f0d871e6225d88bf3308df6 +--- + +diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java +index c15b3e0..3f4df4d 100644 +--- a/core/java/android/content/pm/PackageParser.java ++++ b/core/java/android/content/pm/PackageParser.java +@@ -2628,6 +2628,15 @@ + return Build.VERSION_CODES.CUR_DEVELOPMENT; + } + ++ // STOPSHIP: hack for the pre-release SDK ++ if (platformSdkCodenames.length == 0 ++ && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals( ++ targetCode)) { ++ Slog.w(TAG, "Package requires development platform " + targetCode ++ + ", returning current version " + Build.VERSION.SDK_INT); ++ return Build.VERSION.SDK_INT; ++ } ++ + // Otherwise, we're looking at an incompatible pre-release SDK. + if (platformSdkCodenames.length > 0) { + outError[0] = "Requires development platform " + targetCode +@@ -2699,6 +2708,15 @@ + return Build.VERSION_CODES.CUR_DEVELOPMENT; + } + ++ // STOPSHIP: hack for the pre-release SDK ++ if (platformSdkCodenames.length == 0 ++ && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals( ++ minCode)) { ++ Slog.w(TAG, "Package requires min development platform " + minCode ++ + ", returning current version " + Build.VERSION.SDK_INT); ++ return Build.VERSION.SDK_INT; ++ } ++ + // Otherwise, we're looking at an incompatible pre-release SDK. + if (platformSdkCodenames.length > 0) { + outError[0] = "Requires development platform " + minCode +diff --git a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java +index 3e1c5bb..8cc4cdb 100644 +--- a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java ++++ b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java +@@ -316,6 +316,15 @@ + return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT); + } + ++ // STOPSHIP: hack for the pre-release SDK ++ if (platformSdkCodenames.length == 0 ++ && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals( ++ minCode)) { ++ Slog.w(TAG, "Parsed package requires min development platform " + minCode ++ + ", returning current version " + Build.VERSION.SDK_INT); ++ return input.success(Build.VERSION.SDK_INT); ++ } ++ + // Otherwise, we're looking at an incompatible pre-release SDK. + if (platformSdkCodenames.length > 0) { + return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, +@@ -368,19 +377,27 @@ + return input.success(targetVers); + } + ++ // If it's a pre-release SDK and the codename matches this platform, it ++ // definitely targets this SDK. ++ if (matchTargetCode(platformSdkCodenames, targetCode)) { ++ return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT); ++ } ++ ++ // STOPSHIP: hack for the pre-release SDK ++ if (platformSdkCodenames.length == 0 ++ && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals( ++ targetCode)) { ++ Slog.w(TAG, "Parsed package requires development platform " + targetCode ++ + ", returning current version " + Build.VERSION.SDK_INT); ++ return input.success(Build.VERSION.SDK_INT); ++ } ++ + try { + if (allowUnknownCodenames && UnboundedSdkLevel.isAtMost(targetCode)) { + return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT); + } + } catch (IllegalArgumentException e) { +- // isAtMost() throws it when encountering an older SDK codename +- return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, e.getMessage()); +- } +- +- // If it's a pre-release SDK and the codename matches this platform, it +- // definitely targets this SDK. +- if (matchTargetCode(platformSdkCodenames, targetCode)) { +- return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT); ++ return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, "Bad package SDK"); + } + + // Otherwise, we're looking at an incompatible pre-release SDK. +diff --git a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java +index 92c7871..687e8f7 100644 +--- a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java ++++ b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java +@@ -446,14 +446,14 @@ + + " \n\n" + + " "; + parseSharedLibraries(contents); + assertFooIsOnlySharedLibrary(); + SystemConfig.SharedLibraryEntry entry = mSysConfig.getSharedLibraries().get("foo"); +- assertThat(entry.onBootclasspathBefore).isEqualTo("Q"); ++ assertThat(entry.onBootclasspathBefore).isEqualTo("A"); + assertThat(entry.onBootclasspathSince).isEqualTo("W"); + } + diff --git a/tools/finalization/frameworks_base.revert_hack.diff b/tools/finalization/frameworks_base.revert_hack.diff new file mode 100644 index 0000000000..1d147b1ad9 --- /dev/null +++ b/tools/finalization/frameworks_base.revert_hack.diff @@ -0,0 +1,125 @@ +From b4ae5c71f327d00081bbb0b7b26d48eb88761fbc Mon Sep 17 00:00:00 2001 +From: Alex Buynytskyy +Date: Tue, 21 Feb 2023 01:43:14 +0000 +Subject: [PATCH] Revert "HACK: allow apps with pre-release SDK RESTRICT AUTOMERGE" + +This reverts commit 3c9a5321dc94124367f2f4363d85a8f488f5d4d1. + +Reason for revert: not needed anymore + +Change-Id: I5c5e3af78a41e7bd8cbc99464dccc57c345105f3 +--- + +diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java +index 3f4df4d..c15b3e0 100644 +--- a/core/java/android/content/pm/PackageParser.java ++++ b/core/java/android/content/pm/PackageParser.java +@@ -2628,15 +2628,6 @@ + return Build.VERSION_CODES.CUR_DEVELOPMENT; + } + +- // STOPSHIP: hack for the pre-release SDK +- if (platformSdkCodenames.length == 0 +- && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals( +- targetCode)) { +- Slog.w(TAG, "Package requires development platform " + targetCode +- + ", returning current version " + Build.VERSION.SDK_INT); +- return Build.VERSION.SDK_INT; +- } +- + // Otherwise, we're looking at an incompatible pre-release SDK. + if (platformSdkCodenames.length > 0) { + outError[0] = "Requires development platform " + targetCode +@@ -2708,15 +2699,6 @@ + return Build.VERSION_CODES.CUR_DEVELOPMENT; + } + +- // STOPSHIP: hack for the pre-release SDK +- if (platformSdkCodenames.length == 0 +- && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals( +- minCode)) { +- Slog.w(TAG, "Package requires min development platform " + minCode +- + ", returning current version " + Build.VERSION.SDK_INT); +- return Build.VERSION.SDK_INT; +- } +- + // Otherwise, we're looking at an incompatible pre-release SDK. + if (platformSdkCodenames.length > 0) { + outError[0] = "Requires development platform " + minCode +diff --git a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java +index 8cc4cdb..3e1c5bb 100644 +--- a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java ++++ b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java +@@ -316,15 +316,6 @@ + return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT); + } + +- // STOPSHIP: hack for the pre-release SDK +- if (platformSdkCodenames.length == 0 +- && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals( +- minCode)) { +- Slog.w(TAG, "Parsed package requires min development platform " + minCode +- + ", returning current version " + Build.VERSION.SDK_INT); +- return input.success(Build.VERSION.SDK_INT); +- } +- + // Otherwise, we're looking at an incompatible pre-release SDK. + if (platformSdkCodenames.length > 0) { + return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, +@@ -377,27 +368,19 @@ + return input.success(targetVers); + } + +- // If it's a pre-release SDK and the codename matches this platform, it +- // definitely targets this SDK. +- if (matchTargetCode(platformSdkCodenames, targetCode)) { +- return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT); +- } +- +- // STOPSHIP: hack for the pre-release SDK +- if (platformSdkCodenames.length == 0 +- && Build.VERSION.KNOWN_CODENAMES.stream().max(String::compareTo).orElse("").equals( +- targetCode)) { +- Slog.w(TAG, "Parsed package requires development platform " + targetCode +- + ", returning current version " + Build.VERSION.SDK_INT); +- return input.success(Build.VERSION.SDK_INT); +- } +- + try { + if (allowUnknownCodenames && UnboundedSdkLevel.isAtMost(targetCode)) { + return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT); + } + } catch (IllegalArgumentException e) { +- return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, "Bad package SDK"); ++ // isAtMost() throws it when encountering an older SDK codename ++ return input.error(PackageManager.INSTALL_FAILED_OLDER_SDK, e.getMessage()); ++ } ++ ++ // If it's a pre-release SDK and the codename matches this platform, it ++ // definitely targets this SDK. ++ if (matchTargetCode(platformSdkCodenames, targetCode)) { ++ return input.success(Build.VERSION_CODES.CUR_DEVELOPMENT); + } + + // Otherwise, we're looking at an incompatible pre-release SDK. +diff --git a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java +index 687e8f7..92c7871 100644 +--- a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java ++++ b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java +@@ -446,14 +446,14 @@ + + " \n\n" + + " "; + parseSharedLibraries(contents); + assertFooIsOnlySharedLibrary(); + SystemConfig.SharedLibraryEntry entry = mSysConfig.getSharedLibraries().get("foo"); +- assertThat(entry.onBootclasspathBefore).isEqualTo("A"); ++ assertThat(entry.onBootclasspathBefore).isEqualTo("Q"); + assertThat(entry.onBootclasspathSince).isEqualTo("W"); + } + diff --git a/tools/finalization/localonly-finalize-mainline-sdk.sh b/tools/finalization/localonly-finalize-mainline-sdk.sh index fc887c361e..26af30ebc5 100755 --- a/tools/finalization/localonly-finalize-mainline-sdk.sh +++ b/tools/finalization/localonly-finalize-mainline-sdk.sh @@ -6,11 +6,15 @@ function finalize_locally_mainline_sdk() { local top="$(dirname "$0")"/../../../.. source $top/build/make/tools/finalization/environment.sh - # Build modules SDKs. + # Build Platform SDKs. + $top/build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=sdk TARGET_BUILD_VARIANT=userdebug sdk dist sdk_repo + + # Build Modules SDKs. TARGET_BUILD_VARIANT=userdebug UNBUNDLED_BUILD_SDKS_FROM_SOURCE=true "$top/vendor/google/build/mainline_modules_sdks.sh" # Update prebuilts. "$top/prebuilts/build-tools/path/linux-x86/python3" "$top/packages/modules/common/tools/finalize_sdk.py" -l -b 0 -f ${FINAL_MAINLINE_EXTENSION} -r '' 0 + # "$top/prebuilts/build-tools/path/linux-x86/python3" "$top/prebuilts/sdk/update_prebuilts.py" --local_mode -f ${FINAL_PLATFORM_SDK_VERSION} -e ${FINAL_MAINLINE_EXTENSION} --bug 1 1 } finalize_locally_mainline_sdk diff --git a/tools/finalization/step-1.sh b/tools/finalization/step-1.sh index db7f1ccedb..cf21e4511f 100755 --- a/tools/finalization/step-1.sh +++ b/tools/finalization/step-1.sh @@ -14,7 +14,6 @@ function commit_step_1_changes() { Bug: $FINAL_BUG_ID Test: build"; repo upload --cbr --no-verify -o nokeycheck -t -y . ; - git clean -fdx ; git reset --hard ; fi' } @@ -27,11 +26,11 @@ function finalize_step_1_main() { # vndk etc finalization source $top/build/make/tools/finalization/finalize-aidl-vndk-sdk-resources.sh - # build to confirm everything is OK - AIDL_FROZEN_REL=true $m - # move all changes to finalization branch/topic and upload to gerrit commit_step_1_changes + + # build to confirm everything is OK + AIDL_FROZEN_REL=true $m } finalize_step_1_main diff --git a/tools/finalization/step-2.sh b/tools/finalization/step-2.sh index 926b85050a..d0b24ae1fc 100755 --- a/tools/finalization/step-2.sh +++ b/tools/finalization/step-2.sh @@ -12,7 +12,6 @@ Bug: $FINAL_BUG_ID Test: build"; repo upload --cbr --no-verify -o nokeycheck -t -y . ; - git clean -fdx ; git reset --hard ; fi' } @@ -25,14 +24,11 @@ function finalize_step_2_main() { # prebuilts etc source $top/build/make/tools/finalization/finalize-sdk-rel.sh - # Update prebuilts. - "$top/prebuilts/build-tools/path/linux-x86/python3" "$top/packages/modules/common/tools/finalize_sdk.py" -b ${FINAL_BUG_ID} -f ${FINAL_MAINLINE_EXTENSION} -r "${FINAL_MAINLINE_SDK_COMMIT_MESSAGE}" ${FINAL_MAINLINE_SDK_BUILD_ID} + # move all changes to finalization branch/topic and upload to gerrit + commit_step_2_changes # build to confirm everything is OK AIDL_FROZEN_REL=true $m - - # move all changes to finalization branch/topic and upload to gerrit - commit_step_2_changes } finalize_step_2_main