#!/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
   XARGS="xargs --max-args=1 --max-procs `grep 'processor' /proc/cpuinfo|wc -l`"
   SED=sed
else
   OUT_TARGET_HOST=darwin-x86
   MD5=md5
   XARGS="xargs -n 1 -P `sysctl hw.ncpu | awk '{print $2}'`"
   SED=gsed
fi

if [ -z "$OUT" -o ! -d "$OUT" ]; then
    echo "ERROR: $0 only works with a full build environment. $OUT should exist."
    exit 1
fi

if [ "$TARGET_BUILD_TYPE" = "debug" ]; then
    OTAPACKAGE=$OUT/${TARGET_PRODUCT}_debug-ota-$TARGET_BUILD_VARIANT.$USER.zip
elif [ "$TARGET_BUILD_VARIANT" = "userdebug" ]; then
    OTAPACKAGE=$OUT/$TARGET_PRODUCT-ota-eng.$USER.zip
elif [ "$TARGET_BUILD_VARIANT" = "user" ]; then
    OTAPACKAGE=$OUT/$TARGET_PRODUCT-ota-eng.$USER.zip
else
    OTAPACKAGE=$OUT/$TARGET_PRODUCT-ota-$TARGET_BUILD_VARIANT.$USER.zip
fi
if [ ! -f "$OTAPACKAGE" ]; then
    echo "$OTAPACKAGE doesn't exist!";
    exit 1
fi

OPTICHARGER=$ANDROID_BUILD_TOP/vendor/slim/tools/opticharger
QUIET=-q
DELETE_BINS="applypatch applypatch_static check_prereq recovery updater"
DELETE_MEDIA="*.qmg"
DELETE_APKS="Launcher2.apk LiveWallpapers.apk VoiceDialer.apk SpeechRecorder.apk VisualizationWallpapers.apk VideoEditor.apk Exchange2.apk HoloSpiralWallpaper.apk MagicSmokeWallpapers.apk NoiseField.apk Galaxy4.apk Calendar.apk OpenWnn.apk PinyinIME.apk QuickSearchBox.apk Provision.apk"
DELETE_GALLERY="Gallery2.apk"
DELETE_FONTS="MTLmr3m.ttf"

REPACK=$OUT/repack.d
printf "Sanitizing environment..."
rm -rf $REPACK
mkdir -p $REPACK
echo


