1#!/bin/bash 2set -e 3 4echo "Starting $0 at $(date)" 5 6androidxArguments="$*" 7 8SCRIPTS_DIR="$(cd $(dirname $0)/.. && pwd)" 9cd "$SCRIPTS_DIR/../../.." 10CHECKOUT_ROOT="$(pwd)" 11echo "Script running from $(pwd)" 12 13# resolve dirs 14export OUT_DIR=$(pwd)/out 15 16if [ -z "$DIST_DIR" ]; then 17 DIST_DIR="$OUT_DIR/dist" 18fi 19mkdir -p "$DIST_DIR" 20 21export DIST_DIR="$DIST_DIR" 22 23# resolve GRADLE_USER_HOME 24export GRADLE_USER_HOME="$OUT_DIR/gradle" 25mkdir -p "$GRADLE_USER_HOME" 26 27METALAVA_DIR=$CHECKOUT_ROOT/tools/metalava 28gw="$METALAVA_DIR/gradlew -Dorg.gradle.jvmargs=-Xmx24g" 29 30# Use androidx prebuilt since we don't have metalava prebuilts 31export ANDROID_HOME="$CHECKOUT_ROOT/prebuilts/fullsdk-linux/" 32 33function buildMetalava() { 34 METALAVA_BUILD_LOG="$OUT_DIR/metalava.log" 35 if $gw -p $METALAVA_DIR publish --stacktrace --no-daemon > "$METALAVA_BUILD_LOG" 2>&1; then 36 echo built metalava successfully 37 else 38 cat "$METALAVA_BUILD_LOG" >&2 39 echo failed to build metalava 40 return 1 41 fi 42 43} 44 45buildMetalava 46 47# allow androidx build to reach the network for any new metalava dependencies 48export ALLOW_PUBLIC_REPOS=true 49 50# Mac grep doesn't support -P, so use perl version of `grep -oP "(?<=metalavaVersion=).*"` 51METALAVA_VERSION_FILE="$METALAVA_DIR/version.properties" 52export METALAVA_VERSION=`perl -nle'print $& while m{(?<=metalavaVersion=).*}g' $METALAVA_VERSION_FILE` 53if [ -z "$METALAVA_VERSION" ]; then 54 echo Failed to retrieve version from $METALAVA_VERSION_FILE >&2 55 exit 1 56fi 57export METALAVA_REPO="$DIST_DIR/repo/m2repository" 58 59function buildAndroidx() { 60 ./frameworks/support/busytown/impl/build.sh $androidxArguments \ 61 --dependency-verification=off # building against tip of tree of metalava that potentially pulls in new dependencies 62 63} 64 65buildAndroidx 66echo "Completing $0 at $(date)" 67