eb6667c98c
Allows to mount VFAT devices even if the currently running kernel was removed before any VFAT, or other FS using the default Native Language Support module was mounted during the current uptime. This then could break updating the ESP partitions, which are mounted with VFAT in a postrm triggered step - so at a time where the current /lib/modules/... was already removed, and so the NLS could not get loaded. While there are a lot of different NLS, our kernel config has: > CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" So compile that module as built-in. Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
232 lines
9.7 KiB
Makefile
Executable File
232 lines
9.7 KiB
Makefile
Executable File
#!/usr/bin/make -f
|
|
# -*- makefile -*-
|
|
|
|
# Uncomment this to turn on verbose mode.
|
|
#export DH_VERBOSE=1
|
|
|
|
# TODO: check for headers not being installed
|
|
BUILD_DIR=$(shell pwd)
|
|
|
|
include /usr/share/dpkg/default.mk
|
|
include debian/rules.d/env.mk
|
|
include debian/rules.d/${DEB_BUILD_ARCH}.mk
|
|
|
|
CHANGELOG_DATE:=$(shell dpkg-parsechangelog -SDate)
|
|
|
|
PVE_KERNEL_PKG=pve-kernel-${KVNAME}
|
|
PVE_HEADER_PKG=pve-headers-${KVNAME}
|
|
LINUX_TOOLS_PKG=linux-tools-${KERNEL_MAJMIN}
|
|
KERNEL_SRC_COPY=${KERNEL_SRC}_tmp
|
|
|
|
# TODO: split for archs, move to files?
|
|
PVE_CONFIG_OPTS= \
|
|
-m INTEL_MEI_WDT \
|
|
-d CONFIG_SND_PCM_OSS \
|
|
-e CONFIG_TRANSPARENT_HUGEPAGE_MADVISE \
|
|
-d CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS \
|
|
-m CONFIG_CEPH_FS \
|
|
-m CONFIG_BLK_DEV_NBD \
|
|
-m CONFIG_BLK_DEV_RBD \
|
|
-m CONFIG_BCACHE \
|
|
-m CONFIG_JFS_FS \
|
|
-m CONFIG_HFS_FS \
|
|
-m CONFIG_HFSPLUS_FS \
|
|
-e CONFIG_BRIDGE \
|
|
-e CONFIG_BRIDGE_NETFILTER \
|
|
-e CONFIG_BLK_DEV_SD \
|
|
-e CONFIG_BLK_DEV_SR \
|
|
-e CONFIG_BLK_DEV_DM \
|
|
-e CONFIG_BLK_DEV_NVME \
|
|
-e CONFIG_NLS_ISO8859_1 \
|
|
-d CONFIG_INPUT_EVBUG \
|
|
-d CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND \
|
|
-e CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE \
|
|
-d CONFIG_MODULE_SIG \
|
|
-d CONFIG_MEMCG_DISABLED \
|
|
-e CONFIG_MEMCG_SWAP_ENABLED \
|
|
-e CONFIG_HYPERV \
|
|
-e CONFIG_MEMCG_KMEM \
|
|
-d CONFIG_DEFAULT_CFQ \
|
|
-e CONFIG_DEFAULT_DEADLINE \
|
|
-e CONFIG_MODVERSIONS \
|
|
-d CONFIG_DEFAULT_SECURITY_DAC \
|
|
-e CONFIG_DEFAULT_SECURITY_APPARMOR \
|
|
--set-str CONFIG_DEFAULT_SECURITY apparmor \
|
|
-d CONFIG_UNWINDER_ORC \
|
|
-d CONFIG_UNWINDER_GUESS \
|
|
-e CONFIG_UNWINDER_FRAME_POINTER \
|
|
-e CONFIG_PAGE_TABLE_ISOLATION
|
|
|
|
debian/control: $(wildcard debian/*.in)
|
|
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.prerm.in > debian/${PVE_KERNEL_PKG}.prerm
|
|
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.postrm.in > debian/${PVE_KERNEL_PKG}.postrm
|
|
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.postinst.in > debian/${PVE_KERNEL_PKG}.postinst
|
|
sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-headers.postinst.in > debian/${PVE_HEADER_PKG}.postinst
|
|
chmod +x debian/${PVE_KERNEL_PKG}.prerm
|
|
chmod +x debian/${PVE_KERNEL_PKG}.postrm
|
|
chmod +x debian/${PVE_KERNEL_PKG}.postinst
|
|
chmod +x debian/${PVE_HEADER_PKG}.postinst
|
|
sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@KVMAJMIN@/${KERNEL_MAJMIN}/g' < debian/control.in > debian/control
|
|
|
|
build: .compile_mark .tools_compile_mark .modules_compile_mark
|
|
|
|
install: .install_mark .tools_install_mark .headers_install_mark
|
|
dh_installdocs -A debian/copyright debian/SOURCE
|
|
dh_installchangelogs
|
|
dh_installman
|
|
dh_strip_nondeterminism
|
|
dh_compress
|
|
dh_fixperms
|
|
|
|
binary: install
|
|
debian/rules fwcheck abicheck
|
|
dh_strip -N${PVE_HEADER_PKG}
|
|
dh_makeshlibs
|
|
dh_shlibdeps
|
|
dh_installdeb
|
|
dh_gencontrol
|
|
dh_md5sums
|
|
dh_builddeb
|
|
|
|
.config_mark:
|
|
cd ${KERNEL_SRC}; scripts/config ${PVE_CONFIG_OPTS}
|
|
${MAKE} -C ${KERNEL_SRC} oldconfig
|
|
touch $@
|
|
|
|
.compile_mark: .config_mark
|
|
${MAKE} -C ${KERNEL_SRC} KBUILD_BUILD_VERSION_TIMESTAMP="PVE ${DEB_VERSION} (${CHANGELOG_DATE})"
|
|
touch $@
|
|
|
|
.install_mark: .compile_mark .modules_compile_mark
|
|
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 $(addprefix ${MODULES}/,zfs.ko zavl.ko znvpair.ko zunicode.ko zcommon.ko icp.ko zlua.ko spl.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/ > watchdog-blacklist.tmp
|
|
echo ipmi_watchdog.ko >> watchdog-blacklist.tmp
|
|
cat 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 $@
|
|
|
|
.tools_compile_mark: .compile_mark
|
|
${MAKE} -C ${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_prepare_mark: .config_mark
|
|
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}
|
|
# copy to allow building in parallel to kernel/module compilation without interference
|
|
rm -rf ${KERNEL_SRC_COPY}
|
|
cp -ar ${KERNEL_SRC} ${KERNEL_SRC_COPY}
|
|
make -C ${KERNEL_SRC_COPY} mrproper
|
|
cd ${KERNEL_SRC_COPY}; find . -path './debian/*' -prune \
|
|
-o -path './include/*' -prune \
|
|
-o -path './Documentation' -prune \
|
|
-o -path './scripts' -prune \
|
|
-o -type f \
|
|
\( \
|
|
-name 'Makefile*' \
|
|
-o -name 'Kconfig*' \
|
|
-o -name 'Kbuild*' \
|
|
-o -name '*.sh' \
|
|
-o -name '*.pl' \
|
|
\) \
|
|
-print | cpio -pd --preserve-modification-time ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
|
|
cd ${KERNEL_SRC_COPY}; cp -a include scripts ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
|
|
cd ${KERNEL_SRC_COPY}; \
|
|
( \
|
|
find arch/${KERNEL_HEADER_ARCH} -name include -type d -print | \
|
|
xargs -n1 -i: find : -type f \
|
|
) | \
|
|
cpio -pd --preserve-modification-time ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}
|
|
touch $@
|
|
|
|
.headers_compile_mark: .headers_prepare_mark
|
|
# set output to subdir of source to reduce number of hardcoded paths in output files
|
|
rm -rf ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}
|
|
mkdir -p ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}
|
|
cp ${KERNEL_SRC}/.config ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}/.config
|
|
${MAKE} -C ${KERNEL_SRC_COPY} O=${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG} -j1 syncconfig prepare scripts
|
|
find ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG} -name \*.o.ur-\* | xargs rm -f
|
|
rsync --ignore-existing -r -v -a $(addprefix ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}/,arch include kernel scripts tools) ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/
|
|
rm -rf ${BUILD_DIR}/${KERNEL_SRC_COPY}
|
|
touch $@
|
|
|
|
.headers_install_mark: .compile_mark .modules_compile_mark .headers_compile_mark
|
|
cp ${KERNEL_SRC}/include/generated/compile.h debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/include/generated/compile.h
|
|
install -m 0644 ${KERNEL_SRC}/Module.symvers 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 $@
|
|
|
|
.modules_compile_mark: ${MODULES}/zfs.ko
|
|
touch $@
|
|
|
|
${MODULES}/zfs.ko: .compile_mark
|
|
cd ${MODULES}/${ZFSDIR}; ./autogen.sh
|
|
cd ${MODULES}/${ZFSDIR}; ./configure --with-config=kernel --with-linux=${BUILD_DIR}/${KERNEL_SRC} --with-linux-obj=${BUILD_DIR}/${KERNEL_SRC}
|
|
${MAKE} -C ${MODULES}/${ZFSDIR}
|
|
cp ${MODULES}/${ZFSDIR}/module/avl/zavl.ko ${MODULES}/
|
|
cp ${MODULES}/${ZFSDIR}/module/nvpair/znvpair.ko ${MODULES}/
|
|
cp ${MODULES}/${ZFSDIR}/module/unicode/zunicode.ko ${MODULES}/
|
|
cp ${MODULES}/${ZFSDIR}/module/zcommon/zcommon.ko ${MODULES}/
|
|
cp ${MODULES}/${ZFSDIR}/module/icp/icp.ko ${MODULES}/
|
|
cp ${MODULES}/${ZFSDIR}/module/zfs/zfs.ko ${MODULES}/
|
|
cp ${MODULES}/${ZFSDIR}/module/lua/zlua.ko ${MODULES}/
|
|
cp ${MODULES}/${ZFSDIR}/module/spl/spl.ko ${MODULES}/
|
|
|
|
fwlist-${KVNAME}: .compile_mark .modules_compile_mark
|
|
debian/scripts/find-firmware.pl debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME} >fwlist.tmp
|
|
mv fwlist.tmp $@
|
|
|
|
.PHONY: fwcheck
|
|
fwcheck: fwlist-${KVNAME} fwlist-previous
|
|
@echo "checking fwlist for changes since last built firmware package.."
|
|
@echo "if this check fails, add fwlist-${KVNAME} to the pve-firmware repository and upload a new firmware package together with the ${KVNAME} kernel"
|
|
sort fwlist-previous | uniq > fwlist-previous.sorted
|
|
sort fwlist-${KVNAME} | uniq > fwlist-${KVNAME}.sorted
|
|
diff -up -N fwlist-previous.sorted fwlist-${KVNAME}.sorted > fwlist.diff
|
|
rm fwlist.diff fwlist-previous.sorted fwlist-${KVNAME}.sorted
|
|
@echo "done, no need to rebuild pve-firmware"
|
|
|
|
|
|
abi-${KVNAME}: .compile_mark
|
|
debian/scripts/abi-generate debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/Module.symvers abi-${KVNAME} ${KVNAME}
|
|
|
|
.PHONY: abicheck
|
|
abicheck: debian/scripts/abi-check abi-${KVNAME} abi-prev-* abi-blacklist
|
|
debian/scripts/abi-check abi-${KVNAME} abi-prev-* ${SKIPABI}
|
|
|
|
.PHONY: clean
|