-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathcreate_kernel.sh
executable file
·75 lines (56 loc) · 2.15 KB
/
create_kernel.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
#!/bin/bash
# Note: mptcp repo needs to be in "${MY_ROOT_DIR}/mptcp" at the correct ref.
# If MY_ROOT_DIR is not set, it is "${HOME}"
# These variables can be modified
FULLNAME=${MY_FULLNAME:-"Christoph Paasch"}
EMAIL=${MY_EMAIL:-"christoph.paasch@gmail.com"}
ROOT_DIR=${MY_ROOT_DIR:-"${HOME}"}
CONFIG=${MY_CONFIG:-"n"}
# Unmodifiabled variables
INIT_DIR="${PWD}"
SCRIPT_DIR="${INIT_DIR}/$(dirname "${0}")"
DEB_INFO="${ROOT_DIR}/deb.info"
cd "${ROOT_DIR}"
rm -fv *.deb
cd "${ROOT_DIR}/mptcp"
git config --global --add safe.directory "${PWD}"
if ! git describe --tags --exact-match; then
echo "Not building a tag. Press Enter to continue."
read
fi
DATE=$(date "+%Y%m%d%H%M%S")-1
KVERS=$(make kernelversion)
KVERS_MAJ=$(echo "${KVERS}" | cut -d. -f1-2)
CONFIG_KVERS="config-${KVERS_MAJ}"
CONFIG_PATH="${SCRIPT_DIR}/${CONFIG_KVERS}"
TAG="$(git describe --tags)"
[ "${CONFIG}" = "y" ] && cp -v "${CONFIG_PATH}" .config
echo "Building ${KVERS} - Tag: ${TAG}" | tee "${DEB_INFO}"
rm -f modules.builtin.modinfo
make -j $(nproc) deb-pkg DEBEMAIL="${EMAIL}" DEBFULLNAME="${FULLNAME}" LOCALVERSION=.mptcp KDEB_PKGVERSION="${DATE}"
[ "${CONFIG}" = "y" ] && cp -v .config "${CONFIG_PATH}"
cd "${ROOT_DIR}"
# Create meta-package
META_PKG="linux-mptcp"
# if it is not the last version, add a suffix to restrict to this kernel
if [ -s "${CONFIG_PATH}" ] && \
[ "${CONFIG_KVERS}" != "$(basename "$(ls "${SCRIPT_DIR}/config-"* | sort -V | tail -n1)")" ]; then
META_PKG+="-${KVERS_MAJ}"
fi
echo "Creating ${META_PKG} meta package"
rm -Rf "${META_PKG}"
mkdir -p "${META_PKG}/DEBIAN"
chmod -R a-s "${META_PKG}"
ctrl="${META_PKG}/DEBIAN/control"
touch "${ctrl}"
echo "Package: ${META_PKG}" >> "${ctrl}"
echo "Version: ${DATE}" >> "${ctrl}"
echo "Section: main" >> "${ctrl}"
echo "Priority: optional" >> "${ctrl}"
echo "Architecture: all" >> "${ctrl}"
echo "Depends: linux-headers-${KVERS}.mptcp, linux-image-${KVERS}.mptcp" >> "${ctrl}"
echo "Installed-Size:" >> "${ctrl}"
echo "Maintainer: ${FULLNAME} <${EMAIL}>" >> "${ctrl}"
echo "Description: A meta-package for Linux kernel v${KVERS} MPTCP ${TAG}" >> "${ctrl}"
dpkg --build "${META_PKG}"
mv "${META_PKG}.deb" "${META_PKG}_${TAG}_${DATE}_all.deb"