blob: 12525f391c3c8d53039d7dbd6e395667c10e0d8b [file]
#!/bin/bash
#
# Copyright (C) 2026 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# finalize-platform is a tool used to finalize the platform APIs ahead of
# release of a new Android version. The finalization process is broken down
# into several finalize-* steps where some steps depend on earlier steps:
#
# mainline_module_sdks finalize-resources finalize-ndk
# | | |
# v | |
# finalize-module-sdks | |
# | | |
# v v |
# finalize-platform-sdk |
# | |
# v v
# finalize-release-configs
# |
# v
# (all done)
set -ex
source "$(dirname "$0")"/common.sh
source "$(dirname "$0")"/config.sh
function require_arg() {
local arg="$1"
local value="${!2}"
if [[ -z "$value" ]]; then
error "missing $arg <value>"
exit 1
fi
}
command="$1"
if [[ -z "$command" ]]; then
error "missing command"
exit 1
fi
shift
patch_dir=""
mainline_sdks_dir=""
build_server_target=""
build_server_id=""
while [[ $# -gt 0 ]]; do
case "$1" in
--patch-dir)
if [[ -z "$2" ]]; then
error "--patch-dir: missing <value>"
exit 1
fi
patch_dir="$(readlink -m "$2")"
shift 2
;;
--mainline-sdks-dir)
if [[ -z "$2" ]]; then
error "--mainline-sdks-dir: missing <value>"
exit 1
fi
mainline_sdks_dir="$(readlink -f "$2")"
shift 2
;;
--build-server-target)
if [[ -z "$2" ]]; then
error "--build-server-target: missing <value>"
exit 1
fi
build_server_target="$2"
shift 2
;;
--build-server-id)
if [[ -z "$2" ]]; then
error "--build-server-id: missing <value>"
exit 1
fi
build_server_id="$2"
shift 2
;;
*)
error "unexpected argument $1"
exit 1
;;
esac
done
case "$command" in
# individual finalize steps
finalize-module-sdks)
source "$(dirname "$0")"/finalize-module-sdks.sh
;;
finalize-resources)
source "$(dirname "$0")"/finalize-resources.sh
;;
finalize-ndk)
source "$(dirname "$0")"/finalize-ndk.sh
;;
finalize-platform-sdk)
source "$(dirname "$0")"/finalize-platform-sdk.sh
;;
finalize-release-configs)
source "$(dirname "$0")"/finalize-release-configs.sh
;;
# finalization steps, including any previous steps
finalize-module-sdks-with-deps)
source "$(dirname "$0")"/finalize-module-sdks.sh
;;
finalize-resources-with-deps)
source "$(dirname "$0")"/finalize-resources.sh
;;
finalize-ndk-with-deps)
source "$(dirname "$0")"/finalize-ndk.sh
;;
finalize-platform-sdk-with-deps)
source "$(dirname "$0")"/finalize-module-sdks.sh
source "$(dirname "$0")"/finalize-resources.sh
source "$(dirname "$0")"/finalize-platform-sdk.sh
;;
finalize-release-configs-with-deps)
source "$(dirname "$0")"/finalize-module-sdks.sh
source "$(dirname "$0")"/finalize-resources.sh
source "$(dirname "$0")"/finalize-platform-sdk.sh
source "$(dirname "$0")"/finalize-ndk.sh
source "$(dirname "$0")"/finalize-release-configs.sh
;;
re-finalize-platform-sdk-with-deps)
source "$(dirname "$0")"/re-finalize-platform-sdk-with-deps.sh
;;
# special commands
download-patches)
require_arg "--patch-dir" "patch_dir"
require_arg "--build-server-target" "build_server_target"
download_patches_to_patchdir "$patch_dir" "$build_server_target" "$build_server_id"
;;
apply-patches)
require_arg "--patch-dir" "patch_dir"
apply_patches_from_patchdir "$patch_dir"
;;
format-patches)
require_arg "--patch-dir" "patch_dir"
format_patches_into_patchdir "$patch_dir"
;;
setup-build-server)
setup_build_server
;;
*)
error "unexpected command: $command"
exit 1
;;
esac