4 deb_version
:= $(shell dpkg-parsechangelog | sed
-ne
"s/^Version: \(.*\)/\1/p")
5 upstream_version
:= $(shell echo
$(deb_version
) | sed
-e
"s/-[^-]*$$//")
9 DEB_HOST_ARCH ?
= $(shell dpkg-architecture
-qDEB_HOST_ARCH
2>/dev
/null
)
10 DEB_HOST_ARCH_OS ?
= $(shell dpkg-architecture
-qDEB_HOST_ARCH_OS
2>/dev
/null
)
11 DEB_HOST_ARCH_CPU ?
= $(shell dpkg-architecture
-qDEB_HOST_ARCH_CPU
2>/dev
/null
)
13 export DEB_BUILD_MAINT_OPTIONS
= optimize
=-lto
15 HOST_CPPFLAGS
:= $(shell dpkg-buildflags
--get CPPFLAGS
)
16 # -O3 (default on Ubuntu ppc64el) introduces various -Werror failures, and
17 # isn't worth it here.
18 HOST_CFLAGS
:= -Wall
-Wno-error
=unused-result
$(shell dpkg-buildflags
--get CFLAGS | perl
-pe
's/-O3\b/-O2/')
19 HOST_LDFLAGS
:= $(shell dpkg-buildflags
--get LDFLAGS
)
25 export TARGET_CPPFLAGS
:= -Wno-unused-but-set-variable
26 export TARGET_LDFLAGS
:= -no-pie
28 # Ensure that debhelper doesn't try to set these; we need to be careful
29 # about HOST_* vs. TARGET_*.
34 ifeq (,$(shell command
-v qemu-system-i386
))
43 PACKAGE_VERSION
="$(deb_version)" PACKAGE_STRING
="GRUB $(deb_version)" \
44 CC
=$(CC
) TARGET_CC
=$(CC
) \
45 --libdir=\
$${prefix}/lib
--libexecdir
=\
$${prefix}/lib \
46 --enable-grub-mkfont \
47 --disable-grub-emu-usb
50 AUTOGEN_DEB_FILES
= config templates preinst postinst postrm dirs
install links maintscript bash-completion
52 BUILD_PACKAGES
:= $(strip $(shell dh_listpackages
))
53 # REAL_PACKAGES build an actual grub variant (and therefore have both configure
54 # and build stages). EXTRA_PACKAGES do not build grub but may depend on a
55 # REAL_PACKAGE (and therefore only have a build stage)
56 REAL_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
57 EXTRA_PACKAGES
= grub-rescue-pc grub-xen-host
59 ifneq (,$(filter i386 amd64
,$(DEB_HOST_ARCH_CPU
)))
61 else ifneq (,$(filter powerpc ppc64 ppc64el sparc sparc64
,$(DEB_HOST_ARCH_CPU
)))
62 COMMON_PLATFORM
:= ieee1275
63 else ifeq (mipsel
,$(DEB_HOST_ARCH_CPU
))
64 COMMON_PLATFORM
:= yeeloong
65 else ifeq (ia64
,$(DEB_HOST_ARCH_CPU
))
66 COMMON_PLATFORM
:= efi-ia64
67 else ifeq (arm
,$(DEB_HOST_ARCH_CPU
))
68 COMMON_PLATFORM
:= uboot
69 else ifeq (arm64
,$(DEB_HOST_ARCH_CPU
))
70 COMMON_PLATFORM
:= efi-arm64
72 COMMON_PLATFORM
:= none
73 BUILD_PACKAGES
+= grub-none
76 ifeq (yes
,$(shell dpkg-vendor
--derives-from Ubuntu
&& echo yes
))
77 DEFAULT_CMDLINE
:= quiet splash
79 ifeq ($(DEB_HOST_ARCH_CPU
),ppc64el
)
80 FLICKER_FREE_BOOT
:= no
82 FLICKER_FREE_BOOT
:= yes
84 confflags
+= --enable-ubuntu-recovery
85 else ifeq (yes
,$(shell dpkg-vendor
--derives-from Tanglu
&& echo yes
))
86 DEFAULT_CMDLINE
:= quiet splash
88 FLICKER_FREE_BOOT
:= yes
90 DEFAULT_CMDLINE
:= quiet
92 FLICKER_FREE_BOOT
:= no
95 ifeq ($(FLICKER_FREE_BOOT
),yes
)
96 DEFAULT_HIDDEN_TIMEOUT
:= 0
97 DEFAULT_HIDDEN_TIMEOUT_BOOL
:= true
100 --enable-quick-boot \
101 --enable-gfxpayload-dynamic \
104 -Vlsb-base-depends
="lsb-base (>= 3.0-6)" \
105 -Vgfxpayload-depends
="grub-gfxpayload-lists [any-i386 any-amd64]"
107 DEFAULT_HIDDEN_TIMEOUT
:=
108 DEFAULT_HIDDEN_TIMEOUT_BOOL
:= false
112 debian
/stamps
/build-grub-efi-ia32
install/grub-efi-ia32
: export SB_PLATFORM
:= i386-efi
113 debian
/stamps
/build-grub-efi-ia32
install/grub-efi-ia32
: export SB_EFI_NAME
:= ia32
114 debian
/stamps
/build-grub-efi-amd64
install/grub-efi-amd64
: export SB_PLATFORM
:= x86_64-efi
115 debian
/stamps
/build-grub-efi-amd64
install/grub-efi-amd64
: export SB_EFI_NAME
:= x64
116 debian
/stamps
/build-grub-efi-arm64
install/grub-efi-arm64
: export SB_PLATFORM
:= arm64-efi
117 debian
/stamps
/build-grub-efi-arm64
install/grub-efi-arm64
: export SB_EFI_NAME
:= aa64
119 ifeq (yes
,$(shell dpkg-vendor
--derives-from Ubuntu
&& echo yes
))
120 ifeq ($(DEB_HOST_ARCH
),amd64
)
121 SB_PACKAGE
:= grub-efi-amd64
123 ifeq ($(DEB_HOST_ARCH
),arm64
)
124 SB_PACKAGE
:= grub-efi-arm64
128 # Downstream distributions that want to support SB and build images, but do not
129 # rebuild grub, need a programmatic way to get the vendor, as it's used by build-efi-images
130 # to create the monolithic Grub image and thus is needed to create the partitions on the EFI
131 # media. Add it to the control file user metadata: XB-Efi-Vendor: $vendor
132 SB_EFI_VENDOR ?
= proxmox
135 dh
$@
--with
=bash_completion
137 override_dh_auto_configure
: $(patsubst %,configure
/%,$(BUILD_PACKAGES
))
139 override_dh_auto_build
: $(patsubst %,build
/%,$(BUILD_PACKAGES
))
141 override_dh_auto_install
: $(patsubst %,install/%,$(BUILD_PACKAGES
))
143 $(patsubst %,configure
/%,$(REAL_PACKAGES
)) :: configure
/% : debian
/stamps
/configure-
%
144 $(patsubst %,build
/%,$(REAL_PACKAGES
) $(EXTRA_PACKAGES
)) :: build
/% : debian
/stamps
/build-
%
146 debian
/stamps
/configure-
%: package
= $(subst debian
/stamps
/configure-
,,$@
)
147 debian
/stamps
/configure-
%: export DH_OPTIONS
= -p
$(package
) -Bobj
/$(package
)
149 debian
/stamps
/build-
%: package
= $(subst debian
/stamps
/build-
,,$@
)
150 debian
/stamps
/build-
%: export DH_OPTIONS
= -p
$(package
) -Bobj
/$(package
)
152 install/%: package
= $(subst install/,,$@
)
153 install/%: package_bin
= $(package
)-bin
154 install/%: package_dbg
= $(package
)-dbg
155 install/grub-emu
: package_bin
= grub-emu
156 install/grub-emu
: package_dbg
= grub-emu-dbg
157 install/%: export DH_OPTIONS
= -p
$(package
) -Bobj
/$(patsubst grub-common
,grub-
$(COMMON_PLATFORM
),$(package
))
159 override_dh_autoreconf
:
160 mkdir
-p debian
/stamps
161 rm -rf debian
/grub-extras-enabled
162 mkdir debian
/grub-extras-enabled
163 set
-e
; for extra in
915resolution ntldr-img
; do \
164 cp
-a debian
/grub-extras
/$$extra debian
/grub-extras-enabled
/; \
166 env
-u DH_OPTIONS GRUB_CONTRIB
=$(CURDIR
)/debian
/grub-extras-enabled \
168 dh_autoreconf
-- .
/autogen.sh
170 debian
/stamps
/configure-grub-common
: debian
/stamps
/configure-grub-
$(COMMON_PLATFORM
)
173 debian
/stamps
/build-grub-common
: debian
/stamps
/build-grub-
$(COMMON_PLATFORM
)
176 debian
/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
:
177 mkdir
-p debian
/stamps obj
/$(package
)
178 dh_auto_configure
-- $(confflags
) --with-platform
=$(subst grub-
,,$(package
))
181 # This name scheme leaves room for things like amd32 someday
182 debian
/stamps
/configure-grub-efi-ia32
:
183 mkdir
-p debian
/stamps obj
/$(package
)
184 dh_auto_configure
-- $(confflags
) --with-platform
=efi
--target
=i386-pe
--program-prefix
=""
186 debian
/stamps
/configure-grub-efi-amd64
:
187 mkdir
-p debian
/stamps
$(subst debian
/stamps
/configure-
,obj
/,$@
)
188 dh_auto_configure
-- $(confflags
) --with-platform
=efi
--target
=amd64-pe
--program-prefix
=""
190 debian
/stamps
/configure-grub-efi-ia64 debian
/stamps
/configure-grub-efi-arm debian
/stamps
/configure-grub-efi-arm64
:
191 mkdir
-p debian
/stamps
$(subst debian
/stamps
/configure-
,obj
/,$@
)
192 dh_auto_configure
-- $(confflags
) --with-platform
=efi
195 debian
/stamps
/configure-grub-xen-i386 debian
/stamps
/configure-grub-xen-amd64
:
196 mkdir
-p debian
/stamps obj
/$(package
)
197 dh_auto_configure
-- $(confflags
) --with-platform
=xen
--target
=$(subst debian
/stamps
/configure-grub-xen-
,,$@
) --program-prefix
=""
199 debian
/stamps
/configure-grub-xen-pvh-i386
:
200 mkdir
-p debian
/stamps obj
/$(package
)
201 dh_auto_configure
-- $(confflags
) --with-platform
=xen_pvh
--target
=i386
--program-prefix
=""
203 debian
/stamps
/configure-grub-xen
: debian
/stamps
/configure-grub-xen-i386 debian
/stamps
/configure-grub-xen-amd64 debian
/stamps
/configure-grub-xen-pvh-i386
206 debian
/stamps
/configure-grub-firmware-qemu
:
207 mkdir
-p debian
/stamps
$(subst debian
/stamps
/configure-
,obj
/,$@
)
208 dh_auto_configure
-- $(confflags
) --with-platform
=qemu
211 debian
/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-
%
215 debian
/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
)
217 grub_dir
=`mktemp -d` ; \
218 sed
-e
"s/@DEB_VERSION@/$(deb_version)/g" \
219 -e
"s/@UPSTREAM_VERSION@/$(upstream_version)/g" \
220 <debian
/sbat.
$(SB_EFI_VENDOR
).csv.in \
221 >$${grub_dir}/sbat.
$(SB_EFI_VENDOR
).csv
; \
222 debian
/build-efi-images \
223 obj
/grub-
$(COMMON_PLATFORM
)/grub-mkimage \
224 obj
/$(package
)/grub-core \
225 obj
/monolithic
/$(package
) \
226 $(DEB_HOST_ARCH
) $(SB_PLATFORM
) $(SB_EFI_NAME
) \
227 $${grub_dir}/sbat.
$(SB_EFI_VENDOR
).csv
$(SB_EFI_VENDOR
)
230 debian
/stamps
/build-grub-xen-host-i386
: PVBOOT_ARCH
:= i386
231 debian
/stamps
/build-grub-xen-host-i386
: debian
/stamps
/build-grub-xen-i386
232 debian
/stamps
/build-grub-xen-host-amd64
: PVBOOT_ARCH
:= x86_64
233 debian
/stamps
/build-grub-xen-host-amd64
: debian
/stamps
/build-grub-xen-amd64
234 debian
/stamps
/build-grub-xen-host-i386 debian
/stamps
/build-grub-xen-host-amd64
:
235 target
=$(subst debian
/stamps
/build-grub-xen-host-
,,$@
) ; \
236 obj_dir
=$(CURDIR
)/obj
/grub-xen-
$${target} ; \
237 grub_dir
=`mktemp -d` ; \
238 grub_memdisk
=`mktemp` ; \
239 trap
"rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM
; \
240 mkdir
-p
$${grub_dir}/boot
/grub
; \
241 mkdir
-p
$(CURDIR
)/obj
/$(package
) ; \
242 sed
-e
"s/@@PVBOOT_ARCH@@/$(PVBOOT_ARCH)/g" \
243 <debian
/grub-xen-host_grub.cfg \
244 >$${grub_dir}/grub.cfg
; \
245 tar -cf
- -C
$${grub_dir} grub.cfg
> $${grub_memdisk} ; \
246 $${obj_dir}/grub-mkimage \
247 -O
$(PVBOOT_ARCH
)-xen \
248 -c
$(CURDIR
)/debian
/grub-xen-host_grub-bootstrap.cfg \
249 -d
$${obj_dir}/grub-core \
250 $${obj_dir}/grub-core
/*.mod \
251 -m
$${grub_memdisk} \
252 -o
$(CURDIR
)/obj
/$(package
)/grub-
$(PVBOOT_ARCH
)-xen.bin
255 debian
/stamps
/build-grub-xen-host-pvh-i386
: debian
/stamps
/build-grub-xen-pvh-i386
256 target
=$(subst debian
/stamps
/build-grub-xen-host-
,,$@
) ; \
257 obj_dir
=$(CURDIR
)/obj
/grub-xen-
$${target} ; \
258 grub_dir
=`mktemp -d` ; \
259 grub_memdisk
=`mktemp` ; \
260 trap
"rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM
; \
261 mkdir
-p
$${grub_dir}/boot
/grub
; \
262 mkdir
-p
$(CURDIR
)/obj
/$(package
) ; \
263 cp
-a debian
/grub-xen-host_grub-pvh.cfg
$${grub_dir}/grub.cfg
; \
264 tar -cf
- -C
$${grub_dir} grub.cfg
> $${grub_memdisk} ; \
265 $${obj_dir}/grub-mkimage \
267 -c
$(CURDIR
)/debian
/grub-xen-host_grub-bootstrap.cfg \
268 -d
$${obj_dir}/grub-core \
269 $${obj_dir}/grub-core
/*.mod \
270 -m
$${grub_memdisk} \
271 -o
$(CURDIR
)/obj
/$(package
)/grub-i386-xen_pvh.bin
274 debian
/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
277 debian
/stamps
/build-grub-pc
: debian
/stamps
/configure-grub-pc
279 ifeq ($(with_check
), yes
)
280 LC_MESSAGES
=C.UTF-8 LC_CTYPE
=C.UTF-8 PATH
="$$PATH:/sbin:/usr/sbin" VERBOSE
=1 dh_auto_test
--max-parallel
=1
284 debian
/stamps
/build-grub-ieee1275
: debian
/stamps
/configure-grub-ieee1275
286 ifneq (,$(filter powerpc ppc64 ppc64el
,$(DEB_HOST_ARCH_CPU
)))
287 $(CC
) $(HOST_CFLAGS
) debian
/prep-bootdev.c
-o debian
/prep-bootdev
-lparted
291 debian
/stamps
/build-grub-xen
: debian
/stamps
/build-grub-xen-i386 debian
/stamps
/build-grub-xen-amd64 debian
/stamps
/build-grub-xen-pvh-i386
294 debian
/stamps
/build-grub-firmware-qemu
: debian
/stamps
/configure-grub-firmware-qemu
296 grub_dir
=`mktemp -d` ; \
297 grub_memdisk
=`mktemp` ; \
298 trap
"rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM
; \
299 mkdir
-p
$${grub_dir}/boot
/grub
; \
300 cp debian
/grub-firmware-qemu_grub.cfg
$${grub_dir}/boot
/grub
/grub.cfg
; \
301 tar -cf
- -C
$${grub_dir} boot
> $${grub_memdisk} ; \
302 obj
/$(package
)/grub-mkimage \
304 -d
$(CURDIR
)/obj
/$(package
)/grub-core \
305 $(CURDIR
)/obj
/$(package
)/grub-core
/*.mod \
306 -m
$${grub_memdisk} \
307 -o
$(CURDIR
)/obj
/$(package
)/grub.bin
310 debian
/stamps
/build-grub-rescue-pc
: debian
/stamps
/build-grub-pc
311 mkdir
-p obj
/grub-rescue-pc
/rescue-disk
/boot
/grub
312 cp docs
/grub.cfg obj
/grub-rescue-pc
/rescue-disk
/boot
/grub
/
313 rm -rf obj
/grub-rescue-pc
/grub-core
314 cp
-a obj
/grub-pc
/grub-core obj
/grub-rescue-pc
/grub-core
315 cp
-a obj
/grub-pc
/unicode.pf2 obj
/grub-rescue-pc
/
316 pkgdatadir
=$(CURDIR
)/obj
/grub-rescue-pc \
317 obj
/grub-pc
/grub-mkrescue \
318 --directory
=$(CURDIR
)/obj
/grub-rescue-pc
/grub-core \
319 --locale-directory
=$(CURDIR
)/obj
/grub-rescue-pc
/grub-core
/po \
320 --output
=$(CURDIR
)/obj
/grub-rescue-pc
/grub-rescue-cdrom.iso \
321 $(CURDIR
)/obj
/grub-rescue-pc
/rescue-disk
322 # save space for floppy image
323 rm -rf obj
/grub-rescue-pc
/grub-core
/po obj
/grub-rescue-pc
/unicode.pf2
324 pkgdatadir
=$(CURDIR
)/obj
/grub-rescue-pc \
325 obj
/grub-pc
/grub-mkrescue \
326 --directory
=$(CURDIR
)/obj
/grub-rescue-pc
/grub-core \
327 --locale-directory
=$(CURDIR
)/obj
/grub-rescue-pc
/grub-core
/po \
328 --output
=$(CURDIR
)/obj
/grub-rescue-pc
/grub-rescue-floppy.img \
331 $(CURDIR
)/obj
/grub-rescue-pc
/rescue-disk
335 if
[ -e debian
/$(1) ]; then \
336 debian
/platform-subst \
338 DEFAULT_CMDLINE
="$(DEFAULT_CMDLINE)" \
339 DEFAULT_TIMEOUT
="$(DEFAULT_TIMEOUT)" \
340 DEFAULT_HIDDEN_TIMEOUT_BOOL
="$(DEFAULT_HIDDEN_TIMEOUT_BOOL)" \
341 debian
/$(1) >> debian
/$(2).
$(3); \
345 dh_auto_install
--destdir
=debian
/tmp-
$(package
)
347 # Avoid failures later if we're building from a tree with no .po
349 mkdir
-p debian
/tmp-
$(package
)/usr
/share
/locale
351 install/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
:
353 if
[ "$@" = "install/grub-xen" ] ; then \
354 dh_auto_install
-Bobj
/grub-xen-i386
--destdir
=debian
/tmp-
$(package
); \
355 dh_auto_install
-Bobj
/grub-xen-amd64
--destdir
=debian
/tmp-
$(package
); \
356 dh_auto_install
-Bobj
/grub-xen-pvh-i386
--destdir
=debian
/tmp-
$(package
); \
358 dh_auto_install
--destdir
=debian
/tmp-
$(package
); \
362 if
[ -d
"obj/monolithic/$(package)" ] ; then \
363 install -m
0755 -d debian
/$(package_bin
)/usr
/lib
/grub
/$(SB_PLATFORM
)/monolithic
; \
364 install -m
0644 -t debian
/$(package_bin
)/usr
/lib
/grub
/$(SB_PLATFORM
)/monolithic obj
/monolithic
/$(package
)/*.efi
; \
365 debian
/signing-template.generate
"$(package)" ; \
369 for i in
$(AUTOGEN_DEB_FILES
) ; do \
370 > debian
/$(package
).
$$i; \
371 if
[ "$@" != "install/grub-emu" ] ; then \
372 $(call platform_subst
,$$i.in
,$(package
),$$i); \
374 $(call platform_subst
,$(package
).
$$i.in
,$(package
),$$i); \
375 $(call platform_subst
,$(package
).
$$i.
$(DEB_HOST_ARCH_CPU
).in
,$(package
),$$i); \
376 $(call platform_subst
,$(package
).
$$i.
$(DEB_HOST_ARCH_OS
).in
,$(package
),$$i); \
377 $(call platform_subst
,$(package
).
$$i.
$(DEB_HOST_ARCH_OS
)-$(DEB_HOST_ARCH_CPU
).in
,$(package
),$$i); \
378 [ -s debian
/$(package
).
$$i ] ||
rm -f debian
/$(package
).
$$i; \
379 if
[ "$@" != "install/grub-emu" ] ; then \
380 > debian
/$(package_bin
).
$$i; \
381 $(call platform_subst
,$$i-bin.in
,$(package_bin
),$$i); \
382 $(call platform_subst
,$(package_bin
).
$$i.in
,$(package_bin
),$$i); \
383 $(call platform_subst
,$(package_bin
).
$$i.
$(DEB_HOST_ARCH_CPU
).in
,$(package_bin
),$$i); \
384 $(call platform_subst
,$(package_bin
).
$$i.
$(DEB_HOST_ARCH_OS
).in
,$(package_bin
),$$i); \
385 $(call platform_subst
,$(package_bin
).
$$i.
$(DEB_HOST_ARCH_OS
)-$(DEB_HOST_ARCH_CPU
).in
,$(package_bin
),$$i); \
386 [ -s debian
/$(package_bin
).
$$i ] ||
rm -f debian
/$(package_bin
).
$$i; \
388 > debian
/$(package_dbg
).
$$i; \
389 if
[ "$@" != "install/grub-emu" ] ; then \
390 $(call platform_subst
,$$i-dbg.in
,$(package_dbg
),$$i); \
392 $(call platform_subst
,$(package_dbg
).
$$i.in
,$(package_dbg
),$$i); \
393 $(call platform_subst
,$(package_dbg
).
$$i.
$(DEB_HOST_ARCH_CPU
).in
,$(package_dbg
),$$i); \
394 $(call platform_subst
,$(package_dbg
).
$$i.
$(DEB_HOST_ARCH_OS
).in
,$(package_dbg
),$$i); \
395 $(call platform_subst
,$(package_dbg
).
$$i.
$(DEB_HOST_ARCH_OS
)-$(DEB_HOST_ARCH_CPU
).in
,$(package_dbg
),$$i); \
396 [ -s debian
/$(package_dbg
).
$$i ] ||
rm -f debian
/$(package_dbg
).
$$i; \
399 find debian
/tmp-
$(package
)/usr
/lib
/grub
-name modinfo.sh
-print0 | \
401 find debian
/tmp-
$(package
)/usr
/lib
/grub
-name gdb_grub
-print0 | \
403 find debian
/tmp-
$(package
)/usr
/lib
/grub
-name gmodule.pl
-print0 | \
406 mkdir
-p debian
/$(package_bin
)/usr
/share
/lintian
/overrides
407 echo
"$(package_bin): unstripped-binary-or-object [*.mod]" \
408 >> debian
/$(package_bin
)/usr
/share
/lintian
/overrides
/$(package_bin
)
409 cd debian
/tmp-
$(package
) && find usr
/lib
/grub
-name kernel.img \
410 | sed
-e
"s%.*%$(package_bin): statically-linked-binary [&]%g" \
411 >> $(CURDIR
)/debian
/$(package_bin
)/usr
/share
/lintian
/overrides
/$(package_bin
)
412 cd debian
/tmp-
$(package
) && find usr
/lib
/grub
-name kernel.img \
413 | sed
-e
"s%.*%$(package_bin): unstripped-binary-or-object [&]%g" \
414 >> $(CURDIR
)/debian
/$(package_bin
)/usr
/share
/lintian
/overrides
/$(package_bin
)
415 if
([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \
416 ([ "$@" != "install/grub-emu" ] && [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" = "amd64:32" ]) || \
417 [ "$@" = "install/grub-xen" ]; then \
418 echo
"$(package_bin): binary-from-other-architecture [*.mod]" \
419 >> debian
/$(package_bin
)/usr
/share
/lintian
/overrides
/$(package_bin
) ; \
420 cd debian
/tmp-
$(package
) && find usr
/lib
/grub
-name kernel.img \
421 | sed
-e
"s%.*%$(package_bin): binary-from-other-architecture [&]%g" \
422 >> $(CURDIR
)/debian
/$(package_bin
)/usr
/share
/lintian
/overrides
/$(package_bin
) ; \
424 if
([ "$@" = "install/grub-pc" ] || \
425 [ "$@" = "install/grub-ieee1275" ] || \
426 [ "$@" = "install/grub-coreboot" ] || \
427 [ "$@" = "install/grub-xen" ] || \
428 [ "$@" = "install/grub-emu" ]) && \
429 [ "$(DEB_HOST_ARCH_OS)" = "linux" ] && \
430 [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" != "amd64:64" ] ; then \
431 echo
"$(package_bin): binary-from-other-architecture [*efiemu64.o]" \
432 >> debian
/$(package_bin
)/usr
/share
/lintian
/overrides
/$(package_bin
) ; \
436 (echo
"# These aren't Windows executables, and these features wouldn't be very useful." \
437 echo
"$(package_bin): portable-executable-missing-security-features [*.efi ASLR DEP/NX") \
438 >> debian
/$(package_bin
)/usr
/share
/lintian
/overrides
/$(package_bin
) ;; \
440 if
[ "$@" = "install/grub-emu" ]; then \
441 (echo
"# This seems to be due to a readelf bug: https://bugs.debian.org/929585"; \
442 echo
"$(package_bin): binary-or-shlib-defines-rpath [usr/lib/grub/*-emu/macho.mod] 0x0") \
443 >> debian
/$(package_bin
)/usr
/share
/lintian
/overrides
/$(package_bin
); \
446 mkdir
-p debian
/$(package_dbg
)/usr
/share
/lintian
/overrides
447 echo
"$(package_dbg): unstripped-binary-or-object [*.module]" \
448 >> debian
/$(package_dbg
)/usr
/share
/lintian
/overrides
/$(package_dbg
)
449 echo
"$(package_dbg): statically-linked-binary [*.image]" \
450 >> debian
/$(package_dbg
)/usr
/share
/lintian
/overrides
/$(package_dbg
)
451 cd debian
/tmp-
$(package
) && find usr
/lib
/grub
-name kernel.exec \
452 | sed
-e
"s%.*%$(package_dbg): statically-linked-binary [&]%g" \
453 >> $(CURDIR
)/debian
/$(package_dbg
)/usr
/share
/lintian
/overrides
/$(package_dbg
)
454 if
([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \
455 ([ "$@" != "install/grub-emu" ] && [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" = "amd64:32" ]) || \
456 [ "$@" = "install/grub-xen" ] ; then \
457 echo
"$(package_dbg): binary-from-other-architecture [*.module]" \
458 >> debian
/$(package_dbg
)/usr
/share
/lintian
/overrides
/$(package_dbg
) ; \
459 cd debian
/tmp-
$(package
) && find usr
/lib
/grub
-name kernel.exec \
460 | sed
-e
"s%.*%$(package_dbg): binary-from-other-architecture [&]%g" \
461 >> $(CURDIR
)/debian
/$(package_dbg
)/usr
/share
/lintian
/overrides
/$(package_dbg
) ; \
464 # Avoid failures later if we're building from a tree with no .po
466 mkdir
-p debian
/tmp-
$(package
)/usr
/share
/locale
469 if
[ -e debian
/grub-common.
$(1) ]; then \
470 sed
's/@COMMON_PLATFORM@/$(COMMON_PLATFORM)/g' \
471 debian
/grub-common.
$(1) >> debian
/grub-common.
$(2).new
; \
475 set
-e
; for i in
$(AUTOGEN_DEB_FILES
) ; do \
476 > debian
/grub-common.
$$i.new
; \
477 $(call common_subst
,$$i.in
,$$i); \
478 $(call common_subst
,$$i.
$(DEB_HOST_ARCH_CPU
).in
,$$i); \
479 $(call common_subst
,$$i.
$(DEB_HOST_ARCH_OS
).in
,$$i); \
480 if
[ -s debian
/grub-common.
$$i.new
] ; then \
481 mv debian
/grub-common.
$$i.new debian
/grub-common.
$$i; \
483 rm -f debian
/grub-common.
$$i.new
; \
486 ifeq (yes
,$(shell dpkg-vendor
--derives-from Ubuntu
&& echo yes
))
487 install -D
-m
0755 debian
/grub-common.pm-sleep \
488 $(CURDIR
)/debian
/$(package
)/etc
/pm
/sleep.d
/10_grub-common
491 NON_PLATFORM_PACKAGES
= $(filter grub2 grub-linuxbios grub-efi grub-rescue-pc grub-firmware-qemu grub-xen-host
,$(BUILD_PACKAGES
))
492 COMMON_PLATFORM_PACKAGES
= $(filter grub-common grub2-common grub-theme-starfield grub-mount-udeb
,$(BUILD_PACKAGES
))
493 PLATFORM_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
))
496 ifneq (,$(NON_PLATFORM_PACKAGES
))
497 dh_install
$(patsubst %,-p
%,$(NON_PLATFORM_PACKAGES
))
499 dh_install
$(patsubst %,-p
%,$(COMMON_PLATFORM_PACKAGES
)) --sourcedir
=debian
/tmp-grub-
$(COMMON_PLATFORM
)
500 rm -f debian
/grub2-common
/usr
/share
/info/dir*
501 rm -f debian
/grub-theme-starfield
/usr
/share
/grub
/themes
/starfield
/COPYING.CC-BY-SA-3.0
502 ifneq (,$(PLATFORM_PACKAGES
))
503 set
-e
; for package in
$(PLATFORM_PACKAGES
); do \
504 dh_install
-p
$$package --sourcedir
=debian
/tmp-
$$package; \
505 dh_install
-p
$$package-bin
--sourcedir
=debian
/tmp-
$$package; \
506 dh_install
-p
$$package-dbg
--sourcedir
=debian
/tmp-
$$package; \
509 ifneq (,$(filter grub-emu
,$(BUILD_PACKAGES
)))
510 dh_install
-pgrub-emu
--sourcedir
=debian
/tmp-grub-emu
511 dh_install
-pgrub-emu-dbg
--sourcedir
=debian
/tmp-grub-emu
513 ifneq (,$(filter grub2-common
,$(BUILD_PACKAGES
)))
515 -e
"s/@DEFAULT_CMDLINE@/$(DEFAULT_CMDLINE)/g" \
516 -e
"s/@DEFAULT_TIMEOUT@/$(DEFAULT_TIMEOUT)/g" \
517 debian
/grub2-common
/usr
/share
/grub
/default
/grub
518 ifneq (,$(DEFAULT_HIDDEN_TIMEOUT
))
519 perl
-pi
-e
's/^GRUB_TIMEOUT=.*/GRUB_HIDDEN_TIMEOUT=0\nGRUB_HIDDEN_TIMEOUT_QUIET=true\n$$&/' \
520 debian
/grub2-common
/usr
/share
/grub
/default
/grub
523 ifeq (yes
,$(shell dpkg-vendor
--derives-from Ubuntu
&& echo yes
))
524 ifneq (,$(filter grub-pc
,$(BUILD_PACKAGES
)))
525 patch debian
/grub-pc
/usr
/lib
/grub-legacy
/update-grub \
526 < debian
/legacy
/update-grub.ubuntu.patch
530 override_dh_installdocs
:
531 dh_installdocs
$(patsubst %,-p
%,$(filter grub-common grub-rescue-pc grub-firmware-qemu grub-xen-host
,$(BUILD_PACKAGES
))) -A AUTHORS NEWS README THANKS TODO
532 dh_installdocs
$(patsubst %,-p
%,$(filter grub-efi-
%-signed-template
,$(BUILD_PACKAGES
)))
533 dh_installdocs
--remaining-packages
--link-doc
=grub-common
535 ifeq ($(FLICKER_FREE_BOOT
),yes
)
536 override_dh_installinit
:
537 dh_installinit
-- start
99 2 3 4 5 .
539 override_dh_installinit
:
543 override_dh_bugfiles
:
544 dh_bugfiles
$(patsubst %,-N
%,$(filter grub-efi-
%-signed-template
,$(BUILD_PACKAGES
))) -A
547 dh_strip
-X
/usr
/bin
/grub-emu
-X
/usr
/lib
/grub-xen
/grub-x86_64-xen.bin
-X
/usr
/lib
/grub-xen
/grub-i386-xen_pvh.bin
-X
/usr
/lib
/grub-xen
/grub-i386-xen.bin
549 override_dh_shlibdeps
:
550 dh_shlibdeps
-X.module
552 ifeq (yes
,$(shell dpkg-vendor
--derives-from Ubuntu
&& echo yes
))
553 LEGACY_DOC_BR
:= grub-doc
(<< 0.97-29ubuntu
60), grub-legacy-doc
(<< 0.97-29ubuntu
60)
555 LEGACY_DOC_BR
:= grub-doc
(<< 0.97-32), grub-legacy-doc
(<< 0.97-59)
558 override_dh_gencontrol
:
559 dh_gencontrol
-- -Vlegacy-doc-br
="$(LEGACY_DOC_BR)" -V
"efi:Vendor=$(SB_EFI_VENDOR)" $(substvars
)
561 TARNAME
:= grub2_
$(deb_version
)_
$(DEB_HOST_ARCH
).
tar.gz
563 override_dh_builddeb
:
565 ifneq (,$(SB_PACKAGE
))
566 echo
$(deb_version
) > obj
/monolithic
/$(SB_PACKAGE
)/version
567 tar -c
-f ..
/$(TARNAME
) -a
-C obj
/monolithic
/$(SB_PACKAGE
) -v .
568 dpkg-distaddfile
$(TARNAME
) raw-uefi
-
571 override_dh_auto_clean
:
572 -rm -rf debian
/grub-extras-enabled debian
/stamps obj
573 -rm -f contrib grub-core
/contrib
578 chmod
+x debian
/{bug-script
,grub.d
/*,legacy
/*,kernel
/*}
580 for i in
$(AUTOGEN_DEB_FILES
) ; do \
581 rm -f debian
/grub-
{pc,efi-
*,ieee1275
,coreboot
,uboot
,xen
,yeeloong
,emu
}{,-bin
,-dbg
}.
$$i ; \
583 rm -f debian
/grub-common.bash-completion debian
/grub-common.maintscript
586 # make sure PO files are always up-to-date
589 .PHONY
: $(patsubst %,configure
/%,$(BUILD_PACKAGES
)) $(patsubst %,build
/%,$(BUILD_PACKAGES
)) $(patsubst %,install/%,$(BUILD_PACKAGES
))