blob: 1511b7cf2b0f798af9bc94cb17aa9d85864492e4 [file] [log] [blame]
Jeff Gaston22f42482021-08-04 14:10:42 -04001#!/bin/bash
2set -e
3
4echo "Starting $0 at $(date)"
5
6androidxArguments="$*"
7
Jeff Gaston22f42482021-08-04 14:10:42 -04008SCRIPTS_DIR="$(cd $(dirname $0)/.. && pwd)"
9cd "$SCRIPTS_DIR/../../.."
10echo "Script running from $(pwd)"
Jeff Gastonab49d262022-04-28 16:03:43 -040011ANDROIDX_DIR="$(pwd)"
Jeff Gaston22f42482021-08-04 14:10:42 -040012
Alan Viveretted396e9b2021-08-20 14:24:29 -040013# Resolve JDK folders for host OS
14STUDIO_JDK="linux"
15PREBUILT_JDK="linux-x86"
16if [[ $OSTYPE == darwin* ]]; then
17 STUDIO_JDK="mac/Contents/Home"
18 PREBUILT_JDK="darwin-x86"
19fi
20
Jeff Gaston2e534822022-04-07 18:52:13 -040021# resolve dirs
22export OUT_DIR=$(pwd)/out
23
Jeff Gaston22f42482021-08-04 14:10:42 -040024if [ -z "$DIST_DIR" ]; then
Jeff Gaston2e534822022-04-07 18:52:13 -040025 DIST_DIR="$OUT_DIR/dist"
Jeff Gaston22f42482021-08-04 14:10:42 -040026fi
27mkdir -p "$DIST_DIR"
28
Jeff Gaston2e534822022-04-07 18:52:13 -040029# resolve GRADLE_USER_HOME
Aurimas Liutikas55263612022-05-10 09:40:31 -070030export GRADLE_USER_HOME="$OUT_DIR/gradle"
Jeff Gaston2e534822022-04-07 18:52:13 -040031mkdir -p "$GRADLE_USER_HOME"
32
Jeff Gaston22f42482021-08-04 14:10:42 -040033if [ "$STUDIO_DIR" == "" ]; then
Jeff Gastonab49d262022-04-28 16:03:43 -040034 STUDIO_DIR="$ANDROIDX_DIR"
Jeff Gaston22f42482021-08-04 14:10:42 -040035else
36 STUDIO_DIR="$(cd $STUDIO_DIR && pwd)"
37fi
38
39TOOLS_DIR=$STUDIO_DIR/tools
40gw="$TOOLS_DIR/gradlew -Dorg.gradle.jvmargs=-Xmx24g"
41
Jeff Gastonab49d262022-04-28 16:03:43 -040042plat="linux"
43case "`uname`" in
44 Darwin* )
45 plat="darwin"
46 ;;
47esac
48
49export ANDROID_HOME="$ANDROIDX_DIR/prebuilts/fullsdk-$plat"
50
Jeff Gaston22f42482021-08-04 14:10:42 -040051function buildStudio() {
52 STUDIO_BUILD_LOG="$OUT_DIR/studio.log"
Chris Warrington35cd2732022-11-28 17:52:24 +000053 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 Gaston22f42482021-08-04 14:10:42 -040054 echo built studio successfully
55 else
56 cat "$STUDIO_BUILD_LOG" >&2
57 echo failed to build studio
58 return 1
59 fi
Jeff Gaston9217b152021-11-10 17:12:38 -050060
61 # stop any remaining Gradle daemons, b/205883835
Chris Warrington35cd2732022-11-28 17:52:24 +000062 JAVA_HOME="$STUDIO_DIR/prebuilts/studio/jdk/jdk17/$STUDIO_JDK" $gw -p $TOOLS_DIR --stop
Jeff Gaston22f42482021-08-04 14:10:42 -040063}
Alan Viverette78b46e82021-09-01 11:34:48 -040064
65function zipStudio() {
66 cd "$STUDIO_DIR/out/"
Jeff Gaston6020d972021-11-16 11:28:26 -050067 zip -qr "$DIST_DIR/tools.zip" repo
Alan Viverette78b46e82021-09-01 11:34:48 -040068 cd -
69}
70
Jeff Gaston22f42482021-08-04 14:10:42 -040071buildStudio
Alan Viverette78b46e82021-09-01 11:34:48 -040072zipStudio
Jeff Gaston22f42482021-08-04 14:10:42 -040073
Jeff Gaston829ff922021-11-09 10:17:42 -050074# list java processes to check for any running kotlin daemons, b/201504768
75function listJavaProcesses() {
Jeff Gaston7803f262021-11-16 15:47:41 -050076 echo "All java processes:"
Jeff Gaston829ff922021-11-09 10:17:42 -050077 ps -ef | grep /java || true
78}
79listJavaProcesses
80
Jeff Gaston7803f262021-11-16 15:47:41 -050081# kill kotlin compile daemons in hopes of addressing memory problems, b/201504768
82function 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}
85killKotlinDaemons
86
87listJavaProcesses
88
Chris Warringtona0a56222022-12-02 17:49:47 +000089# Depend on the generated version.properties file, as the version depends on
90# the release flag
91versionProperties="$STUDIO_DIR/out/build/base/builder-model/build/resources/main/com/android/builder/model/version.properties"
Alan Viveretted396e9b2021-08-20 14:24:29 -040092# Mac grep doesn't support -P, so use perl version of `grep -oP "(?<=buildVersion = ).*"`
Aurimas Liutikas55e56d22023-10-04 12:54:09 -070093export GRADLE_PLUGIN_VERSION=$(perl -nle'print $& while m{(?<=buildVersion=).*}g' "$versionProperties")
Chris Warringtona0a56222022-12-02 17:49:47 +000094echo "GRADLE_PLUGIN_VERSION=$GRADLE_PLUGIN_VERSION"
Aurimas Liutikas55e56d22023-10-04 12:54:09 -070095export LINT_VERSION=$(perl -nle'print $& while m{(?<=baseVersion=).*}g' "$versionProperties")
96echo "LINT_VERSION=$LINT_VERSION"
Jeff Gaston22f42482021-08-04 14:10:42 -040097export GRADLE_PLUGIN_REPO="$STUDIO_DIR/out/repo:$STUDIO_DIR/prebuilts/tools/common/m2/repository"
Jeff Gaston14aaa752022-09-20 13:38:44 -040098if [ "$USE_ANDROIDX_REMOTE_BUILD_CACHE" == "" ]; then
99 export USE_ANDROIDX_REMOTE_BUILD_CACHE=gcp
100fi
Jeff Gaston22f42482021-08-04 14:10:42 -0400101
Jeff Gaston678a9872024-03-20 16:32:16 -0400102$SCRIPTS_DIR/impl/build.sh $androidxArguments --dependency-verification=off -Pandroidx.validateNoUnrecognizedMessages=false
Jeff Gaston22f42482021-08-04 14:10:42 -0400103echo "Completing $0 at $(date)"