# Unpack the otapackage and opticharge all apks
mkdir $REPACK/ota
(
cd $REPACK/ota
printf "Unpacking $OTAPACKAGE..."
unzip $QUIET $OTAPACKAGE
echo

# Move all apks to the same directory so xargs can
# use also with framework-res.apk. This allow process
# framework-res.apk in parallel with other apks
mkdir -p $REPACK/parallel
cd $REPACK/parallel
cp $REPACK/ota/system/framework/framework-res.apk .
cp $REPACK/ota/system/app/*.apk .

# Do optimization in parallel
find ./ -name \*.apk | $XARGS $OPTICHARGER

# Move optimized apks to repack directory
mv -f $REPACK/parallel/framework-res.apk $REPACK/ota/system/framework/framework-res.apk
mv -f $REPACK/parallel/*.apk $REPACK/ota/system/app/

# Return to directory
cd $REPACK/ota
rm -rf $REPACK/parallel
)

# Fix build.prop
$SED -i \
	-e '/ro\.kernel\.android\.checkjni/d' \
	-e '/ro\.build\.type/s/eng/user/' \
	$REPACK/ota/system/build.prop


# Delete unnecessary binaries
( cd $REPACK/ota/system/bin; echo $DELETE_BINS | xargs rm -f; )

# Delete Offline charging mode files
( cd $REPACK/ota/system/media; echo $DELETE_MEDIA | xargs rm -f; )

# Delete Home Apk
( cd $REPACK/ota/system/app; echo $DELETE_APKS | xargs rm -f; )

# No need for modem.bin
rm -f $REPACK/ota/modem.bin

# No need for media/video
rm -rf $REPACK/ota/system/media/video

# Delete Unnecessary Fonts
( cd $REPACK/ota/system/fonts; echo $DELETE_FONTS | xargs rm -f; )

# Delete compiled fonts
#rm -rf $REPACK/ota/system/fonts

#make dir for fonts again
#mkdir $REPACK/ota/system/fonts

# Add precompiled fonts
#mv -f $REPACK/ota/system/sfont/*.ttf $REPACK/ota/system/fonts/

# No need for tts
rm -rf $REPACK/ota/system/tts

# No need for srec
rm -rf $REPACK/ota/system/usr/srec

# No need for recovery
rm -rf $REPACK/ota/recovery
rm -rf $REPACK/ota/system/etc/recovery-resource.dat

# Strip modules
[ -d $REPACK/ota/system/lib/modules ] && \
	find $REPACK/ota/system/lib/modules -name "*.ko" -print0 | xargs -0 arm-eabi-strip --strip-unneeded

# Fix LCD Density for slim
DEVICELCD=`sed -n -e'/ro\.sf\.lcd_density/s/^.*=//p' $OUT/system/build.prop`
if [ "$DEVICELCD" = "240" ]; then
   sed -i 's/ro.sf.lcd_density=240/ro.sf.lcd_density=182/g' $OUT/system/build.prop
elif [ "$DEVICELCD" = "320" ]; then
    sed -i 's/ro.sf.lcd_density=320/ro.sf.lcd_density=245/g' $OUT/system/build.prop
elif [ "$DEVICELCD" = "480" ]; then
    sed -i 's/ro.sf.lcd_density=480/ro.sf.lcd_density=361/g' $OUT/system/build.prop
elif [ "$DEVICELCD" = "213" ]; then
    sed -i 's/ro.sf.lcd_density=213/ro.sf.lcd_density=182/g' $OUT/system/build.prop
fi

# Fix LCD Density for GNote
DEVICEID=`sed -n -e'/ro\.product\.device/s/^.*=//p' $OUT/system/build.prop`
if [ "$DEVICEID" = "SGH-I717" ]; then
   sed -i 's/ro.sf.lcd_density=245/ro.sf.lcd_density=268/g' $OUT/system/build.prop
elif [ "$DEVICEID" = "GT-N7000" ]; then
   sed -i 's/ro.sf.lcd_density=245/ro.sf.lcd_density=268/g' $OUT/system/build.prop
elif [ "$DEVICEID" = "mako" ]; then
   sed -i 's/ro.sf.lcd_density=245/ro.sf.lcd_density=268/g' $OUT/system/build.prop
fi
cp -f $OUT/system/build.prop $REPACK/ota/system/build.prop

# Delete Gallery2 for 5MP cameras
CAMERARESOLUTION=`sed -n -e'/ro\.camera\.res/s/^.*=//p' $REPACK/ota/system/build.prop`
#if [ "$CAMERARESOLUTION" = "5MP" ];then
#   rm -f $REPACK/ota/system/app/Gallery2.apk
#fi

# Swap boot.img
PREBUILTKERNEL=$OUT/system/slimkernel/boot.img
if [ -e "$PREBUILTKERNEL" ];then
   rm -f $REPACK/ota/boot.img
   mv -f $REPACK/ota/system/slimkernel/boot.img $REPACK/ota/boot.img
fi

# Determine what to name the new signed package
MODVERSION=`sed -n -e'/ro\.modversion/s/^.*=//p' $REPACK/ota/system/build.prop`
OUTFILE=$OUT/$MODVERSION.zip
echo MODVERSION: $MODVERSION

# Pack it up and sign
printf "Zipping package..."
( cd $REPACK/ota; zip $QUIET -r $REPACK/update.zip . )
echo
printf "Signing package..."
SECURITYDIR=$ANDROID_BUILD_TOP/build/target/product/security
java -Xmx1024m \
	-jar $OUT/../../../host/$OUT_TARGET_HOST/framework/signapk.jar \
	-w $SECURITYDIR/testkey.x509.pem $SECURITYDIR/testkey.pk8 \
	$REPACK/update.zip $OUTFILE
echo
printf "Cleaning up..."
rm -rf $REPACK
echo

# Create a md5 checksum image of the repacked package
(
img=`basename $OUTFILE`
cd `dirname $OUTFILE`
$MD5 $img >$img.md5sum
echo
echo "Package complete: $OUTFILE"
cat $img.md5sum
echo
)

exit 0
