summaryrefslogtreecommitdiffstats
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules589
1 files changed, 589 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..d974316
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,589 @@
+#!/usr/bin/make -f
+SHELL := bash
+
+deb_version := $(shell dpkg-parsechangelog | sed -ne "s/^Version: \(.*\)/\1/p")
+upstream_version := $(shell echo $(deb_version) | sed -e "s/-[^-]*$$//")
+
+package := grub2
+
+DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH 2>/dev/null)
+DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)
+DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)
+
+export DEB_BUILD_MAINT_OPTIONS = optimize=-lto
+
+HOST_CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS)
+# -O3 (default on Ubuntu ppc64el) introduces various -Werror failures, and
+# isn't worth it here.
+HOST_CFLAGS := -Wall -Wno-error=unused-result $(shell dpkg-buildflags --get CFLAGS | perl -pe 's/-O3\b/-O2/')
+HOST_LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS)
+
+export DEB_HOST_ARCH
+export HOST_CPPFLAGS
+export HOST_CFLAGS
+export HOST_LDFLAGS
+export TARGET_CPPFLAGS := -Wno-unused-but-set-variable
+export TARGET_LDFLAGS := -no-pie
+
+# Ensure that debhelper doesn't try to set these; we need to be careful
+# about HOST_* vs. TARGET_*.
+export CPPFLAGS :=
+export CFLAGS :=
+export LDFLAGS :=
+
+ifeq (,$(shell command -v qemu-system-i386))
+with_check := no
+else
+with_check := yes
+endif
+
+CC := gcc-12
+
+confflags = \
+ PACKAGE_VERSION="$(deb_version)" PACKAGE_STRING="GRUB $(deb_version)" \
+ CC=$(CC) TARGET_CC=$(CC) \
+ --libdir=\$${prefix}/lib --libexecdir=\$${prefix}/lib \
+ --enable-grub-mkfont \
+ --disable-grub-emu-usb
+substvars =
+
+AUTOGEN_DEB_FILES = config templates preinst postinst postrm dirs install links maintscript bash-completion
+
+BUILD_PACKAGES := $(strip $(shell dh_listpackages))
+# REAL_PACKAGES build an actual grub variant (and therefore have both configure
+# and build stages). EXTRA_PACKAGES do not build grub but may depend on a
+# REAL_PACKAGE (and therefore only have a build stage)
+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
+EXTRA_PACKAGES = grub-rescue-pc grub-xen-host
+
+ifneq (,$(filter i386 amd64,$(DEB_HOST_ARCH_CPU)))
+COMMON_PLATFORM := pc
+else ifneq (,$(filter powerpc ppc64 ppc64el sparc sparc64,$(DEB_HOST_ARCH_CPU)))
+COMMON_PLATFORM := ieee1275
+else ifeq (mipsel,$(DEB_HOST_ARCH_CPU))
+COMMON_PLATFORM := yeeloong
+else ifeq (ia64,$(DEB_HOST_ARCH_CPU))
+COMMON_PLATFORM := efi-ia64
+else ifeq (arm,$(DEB_HOST_ARCH_CPU))
+COMMON_PLATFORM := uboot
+else ifeq (arm64,$(DEB_HOST_ARCH_CPU))
+COMMON_PLATFORM := efi-arm64
+else
+COMMON_PLATFORM := none
+BUILD_PACKAGES += grub-none
+endif
+
+ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
+DEFAULT_CMDLINE := quiet splash
+DEFAULT_TIMEOUT := 10
+ifeq ($(DEB_HOST_ARCH_CPU),ppc64el)
+FLICKER_FREE_BOOT := no
+else
+FLICKER_FREE_BOOT := yes
+endif
+confflags += --enable-ubuntu-recovery
+else ifeq (yes,$(shell dpkg-vendor --derives-from Tanglu && echo yes))
+DEFAULT_CMDLINE := quiet splash
+DEFAULT_TIMEOUT := 10
+FLICKER_FREE_BOOT := yes
+else
+DEFAULT_CMDLINE := quiet
+DEFAULT_TIMEOUT := 5
+FLICKER_FREE_BOOT := no
+endif
+
+ifeq ($(FLICKER_FREE_BOOT),yes)
+DEFAULT_HIDDEN_TIMEOUT := 0
+DEFAULT_HIDDEN_TIMEOUT_BOOL := true
+confflags += \
+ --enable-quiet-boot \
+ --enable-quick-boot \
+ --enable-gfxpayload-dynamic \
+ --enable-vt-handoff
+substvars += \
+ -Vlsb-base-depends="lsb-base (>= 3.0-6)" \
+ -Vgfxpayload-depends="grub-gfxpayload-lists [any-i386 any-amd64]"
+else
+DEFAULT_HIDDEN_TIMEOUT :=
+DEFAULT_HIDDEN_TIMEOUT_BOOL := false
+endif
+
+# Secure Boot
+debian/stamps/build-grub-efi-ia32 install/grub-efi-ia32: export SB_PLATFORM := i386-efi
+debian/stamps/build-grub-efi-ia32 install/grub-efi-ia32: export SB_EFI_NAME := ia32
+debian/stamps/build-grub-efi-amd64 install/grub-efi-amd64: export SB_PLATFORM := x86_64-efi
+debian/stamps/build-grub-efi-amd64 install/grub-efi-amd64: export SB_EFI_NAME := x64
+debian/stamps/build-grub-efi-arm64 install/grub-efi-arm64: export SB_PLATFORM := arm64-efi
+debian/stamps/build-grub-efi-arm64 install/grub-efi-arm64: export SB_EFI_NAME := aa64
+SB_PACKAGE :=
+ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
+ifeq ($(DEB_HOST_ARCH),amd64)
+SB_PACKAGE := grub-efi-amd64
+endif
+ifeq ($(DEB_HOST_ARCH),arm64)
+SB_PACKAGE := grub-efi-arm64
+endif
+endif
+
+# Downstream distributions that want to support SB and build images, but do not
+# rebuild grub, need a programmatic way to get the vendor, as it's used by build-efi-images
+# to create the monolithic Grub image and thus is needed to create the partitions on the EFI
+# media. Add it to the control file user metadata: XB-Efi-Vendor: $vendor
+SB_EFI_VENDOR ?= $(shell dpkg-vendor --query vendor | tr '[:upper:]' '[:lower:]')
+
+%:
+ dh $@ --with=bash_completion
+
+override_dh_auto_configure: $(patsubst %,configure/%,$(BUILD_PACKAGES))
+
+override_dh_auto_build: $(patsubst %,build/%,$(BUILD_PACKAGES))
+
+override_dh_auto_install: $(patsubst %,install/%,$(BUILD_PACKAGES))
+
+$(patsubst %,configure/%,$(REAL_PACKAGES)) :: configure/% : debian/stamps/configure-%
+$(patsubst %,build/%,$(REAL_PACKAGES) $(EXTRA_PACKAGES)) :: build/% : debian/stamps/build-%
+
+debian/stamps/configure-%: package = $(subst debian/stamps/configure-,,$@)
+debian/stamps/configure-%: export DH_OPTIONS = -p$(package) -Bobj/$(package)
+
+debian/stamps/build-%: package = $(subst debian/stamps/build-,,$@)
+debian/stamps/build-%: export DH_OPTIONS = -p$(package) -Bobj/$(package)
+
+install/%: package = $(subst install/,,$@)
+install/%: package_bin = $(package)-bin
+install/%: package_dbg = $(package)-dbg
+install/grub-emu: package_bin = grub-emu
+install/grub-emu: package_dbg = grub-emu-dbg
+install/%: export DH_OPTIONS = -p$(package) -Bobj/$(patsubst grub-common,grub-$(COMMON_PLATFORM),$(package))
+
+override_dh_autoreconf:
+ mkdir -p debian/stamps
+ rm -rf debian/grub-extras-enabled
+ mkdir debian/grub-extras-enabled
+ set -e; for extra in 915resolution ntldr-img; do \
+ cp -a debian/grub-extras/$$extra debian/grub-extras-enabled/; \
+ done
+ env -u DH_OPTIONS GRUB_CONTRIB=$(CURDIR)/debian/grub-extras-enabled \
+ PYTHON=python3 \
+ dh_autoreconf -- ./autogen.sh
+
+debian/stamps/configure-grub-common: debian/stamps/configure-grub-$(COMMON_PLATFORM)
+ touch $@
+
+debian/stamps/build-grub-common: debian/stamps/build-grub-$(COMMON_PLATFORM)
+ touch $@
+
+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:
+ mkdir -p debian/stamps obj/$(package)
+ dh_auto_configure -- $(confflags) --with-platform=$(subst grub-,,$(package))
+ touch $@
+
+# This name scheme leaves room for things like amd32 someday
+debian/stamps/configure-grub-efi-ia32:
+ mkdir -p debian/stamps obj/$(package)
+ dh_auto_configure -- $(confflags) --with-platform=efi --target=i386-pe --program-prefix=""
+ touch $@
+debian/stamps/configure-grub-efi-amd64:
+ mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@)
+ dh_auto_configure -- $(confflags) --with-platform=efi --target=amd64-pe --program-prefix=""
+ touch $@
+debian/stamps/configure-grub-efi-ia64 debian/stamps/configure-grub-efi-arm debian/stamps/configure-grub-efi-arm64:
+ mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@)
+ dh_auto_configure -- $(confflags) --with-platform=efi
+ touch $@
+
+debian/stamps/configure-grub-xen-i386 debian/stamps/configure-grub-xen-amd64:
+ mkdir -p debian/stamps obj/$(package)
+ dh_auto_configure -- $(confflags) --with-platform=xen --target=$(subst debian/stamps/configure-grub-xen-,,$@) --program-prefix=""
+ touch $@
+debian/stamps/configure-grub-xen-pvh-i386:
+ mkdir -p debian/stamps obj/$(package)
+ dh_auto_configure -- $(confflags) --with-platform=xen_pvh --target=i386 --program-prefix=""
+ touch $@
+debian/stamps/configure-grub-xen: debian/stamps/configure-grub-xen-i386 debian/stamps/configure-grub-xen-amd64 debian/stamps/configure-grub-xen-pvh-i386
+ touch $@
+
+debian/stamps/configure-grub-firmware-qemu:
+ mkdir -p debian/stamps $(subst debian/stamps/configure-,obj/,$@)
+ dh_auto_configure -- $(confflags) --with-platform=qemu
+ touch $@
+
+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-%
+ dh_auto_build
+ touch $@
+
+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)
+ dh_auto_build
+ grub_dir=`mktemp -d` ; \
+ sed -e "s/@DEB_VERSION@/$(deb_version)/g" \
+ -e "s/@UPSTREAM_VERSION@/$(upstream_version)/g" \
+ <debian/sbat.$(SB_EFI_VENDOR).csv.in \
+ >$${grub_dir}/sbat.$(SB_EFI_VENDOR).csv; \
+ debian/build-efi-images \
+ obj/grub-$(COMMON_PLATFORM)/grub-mkimage \
+ obj/$(package)/grub-core \
+ obj/monolithic/$(package) \
+ $(DEB_HOST_ARCH) $(SB_PLATFORM) $(SB_EFI_NAME) \
+ $${grub_dir}/sbat.$(SB_EFI_VENDOR).csv $(SB_EFI_VENDOR)
+ touch $@
+
+debian/stamps/build-grub-xen-host-i386: PVBOOT_ARCH := i386
+debian/stamps/build-grub-xen-host-i386: debian/stamps/build-grub-xen-i386
+debian/stamps/build-grub-xen-host-amd64: PVBOOT_ARCH := x86_64
+debian/stamps/build-grub-xen-host-amd64: debian/stamps/build-grub-xen-amd64
+debian/stamps/build-grub-xen-host-i386 debian/stamps/build-grub-xen-host-amd64:
+ target=$(subst debian/stamps/build-grub-xen-host-,,$@) ; \
+ obj_dir=$(CURDIR)/obj/grub-xen-$${target} ; \
+ grub_dir=`mktemp -d` ; \
+ grub_memdisk=`mktemp` ; \
+ trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \
+ mkdir -p $${grub_dir}/boot/grub ; \
+ mkdir -p $(CURDIR)/obj/$(package) ; \
+ sed -e "s/@@PVBOOT_ARCH@@/$(PVBOOT_ARCH)/g" \
+ <debian/grub-xen-host_grub.cfg \
+ >$${grub_dir}/grub.cfg ; \
+ tar -cf - -C $${grub_dir} grub.cfg > $${grub_memdisk} ; \
+ $${obj_dir}/grub-mkimage \
+ -O $(PVBOOT_ARCH)-xen \
+ -c $(CURDIR)/debian/grub-xen-host_grub-bootstrap.cfg \
+ -d $${obj_dir}/grub-core \
+ $${obj_dir}/grub-core/*.mod \
+ -m $${grub_memdisk} \
+ -o $(CURDIR)/obj/$(package)/grub-$(PVBOOT_ARCH)-xen.bin
+ touch $@
+
+debian/stamps/build-grub-xen-host-pvh-i386: debian/stamps/build-grub-xen-pvh-i386
+ target=$(subst debian/stamps/build-grub-xen-host-,,$@) ; \
+ obj_dir=$(CURDIR)/obj/grub-xen-$${target} ; \
+ grub_dir=`mktemp -d` ; \
+ grub_memdisk=`mktemp` ; \
+ trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \
+ mkdir -p $${grub_dir}/boot/grub ; \
+ mkdir -p $(CURDIR)/obj/$(package) ; \
+ cp -a debian/grub-xen-host_grub-pvh.cfg $${grub_dir}/grub.cfg ; \
+ tar -cf - -C $${grub_dir} grub.cfg > $${grub_memdisk} ; \
+ $${obj_dir}/grub-mkimage \
+ -O i386-xen_pvh \
+ -c $(CURDIR)/debian/grub-xen-host_grub-bootstrap.cfg \
+ -d $${obj_dir}/grub-core \
+ $${obj_dir}/grub-core/*.mod \
+ -m $${grub_memdisk} \
+ -o $(CURDIR)/obj/$(package)/grub-i386-xen_pvh.bin
+ touch $@
+
+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
+ touch $@
+
+debian/stamps/build-grub-pc: debian/stamps/configure-grub-pc
+ dh_auto_build
+ifeq ($(with_check), yes)
+ LC_MESSAGES=C.UTF-8 LC_CTYPE=C.UTF-8 PATH="$$PATH:/sbin:/usr/sbin" VERBOSE=1 dh_auto_test --max-parallel=1
+endif
+ touch $@
+
+debian/stamps/build-grub-ieee1275: debian/stamps/configure-grub-ieee1275
+ dh_auto_build
+ifneq (,$(filter powerpc ppc64 ppc64el,$(DEB_HOST_ARCH_CPU)))
+ $(CC) $(HOST_CFLAGS) debian/prep-bootdev.c -o debian/prep-bootdev -lparted
+endif
+ touch $@
+
+debian/stamps/build-grub-xen: debian/stamps/build-grub-xen-i386 debian/stamps/build-grub-xen-amd64 debian/stamps/build-grub-xen-pvh-i386
+ touch $@
+
+debian/stamps/build-grub-firmware-qemu: debian/stamps/configure-grub-firmware-qemu
+ dh_auto_build
+ grub_dir=`mktemp -d` ; \
+ grub_memdisk=`mktemp` ; \
+ trap "rm -rf $${grub_dir} $${grub_memdisk}" EXIT HUP INT QUIT TERM ; \
+ mkdir -p $${grub_dir}/boot/grub ; \
+ cp debian/grub-firmware-qemu_grub.cfg $${grub_dir}/boot/grub/grub.cfg ; \
+ tar -cf - -C $${grub_dir} boot > $${grub_memdisk} ; \
+ obj/$(package)/grub-mkimage \
+ -O i386-qemu \
+ -d $(CURDIR)/obj/$(package)/grub-core \
+ $(CURDIR)/obj/$(package)/grub-core/*.mod \
+ -m $${grub_memdisk} \
+ -o $(CURDIR)/obj/$(package)/grub.bin
+ touch $@
+
+debian/stamps/build-grub-rescue-pc: debian/stamps/build-grub-pc
+ mkdir -p obj/grub-rescue-pc/rescue-disk/boot/grub
+ cp docs/grub.cfg obj/grub-rescue-pc/rescue-disk/boot/grub/
+ rm -rf obj/grub-rescue-pc/grub-core
+ cp -a obj/grub-pc/grub-core obj/grub-rescue-pc/grub-core
+ cp -a obj/grub-pc/unicode.pf2 obj/grub-rescue-pc/
+ pkgdatadir=$(CURDIR)/obj/grub-rescue-pc \
+ obj/grub-pc/grub-mkrescue \
+ --directory=$(CURDIR)/obj/grub-rescue-pc/grub-core \
+ --locale-directory=$(CURDIR)/obj/grub-rescue-pc/grub-core/po \
+ --output=$(CURDIR)/obj/grub-rescue-pc/grub-rescue-cdrom.iso \
+ $(CURDIR)/obj/grub-rescue-pc/rescue-disk
+ # save space for floppy image
+ rm -rf obj/grub-rescue-pc/grub-core/po obj/grub-rescue-pc/unicode.pf2
+ pkgdatadir=$(CURDIR)/obj/grub-rescue-pc \
+ obj/grub-pc/grub-mkrescue \
+ --directory=$(CURDIR)/obj/grub-rescue-pc/grub-core \
+ --locale-directory=$(CURDIR)/obj/grub-rescue-pc/grub-core/po \
+ --output=$(CURDIR)/obj/grub-rescue-pc/grub-rescue-floppy.img \
+ --compress=xz \
+ -no-pad \
+ $(CURDIR)/obj/grub-rescue-pc/rescue-disk
+ touch $@
+
+platform_subst = \
+ if [ -e debian/$(1) ]; then \
+ debian/platform-subst \
+ PACKAGE="$(2)" \
+ DEFAULT_CMDLINE="$(DEFAULT_CMDLINE)" \
+ DEFAULT_TIMEOUT="$(DEFAULT_TIMEOUT)" \
+ DEFAULT_HIDDEN_TIMEOUT_BOOL="$(DEFAULT_HIDDEN_TIMEOUT_BOOL)" \
+ debian/$(1) >> debian/$(2).$(3); \
+ fi
+
+install/grub-none:
+ dh_auto_install --destdir=debian/tmp-$(package)
+
+ # Avoid failures later if we're building from a tree with no .po
+ # files.
+ mkdir -p debian/tmp-$(package)/usr/share/locale
+
+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:
+ set -e ; \
+ if [ "$@" = "install/grub-xen" ] ; then \
+ dh_auto_install -Bobj/grub-xen-i386 --destdir=debian/tmp-$(package); \
+ dh_auto_install -Bobj/grub-xen-amd64 --destdir=debian/tmp-$(package); \
+ dh_auto_install -Bobj/grub-xen-pvh-i386 --destdir=debian/tmp-$(package); \
+ else \
+ dh_auto_install --destdir=debian/tmp-$(package); \
+ fi
+
+ set -e ; \
+ if [ -d "obj/monolithic/$(package)" ] ; then \
+ install -m 0755 -d debian/$(package_bin)/usr/lib/grub/$(SB_PLATFORM)/monolithic ; \
+ install -m 0644 -t debian/$(package_bin)/usr/lib/grub/$(SB_PLATFORM)/monolithic obj/monolithic/$(package)/*.efi ; \
+ debian/signing-template.generate "$(package)" ; \
+ fi
+
+ set -e ; \
+ for i in $(AUTOGEN_DEB_FILES) ; do \
+ > debian/$(package).$$i; \
+ if [ "$@" != "install/grub-emu" ] ; then \
+ $(call platform_subst,$$i.in,$(package),$$i); \
+ fi ; \
+ $(call platform_subst,$(package).$$i.in,$(package),$$i); \
+ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \
+ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS).in,$(package),$$i); \
+ $(call platform_subst,$(package).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package),$$i); \
+ [ -s debian/$(package).$$i ] || rm -f debian/$(package).$$i; \
+ if [ "$@" != "install/grub-emu" ] ; then \
+ > debian/$(package_bin).$$i; \
+ $(call platform_subst,$$i-bin.in,$(package_bin),$$i); \
+ $(call platform_subst,$(package_bin).$$i.in,$(package_bin),$$i); \
+ $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_bin),$$i); \
+ $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_OS).in,$(package_bin),$$i); \
+ $(call platform_subst,$(package_bin).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_bin),$$i); \
+ [ -s debian/$(package_bin).$$i ] || rm -f debian/$(package_bin).$$i; \
+ fi ; \
+ > debian/$(package_dbg).$$i; \
+ if [ "$@" != "install/grub-emu" ] ; then \
+ $(call platform_subst,$$i-dbg.in,$(package_dbg),$$i); \
+ fi ; \
+ $(call platform_subst,$(package_dbg).$$i.in,$(package_dbg),$$i); \
+ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \
+ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS).in,$(package_dbg),$$i); \
+ $(call platform_subst,$(package_dbg).$$i.$(DEB_HOST_ARCH_OS)-$(DEB_HOST_ARCH_CPU).in,$(package_dbg),$$i); \
+ [ -s debian/$(package_dbg).$$i ] || rm -f debian/$(package_dbg).$$i; \
+ done
+
+ find debian/tmp-$(package)/usr/lib/grub -name modinfo.sh -print0 | \
+ xargs -0r chmod +x
+ find debian/tmp-$(package)/usr/lib/grub -name gdb_grub -print0 | \
+ xargs -0r chmod -x
+ find debian/tmp-$(package)/usr/lib/grub -name gmodule.pl -print0 | \
+ xargs -0r chmod -x
+
+ mkdir -p debian/$(package_bin)/usr/share/lintian/overrides
+ echo "$(package_bin): unstripped-binary-or-object *.mod" \
+ >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
+ cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \
+ | sed -e "s%.*%$(package_bin): statically-linked-binary &%g" \
+ >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
+ cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \
+ | sed -e "s%.*%$(package_bin): unstripped-binary-or-object &%g" \
+ >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin)
+ if ([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \
+ ([ "$@" != "install/grub-emu" ] && [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" = "amd64:32" ]) || \
+ [ "$@" = "install/grub-xen" ]; then \
+ echo "$(package_bin): binary-from-other-architecture *.mod" \
+ >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \
+ cd debian/tmp-$(package) && find usr/lib/grub -name kernel.img \
+ | sed -e "s%.*%$(package_bin): binary-from-other-architecture &%g" \
+ >> $(CURDIR)/debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \
+ fi
+ if ([ "$@" = "install/grub-pc" ] || \
+ [ "$@" = "install/grub-ieee1275" ] || \
+ [ "$@" = "install/grub-coreboot" ] || \
+ [ "$@" = "install/grub-xen" ] || \
+ [ "$@" = "install/grub-emu" ]) && \
+ [ "$(DEB_HOST_ARCH_OS)" = "linux" ] && \
+ [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" != "amd64:64" ] ; then \
+ echo "$(package_bin): binary-from-other-architecture *efiemu64.o" \
+ >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ; \
+ fi
+ case $@ in \
+ install/grub-efi*) \
+ (echo "# These aren't Windows executables, and these features wouldn't be very useful." \
+ echo "$(package_bin): portable-executable-missing-security-features *.efi ASLR DEP/NX") \
+ >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin) ;; \
+ esac
+ if [ "$@" = "install/grub-emu" ]; then \
+ (echo "# This seems to be due to a readelf bug: https://bugs.debian.org/929585"; \
+ echo "$(package_bin): binary-or-shlib-defines-rpath usr/lib/grub/*-emu/macho.mod 0x0") \
+ >> debian/$(package_bin)/usr/share/lintian/overrides/$(package_bin); \
+ fi
+
+ mkdir -p debian/$(package_dbg)/usr/share/lintian/overrides
+ echo "$(package_dbg): unstripped-binary-or-object *.module" \
+ >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
+ echo "$(package_dbg): statically-linked-binary *.image" \
+ >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
+ cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \
+ | sed -e "s%.*%$(package_dbg): statically-linked-binary &%g" \
+ >> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg)
+ if ([ "$@" = "install/grub-efi-amd64" ] && [ "$(DEB_HOST_ARCH_CPU)" = "i386" ]) || \
+ ([ "$@" != "install/grub-emu" ] && [ "$(DEB_HOST_ARCH_CPU):$(DEB_HOST_ARCH_BITS)" = "amd64:32" ]) || \
+ [ "$@" = "install/grub-xen" ] ; then \
+ echo "$(package_dbg): binary-from-other-architecture *.module" \
+ >> debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \
+ cd debian/tmp-$(package) && find usr/lib/grub -name kernel.exec \
+ | sed -e "s%.*%$(package_dbg): binary-from-other-architecture &%g" \
+ >> $(CURDIR)/debian/$(package_dbg)/usr/share/lintian/overrides/$(package_dbg) ; \
+ fi
+
+ # Avoid failures later if we're building from a tree with no .po
+ # files.
+ mkdir -p debian/tmp-$(package)/usr/share/locale
+
+common_subst = \
+ if [ -e debian/grub-common.$(1) ]; then \
+ sed 's/@COMMON_PLATFORM@/$(COMMON_PLATFORM)/g' \
+ debian/grub-common.$(1) >> debian/grub-common.$(2).new; \
+ fi
+
+install/grub-common:
+ set -e ; for i in $(AUTOGEN_DEB_FILES) ; do \
+ > debian/grub-common.$$i.new; \
+ $(call common_subst,$$i.in,$$i); \
+ $(call common_subst,$$i.$(DEB_HOST_ARCH_CPU).in,$$i); \
+ $(call common_subst,$$i.$(DEB_HOST_ARCH_OS).in,$$i); \
+ if [ -s debian/grub-common.$$i.new ] ; then \
+ mv debian/grub-common.$$i.new debian/grub-common.$$i; \
+ else \
+ rm -f debian/grub-common.$$i.new; \
+ fi; \
+ done
+ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
+ install -D -m 0755 debian/grub-common.pm-sleep \
+ $(CURDIR)/debian/$(package)/etc/pm/sleep.d/10_grub-common
+endif
+
+NON_PLATFORM_PACKAGES = $(filter grub2 grub-linuxbios grub-efi grub-rescue-pc grub-firmware-qemu grub-xen-host,$(BUILD_PACKAGES))
+COMMON_PLATFORM_PACKAGES = $(filter grub-common grub2-common grub-theme-starfield grub-mount-udeb,$(BUILD_PACKAGES))
+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))
+
+override_dh_install:
+ifneq (,$(NON_PLATFORM_PACKAGES))
+ dh_install $(patsubst %,-p%,$(NON_PLATFORM_PACKAGES))
+endif
+ dh_install $(patsubst %,-p%,$(COMMON_PLATFORM_PACKAGES)) --sourcedir=debian/tmp-grub-$(COMMON_PLATFORM)
+ rm -f debian/grub2-common/usr/share/info/dir*
+ rm -f debian/grub-theme-starfield/usr/share/grub/themes/starfield/COPYING.CC-BY-SA-3.0
+ifneq (,$(PLATFORM_PACKAGES))
+ set -e; for package in $(PLATFORM_PACKAGES); do \
+ dh_install -p$$package --sourcedir=debian/tmp-$$package; \
+ dh_install -p$$package-bin --sourcedir=debian/tmp-$$package; \
+ dh_install -p$$package-dbg --sourcedir=debian/tmp-$$package; \
+ done
+endif
+ifneq (,$(filter grub-emu,$(BUILD_PACKAGES)))
+ dh_install -pgrub-emu --sourcedir=debian/tmp-grub-emu
+ dh_install -pgrub-emu-dbg --sourcedir=debian/tmp-grub-emu
+endif
+ifneq (,$(filter grub2-common,$(BUILD_PACKAGES)))
+ sed -i \
+ -e "s/@DEFAULT_CMDLINE@/$(DEFAULT_CMDLINE)/g" \
+ -e "s/@DEFAULT_TIMEOUT@/$(DEFAULT_TIMEOUT)/g" \
+ debian/grub2-common/usr/share/grub/default/grub
+ifneq (,$(DEFAULT_HIDDEN_TIMEOUT))
+ perl -pi -e 's/^GRUB_TIMEOUT=.*/GRUB_HIDDEN_TIMEOUT=0\nGRUB_HIDDEN_TIMEOUT_QUIET=true\n$$&/' \
+ debian/grub2-common/usr/share/grub/default/grub
+endif
+endif
+ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
+ifneq (,$(filter grub-pc,$(BUILD_PACKAGES)))
+ patch debian/grub-pc/usr/lib/grub-legacy/update-grub \
+ < debian/legacy/update-grub.ubuntu.patch
+endif
+endif
+
+override_dh_installdocs:
+ dh_installdocs $(patsubst %,-p%,$(filter grub-common grub-rescue-pc grub-firmware-qemu grub-xen-host,$(BUILD_PACKAGES))) -A AUTHORS NEWS README THANKS TODO
+ dh_installdocs $(patsubst %,-p%,$(filter grub-efi-%-signed-template,$(BUILD_PACKAGES)))
+ dh_installdocs --remaining-packages --link-doc=grub-common
+
+ifeq ($(FLICKER_FREE_BOOT),yes)
+override_dh_installinit:
+ dh_installinit -- start 99 2 3 4 5 .
+else
+override_dh_installinit:
+ :
+endif
+
+override_dh_bugfiles:
+ dh_bugfiles $(patsubst %,-N%,$(filter grub-efi-%-signed-template,$(BUILD_PACKAGES))) -A
+
+override_dh_strip:
+ 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
+
+override_dh_shlibdeps:
+ dh_shlibdeps -X.module
+
+ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
+LEGACY_DOC_BR := grub-doc (<< 0.97-29ubuntu60), grub-legacy-doc (<< 0.97-29ubuntu60)
+else
+LEGACY_DOC_BR := grub-doc (<< 0.97-32), grub-legacy-doc (<< 0.97-59)
+endif
+
+override_dh_gencontrol:
+ dh_gencontrol -- -Vlegacy-doc-br="$(LEGACY_DOC_BR)" -V"efi:Vendor=$(SB_EFI_VENDOR)" $(substvars)
+
+TARNAME := grub2_$(deb_version)_$(DEB_HOST_ARCH).tar.gz
+
+override_dh_builddeb:
+ dh_builddeb
+ifneq (,$(SB_PACKAGE))
+ echo $(deb_version) > obj/monolithic/$(SB_PACKAGE)/version
+ tar -c -f ../$(TARNAME) -a -C obj/monolithic/$(SB_PACKAGE) -v .
+ dpkg-distaddfile $(TARNAME) raw-uefi -
+endif
+
+override_dh_auto_clean:
+ -rm -rf debian/grub-extras-enabled debian/stamps obj
+ -rm -f contrib grub-core/contrib
+
+override_dh_clean:
+ dh_clean
+
+ chmod +x debian/{bug-script,grub.d/*,legacy/*,kernel/*}
+
+ for i in $(AUTOGEN_DEB_FILES) ; do \
+ rm -f debian/grub-{pc,efi-*,ieee1275,coreboot,uboot,xen,yeeloong,emu}{,-bin,-dbg}.$$i ; \
+ done
+ rm -f debian/grub-common.bash-completion debian/grub-common.maintscript
+ rm -rf debian/tmp-*/
+
+ # make sure PO files are always up-to-date
+ debconf-updatepo
+
+.PHONY: $(patsubst %,configure/%,$(BUILD_PACKAGES)) $(patsubst %,build/%,$(BUILD_PACKAGES)) $(patsubst %,install/%,$(BUILD_PACKAGES))