diff --git a/tools/finalization/build-step-0-and-m.sh b/tools/finalization/build-step-0-and-m.sh new file mode 100755 index 0000000000..484380045e --- /dev/null +++ b/tools/finalization/build-step-0-and-m.sh @@ -0,0 +1,20 @@ + +#!/bin/bash +# Copyright 2024 Google Inc. All rights reserved. +set -ex +function help() { + echo "Finalize VINTF and build a target for test." + echo "usage: $(basename "$0") target [goals...]" +} +function finalize_main_step0_and_m() { + if [ $# == 0 ] ; then + help + exit 1 + fi; + local top="$(dirname "$0")"/../../../.. + source $top/build/make/tools/finalization/build-step-0.sh + local m="$top/build/soong/soong_ui.bash --make-mode TARGET_PRODUCT=$1 TARGET_RELEASE=fina_0 TARGET_BUILD_VARIANT=userdebug" + # This command tests the release state for AIDL. + AIDL_FROZEN_REL=true $m ${@:2} +} +finalize_main_step0_and_m $@ diff --git a/tools/finalization/build-step-0.sh b/tools/finalization/build-step-0.sh index f81b720b2d..8826b35c0f 100755 --- a/tools/finalization/build-step-0.sh +++ b/tools/finalization/build-step-0.sh @@ -7,11 +7,26 @@ function finalize_main_step0() { local top="$(dirname "$0")"/../../../.. source $top/build/make/tools/finalization/environment.sh + local need_vintf_finalize=false if [ "$FINAL_STATE" = "unfinalized" ] ; then - # VINTF finalization + need_vintf_finalize=true + else + # build-step-0.sh tests the vintf finalization step (step-0) when the + # FINAL_BOARD_API_LEVEL is the same as the RELEASE_BOARD_API_LEVEL; and + # RELEASE_BOARD_API_LEVEL_FROZEN is not true from the fina_0 configuration. + # The FINAL_BOARD_API_LEVEL must be the next vendor API level to be finalized. + local board_api_level_vars=$(TARGET_RELEASE=fina_0 $top/build/soong/soong_ui.bash --dumpvars-mode -vars "RELEASE_BOARD_API_LEVEL_FROZEN RELEASE_BOARD_API_LEVEL") + local target_board_api_level_vars="RELEASE_BOARD_API_LEVEL_FROZEN='' +RELEASE_BOARD_API_LEVEL='$FINAL_BOARD_API_LEVEL'" + if [ "$board_api_level_vars" = "$target_board_api_level_vars" ] ; then + echo The target is a finalization candidate. + need_vintf_finalize=true + fi; + fi; + + if [ "$need_vintf_finalize" = true ] ; then # VINTF finalization source $top/build/make/tools/finalization/finalize-vintf-resources.sh fi; } finalize_main_step0 - diff --git a/tools/finalization/environment.sh b/tools/finalization/environment.sh index f68a68b650..cf3e61bd99 100755 --- a/tools/finalization/environment.sh +++ b/tools/finalization/environment.sh @@ -29,4 +29,8 @@ export BUILD_FROM_SOURCE_STUB=true # FINAL versions for VINTF # TODO(b/323985297): The version must match with that from the release configuration. # Instead of hardcoding the version here, read it from a release configuration. -export FINAL_BOARD_API_LEVEL='202404' +export FINAL_BOARD_API_LEVEL='202504' +export FINAL_CORRESPONDING_VERSION_LETTER='W' +export FINAL_CORRESPONDING_PLATFORM_VERSION='16' +export FINAL_NEXT_BOARD_API_LEVEL='202604' +export FINAL_NEXT_CORRESPONDING_VERSION_LETTER='X' diff --git a/tools/finalization/finalize-vintf-resources.sh b/tools/finalization/finalize-vintf-resources.sh index d532b25346..6f1a6f646e 100755 --- a/tools/finalization/finalize-vintf-resources.sh +++ b/tools/finalization/finalize-vintf-resources.sh @@ -33,18 +33,18 @@ function finalize_vintf_resources() { function create_new_compat_matrix_and_kernel_configs() { # The compatibility matrix versions are bumped during vFRC # These will change every time we have a new vFRC - local CURRENT_COMPATIBILITY_MATRIX_LEVEL='202404' - local NEXT_COMPATIBILITY_MATRIX_LEVEL='202504' + local CURRENT_COMPATIBILITY_MATRIX_LEVEL="$FINAL_BOARD_API_LEVEL" + local NEXT_COMPATIBILITY_MATRIX_LEVEL="$FINAL_NEXT_BOARD_API_LEVEL" # The kernel configs need the letter of the Android release - local CURRENT_RELEASE_LETTER='v' - local NEXT_RELEASE_LETTER='w' + local CURRENT_RELEASE_LETTER="$FINAL_CORRESPONDING_VERSION_LETTER" + local NEXT_RELEASE_LETTER="$FINAL_NEXT_CORRESPONDING_VERSION_LETTER" # build the targets required before touching the Android.bp/Android.mk files local build_cmd="$top/build/soong/soong_ui.bash --make-mode" $build_cmd bpmodify - "$top/prebuilts/build-tools/path/linux-x86/python3" "$top/hardware/interfaces/compatibility_matrices/bump.py" "$CURRENT_COMPATIBILITY_MATRIX_LEVEL" "$NEXT_COMPATIBILITY_MATRIX_LEVEL" "$CURRENT_RELEASE_LETTER" "$NEXT_RELEASE_LETTER" + "$top/prebuilts/build-tools/path/linux-x86/python3" "$top/hardware/interfaces/compatibility_matrices/bump.py" "$CURRENT_COMPATIBILITY_MATRIX_LEVEL" "$NEXT_COMPATIBILITY_MATRIX_LEVEL" "$CURRENT_RELEASE_LETTER" "$NEXT_RELEASE_LETTER" "$FINAL_CORRESPONDING_PLATFORM_VERSION" # Freeze the current framework manifest file. This relies on the # aosp_cf_x86_64-trunk_staging build target to get the right manifest