]>
Commit | Line | Data |
---|---|---|
2d62d8a4 FG |
1 | #!/usr/bin/make -f |
2 | # -*- makefile -*- | |
3 | ||
4 | # Uncomment this to turn on verbose mode. | |
5 | #export DH_VERBOSE=1 | |
6 | ||
e96d2ab3 | 7 | # TODO: check for headers not being installed |
66aed5b8 | 8 | BUILD_DIR=$(shell pwd) |
2d62d8a4 | 9 | |
e96d2ab3 | 10 | include /usr/share/dpkg/default.mk |
66aed5b8 | 11 | include debian/rules.d/env.mk |
e96d2ab3 FG |
12 | include debian/rules.d/${DEB_BUILD_ARCH}.mk |
13 | ||
e96d2ab3 FG |
14 | CHANGELOG_DATE:=$(shell dpkg-parsechangelog -SDate) |
15 | ||
16 | PVE_KERNEL_PKG=pve-kernel-${KVNAME} | |
bec10498 | 17 | PVE_DEBUG_KERNEL_PKG=pve-kernel-${KVNAME}-dbgsym |
e96d2ab3 | 18 | PVE_HEADER_PKG=pve-headers-${KVNAME} |
924ae54c | 19 | PVE_USR_HEADER_PKG=pve-kernel-libc-dev |
5fd5ec0e | 20 | LINUX_TOOLS_PKG=linux-tools-${KERNEL_MAJMIN} |
d7236300 | 21 | KERNEL_SRC_COPY=${KERNEL_SRC}_tmp |
e96d2ab3 FG |
22 | |
23 | # TODO: split for archs, move to files? | |
24 | PVE_CONFIG_OPTS= \ | |
25 | -m INTEL_MEI_WDT \ | |
26 | -d CONFIG_SND_PCM_OSS \ | |
27 | -e CONFIG_TRANSPARENT_HUGEPAGE_MADVISE \ | |
28 | -d CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS \ | |
29 | -m CONFIG_CEPH_FS \ | |
30 | -m CONFIG_BLK_DEV_NBD \ | |
31 | -m CONFIG_BLK_DEV_RBD \ | |
b481f897 | 32 | -d CONFIG_SND_PCSP \ |
e96d2ab3 FG |
33 | -m CONFIG_BCACHE \ |
34 | -m CONFIG_JFS_FS \ | |
35 | -m CONFIG_HFS_FS \ | |
36 | -m CONFIG_HFSPLUS_FS \ | |
ee4a13ea | 37 | -e CIFS_SMB_DIRECT \ |
e96d2ab3 FG |
38 | -e CONFIG_BRIDGE \ |
39 | -e CONFIG_BRIDGE_NETFILTER \ | |
40 | -e CONFIG_BLK_DEV_SD \ | |
41 | -e CONFIG_BLK_DEV_SR \ | |
42 | -e CONFIG_BLK_DEV_DM \ | |
43 | -e CONFIG_BLK_DEV_NVME \ | |
eb6667c9 | 44 | -e CONFIG_NLS_ISO8859_1 \ |
e96d2ab3 FG |
45 | -d CONFIG_INPUT_EVBUG \ |
46 | -d CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND \ | |
56745647 | 47 | -d CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL \ |
e96d2ab3 FG |
48 | -e CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE \ |
49 | -d CONFIG_MODULE_SIG \ | |
50 | -d CONFIG_MEMCG_DISABLED \ | |
51 | -e CONFIG_MEMCG_SWAP_ENABLED \ | |
ef257cb1 | 52 | -e CONFIG_HYPERV \ |
bdeaa74c TL |
53 | -m CONFIG_VFIO_IOMMU_TYPE1 \ |
54 | -m CONFIG_VFIO_VIRQFD \ | |
55 | -m CONFIG_VFIO \ | |
56 | -m CONFIG_VFIO_PCI \ | |
57 | -m CONFIG_USB_XHCI_HCD \ | |
58 | -m CONFIG_USB_XHCI_PCI \ | |
59 | -m CONFIG_USB_EHCI_HCD \ | |
60 | -m CONFIG_USB_EHCI_PCI \ | |
61 | -m CONFIG_USB_EHCI_HCD_PLATFORM \ | |
62 | -m CONFIG_USB_OHCI_HCD \ | |
63 | -m CONFIG_USB_OHCI_HCD_PCI \ | |
64 | -m CONFIG_USB_OHCI_HCD_PLATFORM \ | |
65 | -d CONFIG_USB_OHCI_HCD_SSB \ | |
66 | -m CONFIG_USB_UHCI_HCD \ | |
67 | -d CONFIG_USB_SL811_HCD_ISO \ | |
e96d2ab3 FG |
68 | -e CONFIG_MEMCG_KMEM \ |
69 | -d CONFIG_DEFAULT_CFQ \ | |
70 | -e CONFIG_DEFAULT_DEADLINE \ | |
71 | -e CONFIG_MODVERSIONS \ | |
72 | -d CONFIG_DEFAULT_SECURITY_DAC \ | |
73 | -e CONFIG_DEFAULT_SECURITY_APPARMOR \ | |
74 | --set-str CONFIG_DEFAULT_SECURITY apparmor \ | |
75 | -d CONFIG_UNWINDER_ORC \ | |
76 | -d CONFIG_UNWINDER_GUESS \ | |
77 | -e CONFIG_UNWINDER_FRAME_POINTER \ | |
68996764 | 78 | --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""\ |
f6d3198e FG |
79 | -d CONFIG_SECURITY_LOCKDOWN_LSM \ |
80 | -d CONFIG_SECURITY_LOCKDOWN_LSM_EARLY \ | |
81 | --set-str CONFIG_LSM yama,integrity,apparmor \ | |
e96d2ab3 FG |
82 | -e CONFIG_PAGE_TABLE_ISOLATION |
83 | ||
84 | debian/control: $(wildcard debian/*.in) | |
85 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.prerm.in > debian/${PVE_KERNEL_PKG}.prerm | |
86 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.postrm.in > debian/${PVE_KERNEL_PKG}.postrm | |
87 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-kernel.postinst.in > debian/${PVE_KERNEL_PKG}.postinst | |
88 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/pve-headers.postinst.in > debian/${PVE_HEADER_PKG}.postinst | |
89 | chmod +x debian/${PVE_KERNEL_PKG}.prerm | |
90 | chmod +x debian/${PVE_KERNEL_PKG}.postrm | |
91 | chmod +x debian/${PVE_KERNEL_PKG}.postinst | |
92 | chmod +x debian/${PVE_HEADER_PKG}.postinst | |
73cf4c7f | 93 | sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@KVMAJMIN@/${KERNEL_MAJMIN}/g' < debian/control.in > debian/control |
e96d2ab3 FG |
94 | |
95 | build: .compile_mark .tools_compile_mark .modules_compile_mark | |
96 | ||
924ae54c | 97 | install: .install_mark .tools_install_mark .headers_install_mark .usr_headers_install_mark |
e96d2ab3 FG |
98 | dh_installdocs -A debian/copyright debian/SOURCE |
99 | dh_installchangelogs | |
100 | dh_installman | |
101 | dh_strip_nondeterminism | |
102 | dh_compress | |
103 | dh_fixperms | |
104 | ||
105 | binary: install | |
106 | debian/rules fwcheck abicheck | |
924ae54c | 107 | dh_strip -N${PVE_HEADER_PKG} -N${PVE_USR_HEADER_PKG} |
e96d2ab3 FG |
108 | dh_makeshlibs |
109 | dh_shlibdeps | |
110 | dh_installdeb | |
111 | dh_gencontrol | |
112 | dh_md5sums | |
113 | dh_builddeb | |
114 | ||
d7236300 | 115 | .config_mark: |
e96d2ab3 FG |
116 | cd ${KERNEL_SRC}; scripts/config ${PVE_CONFIG_OPTS} |
117 | ${MAKE} -C ${KERNEL_SRC} oldconfig | |
5ca6d78d FG |
118 | # copy to allow building in parallel to kernel/module compilation without interference |
119 | rm -rf ${KERNEL_SRC_COPY} | |
120 | cp -ar ${KERNEL_SRC} ${KERNEL_SRC_COPY} | |
d7236300 FG |
121 | touch $@ |
122 | ||
123 | .compile_mark: .config_mark | |
e96d2ab3 FG |
124 | ${MAKE} -C ${KERNEL_SRC} KBUILD_BUILD_VERSION_TIMESTAMP="PVE ${DEB_VERSION} (${CHANGELOG_DATE})" |
125 | touch $@ | |
126 | ||
127 | .install_mark: .compile_mark .modules_compile_mark | |
128 | rm -rf debian/${PVE_KERNEL_PKG} | |
129 | mkdir -p debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME} | |
130 | mkdir debian/${PVE_KERNEL_PKG}/boot | |
131 | install -m 644 ${KERNEL_SRC}/.config debian/${PVE_KERNEL_PKG}/boot/config-${KVNAME} | |
132 | install -m 644 ${KERNEL_SRC}/System.map debian/${PVE_KERNEL_PKG}/boot/System.map-${KVNAME} | |
133 | install -m 644 ${KERNEL_SRC}/${KERNEL_IMAGE_PATH} debian/${PVE_KERNEL_PKG}/boot/${KERNEL_INSTALL_FILE}-${KVNAME} | |
134 | ${MAKE} -C ${KERNEL_SRC} INSTALL_MOD_PATH=${BUILD_DIR}/debian/${PVE_KERNEL_PKG}/ modules_install | |
e96d2ab3 FG |
135 | # install zfs drivers |
136 | install -d -m 0755 debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs | |
dd717c04 | 137 | install -m 644 $(addprefix ${MODULES}/,zfs.ko zavl.ko znvpair.ko zunicode.ko zcommon.ko icp.ko zlua.ko spl.ko zzstd.ko) debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/zfs |
e96d2ab3 FG |
138 | # remove firmware |
139 | rm -rf debian/${PVE_KERNEL_PKG}/lib/firmware | |
bec10498 FG |
140 | |
141 | # debug package | |
142 | mkdir -p debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/${KVNAME} | |
143 | mkdir debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/boot | |
144 | install -m 644 ${KERNEL_SRC}/vmlinux debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/boot/vmlinux-${KVNAME} | |
145 | cp -r debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME} debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/ | |
146 | rm -f debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/${KVNAME}/source | |
147 | rm -f debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/${KVNAME}/build | |
148 | rm -f debian/${PVE_DEBUG_KERNEL_PKG}/usr/lib/debug/lib/modules/${KVNAME}/modules.* | |
149 | ||
e96d2ab3 FG |
150 | # strip debug info |
151 | find debian/${PVE_KERNEL_PKG}/lib/modules -name \*.ko -print | while read f ; do strip --strip-debug "$$f"; done | |
152 | # finalize | |
153 | /sbin/depmod -b debian/${PVE_KERNEL_PKG}/ ${KVNAME} | |
154 | # Autogenerate blacklist for watchdog devices (see README) | |
155 | install -m 0755 -d debian/${PVE_KERNEL_PKG}/lib/modprobe.d | |
156 | ls debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/kernel/drivers/watchdog/ > watchdog-blacklist.tmp | |
157 | echo ipmi_watchdog.ko >> watchdog-blacklist.tmp | |
158 | 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 | |
159 | rm -f debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/source | |
160 | rm -f debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME}/build | |
161 | touch $@ | |
162 | ||
163 | .tools_compile_mark: .compile_mark | |
a32d7b96 | 164 | ${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=python3 |
7cbdd0b9 FG |
165 | echo "checking GPL-2 only perf binary for library linkage with incompatible licenses.." |
166 | ! ldd ${KERNEL_SRC}/tools/perf/perf | grep -q -E '\blibbfd' | |
167 | ! ldd ${KERNEL_SRC}/tools/perf/perf | grep -q -E '\blibcrypto' | |
e96d2ab3 FG |
168 | ${MAKE} -C ${KERNEL_SRC}/tools/perf man |
169 | touch $@ | |
170 | ||
171 | .tools_install_mark: .tools_compile_mark | |
172 | rm -rf debian/${LINUX_TOOLS_PKG} | |
173 | mkdir -p debian/${LINUX_TOOLS_PKG}/usr/bin | |
29917645 | 174 | mkdir -p debian/${LINUX_TOOLS_PKG}/usr/share/man/man1 |
5fd5ec0e | 175 | install -m 755 ${BUILD_DIR}/${KERNEL_SRC}/tools/perf/perf debian/${LINUX_TOOLS_PKG}/usr/bin/perf_$(KERNEL_MAJMIN) |
86c0946a SI |
176 | for i in ${BUILD_DIR}/${KERNEL_SRC}/tools/perf/Documentation/*.1; do \ |
177 | fname="$${i##*/}"; manname="$${fname%.1}"; \ | |
178 | install -m644 "$$i" "debian/${LINUX_TOOLS_PKG}/usr/share/man/man1/$${manname}_$(KERNEL_MAJMIN).1"; \ | |
179 | done | |
e96d2ab3 FG |
180 | touch $@ |
181 | ||
d7236300 | 182 | .headers_prepare_mark: .config_mark |
e96d2ab3 FG |
183 | rm -rf debian/${PVE_HEADER_PKG} |
184 | mkdir -p debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME} | |
185 | install -m 0644 ${KERNEL_SRC}/.config debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME} | |
d7236300 FG |
186 | make -C ${KERNEL_SRC_COPY} mrproper |
187 | cd ${KERNEL_SRC_COPY}; find . -path './debian/*' -prune \ | |
7a315510 FG |
188 | -o -path './include/*' -prune \ |
189 | -o -path './Documentation' -prune \ | |
190 | -o -path './scripts' -prune \ | |
191 | -o -type f \ | |
192 | \( \ | |
193 | -name 'Makefile*' \ | |
194 | -o -name 'Kconfig*' \ | |
195 | -o -name 'Kbuild*' \ | |
196 | -o -name '*.sh' \ | |
197 | -o -name '*.pl' \ | |
198 | \) \ | |
199 | -print | cpio -pd --preserve-modification-time ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME} | |
d7236300 | 200 | cd ${KERNEL_SRC_COPY}; \ |
7a315510 FG |
201 | ( \ |
202 | find arch/${KERNEL_HEADER_ARCH} -name include -type d -print | \ | |
203 | xargs -n1 -i: find : -type f \ | |
204 | ) | \ | |
205 | cpio -pd --preserve-modification-time ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME} | |
d7236300 FG |
206 | touch $@ |
207 | ||
208 | .headers_compile_mark: .headers_prepare_mark | |
209 | # set output to subdir of source to reduce number of hardcoded paths in output files | |
210 | rm -rf ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG} | |
211 | mkdir -p ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG} | |
212 | cp ${KERNEL_SRC}/.config ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG}/.config | |
ad955157 TL |
213 | ${MAKE} -C ${KERNEL_SRC_COPY} O=${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG} -j1 syncconfig modules_prepare prepare scripts |
214 | cd ${KERNEL_SRC_COPY}; cp -a include scripts ${BUILD_DIR}/debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME} | |
56ae0a75 | 215 | find ${BUILD_DIR}/${KERNEL_SRC_COPY}/${PVE_HEADER_PKG} -name \*.o.ur-\* -o -name '*.cmd' | xargs rm -f |
d7236300 FG |
216 | 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}/ |
217 | rm -rf ${BUILD_DIR}/${KERNEL_SRC_COPY} | |
218 | touch $@ | |
219 | ||
220 | .headers_install_mark: .compile_mark .modules_compile_mark .headers_compile_mark | |
221 | cp ${KERNEL_SRC}/include/generated/compile.h debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/include/generated/compile.h | |
222 | install -m 0644 ${KERNEL_SRC}/Module.symvers debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME} | |
e96d2ab3 FG |
223 | mkdir -p debian/${PVE_HEADER_PKG}/lib/modules/${KVNAME} |
224 | ln -sf /usr/src/linux-headers-${KVNAME} debian/${PVE_HEADER_PKG}/lib/modules/${KVNAME}/build | |
225 | touch $@ | |
226 | ||
924ae54c TL |
227 | .usr_headers_install_mark: PKG_DIR = debian/${PVE_USR_HEADER_PKG} |
228 | .usr_headers_install_mark: OUT_DIR = ${PKG_DIR}/usr | |
229 | .usr_headers_install_mark: .config_mark | |
230 | rm -rf '${PKG_DIR}' | |
231 | mkdir -p '${PKG_DIR}' | |
232 | $(MAKE) -C ${KERNEL_SRC} headers_check ARCH=$(KERNEL_HEADER_ARCH) | |
233 | $(MAKE) -C ${KERNEL_SRC} headers_install ARCH=$(KERNEL_HEADER_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR) | |
234 | rm -rf $(OUT_DIR)/include/drm $(OUT_DIR)/include/scsi | |
235 | find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} + | |
236 | ||
237 | # Move include/asm to arch-specific directory | |
238 | mkdir -p $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH) | |
239 | mv $(OUT_DIR)/include/asm $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/ | |
240 | test ! -d $(OUT_DIR)/include/arch || \ | |
241 | mv $(OUT_DIR)/include/arch $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/ | |
242 | touch $@ | |
243 | ||
1de13531 | 244 | .modules_compile_mark: ${MODULES}/zfs.ko |
e96d2ab3 FG |
245 | touch $@ |
246 | ||
1de13531 | 247 | ${MODULES}/zfs.ko: .compile_mark |
e96d2ab3 | 248 | cd ${MODULES}/${ZFSDIR}; ./autogen.sh |
1de13531 | 249 | cd ${MODULES}/${ZFSDIR}; ./configure --with-config=kernel --with-linux=${BUILD_DIR}/${KERNEL_SRC} --with-linux-obj=${BUILD_DIR}/${KERNEL_SRC} |
e96d2ab3 FG |
250 | ${MAKE} -C ${MODULES}/${ZFSDIR} |
251 | cp ${MODULES}/${ZFSDIR}/module/avl/zavl.ko ${MODULES}/ | |
252 | cp ${MODULES}/${ZFSDIR}/module/nvpair/znvpair.ko ${MODULES}/ | |
253 | cp ${MODULES}/${ZFSDIR}/module/unicode/zunicode.ko ${MODULES}/ | |
254 | cp ${MODULES}/${ZFSDIR}/module/zcommon/zcommon.ko ${MODULES}/ | |
e96d2ab3 FG |
255 | cp ${MODULES}/${ZFSDIR}/module/icp/icp.ko ${MODULES}/ |
256 | cp ${MODULES}/${ZFSDIR}/module/zfs/zfs.ko ${MODULES}/ | |
1de13531 SI |
257 | cp ${MODULES}/${ZFSDIR}/module/lua/zlua.ko ${MODULES}/ |
258 | cp ${MODULES}/${ZFSDIR}/module/spl/spl.ko ${MODULES}/ | |
dd717c04 | 259 | cp ${MODULES}/${ZFSDIR}/module/zstd/zzstd.ko ${MODULES}/ |
e96d2ab3 | 260 | |
e96d2ab3 FG |
261 | fwlist-${KVNAME}: .compile_mark .modules_compile_mark |
262 | debian/scripts/find-firmware.pl debian/${PVE_KERNEL_PKG}/lib/modules/${KVNAME} >fwlist.tmp | |
263 | mv fwlist.tmp $@ | |
264 | ||
265 | .PHONY: fwcheck | |
266 | fwcheck: fwlist-${KVNAME} fwlist-previous | |
267 | @echo "checking fwlist for changes since last built firmware package.." | |
268 | @echo "if this check fails, add fwlist-${KVNAME} to the pve-firmware repository and upload a new firmware package together with the ${KVNAME} kernel" | |
269 | sort fwlist-previous | uniq > fwlist-previous.sorted | |
270 | sort fwlist-${KVNAME} | uniq > fwlist-${KVNAME}.sorted | |
271 | diff -up -N fwlist-previous.sorted fwlist-${KVNAME}.sorted > fwlist.diff | |
272 | rm fwlist.diff fwlist-previous.sorted fwlist-${KVNAME}.sorted | |
273 | @echo "done, no need to rebuild pve-firmware" | |
274 | ||
275 | ||
276 | abi-${KVNAME}: .compile_mark | |
40af2e3b | 277 | debian/scripts/abi-generate debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/Module.symvers abi-${KVNAME} ${KVNAME} |
e96d2ab3 FG |
278 | |
279 | .PHONY: abicheck | |
4062c103 FG |
280 | abicheck: debian/scripts/abi-check abi-${KVNAME} abi-prev-* abi-blacklist |
281 | debian/scripts/abi-check abi-${KVNAME} abi-prev-* ${SKIPABI} | |
e96d2ab3 FG |
282 | |
283 | .PHONY: clean |