#!/bin/sh
#
# Squish a CM otapackage for distribution
# cyanogen
#

OUT_TARGET_HOST=$(uname -a | grep Darwin)
if [ -z "$OUT_TARGET_HOST" ]
then
   OUT_TARGET_HOST=linux-x86
   MD5=md5sum
else
   OUT_TARGET_HOST=darwin-x86
   MD5=md5
fi

OTAPACKAGE=$OUT/$TARGET_PRODUCT-ota-$TARGET_BUILD_VARIANT.$LOGNAME.zip
if [ ! -f "$OTAPACKAGE" ]; then
   echo "$OTAPACKAGE doesn't exist!";
   exit 1
fi

XBIN=$OUT/system/xbin
OPTICHARGER=$ANDROID_BUILD_TOP/vendor/cyanogen/tools/opticharger

DELETE_BINS="applypatch applypatch_static check_prereq recovery updater"

WORK=/tmp/repack
rm -rf $WORK
mkdir -p $WORK

if [ "$TARGET_PRODUCT" = "cyanogen_dream_sapphire" ]
then
   # Create the xbin squashfs
   cp -a $XBIN $WORK/xbin/
   chown -R 1000:1000 $WORK/xbin/*
   chmod -R 755 $WORK/xbin/*
   rm $WORK/xbin/su
   ln -s $WORK/bin/su $WORK/xbin/su
   mksquashfs $WORK/xbin/* $WORK/xbin.sqf
fi

# Unpack the otapackage and opticharge all apks
mkdir $WORK/ota
cd $WORK/ota
unzip $OTAPACKAGE
cd system/framework
$OPTICHARGER framework-res.apk
cd ../app
for i in *.apk; do
   $OPTICHARGER $i;
done

cd $WORK/ota/system

if [ "$TARGET_PRODUCT" = "cyanogen_dream_sapphire" ]
then
   # Relocate su and put xbin.sqf where it belongs
   rm -f bin/su
   mv xbin/su bin/su
   rm -rf xbin/*
   mv $WORK/xbin.sqf xbin/
fi

# Fix build.prop
grep -v ro.kernel.android.checkjni build.prop | sed -e "s/^ro\.build\.type=eng$/ro\.build\.type=user/g" > build.prop.new
mv build.prop.new build.prop

# Delete unnecessary binaries
for i in $DELETE_BINS; do
   rm -f bin/$i
done

# Find the CM version
MODVERSION=`grep ro.modversion build.prop | sed -e "s/^.*CyanogenMod-//g"`

# No need for recovery
cd $WORK/ota
rm -rf recovery

# Remove xbin stuff and fix up updater-script
if [ "$TARGET_PRODUCT" = "cyanogen_dream_sapphire" ]
then
   sed -e "s/system\/xbin\/su/system\/bin\/su/g" META-INF/com/google/android/updater-script | grep -v xbin > updater-script.new
else
   cp META-INF/com/google/android/updater-script updater-script.new
fi

echo "ui_print(\"Welcome to CyanogenMod-$MODVERSION!\");" > META-INF/com/google/android/updater-script
cat updater-script.new >> META-INF/com/google/android/updater-script
rm updater-script.new

# Pack it up and sign
zip -r update.zip .
echo "Signing package.."
SECURITYDIR=$ANDROID_BUILD_TOP/build/target/product/security
java -Xmx2048m -jar $ANDROID_BUILD_TOP/out/host/$OUT_TARGET_HOST/framework/signapk.jar -w $SECURITYDIR/testkey.x509.pem $SECURITYDIR/testkey.pk8 update.zip update_signed.zip

if [ "$CYANOGEN_NIGHTLY" != "" ]
then
    OUTFILE=$OUT/update-squished.zip
else
    OUTFILE=$OUT/update-cm-$MODVERSION-signed.zip
fi
mv update_signed.zip $OUTFILE
$MD5 $OUTFILE > $OUTFILE.md5sum
echo "Package complete: $OUT/update-cm-$MODVERSION-signed.zip";
cat $OUTFILE.md5sum

