1#!/bin/bash -ex 2# 3# Copyright (C) 2021 The Android Open Source Project 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16# 17 18function init() { 19 declare -ga ARGV 20 while (($# > 0)); do 21 case $1 in 22 --py3script) 23 declare -gr py3script="$2" 24 shift 2 25 ;; 26 *) 27 ARGV+=("$1") 28 shift 1 29 ;; 30 esac 31 done 32 readonly ARGV 33 34 if [ -z "${py3script}" ]; then 35 declare -gr py3script="packages/modules/common/build/mainline_modules_sdks.py" 36 fi 37} 38 39function main() { 40 if [ ! -e "build/make/core/Makefile" ]; then 41 echo "$0 must be run from the top of the tree" 42 exit 1 43 fi 44 45 # Assign to a variable and eval that, since bash ignores any error status from 46 # the command substitution if it's directly on the eval line. 47 vars="$(TARGET_PRODUCT='' build/soong/soong_ui.bash --dumpvars-mode \ 48 --vars="BUILD_NUMBER DIST_DIR OUT_DIR")" 49 eval "${vars}" 50 51 # Building with --soong-only and module products requires build_number.txt for 52 # some targets. 53 echo -n "${BUILD_NUMBER}" > "${OUT_DIR}"/soong/build_number.txt 54 55 # Delegate the SDK generation to the python script. Use the python version 56 # provided by the build to ensure consistency across build environments. 57 export DIST_DIR OUT_DIR 58 59 # Make sure that the ANDROID_BUILD_TOP (which is the same as the current 60 # directory as checked above) is exported to Python. 61 export ANDROID_BUILD_TOP="${PWD}" 62 63 # The path to this tool is the .sh script that lives alongside the .py script. 64 TOOL_PATH="${py3script%.py}.sh" 65 prebuilts/build-tools/linux-x86/bin/py3-cmd -u "${py3script}" \ 66 --tool-path "${TOOL_PATH}" \ 67 "$@" 68} 69 70init "$@" 71# The wacky ${foo[@]+"${foo[@]}"}, makes bash correctly pass nothing when an 72# array is empty (necessary prior to bash 4.4). 73main ${ARGV[@]+"${ARGV[@]}"} 74