b481f89770
The PC speaker (beeper) can only be managed by one module, and there are two which could do so. The very basic INPUT_PCSPKR, and the more advanced SND_PCSP which allows it to be used as primitive ALSA soundcard, which for Proxmox Server projects, and all modern workstations is not much of use. As they both were aliased to the "pcspkr" module name, and used the same internal driver name (being a replacment of the other), one would get the following error message when both are loaded: "Error: Driver 'pcspkr' is already registered, aborting..." in the kernel log. This happens as by default both are tried to get loaded. We do not want the more complex ALSA one, so disable that. Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
233 lines
9.8 KiB
Makefile
Executable File
233 lines
9.8 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 \
|
|
-d CONFIG_SND_PCSP \
|
|
-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
|