pve-kernel-thunderx/debian/rules
Fabian Mastenbroek e1a0974313
Include documentation scripts in header package
This change adds the documentation scripts located in Documentation of
the Linux source root to the header package, as they are necessary for
some modules to build.
2021-05-03 10:25:29 +02:00

211 lines
No EOL
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="${KVNAME} ${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=python2.7
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 $@