Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | set -e |
| 3 | |
| 4 | echo "Starting $0 at $(date)" |
| 5 | |
| 6 | androidxArguments="$*" |
| 7 | |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 8 | SCRIPTS_DIR="$(cd $(dirname $0)/.. && pwd)" |
| 9 | cd "$SCRIPTS_DIR/../../.." |
| 10 | echo "Script running from $(pwd)" |
Jeff Gaston | ab49d26 | 2022-04-28 16:03:43 -0400 | [diff] [blame] | 11 | ANDROIDX_DIR="$(pwd)" |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 12 | |
Alan Viverette | d396e9b | 2021-08-20 14:24:29 -0400 | [diff] [blame] | 13 | # Resolve JDK folders for host OS |
| 14 | STUDIO_JDK="linux" |
| 15 | PREBUILT_JDK="linux-x86" |
| 16 | if [[ $OSTYPE == darwin* ]]; then |
| 17 | STUDIO_JDK="mac/Contents/Home" |
| 18 | PREBUILT_JDK="darwin-x86" |
| 19 | fi |
| 20 | |
Jeff Gaston | 2e53482 | 2022-04-07 18:52:13 -0400 | [diff] [blame] | 21 | # resolve dirs |
| 22 | export OUT_DIR=$(pwd)/out |
| 23 | |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 24 | if [ -z "$DIST_DIR" ]; then |
Jeff Gaston | 2e53482 | 2022-04-07 18:52:13 -0400 | [diff] [blame] | 25 | DIST_DIR="$OUT_DIR/dist" |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 26 | fi |
| 27 | mkdir -p "$DIST_DIR" |
| 28 | |
Jeff Gaston | 2e53482 | 2022-04-07 18:52:13 -0400 | [diff] [blame] | 29 | # resolve GRADLE_USER_HOME |
Aurimas Liutikas | 5526361 | 2022-05-10 09:40:31 -0700 | [diff] [blame] | 30 | export GRADLE_USER_HOME="$OUT_DIR/gradle" |
Jeff Gaston | 2e53482 | 2022-04-07 18:52:13 -0400 | [diff] [blame] | 31 | mkdir -p "$GRADLE_USER_HOME" |
| 32 | |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 33 | if [ "$STUDIO_DIR" == "" ]; then |
Jeff Gaston | ab49d26 | 2022-04-28 16:03:43 -0400 | [diff] [blame] | 34 | STUDIO_DIR="$ANDROIDX_DIR" |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 35 | else |
| 36 | STUDIO_DIR="$(cd $STUDIO_DIR && pwd)" |
| 37 | fi |
| 38 | |
| 39 | TOOLS_DIR=$STUDIO_DIR/tools |
| 40 | gw="$TOOLS_DIR/gradlew -Dorg.gradle.jvmargs=-Xmx24g" |
| 41 | |
Jeff Gaston | ab49d26 | 2022-04-28 16:03:43 -0400 | [diff] [blame] | 42 | plat="linux" |
| 43 | case "`uname`" in |
| 44 | Darwin* ) |
| 45 | plat="darwin" |
| 46 | ;; |
| 47 | esac |
| 48 | |
| 49 | export ANDROID_HOME="$ANDROIDX_DIR/prebuilts/fullsdk-$plat" |
| 50 | |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 51 | function buildStudio() { |
| 52 | STUDIO_BUILD_LOG="$OUT_DIR/studio.log" |
Chris Warrington | 35cd273 | 2022-11-28 17:52:24 +0000 | [diff] [blame] | 53 | if JAVA_HOME="$STUDIO_DIR/prebuilts/studio/jdk/jdk17/$STUDIO_JDK" $gw -p $TOOLS_DIR publishLocal --stacktrace --no-daemon > "$STUDIO_BUILD_LOG" 2>&1; then |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 54 | echo built studio successfully |
| 55 | else |
| 56 | cat "$STUDIO_BUILD_LOG" >&2 |
| 57 | echo failed to build studio |
| 58 | return 1 |
| 59 | fi |
Jeff Gaston | 9217b15 | 2021-11-10 17:12:38 -0500 | [diff] [blame] | 60 | |
| 61 | # stop any remaining Gradle daemons, b/205883835 |
Chris Warrington | 35cd273 | 2022-11-28 17:52:24 +0000 | [diff] [blame] | 62 | JAVA_HOME="$STUDIO_DIR/prebuilts/studio/jdk/jdk17/$STUDIO_JDK" $gw -p $TOOLS_DIR --stop |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 63 | } |
Alan Viverette | 78b46e8 | 2021-09-01 11:34:48 -0400 | [diff] [blame] | 64 | |
| 65 | function zipStudio() { |
| 66 | cd "$STUDIO_DIR/out/" |
Jeff Gaston | 6020d97 | 2021-11-16 11:28:26 -0500 | [diff] [blame] | 67 | zip -qr "$DIST_DIR/tools.zip" repo |
Alan Viverette | 78b46e8 | 2021-09-01 11:34:48 -0400 | [diff] [blame] | 68 | cd - |
| 69 | } |
| 70 | |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 71 | buildStudio |
Alan Viverette | 78b46e8 | 2021-09-01 11:34:48 -0400 | [diff] [blame] | 72 | zipStudio |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 73 | |
Jeff Gaston | 829ff92 | 2021-11-09 10:17:42 -0500 | [diff] [blame] | 74 | # list java processes to check for any running kotlin daemons, b/201504768 |
| 75 | function listJavaProcesses() { |
Jeff Gaston | 7803f26 | 2021-11-16 15:47:41 -0500 | [diff] [blame] | 76 | echo "All java processes:" |
Jeff Gaston | 829ff92 | 2021-11-09 10:17:42 -0500 | [diff] [blame] | 77 | ps -ef | grep /java || true |
| 78 | } |
| 79 | listJavaProcesses |
| 80 | |
Jeff Gaston | 7803f26 | 2021-11-16 15:47:41 -0500 | [diff] [blame] | 81 | # kill kotlin compile daemons in hopes of addressing memory problems, b/201504768 |
| 82 | function killKotlinDaemons() { |
| 83 | ps -ef | grep -i java.*kotlin-daemon-embeddable.*org.jetbrains.kotlin.daemon.KotlinCompileDaemon | grep -v grep | awk '{print $2}' | xargs --no-run-if-empty kill || true |
| 84 | } |
| 85 | killKotlinDaemons |
| 86 | |
| 87 | listJavaProcesses |
| 88 | |
Chris Warrington | a0a5622 | 2022-12-02 17:49:47 +0000 | [diff] [blame] | 89 | # Depend on the generated version.properties file, as the version depends on |
| 90 | # the release flag |
| 91 | versionProperties="$STUDIO_DIR/out/build/base/builder-model/build/resources/main/com/android/builder/model/version.properties" |
Alan Viverette | d396e9b | 2021-08-20 14:24:29 -0400 | [diff] [blame] | 92 | # Mac grep doesn't support -P, so use perl version of `grep -oP "(?<=buildVersion = ).*"` |
Aurimas Liutikas | 55e56d2 | 2023-10-04 12:54:09 -0700 | [diff] [blame] | 93 | export GRADLE_PLUGIN_VERSION=$(perl -nle'print $& while m{(?<=buildVersion=).*}g' "$versionProperties") |
Chris Warrington | a0a5622 | 2022-12-02 17:49:47 +0000 | [diff] [blame] | 94 | echo "GRADLE_PLUGIN_VERSION=$GRADLE_PLUGIN_VERSION" |
Aurimas Liutikas | 55e56d2 | 2023-10-04 12:54:09 -0700 | [diff] [blame] | 95 | export LINT_VERSION=$(perl -nle'print $& while m{(?<=baseVersion=).*}g' "$versionProperties") |
| 96 | echo "LINT_VERSION=$LINT_VERSION" |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 97 | export GRADLE_PLUGIN_REPO="$STUDIO_DIR/out/repo:$STUDIO_DIR/prebuilts/tools/common/m2/repository" |
Jeff Gaston | 14aaa75 | 2022-09-20 13:38:44 -0400 | [diff] [blame] | 98 | if [ "$USE_ANDROIDX_REMOTE_BUILD_CACHE" == "" ]; then |
| 99 | export USE_ANDROIDX_REMOTE_BUILD_CACHE=gcp |
| 100 | fi |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 101 | |
Jeff Gaston | 678a987 | 2024-03-20 16:32:16 -0400 | [diff] [blame] | 102 | $SCRIPTS_DIR/impl/build.sh $androidxArguments --dependency-verification=off -Pandroidx.validateNoUnrecognizedMessages=false |
Jeff Gaston | 22f4248 | 2021-08-04 14:10:42 -0400 | [diff] [blame] | 103 | echo "Completing $0 at $(date)" |