efb8844e8c
This change removes the kernel release from the full kernel version. This is used by Proxmox to identify differences in the kernel ABI. However, since this project does not track these changes, we remove the kernel release number altogether.
211 lines
9 KiB
Makefile
Executable file
211 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="PVE Edge ${DEB_VERSION} ${PVE_BUILD_PROFILE} (${PKG_DATE})"
|
|
# 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 \
|
|
) | 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 $@
|