From 37eb6c94484fe6aa30c0aaa514d9068cb67e9223 Mon Sep 17 00:00:00 2001 From: Ulya Trafimovich Date: Thu, 10 Dec 2020 14:02:21 +0000 Subject: [PATCH] Add MissingUsesLibraries to Soong vars for scripts that use --skip-make. In platform builds missing libraries are defined with make variable INTERNAL_PLATFORM_MISSING_USES_LIBRARIES via soong_config.mk. When Soong is invoked with "--skip-make" parameter, INTERNAL_PLATFORM_MISSING_USES_LIBRARIES is not picked up. As a result the build fails because of missing dependencies. This CL uses get_build_var to get the value of INTERNAL_PLATFORM_MISSING_USES_LIBRARIES, then converts it to JSON list. In the future would be better to migrate both scripts to use --skip-kati introduced in https://r.android.com/1512613. Bug: 175286760 Bug: 132357300 Test: forrest build for target "ndk" branch "aosp-master". Test: Patch build-aml-prebuilts.sh and build-ndk-prebuilts.sh to dump their soong.variables config, observe that MissingUsesLibraries is coherent with INTERNAL_PLATFORM_MISSING_USES_LIBRARIES. Start running each script and observe that they don't fail early due to missing dependencies. Change-Id: I5dbc1d3ea7a64de1e8be6332003acc940c2e6a76 --- scripts/build-aml-prebuilts.sh | 9 ++++++++- scripts/build-ndk-prebuilts.sh | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/scripts/build-aml-prebuilts.sh b/scripts/build-aml-prebuilts.sh index de22c459f..68ca4ad8c 100755 --- a/scripts/build-aml-prebuilts.sh +++ b/scripts/build-aml-prebuilts.sh @@ -54,6 +54,11 @@ PLATFORM_VERSION_ALL_CODENAMES="$(my_get_build_var PLATFORM_VERSION_ALL_CODENAME PLATFORM_VERSION_ALL_CODENAMES="${PLATFORM_VERSION_ALL_CODENAMES/,/'","'}" PLATFORM_VERSION_ALL_CODENAMES="[\"${PLATFORM_VERSION_ALL_CODENAMES}\"]" +# Get the list of missing modules and convert it to a JSON array +# (quote module names, add comma separator and wrap in brackets). +MISSING_USES_LIBRARIES="$(my_get_build_var INTERNAL_PLATFORM_MISSING_USES_LIBRARIES)" +MISSING_USES_LIBRARIES="[$(echo $MISSING_USES_LIBRARIES | sed -e 's/\([^ ]\+\)/\"\1\"/g' -e 's/[ ]\+/, /g')]" + # Logic from build/make/core/goma.mk if [ "${USE_GOMA}" = true ]; then if [ -n "${GOMA_DIR}" ]; then @@ -100,7 +105,9 @@ cat > ${SOONG_VARS}.new << EOF "art_module": { "source_build": "${ENABLE_ART_SOURCE_BUILD:-false}" } - } + }, + + "MissingUsesLibraries": ${MISSING_USES_LIBRARIES} } EOF diff --git a/scripts/build-ndk-prebuilts.sh b/scripts/build-ndk-prebuilts.sh index b6ed65940..1a3321900 100755 --- a/scripts/build-ndk-prebuilts.sh +++ b/scripts/build-ndk-prebuilts.sh @@ -30,6 +30,11 @@ PLATFORM_VERSION_ALL_CODENAMES=$(get_build_var PLATFORM_VERSION_ALL_CODENAMES) PLATFORM_VERSION_ALL_CODENAMES=${PLATFORM_VERSION_ALL_CODENAMES/,/'","'} PLATFORM_VERSION_ALL_CODENAMES="[\"${PLATFORM_VERSION_ALL_CODENAMES}\"]" +# Get the list of missing modules and convert it to a JSON array +# (quote module names, add comma separator and wrap in brackets). +MISSING_USES_LIBRARIES="$(get_build_var INTERNAL_PLATFORM_MISSING_USES_LIBRARIES)" +MISSING_USES_LIBRARIES="[$(echo $MISSING_USES_LIBRARIES | sed -e 's/\([^ ]\+\)/\"\1\"/g' -e 's/[ ]\+/, /g')]" + SOONG_OUT=${OUT_DIR}/soong SOONG_NDK_OUT=${OUT_DIR}/soong/ndk rm -rf ${SOONG_OUT} @@ -49,7 +54,9 @@ cat > ${SOONG_OUT}/soong.variables << EOF "Safestack": false, "Ndk_abis": true, - "Exclude_draft_ndk_apis": true + "Exclude_draft_ndk_apis": true, + + "MissingUsesLibraries": ${MISSING_USES_LIBRARIES} } EOF m --skip-make ${SOONG_OUT}/ndk.timestamp