-
Notifications
You must be signed in to change notification settings - Fork 7
/
_build.sh
executable file
·149 lines (128 loc) · 4.2 KB
/
_build.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/bin/bash
KERNEL_DIR=$PWD
cpoy_initramfs()
{
if [ -d $INITRAMFS_TMP_DIR ]; then
rm -rf $INITRAMFS_TMP_DIR
fi
cp -a $INITRAMFS_SRC_DIR $(dirname $INITRAMFS_TMP_DIR)
rm -rf $INITRAMFS_TMP_DIR/.git
find $INITRAMFS_TMP_DIR -name .gitignore | xargs rm
}
if [ ! -n "$1" ]; then
echo ""
read -p "select ramdisk? [(s)amsung/(a)osp default:samsung] " BUILD_RAMDISK
else
BUILD_RADISK=$1
fi
# check target
BUILD_TARGET=$1
case "$BUILD_TARGET" in
"AOSP" ) BUILD_DEFCONFIG=sc06d_aosp_defconfig ;;
"SAM" ) BUILD_DEFCONFIG=sc06d_samsung_defconfig ;;
"MULTI" ) BUILD_DEFCONFIG=sc06d_multi_defconfig ;;
* ) echo "error: not found BUILD_TARGET" && exit -1 ;;
esac
BIN_DIR=out/$BUILD_TARGET/bin
OBJ_DIR=out/$BUILD_TARGET/obj
mkdir -p $BIN_DIR
mkdir -p $OBJ_DIR
# generate LOCALVERSION
. mod_version
# check and get compiler
. cross_compile
# set build env
export ARCH=arm
export CROSS_COMPILE=$BUILD_CROSS_COMPILE
export LOCALVERSION="-$BUILD_LOCALVERSION"
echo "=====> BUILD START $BUILD_KERNELVERSION-$BUILD_LOCALVERSION"
if [ ! -n "$2" ]; then
echo ""
read -p "select build? [(b)oot/(r)ecovery default:boot] " BUILD_TARGET
else
BUILD_TARGET=$2
fi
if [ ! -n "$3" ]; then
echo ""
read -p "select build? [(a)ll/(u)pdate/(i)mage default:update] " BUILD_SELECT
else
BUILD_SELECT=$3
fi
# copy initramfs
if [ "$BUILD_TARGET" = 'recovery' -o "$BUILD_TARGET" = 'r' ]; then
INITRAMFS_SRC_DIR=../sc06d_recovery_ramdisk
INITRAMFS_TMP_DIR=/tmp/sc06d_recovery_ramdisk
IMAGE_NAME=recovery
else
INITRAMFS_SRC_DIR=../sc06d_boot_ramdisk
INITRAMFS_TMP_DIR=/tmp/sc06d_boot_ramdisk
IMAGE_NAME=boot
fi
echo ""
echo "=====> copy initramfs"
cpoy_initramfs
# make start
if [ "$BUILD_SELECT" = 'all' -o "$BUILD_SELECT" = 'a' ]; then
echo ""
echo "=====> cleaning"
make clean
cp -f ./arch/arm/configs/$BUILD_DEFCONFIG $OBJ_DIR/.config
make -C $PWD O=$OBJ_DIR oldconfig || exit -1
fi
if [ "$BUILD_SELECT" != 'image' -a "$BUILD_SELECT" != 'i' ]; then
echo ""
echo "=====> build start"
if [ -e make.log ]; then
mv make.log make_old.log
fi
nice -n 10 make O=$OBJ_DIR -j12 2>&1 | tee make.log
fi
# check compile error
COMPILE_ERROR=`grep 'error:' ./make.log`
if [ "$COMPILE_ERROR" ]; then
echo ""
echo "=====> ERROR"
grep 'error:' ./make.log
exit -1
fi
# *.ko replace
find -name '*.ko' -exec cp -av {} $INITRAMFS_TMP_DIR/lib/modules/ \;
echo ""
echo "=====> CREATE RELEASE IMAGE"
# clean release dir
if [ `find $BIN_DIR -type f | wc -l` -gt 0 ]; then
rm -rf $BIN_DIR/*
fi
mkdir -p $BIN_DIR
# copy zImage
cp $OBJ_DIR/arch/arm/boot/zImage $BIN_DIR/kernel
echo "----- Making uncompressed $IMAGE_NAME ramdisk ------"
./release-tools/mkbootfs $INITRAMFS_TMP_DIR > $BIN_DIR/ramdisk-$IMAGE_NAME.cpio
echo "----- Making $IMAGE_NAME ramdisk ------"
./release-tools/minigzip < $BIN_DIR/ramdisk-$IMAGE_NAME.cpio > $BIN_DIR/ramdisk-$IMAGE_NAME.img
echo "----- Making $IMAGE_NAME image ------"
./release-tools/mkbootimg --cmdline "console=null androidboot.hardware=qcom user_debug=31" --kernel $BIN_DIR/kernel --ramdisk $BIN_DIR/ramdisk-$IMAGE_NAME.img --base 0x80200000 --pagesize 2048 --ramdiskaddr 0x81500000 --output $BIN_DIR/$IMAGE_NAME.img
# create odin image
cd $BIN_DIR
tar cf $BUILD_LOCALVERSION-$IMAGE_NAME-odin.tar $IMAGE_NAME.img
md5sum -t $BUILD_LOCALVERSION-$IMAGE_NAME-odin.tar >> $BUILD_LOCALVERSION-$IMAGE_NAME-odin.tar
mv $BUILD_LOCALVERSION-$IMAGE_NAME-odin.tar $BUILD_LOCALVERSION-$IMAGE_NAME-odin.tar.md5
echo " $BIN_DIR/$BUILD_LOCALVERSION-$IMAGE_NAME-odin.tar.md5"
# create cwm image
if [ -d tmp ]; then
rm -rf tmp
fi
mkdir -p ./tmp/META-INF/com/google/android
cp $IMAGE_NAME.img ./tmp/
cp $KERNEL_DIR/release-tools/update-binary ./tmp/META-INF/com/google/android/
sed -e "s/@VERSION/$BUILD_LOCALVERSION/g" $KERNEL_DIR/release-tools/updater-script-$IMAGE_NAME.sed > ./tmp/META-INF/com/google/android/updater-script
cd tmp && zip -rq ../cwm.zip ./* && cd ../
SIGNAPK_DIR=$KERNEL_DIR/release-tools/signapk
java -jar $SIGNAPK_DIR/signapk.jar $SIGNAPK_DIR/testkey.x509.pem $SIGNAPK_DIR/testkey.pk8 cwm.zip $BUILD_LOCALVERSION-$IMAGE_NAME-signed.zip
rm cwm.zip
rm -rf tmp
echo " $BIN_DIR/$BUILD_LOCALVERSION-$IMAGE_NAME-signed.zip"
cd $KERNEL_DIR
echo ""
echo "=====> BUILD COMPLETE $BUILD_KERNELVERSION-$BUILD_LOCALVERSION"
exit 0