blob: 6c93cfb3a5c15b0df0b02dd8cb1fabcc2058fc4b [file] [log] [blame]
arf31f37f2012-09-05 08:57:46 -03001#!/bin/sh
2#
3# Squish a CM otapackage for distribution
4# cyanogen
5#
6
7OUT_TARGET_HOST=`uname -a | grep Darwin`
8if [ -z "$OUT_TARGET_HOST" ]
9then
10 OUT_TARGET_HOST=linux-x86
11 MD5=md5sum
12 XARGS="xargs --max-args=1 --max-procs `grep 'processor' /proc/cpuinfo|wc -l`"
13 SED=sed
14else
15 OUT_TARGET_HOST=darwin-x86
16 MD5=md5
17 XARGS="xargs -n 1 -P `sysctl hw.ncpu | awk '{print $2}'`"
18 SED=gsed
19fi
20
21if [ -z "$OUT" -o ! -d "$OUT" ]; then
22 echo "ERROR: $0 only works with a full build environment. $OUT should exist."
23 exit 1
24fi
25
26if [ "$TARGET_BUILD_TYPE" = "debug" ]; then
27 OTAPACKAGE=$OUT/${TARGET_PRODUCT}_debug-ota-$TARGET_BUILD_VARIANT.$USER.zip
28elif [ "$TARGET_BUILD_VARIANT" = "userdebug" ]; then
29 OTAPACKAGE=$OUT/$TARGET_PRODUCT-ota-eng.$USER.zip
30elif [ "$TARGET_BUILD_VARIANT" = "user" ]; then
31 OTAPACKAGE=$OUT/$TARGET_PRODUCT-ota-eng.$USER.zip
32else
33 OTAPACKAGE=$OUT/$TARGET_PRODUCT-ota-$TARGET_BUILD_VARIANT.$USER.zip
34fi
35if [ ! -f "$OTAPACKAGE" ]; then
36 echo "$OTAPACKAGE doesn't exist!";
37 exit 1
38fi
39
ar8f9ced82012-09-05 09:56:43 -030040OPTICHARGER=$ANDROID_BUILD_TOP/vendor/slim/tools/opticharger
arf31f37f2012-09-05 08:57:46 -030041QUIET=-q
42DELETE_BINS="applypatch applypatch_static check_prereq recovery updater"
arfaa54c12012-09-05 16:48:18 -030043DELETE_MEDIA="*.qmg"
ar96c40fa2012-09-07 12:09:28 -030044DELETE_APKS="Home.apk LiveWallpapers.apk VoiceDialer.apk SoundRecorder.apk VisualizationWallpapers.apk "
ar450af112012-09-10 15:45:03 -030045DELETE_GALLERY="Gallery2.apk"
arf31f37f2012-09-05 08:57:46 -030046
47REPACK=$OUT/repack.d
48printf "Sanitizing environment..."
49rm -rf $REPACK
50mkdir -p $REPACK
51echo
52
53
54# Unpack the otapackage and opticharge all apks
55mkdir $REPACK/ota
56(
57cd $REPACK/ota
58printf "Unpacking $OTAPACKAGE..."
59unzip $QUIET $OTAPACKAGE
60echo
61
62# Move all apks to the same directory so xargs can
63# use also with framework-res.apk. This allow process
64# framework-res.apk in parallel with other apks
65mkdir -p $REPACK/parallel
66cd $REPACK/parallel
67cp $REPACK/ota/system/framework/framework-res.apk .
68cp $REPACK/ota/system/app/*.apk .
69
70# Do optimization in parallel
71find ./ -name \*.apk | $XARGS $OPTICHARGER
72
73# Move optimized apks to repack directory
74mv -f $REPACK/parallel/framework-res.apk $REPACK/ota/system/framework/framework-res.apk
75mv -f $REPACK/parallel/*.apk $REPACK/ota/system/app/
76
77# Return to directory
78cd $REPACK/ota
79rm -rf $REPACK/parallel
80)
81
82# Fix build.prop
83$SED -i \
84 -e '/ro\.kernel\.android\.checkjni/d' \
85 -e '/ro\.build\.type/s/eng/user/' \
86 $REPACK/ota/system/build.prop
87
88
89# Delete unnecessary binaries
90( cd $REPACK/ota/system/bin; echo $DELETE_BINS | xargs rm -f; )
91
arfaa54c12012-09-05 16:48:18 -030092# Delete Offline charging mode files
93( cd $REPACK/ota/system/media; echo $DELETE_MEDIA | xargs rm -f; )
94
ar96c40fa2012-09-07 12:09:28 -030095# Delete Home Apk
96( cd $REPACK/ota/system/app; echo $DELETE_APKS | xargs rm -f; )
97
arfaa54c12012-09-05 16:48:18 -030098# No need for modem.bin
99rm -f $REPACK/ota/modem.bin
100
101# No need for media/video
102rm -rf $REPACK/ota/system/media/video
103
104# Delete compiled fonts
105rm -rf $REPACK/ota/system/fonts
106
107#make dir for fonts again
108mkdir $REPACK/ota/system/fonts
109
110# Add precompiled fonts
111mv -f $REPACK/ota/system/sfont/*.ttf $REPACK/ota/system/fonts/
112
ar96c40fa2012-09-07 12:09:28 -0300113# Add OTA app
114#mkdir $REPACK/ota/data/app
115#cp -f $OUT/data/app/com.acquariusoft.UpdateMe.apk $REPACK/ota/data/app/
116
arfaa54c12012-09-05 16:48:18 -0300117# No need for tts
118rm -rf $REPACK/ota/system/tts
119
arf31f37f2012-09-05 08:57:46 -0300120# No need for recovery
121rm -rf $REPACK/ota/recovery
122
123# Strip modules
124[ -d $REPACK/ota/system/lib/modules ] && \
125 find $REPACK/ota/system/lib/modules -name "*.ko" -print0 | xargs -0 arm-eabi-strip --strip-unneeded
126
ar450af112012-09-10 15:45:03 -0300127# Fix LCD Density for slim
128DEVICELCD=`sed -n -e'/ro\.sf\.lcd_density/s/^.*=//p' $OUT/system/build.prop`
129if [ "$DEVICELCD" = "240" ]; then
130 sed -i 's/ro.sf.lcd_density=240/ro.sf.lcd_density=182/g' $OUT/system/build.prop
131elif [ "$DEVICELCD" = "320" ]; then
132 sed -i 's/ro.sf.lcd_density=320/ro.sf.lcd_density=241/g' $OUT/system/build.prop
133elif [ "$DEVICELCD" = "213" ]; then
134 sed -i 's/ro.sf.lcd_density=213/ro.sf.lcd_density=182/g' $OUT/system/build.prop
135fi
136cp -f $OUT/system/build.prop $REPACK/ota/system/build.prop
137
138# Delete Gallery2 for 5MP cameras
139CAMERARESOLUTION=`sed -n -e'/ro\.camera\.res/s/^.*=//p' $REPACK/ota/system/build.prop`
140if [ "$CAMERARESOLUTION" = "5MP" ];then
141 rm -f $REPACK/ota/system/app/Gallery2.apk
142fi
143
arfaa54c12012-09-05 16:48:18 -0300144# Swap boot.img
ar450af112012-09-10 15:45:03 -0300145PREBUILTKERNEL=$OUT/system/slimkernel/boot.img
146if [ -e "$PREBUILTKERNEL" ];then
arfaa54c12012-09-05 16:48:18 -0300147 rm -f $REPACK/ota/boot.img
148 mv -f $REPACK/ota/system/slimkernel/boot.img $REPACK/ota/boot.img
ar02dbdde2012-09-08 10:03:38 -0300149fi
arfaa54c12012-09-05 16:48:18 -0300150
arf31f37f2012-09-05 08:57:46 -0300151# Determine what to name the new signed package
ar8716a412012-09-05 10:08:55 -0300152MODVERSION=`sed -n -e'/ro\.modversion/s/^.*=//p' $REPACK/ota/system/build.prop`
153OUTFILE=$OUT/$MODVERSION.zip
arf31f37f2012-09-05 08:57:46 -0300154echo MODVERSION: $MODVERSION
155
156# Pack it up and sign
157printf "Zipping package..."
158( cd $REPACK/ota; zip $QUIET -r $REPACK/update.zip . )
159echo
160printf "Signing package..."
161SECURITYDIR=$ANDROID_BUILD_TOP/build/target/product/security
162java -Xmx1024m \
163 -jar $OUT/../../../host/$OUT_TARGET_HOST/framework/signapk.jar \
164 -w $SECURITYDIR/testkey.x509.pem $SECURITYDIR/testkey.pk8 \
165 $REPACK/update.zip $OUTFILE
166echo
167printf "Cleaning up..."
168rm -rf $REPACK
169echo
170
171# Create a md5 checksum image of the repacked package
172(
173img=`basename $OUTFILE`
174cd `dirname $OUTFILE`
175$MD5 $img >$img.md5sum
176echo
177echo "Package complete: $OUTFILE"
178cat $img.md5sum
179echo
180)
181
182exit 0