]> git.proxmox.com Git - grub2.git/blame - debian/rules
Add PVH builds to grub-xen-bin and grub-xen-host
[grub2.git] / debian / rules
CommitLineData
c38e4ead 1#!/usr/bin/make -f
255820f9 2SHELL := bash
e8dabbb1
RM
3
4deb_version := $(shell dpkg-parsechangelog | sed -ne "s/^Version: \(.*\)/\1/p")
5upstream_version := $(shell echo $(deb_version) | sed -e "s/-[^-]*$$//")
6
255820f9 7package := grub2
c38e4ead 8
d487f29e
CW
9DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH 2>/dev/null)
10DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)
0f88b19a 11DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)
b7cfd0a3 12
fcf28609 13HOST_CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS)
0b29b4e0
CW
14# -O3 (default on Ubuntu ppc64el) introduces various -Werror failures, and
15# isn't worth it here.
16HOST_CFLAGS := -Wall -Wno-error=unused-result $(shell dpkg-buildflags --get CFLAGS | perl -pe 's/-O3\b/-O2/')
fcf28609 17HOST_LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
1238ab3a 18
15c5f083 19export DEB_HOST_ARCH
cbcad076 20unexport CFLAGS
fcf28609 21export HOST_CPPFLAGS
cbcad076 22export HOST_CFLAGS
fcf28609 23export HOST_LDFLAGS
f309d9d1 24export TARGET_CPPFLAGS := -Wno-unused-but-set-variable
fe0d2f25 25export TARGET_LDFLAGS := -no-pie
cbcad076 26
d68bc482
JPAG
27ifneq (,$(filter sparc sparc64,$(DEB_HOST_ARCH_CPU)))
28export TARGET_CCASFLAGS := -fno-PIE
29endif
30
e7217dd2
CW
31ifeq (,$(shell which qemu-system-i386 2>/dev/null))
32with_check := no
4e1666a5
CW
33else
34with_check := yes
e7217dd2
CW
35endif
36
7981cb3a 37CC := gcc-8
b99f120b 38
a97ee384
CW
39confflags = \
40 PACKAGE_VERSION="$(deb_version)" PACKAGE_STRING="GRUB $(deb_version)" \
41 CC=$(CC) TARGET_CC=$(CC) \
42 --enable-grub-mkfont \
43 --disable-grub-emu-usb
539388ac 44substvars =
d5d38884 45
48dbe1e3 46AUTOGEN_DEB_FILES = config templates preinst postinst postrm dirs install links maintscript bash-completion
b4fcdb85 47
4e1666a5 48BUILD_PACKAGES := $(strip $(shell dh_listpackages))
51cc7f7b
IC
49# REAL_PACKAGES build an actual grub variant (and therefore have both configure
50# and build stages). EXTRA_PACKAGES do not build grub but may depend on a
51# REAL_PACKAGE (and therefore only have a build stage)
14910ac2 52REAL_PACKAGES = grub-common grub-emu grub-pc grub-coreboot grub-efi-ia32 grub-efi-amd64 grub-efi-ia64 grub-efi-arm grub-efi-arm64 grub-ieee1275 grub-firmware-qemu grub-uboot grub-xen grub-yeeloong
60bd0628 53EXTRA_PACKAGES = grub-rescue-pc grub-xen-host
f77681ba 54
9ab89a40
CW
55ifneq (,$(filter i386 amd64,$(DEB_HOST_ARCH_CPU)))
56COMMON_PLATFORM := pc
3d7a403d 57else ifneq (,$(filter powerpc ppc64 ppc64el sparc sparc64,$(DEB_HOST_ARCH_CPU)))
9ab89a40
CW
58COMMON_PLATFORM := ieee1275
59else ifeq (mipsel,$(DEB_HOST_ARCH_CPU))
60COMMON_PLATFORM := yeeloong
c78ea29a 61else ifeq (ia64,$(DEB_HOST_ARCH_CPU))
12b3b38c 62COMMON_PLATFORM := efi-ia64
9af8d269
CW
63else ifeq (arm,$(DEB_HOST_ARCH_CPU))
64COMMON_PLATFORM := uboot
eab14eb3
CW
65else ifeq (arm64,$(DEB_HOST_ARCH_CPU))
66COMMON_PLATFORM := efi-arm64
9ab89a40 67else
14910ac2
CW
68COMMON_PLATFORM := none
69BUILD_PACKAGES += grub-none
9ab89a40
CW
70endif
71
537c70e5
CW
72ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
73DEFAULT_CMDLINE := quiet splash
67f530b7 74DEFAULT_TIMEOUT := 10
f36bde6c
CW
75ifeq ($(DEB_HOST_ARCH_CPU),ppc64el)
76FLICKER_FREE_BOOT := no
77else
539388ac 78FLICKER_FREE_BOOT := yes
f36bde6c 79endif
539388ac 80confflags += --enable-ubuntu-recovery
55409bb1
JS
81else ifeq (yes,$(shell dpkg-vendor --derives-from Tanglu && echo yes))
82DEFAULT_CMDLINE := quiet splash
83DEFAULT_TIMEOUT := 10
539388ac
CW
84FLICKER_FREE_BOOT := yes
85else
86DEFAULT_CMDLINE := quiet
87DEFAULT_TIMEOUT := 5
88FLICKER_FREE_BOOT := no
89endif
90
91ifeq ($(FLICKER_FREE_BOOT),yes)
55409bb1
JS
92DEFAULT_HIDDEN_TIMEOUT := 0
93DEFAULT_HIDDEN_TIMEOUT_BOOL := true
94confflags += \
95 --enable-quiet-boot \
96 --enable-quick-boot \
97 --enable-gfxpayload-dynamic \
98 --enable-vt-handoff
539388ac 99substvars += \
55409bb1
JS
100 -Vlsb-base-depends="lsb-base (>= 3.0-6)" \
101 -Vgfxpayload-depends="grub-gfxpayload-lists [any-i386 any-amd64]"
537c70e5 102else
84c4b591 103DEFAULT_HIDDEN_TIMEOUT :=
b4ada2ef 104DEFAULT_HIDDEN_TIMEOUT_BOOL := false
537c70e5
CW
105endif
106
bd2c77be
PH
107# Secure Boot
108debian/stamps/build-grub-efi-ia32 install/grub-efi-ia32: export SB_PLATFORM := i386-efi
109debian/stamps/build-grub-efi-ia32 install/grub-efi-ia32: export SB_EFI_NAME := ia32
110debian/stamps/build-grub-efi-amd64 install/grub-efi-amd64: export SB_PLATFORM := x86_64-efi
111debian/stamps/build-grub-efi-amd64 install/grub-efi-amd64: export SB_EFI_NAME := x64
112debian/stamps/build-grub-efi-arm64 install/grub-efi-arm64: export SB_PLATFORM := arm64-efi
113debian/stamps/build-grub-efi-arm64 install/grub-efi-arm64: export SB_EFI_NAME := aa64
9a1aa2c7
CW
114SB_PACKAGE :=
115ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
116ifeq ($(DEB_HOST_ARCH),amd64)
117SB_PACKAGE := grub-efi-amd64
9a1aa2c7 118endif
0b814ed1 119ifeq ($(DEB_HOST_ARCH),arm64)
120SB_PACKAGE := grub-efi-arm64
0b814ed1 121endif
9a1aa2c7
CW
122endif
123
49a4f5cd
LB
124# Downstream distributions that want to support SB and build images, but do not
125# rebuild grub, need a programmatic way to get the vendor, as it's used by build-efi-images
126# to create the monolithic Grub image and thus is needed to create the partitions on the EFI
127# media. Add it to the control file user metadata: XB-Efi-Vendor: $vendor
128SB_EFI_VENDOR ?= $(shell dpkg-vendor --query vendor | tr '[:upper:]' '[:lower:]')
129
4e1666a5 130%:
48dbe1e3 131 dh $@ --with=bash_completion --parallel
4e1666a5 132
d487f29e 133override_dh_auto_configure: $(patsubst %,configure/%,$(BUILD_PACKAGES))
4e1666a5 134
d487f29e 135override_dh_auto_build: $(patsubst %,build/%,$(BUILD_PACKAGES))
4e1666a5
CW
136
137override_dh_auto_install: $(patsubst %,install/%,$(BUILD_PACKAGES))
138
0cc922db 139$(patsubst %,configure/%,$(REAL_PACKAGES)) :: configure/% : debian/stamps/configure-%
51cc7f7b 140$(patsubst %,build/%,$(REAL_PACKAGES) $(EXTRA_PACKAGES)) :: build/% : debian/stamps/build-%
f77681ba 141
0cc922db
CW
142debian/stamps/configure-%: package = $(subst debian/stamps/configure-,,$@)
143debian/stamps/configure-%: export DH_OPTIONS = -p$(package) -Bobj/$(package)
4e1666a5 144
0cc922db
CW
145debian/stamps/build-%: package = $(subst debian/stamps/build-,,$@)
146debian/stamps/build-%: export DH_OPTIONS = -p$(package) -Bobj/$(package)
4e1666a5
CW
147
148install/%: package = $(subst install/,,$@)
b88ffb1a 149install/%: package_bin = $(package)-bin
00b51c62 150install/%: package_dbg = $(package)-dbg
b88ffb1a 151install/grub-emu: package_bin = grub-emu
00b51c62 152install/grub-emu: package_dbg = grub-emu-dbg
0cc922db 153install/%: export DH_OPTIONS = -p$(package) -Bobj/$(patsubst grub-common,grub-$(COMMON_PLATFORM),$(package))
4e1666a5 154
0cc922db
CW
155debian/stamps/autogen: autogen.sh configure.ac Makefile.util.def grub-core/Makefile.core.def
156 mkdir -p debian/stamps
86dc003b
CW
157 rm -rf debian/grub-extras-enabled
158 mkdir debian/grub-extras-enabled
159 set -e; for extra in 915resolution ntldr-img; do \
112116c2 160 cp -a debian/grub-extras/$$extra debian/grub-extras-enabled/; \
86dc003b
CW
161 done
162 env -u DH_OPTIONS GRUB_CONTRIB=$(CURDIR)/debian/grub-extras-enabled \
163 dh_autoreconf -- ./autogen.sh
ffbf5114 164 touch $@
a7a060ef 165
0cc922db 166debian/stamps/configure-grub-common: debian/stamps/configure-grub-$(COMMON_PLATFORM)
14910ac2 167 touch $@
9ab89a40 168
0cc922db 169debian/stamps/build-grub-common: debian/stamps/build-grub-$(COMMON_PLATFORM)
14910ac2 170 touch $@
9ab89a40 171
14910ac2 172debian/stamps/configure-grub-none debian/stamps/configure-grub-pc debian/stamps/configure-grub-ieee1275 debian/stamps/configure-grub-coreboot debian/stamps/configure-grub-emu debian/stamps/configure-grub-uboot debian/stamps/configure-grub-yeeloong: debian/stamps/autogen
0cc922db 173 mkdir -p debian/stamps obj/$(package)
4e1666a5 174 dh_auto_configure -- $(confflags) --with-platform=$(subst grub-,,$(package))
f77681ba 175 touch $@
d5d38884 176
12b3b38c 177# This name scheme leaves room for things like amd32 someday
0cc922db
CW
178debian/stamps/configure-grub-efi-ia32: debian/stamps/autogen
179 mkdir -p debian/stamps obj/$(package)
4e1666a5 180 dh_auto_configure -- $(confflags) --with-platform=efi --target=i386-pe --program-prefix=""
f77681ba 181 touch $@
0cc922db
CW
182debian/stamps/configure-grub-efi-amd64: debian/stamps/autogen
183 mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@)
4e1666a5 184 dh_auto_configure -- $(confflags) --with-platform=efi --target=amd64-pe --program-prefix=""
f77681ba 185 touch $@
00cc2530 186debian/stamps/configure-grub-efi-ia64 debian/stamps/configure-grub-efi-arm debian/stamps/configure-grub-efi-arm64: debian/stamps/autogen
eab14eb3
CW
187 mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@)
188 dh_auto_configure -- $(confflags) --with-platform=efi
189 touch $@
f77681ba 190
09fc936b 191debian/stamps/configure-grub-xen-i386 debian/stamps/configure-grub-xen-amd64: debian/stamps/autogen
361324dd
CW
192 mkdir -p debian/stamps obj/$(package)
193 dh_auto_configure -- $(confflags) --with-platform=xen --target=$(subst debian/stamps/configure-grub-xen-,,$@) --program-prefix=""
194 touch $@
09fc936b
CW
195debian/stamps/configure-grub-xen-pvh-i386: debian/stamps/autogen
196 mkdir -p debian/stamps obj/$(package)
197 dh_auto_configure -- $(confflags) --with-platform=xen_pvh --target=i386 --program-prefix=""
198 touch $@
199debian/stamps/configure-grub-xen: debian/stamps/configure-grub-xen-i386 debian/stamps/configure-grub-xen-amd64 debian/stamps/configure-grub-xen-pvh-i386
f77ad618 200 touch $@
361324dd 201
0cc922db
CW
202debian/stamps/configure-grub-firmware-qemu: debian/stamps/autogen
203 mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@)
4e1666a5 204 dh_auto_configure -- $(confflags) --with-platform=qemu
f77681ba
CW
205 touch $@
206
09fc936b 207debian/stamps/build-grub-none debian/stamps/build-grub-efi-ia64 debian/stamps/build-grub-efi-arm debian/stamps/build-grub-coreboot debian/stamps/build-grub-emu debian/stamps/build-grub-uboot debian/stamps/build-grub-xen-i386 debian/stamps/build-grub-xen-amd64 debian/stamps/build-grub-xen-pvh-i386 debian/stamps/build-grub-yeeloong: debian/stamps/build-%: debian/stamps/configure-%
4e1666a5 208 dh_auto_build
f77681ba
CW
209 touch $@
210
bd2c77be
PH
211debian/stamps/build-grub-efi-ia32 debian/stamps/build-grub-efi-amd64 debian/stamps/build-grub-efi-arm64: debian/stamps/build-%: debian/stamps/configure-% debian/stamps/build-grub-$(COMMON_PLATFORM)
212 dh_auto_build
213 debian/build-efi-images \
214 obj/grub-$(COMMON_PLATFORM)/grub-mkimage \
215 obj/$(package)/grub-core \
216 obj/monolithic/$(package) \
49a4f5cd 217 $(SB_PLATFORM) $(SB_EFI_NAME) $(SB_EFI_VENDOR)
bd2c77be
PH
218 touch $@
219
60bd0628 220debian/stamps/build-grub-xen-host-i386: PVBOOT_ARCH := i386
09fc936b 221debian/stamps/build-grub-xen-host-i386: debian/stamps/build-grub-xen-i386
60bd0628 222debian/stamps/build-grub-xen-host-amd64: PVBOOT_ARCH := x86_64
09fc936b
CW
223debian/stamps/build-grub-xen-host-amd64: debian/stamps/build-grub-xen-amd64
224debian/stamps/build-grub-xen-host-i386 debian/stamps/build-grub-xen-host-amd64:
60bd0628
IC
225 target=$(subst debian/stamps/build-grub-xen-host-,,$@) ; \
226 obj_dir=$(CURDIR)/obj/grub-xen-$${target} ; \
227 grub_dir=`mktemp -d` ; \
228 grub_memdisk=`mktemp` ; \
229 trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \
230 mkdir -p $${grub_dir}/boot/grub ; \
231 mkdir -p $(CURDIR)/obj/$(package) ; \
232 sed -e "s/@@PVBOOT_ARCH@@/$(PVBOOT_ARCH)/g" \
233 <debian/grub-xen-host_grub.cfg \
234 >$${grub_dir}/grub.cfg ; \
235 tar -cf - -C $${grub_dir} grub.cfg > $${grub_memdisk} ; \
236 $${obj_dir}/grub-mkimage \
237 -O $(PVBOOT_ARCH)-xen \
238 -c $(CURDIR)/debian/grub-xen-host_grub-bootstrap.cfg \
239 -d $${obj_dir}/grub-core \
240 $${obj_dir}/grub-core/*.mod \
241 -m $${grub_memdisk} \
242 -o $(CURDIR)/obj/$(package)/grub-$(PVBOOT_ARCH)-xen.bin
243 touch $@
244
09fc936b
CW
245debian/stamps/build-grub-xen-host-pvh-i386: debian/stamps/build-grub-xen-pvh-i386
246 target=$(subst debian/stamps/build-grub-xen-host-,,$@) ; \
247 obj_dir=$(CURDIR)/obj/grub-xen-$${target} ; \
248 grub_dir=`mktemp -d` ; \
249 grub_memdisk=`mktemp` ; \
250 trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \
251 mkdir -p $${grub_dir}/boot/grub ; \
252 mkdir -p $(CURDIR)/obj/$(package) ; \
253 cp -a debian/grub-xen-host_grub-pvh.cfg $${grub_dir}/grub.cfg ; \
254 tar -cf - -C $${grub_dir} grub.cfg > $${grub_memdisk} ; \
255 $${obj_dir}/grub-mkimage \
256 -O i386-xen_pvh \
257 -c $(CURDIR)/debian/grub-xen-host_grub-bootstrap.cfg \
258 -d $${obj_dir}/grub-core \
259 $${obj_dir}/grub-core/*.mod \
260 -m $${grub_memdisk} \
261 -o $(CURDIR)/obj/$(package)/grub-i386-xen_pvh.bin
262 touch $@
263
264debian/stamps/build-grub-xen-host: debian/stamps/build-grub-xen-host-i386 debian/stamps/build-grub-xen-host-amd64 debian/stamps/build-grub-xen-host-pvh-i386
60bd0628
IC
265 touch $@
266
0cc922db 267debian/stamps/build-grub-pc: debian/stamps/configure-grub-pc
4e1666a5 268 dh_auto_build
fb9f1b3b 269ifeq ($(with_check), yes)
63992cb6 270 LC_MESSAGES=C.UTF-8 LC_CTYPE=C.UTF-8 PATH="$$PATH:/sbin:/usr/sbin" VERBOSE=1 dh_auto_test --max-parallel=1
fb9f1b3b 271endif
f77681ba 272 touch $@
0b43720d 273
7d36f5f2
CW
274debian/stamps/build-grub-ieee1275: debian/stamps/configure-grub-ieee1275
275 dh_auto_build
32bfd055 276ifneq (,$(filter powerpc ppc64 ppc64el,$(DEB_HOST_ARCH_CPU)))
7d36f5f2
CW
277 $(CC) $(HOST_CFLAGS) debian/prep-bootdev.c -o debian/prep-bootdev -lparted
278endif
279 touch $@
280
09fc936b 281debian/stamps/build-grub-xen: debian/stamps/build-grub-xen-i386 debian/stamps/build-grub-xen-amd64 debian/stamps/build-grub-xen-pvh-i386
f77ad618 282 touch $@
361324dd 283
0cc922db 284debian/stamps/build-grub-firmware-qemu: debian/stamps/configure-grub-firmware-qemu
4e1666a5 285 dh_auto_build
09ee8c4a 286 grub_dir=`mktemp -d` ; \
287 grub_memdisk=`mktemp` ; \
bb033db1 288 trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \
09ee8c4a 289 mkdir -p $${grub_dir}/boot/grub ; \
290 cp debian/grub-firmware-qemu_grub.cfg $${grub_dir}/boot/grub/grub.cfg ; \
291 tar -cf - -C $${grub_dir} boot > $${grub_memdisk} ; \
0cc922db 292 obj/$(package)/grub-mkimage \
57a0c61e 293 -O i386-qemu \
0cc922db
CW
294 -d $(CURDIR)/obj/$(package)/grub-core \
295 $(CURDIR)/obj/$(package)/grub-core/*.mod \
09ee8c4a 296 -m $${grub_memdisk} \
0cc922db 297 -o $(CURDIR)/obj/$(package)/grub.bin
f77681ba 298 touch $@
d8ce8ba4 299
0cc922db 300debian/stamps/build-grub-rescue-pc: debian/stamps/build-grub-pc
0cc922db
CW
301 mkdir -p obj/grub-rescue-pc/rescue-disk/boot/grub
302 cp docs/grub.cfg obj/grub-rescue-pc/rescue-disk/boot/grub/
aec1769d
CW
303 rm -rf obj/grub-rescue-pc/grub-core
304 cp -a obj/grub-pc/grub-core obj/grub-rescue-pc/grub-core
305 cp -a obj/grub-pc/unicode.pf2 obj/grub-rescue-pc/
0cc922db 306 pkgdatadir=$(CURDIR)/obj/grub-rescue-pc \
aec1769d
CW
307 obj/grub-pc/grub-mkrescue \
308 --directory=$(CURDIR)/obj/grub-rescue-pc/grub-core \
309 --locale-directory=$(CURDIR)/obj/grub-rescue-pc/grub-core/po \
0cc922db
CW
310 --output=$(CURDIR)/obj/grub-rescue-pc/grub-rescue-cdrom.iso \
311 $(CURDIR)/obj/grub-rescue-pc/rescue-disk
0bf6faa1 312 # save space for floppy image
aec1769d 313 rm -rf obj/grub-rescue-pc/grub-core/po obj/grub-rescue-pc/unicode.pf2
0cc922db 314 pkgdatadir=$(CURDIR)/obj/grub-rescue-pc \
aec1769d
CW
315 obj/grub-pc/grub-mkrescue \
316 --directory=$(CURDIR)/obj/grub-rescue-pc/grub-core \
317 --locale-directory=$(CURDIR)/obj/grub-rescue-pc/grub-core/po \
0cc922db 318 --output=$(CURDIR)/obj/grub-rescue-pc/grub-rescue-floppy.img \
3388a9d0 319 --compress=xz \
496cca85
CW
320 -no-pad \
321 $(CURDIR)/obj/grub-rescue-pc/rescue-disk
9ef1395f
CW
322 touch $@
323
b88ffb1a
CW
324platform_subst = \
325 if [ -e debian/$(1) ]; then \
4fbb3d8f
CW
326 debian/platform-subst \
327 PACKAGE="$(2)" \
328 DEFAULT_CMDLINE="$(DEFAULT_CMDLINE)" \
329 DEFAULT_TIMEOUT="$(DEFAULT_TIMEOUT)" \
330 DEFAULT_HIDDEN_TIMEOUT_BOOL="$(DEFAULT_HIDDEN_TIMEOUT_BOOL)" \
331 debian/$(1) >> debian/$(2).$(3); \
b88ffb1a
CW
332 fi
333
14910ac2
CW
334install/grub-none:
335 dh_auto_install --destdir=debian/tmp-$(package)
336
337 # Avoid failures later if we're building from a tree with no .po
338 # files.
339 mkdir -p debian/tmp-$(package)/usr/share/locale
340
eab14eb3 341install/grub-pc install/grub-efi-ia32 install/grub-efi-amd64 install/grub-efi-ia64 install/grub-efi-arm install/grub-efi-arm64 install/grub-ieee1275 install/grub-coreboot install/grub-emu install/grub-uboot install/grub-xen install/grub-yeeloong:
f77ad618
CW
342 set -e ; \
343 if [ "$@" = "install/grub-xen" ] ; then \
361324dd
CW
344 dh_auto_install -Bobj/grub-xen-i386 --destdir=debian/tmp-$(package); \
345 dh_auto_install -Bobj/grub-xen-amd64 --destdir=debian/tmp-$(package); \
09fc936b 346 dh_auto_install -Bobj/grub-xen-pvh-i386 --destdir=debian/tmp-$(package); \
361324dd
CW
347 else \
348 dh_auto_install --destdir=debian/tmp-$(package); \
349 fi
15f9f1fa 350
bd2c77be
PH
351 set -e ; \
352 if [ -d "obj/monolithic/$(package)" ] ; then \
6f7b90eb
CW
353 install -m 0755 -d debian/$(package_bin)/usr/lib/grub/$(SB_PLATFORM)/monolithic ; \
354 install -m 0644 -t debian/$(package_bin)/usr/lib/grub/$(SB_PLATFORM)/monolithic obj/monolithic/$(package)/*.efi ; \
355 debian/signing-template.generate "$(package)" ; \
bd2c77be
PH
356 fi
357
4fbb3d8f
CW
358 set -e ; \
359 for i in $(AUTOGEN_DEB_FILES) ; do \
360 > debian/$(package).$$i; \
0bdbd559
CW
361 if [ "$@" != "install/grub-emu" ] ; then \
362 $(call platform_subst,$$i.in,$(package),$$i); \
363 fi ; \
4fbb3d8f
CW
364 $(call platform_subst,$(package).$$i.in,$(package),$$i); \
365 $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \
366 $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS).in,$(package),$$i); \
367 $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \
368 [ -s debian/$(package).$$i ] || rm -f debian/$(package).$$i; \
369 if [ "$@" != "install/grub-emu" ] ; then \
b88ffb1a
CW
370 > debian/$(package_bin).$$i; \
371 $(call platform_subst,$$i-bin.in,$(package_bin),$$i); \
372 $(call platform_subst,$(package_bin).$$i.in,$(package_bin),$$i); \
ebfc068d 373 $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_bin),$$i); \
b88ffb1a 374 $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_OS).in,$(package_bin),$$i); \
660b2e45 375 $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_bin),$$i); \
b88ffb1a 376 [ -s debian/$(package_bin).$$i ] || rm -f debian/$(package_bin).$$i; \
4fbb3d8f
CW
377 fi ; \
378 > debian/$(package_dbg).$$i; \
0bdbd559
CW
379 if [ "$@" != "install/grub-emu" ] ; then \
380 $(call platform_subst,$$i-dbg.in,$(package_dbg),$$i); \
381 fi ; \
4fbb3d8f
CW
382 $(call platform_subst,$(package_dbg).$$i.in,$(package_dbg),$$i); \
383 $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \
384 $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS).in,$(package_dbg),$$i); \
385 $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \
386 [ -s debian/$(package_dbg).$$i ] || rm -f debian/$(package_dbg).$$i; \
387 done
642638e0 388
92892e10 389 find debian/tmp-$(package)/usr/lib/grub -name modinfo.sh -print0 | \
8507da99 390 xargs -0r chmod +x
92892e10
CW
391 find debian/tmp-$(package)/usr/lib/grub -name gdb_grub -print0 | \
392 xargs -0r chmod -x
393 find debian/tmp-$(package)/usr/lib/grub -name gmodule.pl -print0 | \
394 xargs -0r chmod -x
8507da99 395
fa8a2a01 396 mkdir -p debian/$(package_bin)/usr/share/lintian/overrides
b88ffb1a 397 echo "$(package_bin): unstripped-binary-or-object *.mod" \
fa8a2a01 398 >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
b88ffb1a
CW
399 cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \
400 | sed -e "s%.*%$(package_bin): statically-linked-binary &%g" \
90da22a7 401 >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
a9539a64
CW
402 cd debian/tmp-$(package) && find ./usr/lib/grub -name kernel.img \
403 | sed -e "s%.*%$(package_bin): statically-linked-binary &%g" \
90da22a7 404 >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
b88ffb1a
CW
405 cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \
406 | sed -e "s%.*%$(package_bin): unstripped-binary-or-object &%g" \
90da22a7 407 >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
361324dd 408 if ([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \
1534c3f0
CW
409 ([ "$@" != "install/grub-emu" ] && [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" = "amd64:32" ]) || \
410 [ "$@" = "install/grub-xen" ]; then \
b88ffb1a 411 echo "$(package_bin): binary-from-other-architecture *.mod" \
fa8a2a01 412 >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \
b88ffb1a
CW
413 cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \
414 | sed -e "s%.*%$(package_bin): binary-from-other-architecture &%g" \
90da22a7 415 >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \
6bc215e1 416 fi
98a54f5c
CW
417 if ([ "$@" = "install/grub-pc" ] || \
418 [ "$@" = "install/grub-ieee1275" ] || \
419 [ "$@" = "install/grub-coreboot" ] || \
10006331 420 [ "$@" = "install/grub-xen" ] || \
98a54f5c 421 [ "$@" = "install/grub-emu" ]) && \
660b2e45 422 [ "$(DEB_HOST_ARCH_OS)" = "linux" ] && \
1534c3f0 423 [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" != "amd64:64" ] ; then \
b88ffb1a 424 echo "$(package_bin): binary-from-other-architecture *efiemu64.o" \
fa8a2a01 425 >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \
c5615a1d 426 fi
0daae717 427
fa8a2a01 428 mkdir -p debian/$(package_dbg)/usr/share/lintian/overrides
00b51c62 429 echo "$(package_dbg): unstripped-binary-or-object *.module" \
fa8a2a01 430 >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
00b51c62 431 echo "$(package_dbg): statically-linked-binary *.image" \
fa8a2a01 432 >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
00b51c62
CW
433 cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \
434 | sed -e "s%.*%$(package_dbg): statically-linked-binary &%g" \
90da22a7 435 >> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
361324dd 436 if ([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \
1534c3f0 437 ([ "$@" != "install/grub-emu" ] && [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" = "amd64:32" ]) || \
361324dd 438 [ "$@" = "install/grub-xen" ] ; then \
00b51c62 439 echo "$(package_dbg): binary-from-other-architecture *.module" \
fa8a2a01 440 >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \
00b51c62
CW
441 cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \
442 | sed -e "s%.*%$(package_dbg): binary-from-other-architecture &%g" \
90da22a7 443 >> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \
00b51c62
CW
444 fi
445
6fc99271
CW
446 # Avoid failures later if we're building from a tree with no .po
447 # files.
448 mkdir -p debian/tmp-$(package)/usr/share/locale
449
48dbe1e3
CW
450common_subst = \
451 if [ -e debian/grub-common.$(1) ]; then \
452 sed 's/@COMMON_PLATFORM@/$(COMMON_PLATFORM)/g' \
453 debian/grub-common.$(1) >> debian/grub-common.$(2).new; \
454 fi
455
4e1666a5 456install/grub-common:
d487f29e 457 set -e ; for i in $(AUTOGEN_DEB_FILES) ; do \
48dbe1e3
CW
458 > debian/grub-common.$$i.new; \
459 $(call common_subst,$$i.in,$$i); \
460 $(call common_subst,$$i.$(DEB_HOST_ARCH_CPU).in,$$i); \
461 $(call common_subst,$$i.$(DEB_HOST_ARCH_OS).in,$$i); \
462 if [ -s debian/grub-common.$$i.new ] ; then \
463 mv debian/grub-common.$$i.new debian/grub-common.$$i; \
464 else \
465 rm -f debian/grub-common.$$i.new; \
466 fi; \
d487f29e 467 done
a2dac38e
CW
468ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
469 install -D -m 0755 debian/grub-common.pm-sleep \
470 $(CURDIR)/debian/$(package)/etc/pm/sleep.d/10_grub-common
471endif
dfa71bad 472
ab16fcc4
CW
473NON_PLATFORM_PACKAGES = $(filter grub2 grub-linuxbios grub-efi grub-rescue-pc grub-firmware-qemu grub-xen-host,$(BUILD_PACKAGES))
474COMMON_PLATFORM_PACKAGES = $(filter grub-common grub2-common grub-theme-starfield grub-mount-udeb,$(BUILD_PACKAGES))
475PLATFORM_PACKAGES = $(filter grub-pc grub-efi-ia32 grub-efi-amd64 grub-efi-ia64 grub-efi-arm grub-efi-arm64 grub-ieee1275 grub-coreboot grub-uboot grub-xen grub-yeeloong,$(BUILD_PACKAGES))
476
d487f29e 477override_dh_install:
ab16fcc4
CW
478ifneq (,$(NON_PLATFORM_PACKAGES))
479 dh_install $(patsubst %,-p%,$(NON_PLATFORM_PACKAGES))
480endif
481 dh_install $(patsubst %,-p%,$(COMMON_PLATFORM_PACKAGES)) --sourcedir=debian/tmp-grub-$(COMMON_PLATFORM)
3177d4fb 482 rm -f debian/grub2-common/usr/share/info/dir*
22e9b524 483 rm -f debian/grub-theme-starfield/usr/share/grub/themes/starfield/COPYING.CC-BY-SA-3.0
ab16fcc4
CW
484ifneq (,$(PLATFORM_PACKAGES))
485 set -e; for package in $(PLATFORM_PACKAGES); do \
d487f29e 486 dh_install -p$$package --sourcedir=debian/tmp-$$package; \
b88ffb1a 487 dh_install -p$$package-bin --sourcedir=debian/tmp-$$package; \
00b51c62 488 dh_install -p$$package-dbg --sourcedir=debian/tmp-$$package; \
d487f29e 489 done
ab16fcc4
CW
490endif
491ifneq (,$(filter grub-emu,$(BUILD_PACKAGES)))
b88ffb1a 492 dh_install -pgrub-emu --sourcedir=debian/tmp-grub-emu
00b51c62 493 dh_install -pgrub-emu-dbg --sourcedir=debian/tmp-grub-emu
ab16fcc4 494endif
14910ac2 495ifneq (,$(filter grub2-common,$(BUILD_PACKAGES)))
67f530b7
CW
496 sed -i \
497 -e "s/@DEFAULT_CMDLINE@/$(DEFAULT_CMDLINE)/g" \
498 -e "s/@DEFAULT_TIMEOUT@/$(DEFAULT_TIMEOUT)/g" \
537c70e5 499 debian/grub2-common/usr/share/grub/default/grub
84c4b591
CW
500ifneq (,$(DEFAULT_HIDDEN_TIMEOUT))
501 perl -pi -e 's/^GRUB_TIMEOUT=.*/GRUB_HIDDEN_TIMEOUT=0\nGRUB_HIDDEN_TIMEOUT_QUIET=true\n$$&/' \
502 debian/grub2-common/usr/share/grub/default/grub
503endif
ab16fcc4 504endif
3bb94bbb
CW
505ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
506ifneq (,$(filter grub-pc,$(BUILD_PACKAGES)))
507 patch debian/grub-pc/usr/lib/grub-legacy/update-grub \
508 < debian/legacy/update-grub.ubuntu.patch
509endif
510endif
9ab89a40 511
4e1666a5 512override_dh_installdocs:
ab16fcc4 513 dh_installdocs $(patsubst %,-p%,$(filter grub-common grub-rescue-pc grub-firmware-qemu grub-xen-host,$(BUILD_PACKAGES))) -A AUTHORS NEWS README THANKS TODO
a010d4da
LB
514 dh_installdocs $(patsubst %,-p%,$(filter grub-efi-%-signed-template,$(BUILD_PACKAGES)))
515 dh_installdocs --remaining-packages --link-doc=grub-common
4e1666a5 516
539388ac 517ifeq ($(FLICKER_FREE_BOOT),yes)
a2dac38e
CW
518override_dh_installinit:
519 dh_installinit -- start 99 2 3 4 5 .
520else
521override_dh_installinit:
522 :
523endif
524
3ea00869 525override_dh_bugfiles:
15c5f083 526 dh_bugfiles $(patsubst %,-N%,$(filter grub-efi-%-signed-template,$(BUILD_PACKAGES))) -A
3ea00869 527
4e1666a5
CW
528override_dh_strip:
529 dh_strip -X/usr/bin/grub-emu
e8dabbb1 530
bbeb59fe
CW
531override_dh_shlibdeps:
532 dh_shlibdeps -X.module
533
f58e49e2 534ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
2d0dbeff 535LEGACY_DOC_BR := grub-doc (<< 0.97-29ubuntu60), grub-legacy-doc (<< 0.97-29ubuntu60)
f58e49e2 536else
2d0dbeff 537LEGACY_DOC_BR := grub-doc (<< 0.97-32), grub-legacy-doc (<< 0.97-59)
f58e49e2
CW
538endif
539
540override_dh_gencontrol:
49a4f5cd 541 dh_gencontrol -- -Vlegacy-doc-br="$(LEGACY_DOC_BR)" -V"efi:Vendor=$(SB_EFI_VENDOR)" $(substvars)
f58e49e2 542
fa6c7410
CW
543TARNAME := grub2_$(deb_version)_$(DEB_HOST_ARCH).tar.gz
544
364bdc04 545override_dh_builddeb:
303b237f 546 dh_builddeb
9a1aa2c7 547ifneq (,$(SB_PACKAGE))
bd2c77be
PH
548 echo $(deb_version) > obj/monolithic/$(SB_PACKAGE)/version
549 tar -c -f ../$(TARNAME) -a -C obj/monolithic/$(SB_PACKAGE) -v .
fa6c7410
CW
550 dpkg-distaddfile $(TARNAME) raw-uefi -
551endif
364bdc04 552
4e1666a5 553override_dh_auto_clean:
86dc003b 554 -rm -rf debian/grub-extras-enabled debian/stamps obj
f13e3647 555 -rm -f contrib grub-core/contrib
e8dabbb1 556
22b1212a 557override_dh_clean:
136f47b9 558 dh_autoreconf_clean
4e1666a5
CW
559 dh_clean
560
3ea00869 561 chmod +x debian/{bug-script,grub.d/*,legacy/*,kernel/*}
4e1666a5 562
3166d82e 563 for i in $(AUTOGEN_DEB_FILES) ; do \
d91572cd 564 rm -f debian/grub-{pc,efi-*,ieee1275,coreboot,uboot,xen,yeeloong,emu}{,-bin,-dbg}.$$i ; \
1bc87b90 565 done
48dbe1e3 566 rm -f debian/grub-common.bash-completion debian/grub-common.maintscript
d487f29e 567 rm -rf debian/tmp-*/
1a67e2a2 568
34e32c28 569 # make sure PO files are always up-to-date
570 debconf-updatepo
571
4e1666a5 572.PHONY: $(patsubst %,configure/%,$(BUILD_PACKAGES)) $(patsubst %,build/%,$(BUILD_PACKAGES)) $(patsubst %,install/%,$(BUILD_PACKAGES))