2bb89ae564
This change updates the Debian build rules to build the Linux perf tools using Python 3 as opposed to Python 2.7 that is currently specified in the rules. Python 2.7 was already dropped from the build requirements, but this line was not updated in the process.
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="${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=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 $@
|