1#!/bin/bash -eux
2# Verifies that bp2build-generated BUILD files for bionic (and its dependencies)
3# result in successful Bazel builds.
4# This verification script is designed to be used for continuous integration
5# tests, though may also be used for manual developer verification.
6
7if [[ -z ${DIST_DIR+x} ]]; then
8  echo "DIST_DIR not set. Using out/dist. This should only be used for manual developer testing."
9  DIST_DIR="out/dist"
10fi
11
12# Generate BUILD files into out/soong/bp2build
13AOSP_ROOT="$(dirname $0)/../../.."
14GENERATE_BAZEL_FILES=true "${AOSP_ROOT}/build/soong/soong_ui.bash" --make-mode nothing --skip-soong-tests
15
16# Remove the ninja_build output marker file to communicate to buildbot that this is not a regular Ninja build, and its
17# output should not be parsed as such.
18rm -f out/ninja_build
19
20# We could create .bazelrc files and use them on buildbots with --bazelrc, but
21# it's simpler to use a list for now.
22BUILD_FLAGS_LIST=(
23  --color=no
24  --curses=no
25  --show_progress_rate_limit=5
26  --config=bp2build
27)
28BUILD_FLAGS="${BUILD_FLAGS_LIST[@]}"
29
30TEST_FLAGS_LIST=(
31  --keep_going
32  --test_output=errors
33)
34TEST_FLAGS="${TEST_FLAGS_LIST[@]}"
35
36# Build targets for various architectures.
37BUILD_TARGETS_LIST=(
38  //bionic/...
39  //system/...
40  //external/arm-optimized-routines/...
41  //external/scudo/...
42)
43BUILD_TARGETS="${BUILD_TARGETS_LIST[@]}"
44tools/bazel --max_idle_secs=5 build ${BUILD_FLAGS} --platforms //build/bazel/platforms:android_x86 -k ${BUILD_TARGETS}
45tools/bazel --max_idle_secs=5 build ${BUILD_FLAGS} --platforms //build/bazel/platforms:android_x86_64 -k ${BUILD_TARGETS}
46tools/bazel --max_idle_secs=5 build ${BUILD_FLAGS} --platforms //build/bazel/platforms:android_arm -k ${BUILD_TARGETS}
47tools/bazel --max_idle_secs=5 build ${BUILD_FLAGS} --platforms //build/bazel/platforms:android_arm64 -k ${BUILD_TARGETS}
48
49# Run tests.
50tools/bazel --max_idle_secs=5 test ${BUILD_FLAGS} ${TEST_FLAGS} //build/bazel/tests/...
51