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