-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild-kernel
More file actions
executable file
·132 lines (108 loc) · 3.57 KB
/
build-kernel
File metadata and controls
executable file
·132 lines (108 loc) · 3.57 KB
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
#!/usr/bin/env bash
source "${HOME}/scripts/startupstuff.sh";
# Kernel compiling script
function check_toolchain() {
TC=$(find "${TOOLCHAIN}"/bin -type f -name "aarch64-*-gcc");
if [[ -f "${TC}" ]]; then
CROSS_COMPILE="${CCACHE} ${TOOLCHAIN}/bin/$(echo ${TC} | awk -F '/' '{print $NF'} |\
sed -e 's/gcc//')";
export CROSS_COMPILE;
echo -e "Using toolchain: $(${CROSS_COMPILE}gcc --version | head -1)";
else
echo -e "No suitable toolchain found in ${TOOLCHAIN}";
exit 1;
fi
}
if [[ -z ${KERNELDIR} ]]; then
echo -e "Please set KERNELDIR";
exit 1;
fi
export DEVICE=$1;
if [[ -z ${DEVICE} ]]; then
export DEVICE="oneplus3";
fi
# These won't change
export SRCDIR="${KERNELDIR}/${DEVICE}";
export OUTDIR="${KERNELDIR}/${DEVICE}/out";
export ANYKERNEL="${KERNELDIR}/anykernel/${DEVICE}";
export MODULES_DIR="${ANYKERNEL}/modules";
export ARCH="arm64";
export TOOLCHAIN="${KERNELDIR}/toolchain/${DEVICE}";
export CCACHE="$(command -v ccache)";
export DEFCONFIG="${DEVICE}_defconfig";
export ZIP_DIR="${KERNELDIR}/files/${DEVICE}";
export IMAGE="${OUTDIR}/arch/${ARCH}/boot/Image.gz-dtb";
if [[ -z "${JOBS}" ]]; then
JOBS="$(grep -c '^processor' /proc/cpuinfo)";
export JOBS;
fi
if [[ ! -d "${ANYKERNEL}" ]]; then
hub clone AnyKernel2 -b "${DEVICE}" "${ANYKERNEL}";
fi
export MAKE="make O=${OUTDIR}";
check_toolchain;
if [[ -z "${NAME}" ]]; then
export NAME="derp";
fi
NAME="${NAME}-${DEVICE}-$(date +%Y%m%d-%H%M)";
export NAME;
export ZIPNAME="${NAME}.zip"
export FINAL_ZIP="${ZIP_DIR}/${ZIPNAME}"
[ ! -d "${ZIP_DIR}" ] && mkdir -pv "${ZIP_DIR}"
[ ! -d "${OUTDIR}" ] && mkdir -pv "${OUTDIR}"
cd "${SRCDIR}" || exit;
rm -fv "${IMAGE}";
if [[ "$@" =~ "mrproper" ]]; then
${MAKE} mrproper
fi
if [[ "$@" =~ "clean" ]]; then
${MAKE} clean
fi
${MAKE} $DEFCONFIG || (echo "Failed to build with ${DEFCONFIG}, exiting!" && exit 1);
START=$(date +"%s");
${MAKE} -j"${JOBS}";
exitCode="$?";
END=$(date +"%s")
DIFF=$((END - START))
echo -e "Build took $((DIFF / 60)) minute(s) and $((DIFF % 60)) seconds.";
if [[ ! -f "${IMAGE}" ]]; then
echo -e "Build failed :P";
exit 1;
else
echo -e "Build Succesful!";
fi
echo -e "Copying kernel image";
cp -v "${IMAGE}" "${ANYKERNEL}/";
grep -q "=m" ${OUTDIR}/.config;
if [[ "$?" -eq 0 ]]; then
find ${OUTDIR} -name "*.ko" -exec cp {} ${MODULES_DIR} \;
for module in $(ls ${MODULES_DIR/*.ko}); do
${CROSS_COMPILE}strip --strip-unneeded "${MODULES_DIR}/${module}";
done
fi # Modules check
cd - || exit;
cd "${ANYKERNEL}" || exit;
zip -r9 "${FINAL_ZIP}" *;
cd - || exit;
if [ -f "$FINAL_ZIP" ];
then
echo -e "$NAME zip can be found at $FINAL_ZIP";
if [[ "$@" =~ "transfer" ]]; then
echo -e "Uploading ${ZIPNAME} to https://transfer.sh/";
transfer "${FINAL_ZIP}";
fi
if [[ "$@" =~ "upload" ]]; then
for f in -changelog.txt .zip; do
scp "${ZIP_DIR}/${NAME}$f" "akhil@downloads.akhilnarang.me:downloads/kernel/oneplus3/Test/";
git -C ${SRCDIR} log akhilnarang/stable..HEAD > ${ZIP_DIR}/${NAME}-changelog.txt;
done
ssh akhil@downloads.akhilnarang.me ~/gdrive sync upload downloads/kernel 1DnrCzSchI9MNHXkbiaqlw-qyRkNIDKFQ
GDRIVE_URL="https://drive.google.com/drive/folders/1PwLPGxfk0A1oj2nGATxdfYuguU7hZdJ4";
DOWNLOADS_URL="https://downloads.akhilnarang.me/kernel/oneplus3/Test";
bash ~/kronicbot/send_tg.sh "-1001122772970" "Check [Main]($DOWNLOADS_URL) | [Mirror]($GDRIVE_URL) for ${NAME}";
bash ~/kronicbot/send_tg.sh "-1001223901635" "Check [Main]($DOWNLOADS_URL) | [Mirror]($GDRIVE_URL) for ${NAME}";
fi
else
echo -e "Zip Creation Failed =(";
fi # FINAL_ZIP check
exit ${exitCode};