| #!/bin/bash |
| set -e |
| |
| echo "Starting $0 at $(date)" |
| |
| cd "$(dirname $0)" |
| |
| CHECKOUT_DIR="$(cd ../../.. && pwd)" |
| OUT_DIR="$CHECKOUT_DIR/out" |
| if [ "$DIST_DIR" == "" ]; then |
| DIST_DIR="$OUT_DIR/dist" |
| fi |
| if [ "$MANIFEST" == "" ]; then |
| export MANIFEST="$DIST_DIR/manifest_${BUILD_NUMBER}.xml" |
| fi |
| # move OUT_DIR and DIST_DIR into subdirectories so that if diagnose-build-failure deletes them, it doesn't interfere with any files generated by buildbot code |
| export OUT_DIR="$OUT_DIR/incremental" |
| mkdir -p "$OUT_DIR" |
| export DIST_DIR="$DIST_DIR/incremental" |
| mkdir -p "$DIST_DIR" |
| |
| if echo "$BUILD_NUMBER" | grep "P" >/dev/null; then |
| PRESUBMIT=true |
| else |
| PRESUBMIT=false |
| fi |
| |
| export USE_ANDROIDX_REMOTE_BUILD_CACHE=gcp |
| |
| # hash the files in the out dir in case we want to confirm which files changed during the build |
| function hashOutDir() { |
| hashFile=out.hashes |
| echo "hashing out dir and saving into $DIST_DIR/$hashFile" |
| # We hash files in parallel for more performance (-P <number>) |
| # We limit the number of files hashed by any one process (-n <number>) to lower the risk of one |
| # process having to do much more work than the others. |
| # We do allow each process to hash multiple files (also -n <number>) to avoid spawning too many processes |
| # It would be nice to copy all files, but that takes a while |
| (cd $OUT_DIR && find -type f | grep -v "$hashFile" | xargs --no-run-if-empty -P 32 -n 64 sha1sum > $DIST_DIR/$hashFile) |
| echo "done hashing out dir" |
| } |
| hashOutDir |
| |
| # If we encounter a failure in postsubmit, we try a few things to determine if the failure is |
| # reproducible |
| DIAGNOSE_ARG="" |
| if [ "$PRESUBMIT" == "false" ]; then |
| DIAGNOSE_ARG="--diagnose" |
| fi |
| |
| EXIT_VALUE=0 |
| |
| # Validate translation exports, if present |
| if ! impl/check_translations.sh; then |
| echo check_translations failed |
| EXIT_VALUE=1 |
| else |
| # Run Gradle |
| if impl/build.sh $DIAGNOSE_ARG buildOnServer checkExternalLicenses listTaskOutputs \ |
| --profile "$@"; then |
| echo build succeeded |
| EXIT_VALUE=0 |
| else |
| echo build failed |
| EXIT_VALUE=1 |
| fi |
| |
| # Parse performance profile reports (generated with the --profile option above) and re-export the metrics in an easily machine-readable format for tracking |
| impl/parse_profile_data.sh |
| fi |
| |
| echo "Completing $0 at $(date) with exit value $EXIT_VALUE" |
| |
| exit "$EXIT_VALUE" |