blob: acdfb0858b2126d6764fe8e41ed4210091b1e22f [file] [log] [blame]
#!/bin/bash
# exit on error
set -e
PROG_DIR=$(dirname "$0")
function die() {
echo "$*" > /dev/stderr
echo "Usage: $0 [--enable-aswb] [--uitests]" > /dev/stderr
exit 1
}
function set_java_home() {
readonly JDK_REPO="$(cd ../../prebuilts/studio/jdk && pwd)"
case `uname -s` in
MINGW64_NT-10.0)
export JAVA_HOME="${JDK_REPO}/win64"
;;
CYGWIN_NT-10.0)
export JAVA_HOME="${JDK_REPO}/win64"
;;
Darwin)
export JAVA_HOME="${JDK_REPO}/mac/Contents/Home"
;;
*)
export JAVA_HOME="${JDK_REPO}/linux"
;;
esac
}
function get_absolute_path() {
( unset CDPATH; cd "$1" && pwd ) 2> /dev/null
}
ASWB=
ASWB_PROPERTY=
UITESTS=false
while [[ -n "$1" ]]; do
if [[ $1 == "--enable-aswb" ]]; then
ASWB=true
ASWB_PROPERTY="-Dinclude.aswb=true"
elif [[ $1 == "--uitests" ]]; then
UITESTS=true
else
die "[$0] Unknown parameter: $1"
fi
shift
done
BNUM="${BUILD_NUMBER/P/-}" # for AB presubmit: satisfy Integer.parseInt in BuildNumber.parseBuildNumber
BNUM="${BNUM:-SNAPSHOT}"
OUT="${OUT_DIR:-out/studio}"
DIST="${DIST_DIR:-"${OUT}/dist"}"
cd "$PROG_DIR"
mkdir -p "$OUT"
mkdir -p "$DIST"
# ensure OUT and DIST are absolute paths
OUT="$(get_absolute_path "$OUT")"
DIST="$(get_absolute_path "$DIST")"
ANT="java -jar lib/ant/lib/ant-launcher.jar -f build.xml"
BAZEL="../base/bazel/bazel"
echo "## Building android-studio ##"
echo "## Dist dir : $DIST"
echo "## Qualifier: $QUAL"
echo "## Build Num: $BNUM"
echo "## Out dir : $OUT"
echo "## Prog dir : $PROG_DIR"
echo "## ASWB? : $ASWB"
echo "## UITESTS? : $UITESTS"
echo
set_java_home
export JDK_16_x64=$JAVA_HOME
export JDK_18_x64=$JAVA_HOME
echo "## JAVA_HOME: $JAVA_HOME"
export PATH=$JDK_18_x64/bin:$PATH
echo "## BAZEL: $BAZEL"
readonly BAZEL_BIN="$($BAZEL info "bazel-bin")"
echo "## BAZEL_BIN: $BAZEL_BIN"
readonly AS_BUILD_NUMBER="$(sed "s/SNAPSHOT/${BNUM}/" build.txt)"
$ANT "-Dintellij.build.output.root=$OUT" "-Dbuild.number=$AS_BUILD_NUMBER" "$ASWB_PROPERTY" "-Dbundle.ui.tests=$UITESTS" build
$ANT "-Dintellij.build.output.root=$OUT/updater" fullupdater
$BAZEL build //tools/idea/updater:updater_deploy.jar
echo "## Copying android-studio distribution files"
mkdir -p "$DIST"
if [ "$ASWB" = true ]; then
cp -Rfv "$OUT"/artifacts/aswb* "$DIST"
else
cp -Rfv "$OUT"/artifacts/android-studio* "$DIST"
cp -Rfv "${BAZEL_BIN}"/tools/idea/updater/updater_deploy.jar "$DIST"/android-studio-updater.jar
cp -Rfv "$OUT"/updater/artifacts/sdk-patcher.zip "$DIST"/sdk-patcher.zip
# write the version number into the windows installer dir
echo $BNUM > ../adt/idea/native/installer/win/version
(cd ../adt/idea/native/installer/win && zip -r - ".") > "$DIST"/android-studio-bundle-data.zip
fi
# execute a bunch of sanity checks on the final artifacts
$BAZEL test \
//tools/idea:test_studio \
--test_output=streamed \
--test_arg=--out="$OUT" \
--test_arg=--dist="$DIST" \
--test_arg=--build=$AS_BUILD_NUMBER \
--test_arg=--aswb=$ASWB \
--test_strategy=standalone \
--spawn_strategy=standalone \
--nocache_test_results