Skip to content

Instantly share code, notes, and snippets.

@Makistos
Last active April 9, 2018 09:49
Show Gist options
  • Save Makistos/93f7e410c10c3813a300abc19b498b99 to your computer and use it in GitHub Desktop.
Save Makistos/93f7e410c10c3813a300abc19b498b99 to your computer and use it in GitHub Desktop.
How to use btrfs to speed up Android development with a crontab job.
#!/bin/bash
# Delete old snapshots except the newest one
# Replace product and variant as needed
del_product () {
read -a FILES <<< `ls -dt $1_BUILD_$2_*`
unset FILES[0] # Do not delete newest
for dir in ${FILES[*]}
do
echo "Deleting $dir"
sudo btrfs subvolume delete $dir
done
}
del_product product variant
#!/bin/bash -x
dt=`date +"%Y%m%d"`
echo "Number of parameters: $#"
if [ "$#" -eq 4 ]; then
LOG_FILE=${dt}_$4
else
LOG_FILE=/tmp/log_${dt}.txt
fi
if [ "$#" -lt 3 ]; then
echo "Needs disk and product name and build variant."
echo "Parameters: $1 $2 $3 $4"
echo "Usage: $0 <btrfs dir> <product> <variant> [<log file>]"
exit 1
fi
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>$LOG_FILE 2>&1
BTRFS_DIR=$1
PRODUCT=$2
VARIANT=$3
GOLDEN_DIR=${BTRFS_DIR}/${PRODUCT}_BASE_VOL
BUILD_DIR=${BTRFS_DIR}/${PRODUCT}_BUILD_${VARIANT}
LUNCH=${PRODUCT}-${VARIANT}
echo $GOLDEN_DIR
echo $BUILD_DIR
echo $LUNCH
pushd $GOLDEN_DIR
if ! /usr/local/bin/repo sync -j 4 --force-sync; then
echo "Repo sync failed. Exiting."
exit 2
fi
# Make backup of old build dir just in case.
if [ -d $BUILD_DIR ]; then
mv $BUILD_DIR ${BUILD_DIR}_$dt
fi
# Create snapshot for building
/bin/btrfs subvolume snapshot $GOLDEN_DIR $BUILD_DIR
# Build SW
cd $BUILD_DIR
source build/envsetup.sh
lunch $LUNCH
cook all
popd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment