| #!/bin/bash |
| |
| # Copyright (C) 2024 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. |
| |
| # Run check-flagged-apis for public APIs and the three @SystemApi flavours. |
| # |
| # This script expects an argument to tell it which subcommand of |
| # check-flagged-apis to execute. Run the script without any arguments to see |
| # the valid options. |
| # |
| # Remember to lunch to select the relevant release config before running this script. |
| |
| source $(cd $(dirname $BASH_SOURCE) &> /dev/null && pwd)/../../shell_utils.sh |
| require_top |
| |
| PUBLIC_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_public_generated-api-versions.xml |
| SYSTEM_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_system_generated-api-versions.xml |
| SYSTEM_SERVER_XML_VERSONS=out/target/common/obj/PACKAGING/api_versions_system_server_complete_generated-api-versions.xml |
| MODULE_LIB_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_module_lib_complete_generated-api-versions.xml |
| |
| function m() { |
| $(gettop)/build/soong/soong_ui.bash --build-mode --all-modules --dir="$(pwd)" "$@" |
| } |
| |
| function build() { |
| m \ |
| check-flagged-apis \ |
| all_aconfig_declarations \ |
| frameworks-base-api-current.txt \ |
| frameworks-base-api-system-current.txt \ |
| frameworks-base-api-system-server-current.txt \ |
| frameworks-base-api-module-lib-current.txt \ |
| $PUBLIC_XML_VERSIONS \ |
| $SYSTEM_XML_VERSIONS \ |
| $SYSTEM_SERVER_XML_VERSONS \ |
| $MODULE_LIB_XML_VERSIONS |
| } |
| |
| function noop() { |
| true |
| } |
| |
| function aninja() { |
| local T="$(gettop)" |
| (\cd "${T}" && prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-${TARGET_PRODUCT}.ninja "$@") |
| } |
| |
| function path_to_api_signature_file { |
| aninja -t query device_"$1"_all_targets | grep -A1 -e input: | tail -n1 |
| } |
| |
| function run_check() { |
| local errors=0 |
| |
| echo "# current" |
| check-flagged-apis check \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ |
| --api-versions $PUBLIC_XML_VERSIONS |
| (( errors += $? )) |
| |
| echo |
| echo "# system-current" |
| check-flagged-apis check \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-system-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ |
| --api-versions $SYSTEM_XML_VERSIONS |
| (( errors += $? )) |
| |
| echo |
| echo "# system-server-current" |
| check-flagged-apis check \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-system-server-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ |
| --api-versions $SYSTEM_SERVER_XML_VERSONS |
| (( errors += $? )) |
| |
| echo |
| echo "# module-lib" |
| check-flagged-apis check \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-module-lib-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ |
| --api-versions $MODULE_LIB_XML_VERSIONS |
| (( errors += $? )) |
| |
| return $errors |
| } |
| |
| function run_list() { |
| echo "# current" |
| check-flagged-apis list \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb |
| |
| echo |
| echo "# system-current" |
| check-flagged-apis list \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-system-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb |
| |
| echo |
| echo "# system-server-current" |
| check-flagged-apis list \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-system-server-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb |
| |
| echo |
| echo "# module-lib" |
| check-flagged-apis list \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-module-lib-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb |
| } |
| |
| build_cmd=build |
| if [[ "$1" == "--skip-build" ]]; then |
| build_cmd=noop |
| shift 1 |
| fi |
| |
| case "$1" in |
| check) $build_cmd && run_check ;; |
| list) $build_cmd && run_list ;; |
| *) echo "usage: $(basename $0): [--skip-build] check|list"; exit 1 |
| esac |