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