| #!/bin/bash -ex |
| # |
| # Copyright (C) 2021 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. |
| # |
| |
| function init() { |
| declare -ga ARGV |
| while (($# > 0)); do |
| case $1 in |
| --py3script) |
| declare -gr py3script="$2" |
| shift 2 |
| ;; |
| *) |
| ARGV+=("$1") |
| shift 1 |
| ;; |
| esac |
| done |
| readonly ARGV |
| |
| if [ -z "${py3script}" ]; then |
| declare -gr py3script="packages/modules/common/build/mainline_modules_sdks.py" |
| fi |
| } |
| |
| function main() { |
| if [ ! -e "build/make/core/Makefile" ]; then |
| echo "$0 must be run from the top of the tree" |
| exit 1 |
| fi |
| |
| # Assign to a variable and eval that, since bash ignores any error status from |
| # the command substitution if it's directly on the eval line. |
| vars="$(TARGET_PRODUCT='' build/soong/soong_ui.bash --dumpvars-mode \ |
| --vars="BUILD_NUMBER DIST_DIR OUT_DIR")" |
| eval "${vars}" |
| |
| # Building with --soong-only and module products requires build_number.txt for |
| # some targets. |
| echo -n "${BUILD_NUMBER}" > "${OUT_DIR}"/soong/build_number.txt |
| |
| # Delegate the SDK generation to the python script. Use the python version |
| # provided by the build to ensure consistency across build environments. |
| export DIST_DIR OUT_DIR |
| |
| # Make sure that the ANDROID_BUILD_TOP (which is the same as the current |
| # directory as checked above) is exported to Python. |
| export ANDROID_BUILD_TOP="${PWD}" |
| |
| # The path to this tool is the .sh script that lives alongside the .py script. |
| TOOL_PATH="${py3script%.py}.sh" |
| prebuilts/build-tools/linux-x86/bin/py3-cmd -u "${py3script}" \ |
| --tool-path "${TOOL_PATH}" \ |
| "$@" |
| } |
| |
| init "$@" |
| # The wacky ${foo[@]+"${foo[@]}"}, makes bash correctly pass nothing when an |
| # array is empty (necessary prior to bash 4.4). |
| main ${ARGV[@]+"${ARGV[@]}"} |