]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blob - debian/rules.d/2-binary-arch.mk
UBUNTU: [Debian] generate live watchdog blacklists
[mirror_ubuntu-zesty-kernel.git] / debian / rules.d / 2-binary-arch.mk
1 # We don't want make removing intermediary stamps
2 .SECONDARY :
3
4 # Prepare the out-of-tree build directory
5 ifeq ($(do_full_source),true)
6 build_cd = cd $(builddir)/build-$*; #
7 build_O =
8 else
9 build_cd =
10 build_O = O=$(builddir)/build-$*
11 endif
12
13 # Typically supplied from the arch makefile, e.g., debian.master/control.d/armhf.mk
14 ifneq ($(gcc),)
15 kmake += CC=$(CROSS_COMPILE)$(gcc)
16 endif
17
18 $(stampdir)/stamp-prepare-%: config-prepare-check-%
19 @echo Debug: $@
20 @touch $@
21 $(stampdir)/stamp-prepare-tree-%: target_flavour = $*
22 $(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(archconfdir)/config.common.$(arch) $(archconfdir)/config.flavour.%
23 @echo Debug: $@
24 install -d $(builddir)/build-$*
25 touch $(builddir)/build-$*/ubuntu-build
26 [ "$(do_full_source)" != 'true' ] && true || \
27 rsync -a --exclude debian --exclude debian.master --exclude $(DEBIAN) * $(builddir)/build-$*
28 cat $^ | sed -e 's/.*CONFIG_VERSION_SIGNATURE.*/CONFIG_VERSION_SIGNATURE="Ubuntu $(release)-$(revision)-$* $(raw_kernelversion)"/' > $(builddir)/build-$*/.config
29 find $(builddir)/build-$* -name "*.ko" | xargs rm -f
30 $(build_cd) $(kmake) $(build_O) -j1 silentoldconfig prepare scripts
31 touch $@
32
33 # Used by developers as a shortcut to prepare a tree for compilation.
34 prepare-%: $(stampdir)/stamp-prepare-%
35 @echo Debug: $@
36 # Used by developers to allow efficient pre-building without fakeroot.
37 build-%: $(stampdir)/stamp-build-%
38 @echo Debug: $@
39
40 # Do the actual build, including image and modules
41 $(stampdir)/stamp-build-%: target_flavour = $*
42 $(stampdir)/stamp-build-%: bldimg = $(call custom_override,build_image,$*)
43 $(stampdir)/stamp-build-%: $(stampdir)/stamp-prepare-%
44 @echo Debug: $@ build_image $(build_image) bldimg $(bldimg)
45 $(build_cd) $(kmake) $(build_O) $(conc_level) $(bldimg) modules $(if $(filter true,$(do_dtbs)),dtbs)
46 @touch $@
47
48 # Install the finished build
49 install-%: pkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*
50 install-%: pkgdir_ex = $(CURDIR)/debian/$(extra_pkg_name)-$*
51 install-%: bindoc = $(pkgdir)/usr/share/doc/$(bin_pkg_name)-$*
52 install-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym
53 install-%: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed
54 install-%: toolspkgdir = $(CURDIR)/debian/$(tools_flavour_pkg_name)-$*
55 install-%: cloudpkgdir = $(CURDIR)/debian/$(cloud_flavour_pkg_name)-$*
56 install-%: basepkg = $(hdrs_pkg_name)
57 install-%: indeppkg = $(indep_hdrs_pkg_name)
58 install-%: kernfile = $(call custom_override,kernel_file,$*)
59 install-%: instfile = $(call custom_override,install_file,$*)
60 install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(basepkg)-$*
61 install-%: target_flavour = $*
62 install-%: CONFIG_MODULE_SIG_HASH=sha512
63 install-%: MODSECKEY=$(builddir)/build-$*/signing_key.priv
64 install-%: MODPUBKEY=$(builddir)/build-$*/signing_key.x509
65 install-%: checks-%
66 @echo Debug: $@ kernel_file $(kernel_file) kernfile $(kernfile) install_file $(install_file) instfile $(instfile)
67 dh_testdir
68 dh_testroot
69 dh_clean -k -p$(bin_pkg_name)-$*
70 dh_clean -k -p$(hdrs_pkg_name)-$*
71 ifneq ($(skipdbg),true)
72 dh_clean -k -p$(dbg_pkg_name)-$*
73 endif
74
75 # The main image
76 # compress_file logic required because not all architectures
77 # generate a zImage automatically out of the box
78 ifeq ($(compress_file),)
79 install -m600 -D $(builddir)/build-$*/$(kernfile) \
80 $(pkgdir)/boot/$(instfile)-$(abi_release)-$*
81 else
82 install -d $(pkgdir)/boot
83 gzip -c9v $(builddir)/build-$*/$(kernfile) > \
84 $(pkgdir)/boot/$(instfile)-$(abi_release)-$*
85 chmod 600 $(pkgdir)/boot/$(instfile)-$(abi_release)-$*
86 endif
87
88 ifeq ($(uefi_signed),true)
89 install -d $(signed)/$(release)-$(revision)
90 # Check to see if this supports handoff, if not do not sign it.
91 # Check the identification area magic and version >= 0x020b
92 handoff=`dd if="$(pkgdir)/boot/$(instfile)-$(abi_release)-$*" bs=1 skip=514 count=6 2>/dev/null | od -s | gawk '($$1 == 0 && $$2 == 25672 && $$3 == 21362 && $$4 >= 523) { print "GOOD" }'`; \
93 if [ "$$handoff" = "GOOD" ]; then \
94 cp -p $(pkgdir)/boot/$(instfile)-$(abi_release)-$* \
95 $(signed)/$(release)-$(revision)/$(instfile)-$(abi_release)-$*.efi; \
96 fi
97 endif
98
99 install -m644 $(builddir)/build-$*/.config \
100 $(pkgdir)/boot/config-$(abi_release)-$*
101 install -m644 $(abidir)/$* \
102 $(pkgdir)/boot/abi-$(abi_release)-$*
103 install -m600 $(builddir)/build-$*/System.map \
104 $(pkgdir)/boot/System.map-$(abi_release)-$*
105 if [ "$(filter true,$(do_dtbs))" ]; then \
106 $(build_cd) $(kmake) $(build_O) $(conc_level) dtbs_install \
107 INSTALL_DTBS_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree; \
108 ( cd $(pkgdir)/lib/firmware/$(abi_release)-$*/ && find device-tree -print ) | \
109 while read dtb_file; do \
110 echo "$$dtb_file ?" >> $(DEBIAN)/d-i/firmware/kernel-image; \
111 done; \
112 fi
113 ifeq ($(no_dumpfile),)
114 makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \
115 -x $(builddir)/build-$*/vmlinux
116 chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$*
117 endif
118
119 $(build_cd) $(kmake) $(build_O) $(conc_level) modules_install $(vdso) \
120 INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(pkgdir)/ \
121 INSTALL_FW_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$*
122
123 #
124 # Build module blacklists:
125 # - blacklist all watchdog drivers (LP:1432837)
126 #
127 install -d $(pkgdir)/lib/modprobe.d
128 echo "# Autogenerated blacklist for $(src_pkg_name) $(abi_release)-$* $(arch)" \
129 >$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf
130 ls -1 $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/watchdog/ | \
131 sed -e 's/^/blacklist /' -e 's/.ko$$//' | \
132 sort -u \
133 >>$(pkgdir)/lib/modprobe.d/blacklist_$(src_pkg_name)_$(abi_release)-$*.conf
134
135 ifeq ($(do_extras_package),true)
136 #
137 # Remove all modules not in the inclusion list.
138 #
139 if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \
140 mkdir -p $(pkgdir_ex)/lib/modules/$(abi_release)-$*; \
141 mv $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \
142 $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel; \
143 $(SHELL) $(DROOT)/scripts/module-inclusion --master \
144 $(pkgdir_ex)/lib/modules/$(abi_release)-$*/kernel \
145 $(pkgdir)/lib/modules/$(abi_release)-$*/kernel \
146 $(DEBIAN)/control.d/$(target_flavour).inclusion-list 2>&1 | \
147 tee $(target_flavour).inclusion-list.log; \
148 /sbin/depmod -b $(pkgdir) -ea -F $(pkgdir)/boot/System.map-$(abi_release)-$* \
149 $(abi_release)-$* 2>&1 |tee $(target_flavour).depmod.log; \
150 if [ `grep -c 'unknown symbol' $(target_flavour).depmod.log` -gt 0 ]; then \
151 echo "EE: Unresolved module dependencies in base package!"; \
152 exit 1; \
153 fi \
154 fi
155 endif
156
157 ifeq ($(no_dumpfile),)
158 makedumpfile -g $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$* \
159 -x $(builddir)/build-$*/vmlinux
160 chmod 0600 $(pkgdir)/boot/vmcoreinfo-$(abi_release)-$*
161 endif
162 rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/build
163 rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/source
164
165 # Some initramfs-tools specific modules
166 install -d $(pkgdir)/lib/modules/$(abi_release)-$*/initrd
167 if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko ]; then\
168 $(LN) $(pkgdir)/lib/modules/$(abi_release)-$*/kernel/drivers/video/vesafb.ko \
169 $(pkgdir)/lib/modules/$(abi_release)-$*/initrd/; \
170 fi
171
172 # Now the image scripts
173 install -d $(pkgdir)/DEBIAN
174 for script in postinst postrm preinst prerm; do \
175 sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \
176 -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \
177 $(DROOT)/control-scripts/$$script > $(pkgdir)/DEBIAN/$$script; \
178 chmod 755 $(pkgdir)/DEBIAN/$$script; \
179 done
180 ifeq ($(do_extras_package),true)
181 # Install the postinit/postrm scripts in the extras package.
182 if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \
183 install -d $(pkgdir_ex)/DEBIAN; \
184 for script in postinst postrm ; do \
185 sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \
186 -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \
187 debian/control-scripts/extra-post > $(pkgdir_ex)/DEBIAN/$$script; \
188 chmod 755 $(pkgdir_ex)/DEBIAN/$$script; \
189 done; \
190 fi
191 endif
192
193 # Install the full changelog.
194 ifeq ($(do_doc_package),true)
195 install -d $(bindoc)
196 cat $(DEBIAN)/changelog $(DEBIAN)/changelog.historical | \
197 gzip -9 >$(bindoc)/changelog.Debian.old.gz
198 chmod 644 $(bindoc)/changelog.Debian.old.gz
199 endif
200
201 ifneq ($(skipsub),true)
202 for sub in $($(*)_sub); do \
203 if ! (TO=$$sub FROM=$* ABI_RELEASE=$(abi_release) $(SHELL) \
204 $(DROOT)/scripts/sub-flavour); then exit 1; fi; \
205 /sbin/depmod -b debian/$(bin_pkg_name)-$$sub \
206 -ea -F debian/$(bin_pkg_name)-$$sub/boot/System.map-$(abi_release)-$* \
207 $(abi_release)-$*; \
208 install -d debian/$(bin_pkg_name)-$$sub/DEBIAN; \
209 for script in postinst postrm preinst prerm; do \
210 sed -e 's/=V/$(abi_release)-$*/g' \
211 -e 's/=K/$(instfile)/g' \
212 -e 's/=L/$(loader)/g' \
213 -e 's@=B@$(build_arch)@g' \
214 $(DROOT)/control-scripts/$$script > \
215 debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\
216 chmod 755 debian/$(bin_pkg_name)-$$sub/DEBIAN/$$script;\
217 done; \
218 done
219 endif
220
221 ifneq ($(skipdbg),true)
222 # Debug image is simple
223 install -m644 -D $(builddir)/build-$*/vmlinux \
224 $(dbgpkgdir)/usr/lib/debug/boot/vmlinux-$(abi_release)-$*
225 $(build_cd) $(kmake) $(build_O) modules_install $(vdso) \
226 INSTALL_MOD_PATH=$(dbgpkgdir)/usr/lib/debug
227 # Add .gnu_debuglink sections to each stripped .ko
228 # pointing to unstripped verson
229 find $(pkgdir) -name '*.ko' | sed 's|$(pkgdir)||'| while read module ; do \
230 if [[ -f "$(dbgpkgdir)/usr/lib/debug/$$module" ]] ; then \
231 $(CROSS_COMPILE)objcopy \
232 --add-gnu-debuglink=$(dbgpkgdir)/usr/lib/debug/$$module \
233 $(pkgdir)/$$module; \
234 scripts/sign-file $(CONFIG_MODULE_SIG_HASH) $(MODSECKEY) $(MODPUBKEY) \
235 $(pkgdir)/$$module; \
236 fi; \
237 done
238 rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/build
239 rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/source
240 rm -f $(dbgpkgdir)/usr/lib/debug/lib/modules/$(abi_release)-$*/modules.*
241 rm -fr $(dbgpkgdir)/usr/lib/debug/lib/firmware
242 endif
243
244 # The flavour specific headers image
245 # TODO: Would be nice if we didn't have to dupe the original builddir
246 install -d -m755 $(hdrdir)
247 cat $(builddir)/build-$*/.config | \
248 sed -e 's/.*CONFIG_DEBUG_INFO=.*/# CONFIG_DEBUG_INFO is not set/g' > \
249 $(hdrdir)/.config
250 chmod 644 $(hdrdir)/.config
251 $(kmake) O=$(hdrdir) -j1 silentoldconfig prepare scripts
252 # We'll symlink this stuff
253 rm -f $(hdrdir)/Makefile
254 rm -rf $(hdrdir)/include2 $(hdrdir)/source
255 # Copy over the compilation version.
256 cp "$(builddir)/build-$*/include/generated/compile.h" \
257 "$(hdrdir)/include/generated/compile.h"
258 # Add UTS_UBUNTU_RELEASE_ABI since UTS_RELEASE is difficult to parse.
259 echo "#define UTS_UBUNTU_RELEASE_ABI $(abinum)" >> $(hdrdir)/include/generated/utsrelease.h
260 # powerpc kernel arch seems to need some .o files for external module linking. Add them in.
261 ifeq ($(build_arch),powerpc)
262 mkdir -p $(hdrdir)/arch/powerpc/lib
263 cp $(builddir)/build-$*/arch/powerpc/lib/*.o $(hdrdir)/arch/powerpc/lib
264 endif
265 # Script to symlink everything up
266 $(SHELL) $(DROOT)/scripts/link-headers "$(hdrdir)" "$(indeppkg)" "$*"
267 # The build symlink
268 install -d debian/$(basepkg)-$*/lib/modules/$(abi_release)-$*
269 $(LN) /usr/src/$(basepkg)-$* \
270 debian/$(basepkg)-$*/lib/modules/$(abi_release)-$*/build
271 # And finally the symvers
272 install -m644 $(builddir)/build-$*/Module.symvers \
273 $(hdrdir)/Module.symvers
274
275 # Now the header scripts
276 install -d $(CURDIR)/debian/$(basepkg)-$*/DEBIAN
277 for script in postinst; do \
278 sed -e 's/=V/$(abi_release)-$*/g' -e 's/=K/$(instfile)/g' \
279 $(DROOT)/control-scripts/headers-$$script > \
280 $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \
281 chmod 755 $(CURDIR)/debian/$(basepkg)-$*/DEBIAN/$$script; \
282 done
283
284 # At the end of the package prep, call the tests
285 DPKG_ARCH="$(arch)" KERN_ARCH="$(build_arch)" FLAVOUR="$*" \
286 VERSION="$(abi_release)" REVISION="$(revision)" \
287 PREV_REVISION="$(prev_revision)" ABI_NUM="$(abinum)" \
288 PREV_ABI_NUM="$(prev_abinum)" BUILD_DIR="$(builddir)/build-$*" \
289 INSTALL_DIR="$(pkgdir)" SOURCE_DIR="$(CURDIR)" \
290 run-parts -v $(DROOT)/tests-build
291
292 #
293 # Remove files which are generated at installation by postinst,
294 # except for modules.order and modules.builtin
295 #
296 # NOTE: need to keep this list in sync with postrm
297 #
298 mkdir $(pkgdir)/lib/modules/$(abi_release)-$*/_
299 mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.order \
300 $(pkgdir)/lib/modules/$(abi_release)-$*/_
301 if [ -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin ] ; then \
302 mv $(pkgdir)/lib/modules/$(abi_release)-$*/modules.builtin \
303 $(pkgdir)/lib/modules/$(abi_release)-$*/_; \
304 fi
305 rm -f $(pkgdir)/lib/modules/$(abi_release)-$*/modules.*
306 mv $(pkgdir)/lib/modules/$(abi_release)-$*/_/* \
307 $(pkgdir)/lib/modules/$(abi_release)-$*
308 rmdir $(pkgdir)/lib/modules/$(abi_release)-$*/_
309
310 ifeq ($(do_linux_tools),true)
311 # Create the linux-tools tool links
312 install -d $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
313 ifeq ($(do_tools_usbip),true)
314 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/usbip $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
315 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/usbipd $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
316 endif
317 ifeq ($(do_tools_cpupower),true)
318 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/cpupower $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
319 endif
320 ifeq ($(do_tools_perf),true)
321 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/perf $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
322 endif
323 ifeq ($(do_tools_x86),true)
324 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/x86_energy_perf_policy $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
325 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/turbostat $(toolspkgdir)/usr/lib/linux-tools/$(abi_release)-$*
326 endif
327 endif
328 ifeq ($(do_cloud_tools),true)
329 ifeq ($(do_tools_hyperv),true)
330 # Create the linux-hyperv tool links
331 install -d $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$*
332 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_kvp_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$*
333 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_vss_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$*
334 $(LN) ../../$(src_pkg_name)-tools-$(abi_release)/hv_fcopy_daemon $(cloudpkgdir)/usr/lib/linux-tools/$(abi_release)-$*
335 endif
336 endif
337
338 headers_tmp := $(CURDIR)/debian/tmp-headers
339 headers_dir := $(CURDIR)/debian/linux-libc-dev
340
341 hmake := $(MAKE) -C $(CURDIR) O=$(headers_tmp) \
342 KERNELVERSION=$(abi_release) INSTALL_HDR_PATH=$(headers_tmp)/install \
343 SHELL="$(SHELL)" ARCH=$(header_arch)
344
345 install-arch-headers:
346 @echo Debug: $@
347 dh_testdir
348 dh_testroot
349 dh_clean -k -plinux-libc-dev
350
351 rm -rf $(headers_tmp)
352 install -d $(headers_tmp) $(headers_dir)/usr/include/
353
354 $(hmake) $(defconfig)
355 mv $(headers_tmp)/.config $(headers_tmp)/.config.old
356 sed -e 's/^# \(CONFIG_MODVERSIONS\) is not set$$/\1=y/' \
357 -e 's/.*CONFIG_LOCALVERSION_AUTO.*/# CONFIG_LOCALVERSION_AUTO is not set/' \
358 $(headers_tmp)/.config.old > $(headers_tmp)/.config
359 $(hmake) silentoldconfig
360 $(hmake) headers_install
361
362 ( cd $(headers_tmp)/install/include/ && \
363 find . -name '.' -o -name '.*' -prune -o -print | \
364 cpio -pvd --preserve-modification-time \
365 $(headers_dir)/usr/include/ )
366 mkdir $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)
367 mv $(headers_dir)/usr/include/asm $(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)/
368
369 rm -rf $(headers_tmp)
370
371 binary-arch-headers: install-arch-headers
372 @echo Debug: $@
373 dh_testdir
374 dh_testroot
375 ifeq ($(do_libc_dev_package),true)
376 ifneq ($(DEBIAN),debian.master)
377 echo "non-master branch building linux-libc-dev, aborting"
378 exit 1
379 endif
380 dh_installchangelogs -plinux-libc-dev
381 dh_installdocs -plinux-libc-dev
382 dh_compress -plinux-libc-dev
383 dh_fixperms -plinux-libc-dev
384 dh_installdeb -plinux-libc-dev
385 $(lockme) dh_gencontrol -plinux-libc-dev -- $(libc_dev_version)
386 dh_md5sums -plinux-libc-dev
387 dh_builddeb -plinux-libc-dev
388 endif
389
390 binary-%: pkgimg = $(bin_pkg_name)-$*
391 binary-%: pkgimg_ex = $(extra_pkg_name)-$*
392 binary-%: pkghdr = $(hdrs_pkg_name)-$*
393 binary-%: dbgpkg = $(bin_pkg_name)-$*-dbgsym
394 binary-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym
395 binary-%: pkgtools = $(tools_flavour_pkg_name)-$*
396 binary-%: pkgcloud = $(cloud_flavour_pkg_name)-$*
397 binary-%: target_flavour = $*
398 binary-%: install-%
399 @echo Debug: $@
400 dh_testdir
401 dh_testroot
402
403 dh_installchangelogs -p$(pkgimg)
404 dh_installdocs -p$(pkgimg)
405 dh_compress -p$(pkgimg)
406 dh_fixperms -p$(pkgimg) -X/boot/
407 dh_installdeb -p$(pkgimg)
408 dh_shlibdeps -p$(pkgimg)
409 $(lockme) dh_gencontrol -p$(pkgimg)
410 dh_md5sums -p$(pkgimg)
411 dh_builddeb -p$(pkgimg) -- -Zbzip2 -z9
412
413 ifeq ($(do_extras_package),true)
414 if [ -f $(DEBIAN)/control.d/$(target_flavour).inclusion-list ] ; then \
415 dh_installchangelogs -p$(pkgimg_ex); \
416 dh_installdocs -p$(pkgimg_ex); \
417 dh_compress -p$(pkgimg_ex); \
418 dh_fixperms -p$(pkgimg_ex) -X/boot/; \
419 dh_installdeb -p$(pkgimg_ex); \
420 dh_shlibdeps -p$(pkgimg_ex); \
421 $(lockme) dh_gencontrol -p$(pkgimg_ex); \
422 dh_md5sums -p$(pkgimg_ex); \
423 dh_builddeb -p$(pkgimg_ex) -- -Zbzip2 -z9; \
424 fi
425 endif
426
427 dh_installchangelogs -p$(pkghdr)
428 dh_installdocs -p$(pkghdr)
429 dh_compress -p$(pkghdr)
430 dh_fixperms -p$(pkghdr)
431 dh_shlibdeps -p$(pkghdr)
432 dh_installdeb -p$(pkghdr)
433 $(lockme) dh_gencontrol -p$(pkghdr)
434 dh_md5sums -p$(pkghdr)
435 dh_builddeb -p$(pkghdr)
436
437 ifneq ($(skipsub),true)
438 @set -e; for sub in $($(*)_sub); do \
439 pkg=$(bin_pkg_name)-$$sub; \
440 dh_installchangelogs -p$$pkg; \
441 dh_installdocs -p$$pkg; \
442 dh_compress -p$$pkg; \
443 dh_fixperms -p$$pkg -X/boot/; \
444 dh_shlibdeps -p$$pkg; \
445 dh_installdeb -p$$pkg; \
446 $(lockme) dh_gencontrol -p$$pkg; \
447 dh_md5sums -p$$pkg; \
448 dh_builddeb -p$$pkg; \
449 done
450 endif
451
452 ifneq ($(skipdbg),true)
453 dh_installchangelogs -p$(dbgpkg)
454 dh_installdocs -p$(dbgpkg)
455 dh_compress -p$(dbgpkg)
456 dh_fixperms -p$(dbgpkg)
457 dh_installdeb -p$(dbgpkg)
458 $(lockme) dh_gencontrol -p$(dbgpkg)
459 dh_md5sums -p$(dbgpkg)
460 dh_builddeb -p$(dbgpkg)
461
462 # Hokay...here's where we do a little twiddling...
463 # Renaming the debug package prevents it from getting into
464 # the primary archive, and therefore prevents this very large
465 # package from being mirrored. It is instead, through some
466 # archive admin hackery, copied to http://ddebs.ubuntu.com.
467 #
468 mv ../$(dbgpkg)_$(release)-$(revision)_$(arch).deb \
469 ../$(dbgpkg)_$(release)-$(revision)_$(arch).ddeb
470 set -e; \
471 ( \
472 $(lockme_cmd) 9 || exit 1; \
473 if grep -qs '^Build-Debug-Symbols: yes$$' /CurrentlyBuilding; then \
474 sed -i '/^$(dbgpkg)_/s/\.deb /.ddeb /' debian/files; \
475 else \
476 grep -v '^$(dbgpkg)_.*$$' debian/files > debian/files.new; \
477 mv debian/files.new debian/files; \
478 fi; \
479 ) 9>$(lockme_file)
480 # Now, the package wont get into the archive, but it will get put
481 # into the debug system.
482 endif
483
484 ifeq ($(do_linux_tools),true)
485 dh_installchangelogs -p$(pkgtools)
486 dh_installdocs -p$(pkgtools)
487 dh_compress -p$(pkgtools)
488 dh_fixperms -p$(pkgtools)
489 dh_shlibdeps -p$(pkgtools)
490 dh_installdeb -p$(pkgtools)
491 $(lockme) dh_gencontrol -p$(pkgtools)
492 dh_md5sums -p$(pkgtools)
493 dh_builddeb -p$(pkgtools)
494 endif
495 ifeq ($(do_cloud_tools),true)
496 dh_installchangelogs -p$(pkgcloud)
497 dh_installdocs -p$(pkgcloud)
498 dh_compress -p$(pkgcloud)
499 dh_fixperms -p$(pkgcloud)
500 dh_shlibdeps -p$(pkgcloud)
501 dh_installdeb -p$(pkgcloud)
502 $(lockme) dh_gencontrol -p$(pkgcloud)
503 dh_md5sums -p$(pkgcloud)
504 dh_builddeb -p$(pkgcloud)
505 endif
506
507 ifneq ($(full_build),false)
508 # Clean out this flavours build directory.
509 rm -rf $(builddir)/build-$*
510 # Clean out the debugging package source directory.
511 rm -rf $(dbgpkgdir)
512 endif
513
514 #
515 # per-architecture packages
516 #
517 builddirpa = $(builddir)/tools-perarch
518
519 $(stampdir)/stamp-prepare-perarch:
520 @echo Debug: $@
521 ifeq ($(do_any_tools),true)
522 rm -rf $(builddirpa)
523 install -d $(builddirpa)
524 for i in *; do $(LN) $(CURDIR)/$$i $(builddirpa); done
525 rm $(builddirpa)/tools
526 rsync -a tools/ $(builddirpa)/tools/
527 endif
528 touch $@
529
530 $(stampdir)/stamp-build-perarch: $(stampdir)/stamp-prepare-perarch install-arch-headers
531 @echo Debug: $@
532 ifeq ($(do_linux_tools),true)
533 ifeq ($(do_tools_usbip),true)
534 chmod 755 $(builddirpa)/tools/usb/usbip/autogen.sh
535 cd $(builddirpa)/tools/usb/usbip && ./autogen.sh
536 chmod 755 $(builddirpa)/tools/usb/usbip/configure
537 cd $(builddirpa)/tools/usb/usbip && ./configure --prefix=$(builddirpa)/tools/usb/usbip/bin
538 cd $(builddirpa)/tools/usb/usbip && make install CFLAGS="-g -O2 -static" CROSS_COMPILE=$(CROSS_COMPILE)
539 endif
540 ifeq ($(do_tools_cpupower),true)
541 # Allow for multiple installed versions of cpupower and libcpupower.so:
542 # Override LIB_MIN in order to to generate a versioned .so named
543 # libcpupower.so.$(abi_release) and link cpupower with that.
544 make -C $(builddirpa)/tools/power/cpupower \
545 CROSS_COMPILE=$(CROSS_COMPILE) \
546 LIB_MIN=$(abi_release) CPUFREQ_BENCH=false
547 endif
548 ifeq ($(do_tools_perf),true)
549 cd $(builddirpa)/tools/perf && \
550 make prefix=/usr HAVE_CPLUS_DEMANGLE=1 CROSS_COMPILE=$(CROSS_COMPILE) NO_LIBPYTHON=1 NO_LIBPERL=1 PYTHON=python2.7
551 endif
552 ifeq ($(do_tools_x86),true)
553 cd $(builddirpa)/tools/power/x86/x86_energy_perf_policy && make CROSS_COMPILE=$(CROSS_COMPILE)
554 cd $(builddirpa)/tools/power/x86/turbostat && make CROSS_COMPILE=$(CROSS_COMPILE)
555 endif
556 endif
557 ifeq ($(do_cloud_tools),true)
558 ifeq ($(do_tools_hyperv),true)
559 cd $(builddirpa)/tools/hv && make CFLAGS="-I$(headers_dir)/usr/include -I$(headers_dir)/usr/include/$(DEB_HOST_MULTIARCH)" CROSS_COMPILE=$(CROSS_COMPILE) hv_kvp_daemon hv_vss_daemon hv_fcopy_daemon
560 endif
561 endif
562 @touch $@
563
564 install-perarch: toolspkgdir = $(CURDIR)/debian/$(tools_pkg_name)
565 install-perarch: cloudpkgdir = $(CURDIR)/debian/$(cloud_pkg_name)
566 install-perarch: $(stampdir)/stamp-build-perarch
567 @echo Debug: $@
568 # Add the tools.
569 ifeq ($(do_linux_tools),true)
570 install -d $(toolspkgdir)/usr/lib
571 install -d $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
572 ifeq ($(do_tools_usbip),true)
573 install -m755 $(builddirpa)/tools/usb/usbip/bin/sbin/usbip \
574 $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
575 install -m755 $(builddirpa)/tools/usb/usbip/bin/sbin/usbipd \
576 $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
577 endif
578 ifeq ($(do_tools_cpupower),true)
579 install -m755 $(builddirpa)/tools/power/cpupower/cpupower \
580 $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
581 # Install only the full versioned libcpupower.so.$(abi_release), not
582 # the usual symlinks to it.
583 install -m644 $(builddirpa)/tools/power/cpupower/libcpupower.so.$(abi_release) \
584 $(toolspkgdir)/usr/lib/
585 endif
586 ifeq ($(do_tools_perf),true)
587 install -m755 $(builddirpa)/tools/perf/perf $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
588 endif
589 ifeq ($(do_tools_x86),true)
590 install -m755 $(builddirpa)/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy \
591 $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
592 install -m755 $(builddirpa)/tools/power/x86/turbostat/turbostat \
593 $(toolspkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
594 endif
595 endif
596 ifeq ($(do_cloud_tools),true)
597 ifeq ($(do_tools_hyperv),true)
598 install -d $(cloudpkgdir)/usr/lib
599 install -d $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
600 install -m755 $(builddirpa)/tools/hv/hv_kvp_daemon \
601 $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
602 install -m755 $(builddirpa)/tools/hv/hv_vss_daemon \
603 $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
604 install -m755 $(builddirpa)/tools/hv/hv_fcopy_daemon \
605 $(cloudpkgdir)/usr/lib/$(src_pkg_name)-tools-$(abi_release)
606 endif
607 endif
608
609 binary-perarch: toolspkg = $(tools_pkg_name)
610 binary-perarch: cloudpkg = $(cloud_pkg_name)
611 binary-perarch: install-perarch
612 @echo Debug: $@
613 ifeq ($(do_linux_tools),true)
614 dh_strip -p$(toolspkg)
615 dh_installchangelogs -p$(toolspkg)
616 dh_installdocs -p$(toolspkg)
617 dh_compress -p$(toolspkg)
618 dh_fixperms -p$(toolspkg)
619 dh_shlibdeps -p$(toolspkg)
620 dh_installdeb -p$(toolspkg)
621 $(lockme) dh_gencontrol -p$(toolspkg)
622 dh_md5sums -p$(toolspkg)
623 dh_builddeb -p$(toolspkg)
624 endif
625 ifeq ($(do_cloud_tools),true)
626 dh_strip -p$(cloudpkg)
627 dh_installchangelogs -p$(cloudpkg)
628 dh_installdocs -p$(cloudpkg)
629 dh_compress -p$(cloudpkg)
630 dh_fixperms -p$(cloudpkg)
631 dh_shlibdeps -p$(cloudpkg)
632 dh_installdeb -p$(cloudpkg)
633 $(lockme) dh_gencontrol -p$(cloudpkg)
634 dh_md5sums -p$(cloudpkg)
635 dh_builddeb -p$(cloudpkg)
636 endif
637
638 binary-debs: signed = $(CURDIR)/debian/$(bin_pkg_name)-signed
639 binary-debs: signedv = $(CURDIR)/debian/$(bin_pkg_name)-signed/$(release)-$(revision)
640 binary-debs: signed_tar = $(src_pkg_name)_$(release)-$(revision)_$(arch).tar.gz
641 binary-debs: binary-perarch $(addprefix binary-,$(flavours))
642 @echo Debug: $@
643 ifeq ($(uefi_signed),true)
644 echo $(release)-$(revision) > $(signedv)/version
645 cd $(signedv) && ls *.efi >flavours
646 cd $(signed) && tar czvf ../../../$(signed_tar) .
647 dpkg-distaddfile $(signed_tar) raw-uefi -
648 endif
649
650 build-arch-deps-$(do_flavour_image_package) += $(addprefix $(stampdir)/stamp-build-,$(flavours))
651 build-arch: $(build-arch-deps-true)
652 @echo Debug: $@
653
654 ifeq ($(AUTOBUILD),)
655 binary-arch-deps-$(do_flavour_image_package) += binary-udebs
656 else
657 binary-arch-deps-$(do_flavour_image_package) = binary-debs
658 endif
659 binary-arch-deps-$(do_libc_dev_package) += binary-arch-headers
660 ifneq ($(do_common_headers_indep),true)
661 binary-arch-deps-$(do_flavour_header_package) += binary-headers
662 endif
663 binary-arch: $(binary-arch-deps-true)
664 @echo Debug: $@
665