138e5893be
This change reduces the length of the kernel version that is set by the build process. We find that the most recent version is too long for the kernel and causes certain kernel detection processes to fail. We also remove the concept of build flavor or build profile. These concepts should be reflected in the Debian package name and version instead of separately in the kernel version.
212 lines
9 KiB
Makefile
Executable file
212 lines
9 KiB
Makefile
Executable file
#!/usr/bin/make -f
|
|
# -*- makefile -*-
|
|
include /usr/share/dpkg/default.mk
|
|
|
|
# Common variables for all architectures
|
|
include debian/rules.d/common.mk
|
|
|
|
# Pull in some arch specific stuff
|
|
include debian/rules.d/arch/${DEB_BUILD_ARCH}.mk
|
|
|
|
BUILD_DIR ?= ${CURDIR}
|
|
KERNEL_SRC := linux
|
|
ZFS_SRC := zfs
|
|
|
|
%:
|
|
dh $@ --with quilt
|
|
|
|
## Debian package metadata
|
|
debian/control: debian/templates/control.in
|
|
sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@KVMAJMIN@/${KERNEL_MAJMIN}/g' < debian/templates/control.in > debian/control
|
|
|
|
debian/SOURCE:
|
|
echo "git clone git@github.com:fabianishere/pve-edge-kernel.git \
|
|
git checkout ${PKG_GIT_VERSION} \
|
|
git submodule update --init --depth=1" > $@
|
|
|
|
## Debhelper phases
|
|
override_dh_quilt_patch:
|
|
# Apply crack bundle
|
|
git -C ${KERNEL_SRC} fetch ../crack.bundle $$(git -C ${KERNEL_SRC} ls-remote ../crack.bundle | cut -f1)
|
|
git -C ${KERNEL_SRC} checkout -f FETCH_HEAD
|
|
# Apply patches
|
|
cd ${KERNEL_SRC}; \
|
|
QUILT_PATCHES=../debian/patches \
|
|
QUILT_SERIES=series.linux \
|
|
quilt --quiltrc /dev/null --color=always push -a || test $$? = 2
|
|
cd ${ZFS_SRC}; \
|
|
QUILT_PATCHES=../debian/patches \
|
|
QUILT_SERIES=series.zfs \
|
|
quilt --quiltrc /dev/null --color=always push -a || test $$? = 2
|
|
|
|
override_dh_quilt_unpatch:
|
|
cd ${KERNEL_SRC}; \
|
|
QUILT_PATCHES=../debian/patches \
|
|
QUILT_SERIES=series.linux \
|
|
quilt --quiltrc /dev/null pop -a || test $$? = 2
|
|
cd ${ZFS_SRC}; \
|
|
QUILT_PATCHES=../debian/patches \
|
|
QUILT_SERIES=series.zfs \
|
|
quilt --quiltrc /dev/null pop -a || test $$? = 2
|
|
rm -rf ${KERNEL_SRC}/.pc ${ZFS_SRC}/.pc
|
|
|
|
override_dh_autoreconf:
|
|
dh_autoreconf -D ${ZFS_SRC}
|
|
|
|
override_dh_auto_configure: ${KERNEL_SRC}/.config
|
|
|
|
override_dh_auto_build:
|
|
# Kernel
|
|
dh_auto_build -D ${KERNEL_SRC} -- \
|
|
CC="${PVE_KERNEL_CC}" \
|
|
KCFLAGS="${PVE_KERNEL_CFLAGS}" \
|
|
EXTRAVERSION="${EXTRAVERSION}" \
|
|
LOCALVERSION="${LOCALVERSION}" \
|
|
KBUILD_BUILD_VERSION_TIMESTAMP="${PKG_DISTRIBUTOR} ${DEB_VERSION} (${PKG_DATE_UTC_ISO})"
|
|
# ZFS
|
|
dh_auto_configure -D ${ZFS_SRC} -- CC="${PVE_ZFS_CC}" --with-config=kernel --with-linux=$(realpath ${KERNEL_SRC}) --with-linux-obj=$(realpath ${KERNEL_SRC})
|
|
dh_auto_build -D ${ZFS_SRC}
|
|
|
|
override_dh_auto_install: debian/SOURCE .install_mark .tools_install_mark .headers_install_mark .usr_headers_install_mark
|
|
dh_installdocs -A debian/copyright debian/SOURCE
|
|
dh_installchangelogs
|
|
dh_installman
|
|
dh_strip_nondeterminism
|
|
dh_compress
|
|
dh_fixperms
|
|
|
|
override_dh_auto_clean: debian/control
|
|
dh_clean
|
|
dh_auto_clean -D ${KERNEL_SRC}
|
|
dh_auto_clean -D ${ZFS_SRC}
|
|
rm -f ${PVE_KERNEL_TEMPLATES} ${PVE_HEADER_TEMPLATES}
|
|
rm -f debian/SOURCE debian/*.tmp .*_mark
|
|
|
|
## Kernel
|
|
PVE_KERNEL_TEMPLATES := $(patsubst debian/templates/pve-kernel.%.in, debian/${PVE_KERNEL_PKG}.%, $(wildcard debian/templates/pve-kernel.*.in))
|
|
|
|
${KERNEL_SRC}/.config:
|
|
${KERNEL_SRC}/scripts/kconfig/merge_config.sh -m \
|
|
-O ${KERNEL_SRC} \
|
|
${KERNEL_SRC}/debian.master/config/config.common.ubuntu \
|
|
${KERNEL_SRC}/debian.master/config/${DEB_BUILD_ARCH}/config.common.${DEB_BUILD_ARCH} \
|
|
${KERNEL_SRC}/debian.master/config/${DEB_BUILD_ARCH}/config.flavour.generic \
|
|
debian/config/config.pve
|
|
${MAKE} -C ${KERNEL_SRC} CC=${PVE_KERNEL_CC} oldconfig
|
|
|
|
debian/${PVE_KERNEL_PKG}.%: debian/templates/pve-kernel.%.in
|
|
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/templates/pve-kernel.$*.in > debian/${PVE_KERNEL_PKG}.$*
|
|
chmod +x debian/${PVE_KERNEL_PKG}.$*
|
|
|
|
.install_mark: ${PVE_KERNEL_TEMPLATES}
|
|
rm -rf debian/${PVE_KERNEL_PKG}
|
|
mkdir -p debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}
|
|
mkdir debian/${PVE_KERNEL_PKG}/boot
|
|
install -m 644 ${KERNEL_SRC}/.config debian/${PVE_KERNEL_PKG}/boot/config-${KVNAME}
|
|
install -m 644 ${KERNEL_SRC}/System.map debian/${PVE_KERNEL_PKG}/boot/System.map-${KVNAME}
|
|
install -m 644 ${KERNEL_SRC}/${KERNEL_IMAGE_PATH} debian/${PVE_KERNEL_PKG}/boot/${KERNEL_INSTALL_FILE}-${KVNAME}
|
|
${MAKE} -C ${KERNEL_SRC} INSTALL_MOD_PATH=${BUILD_DIR}/debian/${PVE_KERNEL_PKG}/ modules_install
|
|
# install zfs drivers
|
|
install -d -m 0755 debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/avl/zavl.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/nvpair/znvpair.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/unicode/zunicode.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/zcommon/zcommon.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/icp/icp.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/zfs/zfs.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/lua/zlua.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/spl/spl.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
install -m 644 ${ZFS_SRC}/module/zstd/zzstd.ko debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs
|
|
# remove firmware
|
|
rm -rf debian/${PVE_KERNEL_PKG}/lib/firmware
|
|
# strip debug info
|
|
find debian/${PVE_KERNEL_PKG}/lib/modules -name \*.ko -print | while read f ; do strip --strip-debug "$$f"; done
|
|
# finalize
|
|
/sbin/depmod -b debian/${PVE_KERNEL_PKG}/ ${KVNAME}
|
|
# Autogenerate blacklist for watchdog devices (see README)
|
|
install -m 0755 -d debian/${PVE_KERNEL_PKG}/lib/modprobe.d
|
|
ls debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/kernel/drivers/watchdog/ > debian/watchdog-blacklist.tmp
|
|
echo ipmi_watchdog.ko >> debian/watchdog-blacklist.tmp
|
|
cat debian/watchdog-blacklist.tmp | sed -e 's/^/blacklist /' -e 's/.ko$$//' | sort -u > debian/${PVE_KERNEL_PKG}/lib/modprobe.d/blacklist_${PVE_KERNEL_PKG}.conf
|
|
rm -f debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/source
|
|
rm -f debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/build
|
|
touch $@
|
|
|
|
## Kernel tools
|
|
.tools_compile_mark:
|
|
dh_auto_build -D ${KERNEL_SRC}/tools/perf -- prefix=/usr \
|
|
HAVE_NO_LIBBFD=1 \
|
|
HAVE_CPLUS_DEMANGLE_SUPPORT=1 \
|
|
NO_LIBPYTHON=1 \
|
|
NO_LIBPERL=1 \
|
|
NO_LIBCRYPTO=1 \
|
|
PYTHON=python3
|
|
echo "checking GPL-2 only perf binary for library linkage with incompatible licenses.."
|
|
! ldd ${KERNEL_SRC}/tools/perf/perf | grep -q -E '\blibbfd'
|
|
! ldd ${KERNEL_SRC}/tools/perf/perf | grep -q -E '\blibcrypto'
|
|
${MAKE} -C ${KERNEL_SRC}/tools/perf man
|
|
touch $@
|
|
|
|
.tools_install_mark: .tools_compile_mark
|
|
rm -rf debian/${LINUX_TOOLS_PKG}
|
|
mkdir -p debian/${LINUX_TOOLS_PKG}/usr/bin
|
|
mkdir -p debian/${LINUX_TOOLS_PKG}/usr/share/man/man1
|
|
install -m 755 ${BUILD_DIR}/${KERNEL_SRC}/tools/perf/perf debian/${LINUX_TOOLS_PKG}/usr/bin/perf_$(KERNEL_MAJMIN)
|
|
for i in ${BUILD_DIR}/${KERNEL_SRC}/tools/perf/Documentation/*.1; do \
|
|
fname="$${i##*/}"; manname="$${fname%.1}"; \
|
|
install -m644 "$$i" "debian/${LINUX_TOOLS_PKG}/usr/share/man/man1/$${manname}_$(KERNEL_MAJMIN).1"; \
|
|
done
|
|
touch $@
|
|
|
|
## Headers
|
|
PVE_HEADER_TEMPLATES := $(patsubst debian/templates/pve-headers.%.in, debian/${PVE_HEADER_PKG}.%, $(wildcard debian/templates/pve-headers.*.in))
|
|
|
|
debian/${PVE_HEADER_PKG}.%: debian/templates/pve-headers.%.in
|
|
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/templates/pve-headers.$*.in > debian/${PVE_HEADER_PKG}.$*
|
|
chmod +x debian/${PVE_HEADER_PKG}.$*
|
|
|
|
.headers_install_mark: ${PVE_HEADER_TEMPLATES}
|
|
rm -rf debian/${PVE_HEADER_PKG}
|
|
mkdir -p debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
|
|
install -m 0644 ${KERNEL_SRC}/.config debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
|
|
( \
|
|
cd ${KERNEL_SRC}; \
|
|
find . -path './debian/*' -prune \
|
|
-o -path './include/*' -prune \
|
|
-o -path './scripts' -prune \
|
|
-o -type f \
|
|
\( \
|
|
-name 'Makefile*' \
|
|
-o -name 'Kconfig*' \
|
|
-o -name 'Kbuild*' \
|
|
-o -name '*.sh' \
|
|
-o -name '*.pl' \
|
|
\) \
|
|
-print; \
|
|
find include scripts -type f -o -type l; \
|
|
find arch/${KERNEL_BUILD_ARCH} -maxdepth 1 -name Makefile\*; \
|
|
find arch/${KERNEL_BUILD_ARCH} -name module.lds -o -name Kbuild.platforms -o -name Platform; \
|
|
find $$(find arch/${KERNEL_BUILD_ARCH} -name include -o -name scripts -type d) -type f; \
|
|
find arch/${KERNEL_BUILD_ARCH}/include Module.symvers include scripts -type f; \
|
|
find tools/ -name 'objtool' -type f \
|
|
) | rsync -avq --files-from=- ${KERNEL_SRC} debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
|
|
mkdir -p debian/${PVE_HEADER_PKG}/lib/modules/${KVNAME}
|
|
ln -sf /usr/src/linux-headers-${KVNAME} debian/${PVE_HEADER_PKG}/lib/modules/${KVNAME}/build
|
|
touch $@
|
|
|
|
## User-space headers
|
|
.usr_headers_install_mark: PKG_DIR = debian/${PVE_USR_HEADER_PKG}
|
|
.usr_headers_install_mark: OUT_DIR = ${PKG_DIR}/usr
|
|
.usr_headers_install_mark:
|
|
rm -rf '${PKG_DIR}'
|
|
mkdir -p '${PKG_DIR}'
|
|
$(MAKE) -C ${KERNEL_SRC} headers_check ARCH=$(KERNEL_HEADER_ARCH)
|
|
$(MAKE) -C ${KERNEL_SRC} headers_install ARCH=$(KERNEL_HEADER_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR)
|
|
rm -rf $(OUT_DIR)/include/drm $(OUT_DIR)/include/scsi
|
|
find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} +
|
|
# Move include/asm to arch-specific directory
|
|
mkdir -p $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)
|
|
mv $(OUT_DIR)/include/asm $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/
|
|
test ! -d $(OUT_DIR)/include/arch || \
|
|
mv $(OUT_DIR)/include/arch $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/
|
|
touch $@
|