-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathbuild.sh
executable file
·121 lines (95 loc) · 2.76 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
#!/bin/bash -e
msg() {
echo
echo ==== $* ====
echo
}
export CCACHE_DIR=~/.ccache.dna-kernel
# -----------------------
. crpalmer-build-config
TOOLS_DIR=`dirname "$0"`
MAKE=$TOOLS_DIR/make-common.sh
# -----------------------
ZIP=$TARGET_DIR/update-$VERSION
UPDATE_ROOT=$LOCAL_BUILD_DIR/update
KEYS=$LOCAL_BUILD_DIR/keys
CERT=$KEYS/certificate.pem
KEY=$KEYS/key.pk8
if [ "$USE_CCACHE" = 1 ]; then
export CROSS_COMPILE="ccache $CROSS_COMPILE"
export HOST_CC="ccache $HOST_CC"
else
export CROSS_COMPILE="$CROSS_COMPILE"
export HOST_CC="$HOST_CC"
fi
msg Building: $VERSION
echo " Defconfig: $DEFCONFIG"
echo
echo " Local build dir: $LOCAL_BUILD_DIR"
echo " Target dir: $TARGET_DIR"
echo " Tools dir: $TOOLS_DIR"
echo
echo " Cross compiler: $CROSS_COMPILE"
echo " Host compiler: $HOST_CC"
echo
echo " Target system partition: $SYSTEM_PARTITION"
echo
if [ -e $CERT -a -e $KEY ]
then
msg Reusing existing $CERT and $KEY
else
msg Regenerating keys, pleae enter the required information.
(
mkdir -p $KEYS
cd $KEYS
openssl genrsa -out key.pem 1024 && \
openssl req -new -key key.pem -out request.pem && \
openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem && \
openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
)
fi
if [ -e $UPDATE_ROOT ]
then
rm -rf $UPDATE_ROOT
fi
if [ -e $LOCAL_BUILD_DIR/update.zip ]
then
rm -f $LOCAL_BUILD_DIR/update.zip
fi
$MAKE $DEFCONFIG
perl -pi -e 's/(CONFIG_LOCALVERSION="[^"]*)/\1-'"$VERSION"'"/' .config
$MAKE -j$N_CORES
msg Kernel built successfully, building $ZIP*.zip
mkdir -p $UPDATE_ROOT
if [ "$INITRD" == "" ]
then
cp -r $TOOLS_DIR/kernel $UPDATE_ROOT/kernel
cp arch/arm/boot/zImage $UPDATE_ROOT/kernel
else
abootimg --create $UPDATE_ROOT/boot.img -k arch/arm/boot/zImage -f $LOCAL_BUILD_DIR/bootimg.cfg -r $INITRD
fi
if [ -e $LOCAL_BUILD_DIR/system ]
then
mkdir -p $LOCAL_BUILD_DIR
cp -r $LOCAL_BUILD_DIR/system $UPDATE_ROOT/system
permissions=`( cd $LOCAL_BUILD_DIR/system && find . -type f -exec echo -n 'set_perm(0, 0, 0755, "/system/{}"); ' \; )`
fi
mkdir -p $UPDATE_ROOT/system/lib/modules
find . -name '*.ko' -exec cp {} $UPDATE_ROOT/system/lib/modules/ \;
mkdir -p $UPDATE_ROOT/META-INF/com/google/android
cp $TOOLS_DIR/update-binary $UPDATE_ROOT/META-INF/com/google/android
(
cat <<EOF
$BANNER
EOF
sed -e "s|@@SYSTEM_PARTITION@@|$SYSTEM_PARTITION|" \
-e "s|@@FLASH_BOOT@@|$FLASH_BOOT|" \
-e "s|@@FIX_PERMISSIONS@@|$permissions |" \
< $TOOLS_DIR/updater-script
) > $UPDATE_ROOT/META-INF/com/google/android/updater-script
(
cd $UPDATE_ROOT
zip -r ../update.zip .
)
java -jar $TOOLS_DIR/signapk.jar $CERT $KEY $LOCAL_BUILD_DIR/update.zip $ZIP.zip
msg COMPLETE