blob: 14aa5602cfcd9cde43bdf974c3ce59cdd1546d6a [file] [log] [blame]
#!/usr/bin/env bash
function die () {
echo "ERROR: $*"
exit 1
}
function invalidate() {
sed -i -e "s/abiChangeVariable/abiChangeVariable_/g" $1
rm "$1-e"
}
TARGETS="libJava1:src_main libAndroid1:src_main libKt1:src_main libKtAndroid1:src_main libKtAndroid1:src_main_kt"
BAZEL_BINARY=${BAZEL_BINARY:-bazel}
$BAZEL_BINARY version || die "Bazel binary invalid or 'bazel' is not on classpath"
if ! command -v gzip &> /dev/null
then
echo "gzip could not be found"
exit
fi
# Run initial clean build
$BAZEL_BINARY clean
$BAZEL_BINARY build $TARGETS $@ || die "Fail initial build targets"
# ABI invalidation
invalidate libJava4/src/main/java/examples/deps/Dummy4.java
invalidate libAndroid4/src/main/java/examples/deps/Dummy4.java
invalidate libKt4/src/main/kt/examples/deps/KtDummy4.kt
invalidate libKtAndroid4/src/main/kt/examples/deps/KtDummy4.kt
# Run incremental build
$BAZEL_BINARY build $TARGETS $@ --profile=profile.gz || die "Failed to build targets"
# Parse profile
gzip -d profile.gz -f
NUM_JAVA_TARGETS=$(cat profile | grep "action processing" | grep "Building libJava" | wc -l | xargs)
NUM_ANDROID_TARGETS=$(cat profile | grep "action processing" | grep "Building libAndroid" | wc -l | xargs)
NUM_KT_TARGETS=$(cat profile | grep "action processing" | grep "KotlinCompile //libKt" | grep -v "KotlinCompile //libKtAndroid" | wc -l | xargs)
NUM_KT_ANDROID_TARGETS=$(cat profile | grep "action processing" | grep "KotlinCompile //libKtAndroid" | wc -l | xargs)
# Resource only incremental builds
invalidate libAndroid4/src/main/res/values/strings.xml
invalidate libKtAndroid4/src/main/res/values/strings.xml
# Run incremental build
STARTUP_OPTIONS=""
if [ ! -z "$DEBUG" ]; then
STARTUP_OPTIONS="$STARTUP_OPTIONS --host_jvm_debug"
fi
$BAZEL_BINARY $STARTUP_OPTIONS build $TARGETS $@ --profile=profile.gz || die "Failed to build targets"
# Parse profile
gzip -d profile.gz -f
NUM_ANDROID_TARGETS_RES_ONLY=$(cat profile | grep "action processing" | grep "Building libAndroid" | wc -l | xargs)
NUM_KT_ANDROID_TARGETS_RES_ONLY=$(cat profile | grep "action processing" | grep "KotlinCompile //libKtAndroid" | wc -l | xargs)
# Cleanup
git checkout -- libJava4/src/main/java/examples/deps/Dummy4.java
git checkout -- libAndroid4/src/main/java/examples/deps/Dummy4.java
git checkout -- libKt4/src/main/kt/examples/deps/KtDummy4.kt
git checkout -- libKtAndroid4/src/main/kt/examples/deps/KtDummy4.kt
git checkout -- libAndroid4/src/main/res/values/strings.xml
git checkout -- libKtAndroid4/src/main/res/values/strings.xml
rm -rf profile.gz profile
# Final output
echo Rebuilt libjava targets: $NUM_JAVA_TARGETS
echo Rebuilt libandroid targets: $NUM_ANDROID_TARGETS
echo Rebuilt libkt targets: $NUM_KT_TARGETS
echo Rebuilt libktandroid targets: $NUM_KT_ANDROID_TARGETS
echo Rebuilt libandroid res-only targets: $NUM_ANDROID_TARGETS_RES_ONLY
echo Rebuilt libktandroid res-only targets: $NUM_KT_ANDROID_TARGETS_RES_ONLY