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