]>
Commit | Line | Data |
---|---|---|
1 | #!/usr/bin/make -f | |
2 | # -*- makefile -*- | |
3 | ||
4 | # Uncomment this to turn on verbose mode. | |
5 | #export DH_VERBOSE=1 | |
6 | ||
7 | # TODO: check for headers not being installed | |
8 | BUILD_DIR=$(shell pwd) | |
9 | ||
10 | include /usr/share/dpkg/default.mk | |
11 | include debian/rules.d/env.mk | |
12 | include debian/rules.d/$(DEB_BUILD_ARCH).mk | |
13 | ||
14 | MAKEFLAGS += $(subst parallel=,-j,$(filter parallel=%,${DEB_BUILD_OPTIONS})) | |
15 | ||
16 | CHANGELOG_DATE:=$(shell dpkg-parsechangelog -SDate) | |
17 | CHANGELOG_DATE_UTC_ISO := $(shell date -u -d '$(CHANGELOG_DATE)' +%Y-%m-%dT%H:%MZ) | |
18 | ||
19 | PMX_KERNEL_PKG=proxmox-kernel-$(KVNAME) | |
20 | PMX_KERNEL_SERIES_PKG=proxmox-kernel-$(KERNEL_MAJMIN) | |
21 | PMX_DEBUG_KERNEL_PKG=proxmox-kernel-$(KVNAME)-dbgsym | |
22 | PMX_HEADER_PKG=proxmox-headers-$(KVNAME) | |
23 | PMX_USR_HEADER_PKG=proxmox-kernel-libc-dev | |
24 | PMX_KERNEL_SIGNING_TEMPLATE_PKG=proxmox-kernel-${KVNAME}-signed-template | |
25 | PMX_KERNEL_SIGNED_VERSION := $(shell echo ${DEB_VERSION} | sed -e 's/-/+/') | |
26 | LINUX_TOOLS_PKG=linux-tools-$(KERNEL_MAJMIN) | |
27 | KERNEL_SRC_COPY=$(KERNEL_SRC)_tmp | |
28 | ||
29 | # TODO: split for archs, move to files? | |
30 | PMX_CONFIG_OPTS= \ | |
31 | -m INTEL_MEI_WDT \ | |
32 | -d CONFIG_SND_PCM_OSS \ | |
33 | -e CONFIG_TRANSPARENT_HUGEPAGE_MADVISE \ | |
34 | -d CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS \ | |
35 | -m CONFIG_CEPH_FS \ | |
36 | -m CONFIG_BLK_DEV_NBD \ | |
37 | -m CONFIG_BLK_DEV_RBD \ | |
38 | -m CONFIG_BLK_DEV_UBLK \ | |
39 | -d CONFIG_SND_PCSP \ | |
40 | -m CONFIG_BCACHE \ | |
41 | -m CONFIG_JFS_FS \ | |
42 | -m CONFIG_HFS_FS \ | |
43 | -m CONFIG_HFSPLUS_FS \ | |
44 | -e CIFS_SMB_DIRECT \ | |
45 | -e CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU \ | |
46 | -e CONFIG_BRIDGE \ | |
47 | -e CONFIG_BRIDGE_NETFILTER \ | |
48 | -e CONFIG_BLK_DEV_SD \ | |
49 | -e CONFIG_BLK_DEV_SR \ | |
50 | -e CONFIG_BLK_DEV_DM \ | |
51 | -m CONFIG_BLK_DEV_NVME \ | |
52 | -e CONFIG_NLS_ISO8859_1 \ | |
53 | -d CONFIG_INPUT_EVBUG \ | |
54 | -d CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND \ | |
55 | -d CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL \ | |
56 | -e CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE \ | |
57 | -e CONFIG_SYSFB_SIMPLEFB \ | |
58 | -e CONFIG_DRM_SIMPLEDRM \ | |
59 | -e CONFIG_MODULE_SIG \ | |
60 | -e CONFIG_MODULE_SIG_ALL \ | |
61 | -e CONFIG_MODULE_SIG_FORMAT \ | |
62 | --set-str CONFIG_MODULE_SIG_HASH sha512 \ | |
63 | --set-str CONFIG_MODULE_SIG_KEY certs/signing_key.pem \ | |
64 | -e CONFIG_MODULE_SIG_KEY_TYPE_RSA \ | |
65 | -e CONFIG_MODULE_SIG_SHA512 \ | |
66 | -d CONFIG_MEMCG_DISABLED \ | |
67 | -e CONFIG_MEMCG_SWAP_ENABLED \ | |
68 | -e CONFIG_HYPERV \ | |
69 | -m CONFIG_VFIO_IOMMU_TYPE1 \ | |
70 | -e CONFIG_VFIO_VIRQFD \ | |
71 | -m CONFIG_VFIO \ | |
72 | -m CONFIG_VFIO_PCI \ | |
73 | -m CONFIG_USB_XHCI_HCD \ | |
74 | -m CONFIG_USB_XHCI_PCI \ | |
75 | -m CONFIG_USB_EHCI_HCD \ | |
76 | -m CONFIG_USB_EHCI_PCI \ | |
77 | -m CONFIG_USB_EHCI_HCD_PLATFORM \ | |
78 | -m CONFIG_USB_OHCI_HCD \ | |
79 | -m CONFIG_USB_OHCI_HCD_PCI \ | |
80 | -m CONFIG_USB_OHCI_HCD_PLATFORM \ | |
81 | -d CONFIG_USB_OHCI_HCD_SSB \ | |
82 | -m CONFIG_USB_UHCI_HCD \ | |
83 | -d CONFIG_USB_SL811_HCD_ISO \ | |
84 | -e CONFIG_MEMCG_KMEM \ | |
85 | -d CONFIG_DEFAULT_CFQ \ | |
86 | -e CONFIG_DEFAULT_DEADLINE \ | |
87 | -e CONFIG_MODVERSIONS \ | |
88 | -e CONFIG_ZSTD_COMPRESS \ | |
89 | -d CONFIG_DEFAULT_SECURITY_DAC \ | |
90 | -e CONFIG_DEFAULT_SECURITY_APPARMOR \ | |
91 | --set-str CONFIG_DEFAULT_SECURITY apparmor \ | |
92 | -e CONFIG_MODULE_ALLOW_BTF_MISMATCH \ | |
93 | -d CONFIG_UNWINDER_ORC \ | |
94 | -d CONFIG_UNWINDER_GUESS \ | |
95 | -e CONFIG_UNWINDER_FRAME_POINTER \ | |
96 | --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""\ | |
97 | --set-str CONFIG_SYSTEM_REVOCATION_KEYS ""\ | |
98 | -e CONFIG_SECURITY_LOCKDOWN_LSM \ | |
99 | -e CONFIG_SECURITY_LOCKDOWN_LSM_EARLY \ | |
100 | --set-str CONFIG_LSM lockdown,yama,integrity,apparmor \ | |
101 | -e CONFIG_PAGE_TABLE_ISOLATION \ | |
102 | -e CONFIG_ARCH_HAS_CPU_FINALIZE_INIT \ | |
103 | -d CONFIG_GDS_FORCE_MITIGATION \ | |
104 | -d CONFIG_WQ_CPU_INTENSIVE_REPORT \ | |
105 | -d CONFIG_N_GSM \ | |
106 | -d UBSAN_BOUNDS \ | |
107 | ||
108 | debian/control: $(wildcard debian/*.in) | |
109 | sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.prerm.in > debian/$(PMX_KERNEL_PKG).prerm | |
110 | sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.postrm.in > debian/$(PMX_KERNEL_PKG).postrm | |
111 | sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel.postinst.in > debian/$(PMX_KERNEL_PKG).postinst | |
112 | sed -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-headers.postinst.in > debian/$(PMX_HEADER_PKG).postinst | |
113 | sed -e 's/@@KVMAJMIN@@/$(KERNEL_MAJMIN)/g' -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel-meta.postrm.in > debian/$(PMX_KERNEL_SERIES_PKG).postrm | |
114 | sed -e 's/@@KVMAJMIN@@/$(KERNEL_MAJMIN)/g' -e 's/@@KVNAME@@/$(KVNAME)/g' < debian/proxmox-kernel-meta.postinst.in > debian/$(PMX_KERNEL_SERIES_PKG).postinst | |
115 | chmod +x debian/$(PMX_KERNEL_PKG).prerm | |
116 | chmod +x debian/$(PMX_KERNEL_PKG).postrm | |
117 | chmod +x debian/$(PMX_KERNEL_PKG).postinst | |
118 | chmod +x debian/$(PMX_KERNEL_SERIES_PKG).postrm | |
119 | chmod +x debian/$(PMX_KERNEL_SERIES_PKG).postinst | |
120 | chmod +x debian/$(PMX_HEADER_PKG).postinst | |
121 | sed -e 's/@KVNAME@/$(KVNAME)/g' -e 's/@KVMAJMIN@/$(KERNEL_MAJMIN)/g' < debian/control.in > debian/control | |
122 | ||
123 | # signing-template | |
124 | sed -e '1 s/proxmox-kernel/proxmox-kernel-signed/' -e '1 s/${DEB_VERSION}/${PMX_KERNEL_SIGNED_VERSION}/' < debian/changelog > debian/signing-template/changelog | |
125 | sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@KVMAJMIN@/$(KERNEL_MAJMIN)/g' -e 's/@UNSIGNED_VERSION@/${DEB_VERSION}/g' < debian/signing-template/control.in > debian/signing-template/control | |
126 | sed -e 's/@KVNAME@/${KVNAME}/g' < debian/signing-template/files.json.in > debian/signing-template/files.json | |
127 | sed -e 's/@KVNAME@/${KVNAME}/g' -e 's/@PKG_VERSION@/${DEB_VERSION}/' < debian/signing-template/rules.in > debian/signing-template/rules | |
128 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/proxmox-kernel.prerm.in > debian/signing-template/prerm | |
129 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/proxmox-kernel.postrm.in > debian/signing-template/postrm | |
130 | sed -e 's/@@KVNAME@@/${KVNAME}/g' < debian/proxmox-kernel.postinst.in > debian/signing-template/postinst | |
131 | rm debian/signing-template/*.in | |
132 | cp debian/SOURCE debian/signing-template/ | |
133 | ||
134 | build: .compile_mark .tools_compile_mark .modules_compile_mark | |
135 | ||
136 | install: .install_mark .tools_install_mark .headers_install_mark .usr_headers_install_mark | |
137 | dh_installdocs -A debian/copyright debian/SOURCE | |
138 | dh_installchangelogs | |
139 | dh_installman | |
140 | dh_strip_nondeterminism | |
141 | dh_compress | |
142 | dh_fixperms | |
143 | ||
144 | binary: install | |
145 | debian/rules fwcheck abicheck | |
146 | dh_strip -N$(PMX_HEADER_PKG) -N$(PMX_USR_HEADER_PKG) | |
147 | dh_makeshlibs | |
148 | dh_shlibdeps | |
149 | dh_installdeb | |
150 | dh_gencontrol | |
151 | dh_md5sums | |
152 | dh_builddeb | |
153 | ||
154 | .config_mark: | |
155 | cd $(KERNEL_SRC); scripts/config $(PMX_CONFIG_OPTS) | |
156 | $(MAKE) -C $(KERNEL_SRC) olddefconfig | |
157 | # copy to allow building in parallel to kernel/module compilation without interference | |
158 | rm -rf $(KERNEL_SRC_COPY) | |
159 | cp -ar $(KERNEL_SRC) $(KERNEL_SRC_COPY) | |
160 | touch $@ | |
161 | ||
162 | .compile_mark: .config_mark | |
163 | $(MAKE) -C $(KERNEL_SRC) KBUILD_BUILD_VERSION_TIMESTAMP="PMX $(DEB_VERSION) ($(CHANGELOG_DATE_UTC_ISO))" | |
164 | touch $@ | |
165 | ||
166 | .install_mark: .compile_mark .modules_compile_mark | |
167 | rm -rf debian/$(PMX_KERNEL_PKG) | |
168 | mkdir -p debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME) | |
169 | mkdir debian/$(PMX_KERNEL_PKG)/boot | |
170 | install -m 644 $(KERNEL_SRC)/.config debian/$(PMX_KERNEL_PKG)/boot/config-$(KVNAME) | |
171 | install -m 644 $(KERNEL_SRC)/System.map debian/$(PMX_KERNEL_PKG)/boot/System.map-$(KVNAME) | |
172 | install -m 644 $(KERNEL_SRC)/$(KERNEL_IMAGE_PATH) debian/$(PMX_KERNEL_PKG)/boot/$(KERNEL_INSTALL_FILE)-$(KVNAME) | |
173 | $(MAKE) -C $(KERNEL_SRC) INSTALL_MOD_PATH=$(BUILD_DIR)/debian/$(PMX_KERNEL_PKG)/ modules_install | |
174 | # install zfs drivers | |
175 | install -d -m 0755 debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/zfs | |
176 | install -m 644 $(MODULES)/zfs.ko $(MODULES)/spl.ko debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/zfs | |
177 | # remove firmware | |
178 | rm -rf debian/$(PMX_KERNEL_PKG)/lib/firmware | |
179 | ||
180 | ifeq ($(filter pkg.proxmox-kernel.debug,$(DEB_BUILD_PROFILES)),) | |
181 | echo "'pkg.proxmox-kernel.debug' build profile disabled, skipping -dbgsym creation" | |
182 | else | |
183 | echo "'pkg.proxmox-kernel.debug' build profile enabled, creating -dbgsym contents" | |
184 | mkdir -p debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME) | |
185 | mkdir debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/boot | |
186 | install -m 644 $(KERNEL_SRC)/vmlinux debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/boot/vmlinux-$(KVNAME) | |
187 | cp -r debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME) debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/ | |
188 | rm -f debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/source | |
189 | rm -f debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/build | |
190 | rm -f debian/$(PMX_DEBUG_KERNEL_PKG)/usr/lib/debug/lib/modules/$(KVNAME)/modules.* | |
191 | endif | |
192 | ||
193 | # strip debug info | |
194 | find debian/$(PMX_KERNEL_PKG)/lib/modules -name \*.ko -print | while read f ; do strip --strip-debug "$$f"; done | |
195 | ||
196 | # sign modules using ephemeral, embedded key | |
197 | if grep -q CONFIG_MODULE_SIG=y ubuntu-kernel/.config ; then \ | |
198 | find debian/$(PMX_KERNEL_PKG)/lib/modules -name \*.ko -print | while read f ; do \ | |
199 | ./ubuntu-kernel/scripts/sign-file sha512 ./ubuntu-kernel/certs/signing_key.pem ubuntu-kernel/certs/signing_key.x509 "$$f" ; \ | |
200 | done; \ | |
201 | rm ./ubuntu-kernel/certs/signing_key.pem ; \ | |
202 | fi | |
203 | # finalize | |
204 | /sbin/depmod -b debian/$(PMX_KERNEL_PKG)/ $(KVNAME) | |
205 | # Autogenerate blacklist for watchdog devices (see README) | |
206 | install -m 0755 -d debian/$(PMX_KERNEL_PKG)/lib/modprobe.d | |
207 | ls debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/kernel/drivers/watchdog/ > watchdog-blacklist.tmp | |
208 | echo ipmi_watchdog.ko >> watchdog-blacklist.tmp | |
209 | cat watchdog-blacklist.tmp|sed -e 's/^/blacklist /' -e 's/.ko$$//'|sort -u > debian/$(PMX_KERNEL_PKG)/lib/modprobe.d/blacklist_$(PMX_KERNEL_PKG).conf | |
210 | rm -f debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/source | |
211 | rm -f debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME)/build | |
212 | ||
213 | # copy signing template contents | |
214 | rm -rf debian/${PMX_KERNEL_SIGNING_TEMPLATE_PKG} | |
215 | mkdir -p debian/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/source-template/debian | |
216 | cp -R debian/copyright \ | |
217 | debian/signing-template/rules \ | |
218 | debian/signing-template/control \ | |
219 | debian/signing-template/source \ | |
220 | debian/signing-template/changelog \ | |
221 | debian/signing-template/prerm \ | |
222 | debian/signing-template/postrm \ | |
223 | debian/signing-template/postinst \ | |
224 | debian/signing-template/SOURCE \ | |
225 | debian/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/source-template/debian | |
226 | cp debian/signing-template/files.json debian/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/usr/share/code-signing/${PMX_KERNEL_SIGNING_TEMPLATE_PKG}/ | |
227 | ||
228 | touch $@ | |
229 | ||
230 | .tools_compile_mark: .compile_mark | |
231 | $(MAKE) -C $(KERNEL_SRC)/tools/perf prefix=/usr NO_LIBTRACEEVENT=1 HAVE_NO_LIBBFD=1 HAVE_CPLUS_DEMANGLE_SUPPORT=1 NO_LIBPYTHON=1 NO_LIBPERL=1 NO_LIBCRYPTO=1 PYTHON=python3 | |
232 | echo "checking GPL-2 only perf binary for library linkage with incompatible licenses.." | |
233 | ! ldd $(KERNEL_SRC)/tools/perf/perf | grep -q -E '\blibbfd' | |
234 | ! ldd $(KERNEL_SRC)/tools/perf/perf | grep -q -E '\blibcrypto' | |
235 | $(MAKE) -C $(KERNEL_SRC)/tools/perf NO_LIBTRACEEVENT=1 man | |
236 | touch $@ | |
237 | ||
238 | .tools_install_mark: .tools_compile_mark | |
239 | rm -rf debian/$(LINUX_TOOLS_PKG) | |
240 | mkdir -p debian/$(LINUX_TOOLS_PKG)/usr/bin | |
241 | mkdir -p debian/$(LINUX_TOOLS_PKG)/usr/share/man/man1 | |
242 | install -m 755 $(BUILD_DIR)/$(KERNEL_SRC)/tools/perf/perf debian/$(LINUX_TOOLS_PKG)/usr/bin/perf_$(KERNEL_MAJMIN) | |
243 | for i in $(BUILD_DIR)/$(KERNEL_SRC)/tools/perf/Documentation/*.1; do \ | |
244 | fname="$${i##*/}"; manname="$${fname%.1}"; \ | |
245 | install -m644 "$$i" "debian/$(LINUX_TOOLS_PKG)/usr/share/man/man1/$${manname}_$(KERNEL_MAJMIN).1"; \ | |
246 | done | |
247 | touch $@ | |
248 | ||
249 | .headers_prepare_mark: .config_mark | |
250 | rm -rf debian/$(PMX_HEADER_PKG) | |
251 | mkdir -p debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
252 | install -m 0644 $(KERNEL_SRC)/.config debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
253 | make -C $(KERNEL_SRC_COPY) mrproper | |
254 | cd $(KERNEL_SRC_COPY); find . -path './debian/*' -prune \ | |
255 | -o -path './include/*' -prune \ | |
256 | -o -path './Documentation' -prune \ | |
257 | -o -path './scripts' -prune \ | |
258 | -o -type f \ | |
259 | \( \ | |
260 | -name 'Makefile*' \ | |
261 | -o -name 'Kconfig*' \ | |
262 | -o -name 'Kbuild*' \ | |
263 | -o -name '*.sh' \ | |
264 | -o -name '*.pl' \ | |
265 | \) \ | |
266 | -print | cpio -pd --preserve-modification-time $(BUILD_DIR)/debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
267 | cd $(KERNEL_SRC_COPY); \ | |
268 | ( \ | |
269 | find arch/$(KERNEL_HEADER_ARCH) -name include -type d -print | \ | |
270 | xargs -n1 -i: find : -type f \ | |
271 | ) | \ | |
272 | cpio -pd --preserve-modification-time $(BUILD_DIR)/debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
273 | touch $@ | |
274 | ||
275 | .headers_compile_mark: .headers_prepare_mark | |
276 | # set output to subdir of source to reduce number of hardcoded paths in output files | |
277 | rm -rf $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG) | |
278 | mkdir -p $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG) | |
279 | cp $(KERNEL_SRC)/.config $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG)/.config | |
280 | $(MAKE) -C $(KERNEL_SRC_COPY) O=$(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG) -j1 syncconfig modules_prepare prepare scripts | |
281 | cd $(KERNEL_SRC_COPY); cp -a include scripts $(BUILD_DIR)/debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
282 | find $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG) -name \*.o.ur-\* -o -name '*.cmd' | xargs rm -f | |
283 | rsync --ignore-existing -r -v -a $(addprefix $(BUILD_DIR)/$(KERNEL_SRC_COPY)/$(PMX_HEADER_PKG)/,arch include kernel scripts tools) $(BUILD_DIR)/debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/ | |
284 | rm -rf $(BUILD_DIR)/$(KERNEL_SRC_COPY) | |
285 | touch $@ | |
286 | ||
287 | .headers_install_mark: .compile_mark .modules_compile_mark .headers_compile_mark | |
288 | cp $(KERNEL_SRC)/include/generated/compile.h debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/include/generated/compile.h | |
289 | install -m 0644 $(KERNEL_SRC)/Module.symvers debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME) | |
290 | mkdir -p debian/$(PMX_HEADER_PKG)/lib/modules/$(KVNAME) | |
291 | ln -sf /usr/src/linux-headers-$(KVNAME) debian/$(PMX_HEADER_PKG)/lib/modules/$(KVNAME)/build | |
292 | touch $@ | |
293 | ||
294 | .usr_headers_install_mark: PKG_DIR = debian/$(PMX_USR_HEADER_PKG) | |
295 | .usr_headers_install_mark: OUT_DIR = $(PKG_DIR)/usr | |
296 | .usr_headers_install_mark: .config_mark | |
297 | rm -rf '$(PKG_DIR)' | |
298 | mkdir -p '$(PKG_DIR)' | |
299 | $(MAKE) -C $(KERNEL_SRC) headers_install ARCH=$(KERNEL_HEADER_ARCH) INSTALL_HDR_PATH='$(CURDIR)'/$(OUT_DIR) | |
300 | rm -rf $(OUT_DIR)/include/drm $(OUT_DIR)/include/scsi | |
301 | find $(OUT_DIR)/include \( -name .install -o -name ..install.cmd \) -execdir rm {} + | |
302 | ||
303 | # Move include/asm to arch-specific directory | |
304 | mkdir -p $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH) | |
305 | mv $(OUT_DIR)/include/asm $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/ | |
306 | test ! -d $(OUT_DIR)/include/arch || \ | |
307 | mv $(OUT_DIR)/include/arch $(OUT_DIR)/include/$(DEB_HOST_MULTIARCH)/ | |
308 | touch $@ | |
309 | ||
310 | .modules_compile_mark: $(MODULES)/zfs.ko | |
311 | touch $@ | |
312 | ||
313 | $(MODULES)/zfs.ko: .compile_mark | |
314 | cd $(MODULES)/$(ZFSDIR); ./autogen.sh | |
315 | cd $(MODULES)/$(ZFSDIR); ./configure --with-config=kernel --with-linux=$(BUILD_DIR)/$(KERNEL_SRC) --with-linux-obj=$(BUILD_DIR)/$(KERNEL_SRC) | |
316 | $(MAKE) -C $(MODULES)/$(ZFSDIR) | |
317 | cp $(MODULES)/$(ZFSDIR)/module/zfs.ko $(MODULES)/ | |
318 | cp $(MODULES)/$(ZFSDIR)/module/spl.ko $(MODULES)/ | |
319 | ||
320 | fwlist-$(KVNAME): .compile_mark .modules_compile_mark | |
321 | debian/scripts/find-firmware.pl debian/$(PMX_KERNEL_PKG)/lib/modules/$(KVNAME) >fwlist.tmp | |
322 | mv fwlist.tmp $@ | |
323 | ||
324 | .PHONY: fwcheck | |
325 | fwcheck: fwlist-$(KVNAME) fwlist-previous | |
326 | @echo "checking fwlist for changes since last built firmware package.." | |
327 | @echo "if this check fails, add fwlist-$(KVNAME) to the pve-firmware repository and upload a new firmware package together with the $(KVNAME) kernel" | |
328 | sort fwlist-previous | uniq > fwlist-previous.sorted | |
329 | sort fwlist-$(KVNAME) | uniq > fwlist-$(KVNAME).sorted | |
330 | diff -up -N fwlist-previous.sorted fwlist-$(KVNAME).sorted > fwlist.diff | |
331 | rm fwlist.diff fwlist-previous.sorted fwlist-$(KVNAME).sorted | |
332 | @echo "done, no need to rebuild pve-firmware" | |
333 | ||
334 | ||
335 | abi-$(KVNAME): .compile_mark | |
336 | debian/scripts/abi-generate debian/$(PMX_HEADER_PKG)/usr/src/linux-headers-$(KVNAME)/Module.symvers abi-$(KVNAME) $(KVNAME) | |
337 | ||
338 | .PHONY: abicheck | |
339 | abicheck: debian/scripts/abi-check abi-$(KVNAME) abi-prev-* abi-blacklist | |
340 | debian/scripts/abi-check abi-$(KVNAME) abi-prev-* $(SKIPABI) | |
341 | ||
342 | .PHONY: clean |