kumquat-buildroot/package/mender-grubenv/mender-grubenv.mk

87 lines
2.8 KiB
Makefile
Raw Normal View History

################################################################################
#
# mender-grubenv
#
################################################################################
MENDER_GRUBENV_VERSION = 1a7db967495bbe8be53b7a69dcb42822f39d9a74
MENDER_GRUBENV_SITE = $(call github,mendersoftware,grub-mender-grubenv,$(MENDER_GRUBENV_VERSION))
MENDER_GRUBENV_LICENSE = Apache-2.0
MENDER_GRUBENV_LICENSE_FILES = LICENSE
# Grub2 must be built first so this package can overwrite the config files
# provided by grub.
MENDER_GRUBENV_DEPENDENCIES = grub2
MENDER_GRUBENV_INSTALL_IMAGES = YES
MENDER_GRUBENV_MAKE_ENV = \
$(TARGET_CONFIGURE_OPTS) \
$(TARGET_MAKE_ENV)
MENDER_GRUBENV_DEFINES = \
$(or $(call qstrip,$(BR2_PACKAGE_MENDER_GRUBENV_DEFINES)),\
$(@D)/mender_grubenv_defines.example)
# These grub modules must be built in for the grub scripts to work properly.
# Without them, the system will not boot.
MENDER_GRUBENV_MANDATORY_MODULES = loadenv hashsum echo halt gcry_sha256 test regexp
package/mender-grubenv: fix grub module checks Commit b68810e70cbd (boot/grub2: add support to build multiple Grub2 configurations in the same build) broke mender-grubenv by splititng up BR2_TARGET_GRUB2_BUILTIN_MODULES into two separate symbols, one for legacy boot and one for EFI boot. This change causes a systematic build failure now, as the legacy variable BR2_TARGET_GRUB2_BUILTIN_MODULES is now always empty (during build). We fix that by supplicating the missing modules to check: one for EFI and one for legacy boot. The EFI check is tricky: Indeed, there can be more than one EFI platform enabled simultaneously; indeed, on x86_64, we can have both the 32-bit and 64-bit EFI platforms enabled. So the check is inverted, and we check that no platform is not enabled (yeah, double negation). For consistency, we do the same for the legacy boot, even though in that case, there can only ever be only one enabled at once at most. Furthermore, mender-grubenv does not support multiple installations of grub concurrently; it can only be installed for either legacy or EFI, not both at the same time: /etc/mender-grubenv.cfg, its configuration file, can only contain settings for one or the other, not both. So we add a new check to Config.in to support only one grub installation type at a time. Signed-off-by: Adam Duskett <aduskett@gmail.com> [yann.morin.1998@free.fr: - drop superfluous check on empty modules lists - move EFI and legacy commands under same condition as checks - variables were renamed - misc eye-candy ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Köry Maincent <kory.maincent@bootlin.com>
2021-12-03 19:51:06 +01:00
ifeq ($(BR2_TARGET_GRUB2_HAS_LEGACY_BOOT),y)
MENDER_GRUBENV_MODULES_MISSING_PC = \
$(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_PC)),\
$(MENDER_GRUBENV_MANDATORY_MODULES))
MENDER_GRUBENV_MAKE_ENV += ENV_DIR=/boot/grub
package/mender-grubenv: fix grub module checks Commit b68810e70cbd (boot/grub2: add support to build multiple Grub2 configurations in the same build) broke mender-grubenv by splititng up BR2_TARGET_GRUB2_BUILTIN_MODULES into two separate symbols, one for legacy boot and one for EFI boot. This change causes a systematic build failure now, as the legacy variable BR2_TARGET_GRUB2_BUILTIN_MODULES is now always empty (during build). We fix that by supplicating the missing modules to check: one for EFI and one for legacy boot. The EFI check is tricky: Indeed, there can be more than one EFI platform enabled simultaneously; indeed, on x86_64, we can have both the 32-bit and 64-bit EFI platforms enabled. So the check is inverted, and we check that no platform is not enabled (yeah, double negation). For consistency, we do the same for the legacy boot, even though in that case, there can only ever be only one enabled at once at most. Furthermore, mender-grubenv does not support multiple installations of grub concurrently; it can only be installed for either legacy or EFI, not both at the same time: /etc/mender-grubenv.cfg, its configuration file, can only contain settings for one or the other, not both. So we add a new check to Config.in to support only one grub installation type at a time. Signed-off-by: Adam Duskett <aduskett@gmail.com> [yann.morin.1998@free.fr: - drop superfluous check on empty modules lists - move EFI and legacy commands under same condition as checks - variables were renamed - misc eye-candy ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Köry Maincent <kory.maincent@bootlin.com>
2021-12-03 19:51:06 +01:00
define MENDER_GRUBENV_INSTALL_I386_CFG
mkdir -p $(BINARIES_DIR)/boot-part/grub
cp -dpfr $(TARGET_DIR)/boot/grub/grub.cfg \
$(TARGET_DIR)/boot/grub/mender_grubenv* \
package/mender-grubenv: fix grub module checks Commit b68810e70cbd (boot/grub2: add support to build multiple Grub2 configurations in the same build) broke mender-grubenv by splititng up BR2_TARGET_GRUB2_BUILTIN_MODULES into two separate symbols, one for legacy boot and one for EFI boot. This change causes a systematic build failure now, as the legacy variable BR2_TARGET_GRUB2_BUILTIN_MODULES is now always empty (during build). We fix that by supplicating the missing modules to check: one for EFI and one for legacy boot. The EFI check is tricky: Indeed, there can be more than one EFI platform enabled simultaneously; indeed, on x86_64, we can have both the 32-bit and 64-bit EFI platforms enabled. So the check is inverted, and we check that no platform is not enabled (yeah, double negation). For consistency, we do the same for the legacy boot, even though in that case, there can only ever be only one enabled at once at most. Furthermore, mender-grubenv does not support multiple installations of grub concurrently; it can only be installed for either legacy or EFI, not both at the same time: /etc/mender-grubenv.cfg, its configuration file, can only contain settings for one or the other, not both. So we add a new check to Config.in to support only one grub installation type at a time. Signed-off-by: Adam Duskett <aduskett@gmail.com> [yann.morin.1998@free.fr: - drop superfluous check on empty modules lists - move EFI and legacy commands under same condition as checks - variables were renamed - misc eye-candy ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Köry Maincent <kory.maincent@bootlin.com>
2021-12-03 19:51:06 +01:00
$(BINARIES_DIR)/boot-part/grub
endef
endif # BR2_TARGET_GRUB2_HAS_LEGACY_BOOT
ifeq ($(BR2_TARGET_GRUB2_HAS_EFI_BOOT),y)
MENDER_GRUBENV_MODULES_MISSING_EFI = \
$(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI)),\
$(MENDER_GRUBENV_MANDATORY_MODULES))
MENDER_GRUBENV_MAKE_ENV += ENV_DIR=/boot/EFI/BOOT
package/mender-grubenv: fix grub module checks Commit b68810e70cbd (boot/grub2: add support to build multiple Grub2 configurations in the same build) broke mender-grubenv by splititng up BR2_TARGET_GRUB2_BUILTIN_MODULES into two separate symbols, one for legacy boot and one for EFI boot. This change causes a systematic build failure now, as the legacy variable BR2_TARGET_GRUB2_BUILTIN_MODULES is now always empty (during build). We fix that by supplicating the missing modules to check: one for EFI and one for legacy boot. The EFI check is tricky: Indeed, there can be more than one EFI platform enabled simultaneously; indeed, on x86_64, we can have both the 32-bit and 64-bit EFI platforms enabled. So the check is inverted, and we check that no platform is not enabled (yeah, double negation). For consistency, we do the same for the legacy boot, even though in that case, there can only ever be only one enabled at once at most. Furthermore, mender-grubenv does not support multiple installations of grub concurrently; it can only be installed for either legacy or EFI, not both at the same time: /etc/mender-grubenv.cfg, its configuration file, can only contain settings for one or the other, not both. So we add a new check to Config.in to support only one grub installation type at a time. Signed-off-by: Adam Duskett <aduskett@gmail.com> [yann.morin.1998@free.fr: - drop superfluous check on empty modules lists - move EFI and legacy commands under same condition as checks - variables were renamed - misc eye-candy ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Köry Maincent <kory.maincent@bootlin.com>
2021-12-03 19:51:06 +01:00
define MENDER_GRUBENV_INSTALL_EFI_CFG
mkdir -p $(BINARIES_DIR)/efi-part/EFI/BOOT
cp -dpfr $(TARGET_DIR)/boot/EFI/BOOT/grub.cfg \
$(TARGET_DIR)/boot/EFI/BOOT/mender_grubenv* \
package/mender-grubenv: fix grub module checks Commit b68810e70cbd (boot/grub2: add support to build multiple Grub2 configurations in the same build) broke mender-grubenv by splititng up BR2_TARGET_GRUB2_BUILTIN_MODULES into two separate symbols, one for legacy boot and one for EFI boot. This change causes a systematic build failure now, as the legacy variable BR2_TARGET_GRUB2_BUILTIN_MODULES is now always empty (during build). We fix that by supplicating the missing modules to check: one for EFI and one for legacy boot. The EFI check is tricky: Indeed, there can be more than one EFI platform enabled simultaneously; indeed, on x86_64, we can have both the 32-bit and 64-bit EFI platforms enabled. So the check is inverted, and we check that no platform is not enabled (yeah, double negation). For consistency, we do the same for the legacy boot, even though in that case, there can only ever be only one enabled at once at most. Furthermore, mender-grubenv does not support multiple installations of grub concurrently; it can only be installed for either legacy or EFI, not both at the same time: /etc/mender-grubenv.cfg, its configuration file, can only contain settings for one or the other, not both. So we add a new check to Config.in to support only one grub installation type at a time. Signed-off-by: Adam Duskett <aduskett@gmail.com> [yann.morin.1998@free.fr: - drop superfluous check on empty modules lists - move EFI and legacy commands under same condition as checks - variables were renamed - misc eye-candy ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Köry Maincent <kory.maincent@bootlin.com>
2021-12-03 19:51:06 +01:00
$(BINARIES_DIR)/efi-part/EFI/BOOT
endef
endif # BR2_TARGET_GRUB2_HAS_EFI_BOOT
ifeq ($(BR2_PACKAGE_MENDER_GRUBENV)$(BR_BUILDING),yy)
package/mender-grubenv: fix grub module checks Commit b68810e70cbd (boot/grub2: add support to build multiple Grub2 configurations in the same build) broke mender-grubenv by splititng up BR2_TARGET_GRUB2_BUILTIN_MODULES into two separate symbols, one for legacy boot and one for EFI boot. This change causes a systematic build failure now, as the legacy variable BR2_TARGET_GRUB2_BUILTIN_MODULES is now always empty (during build). We fix that by supplicating the missing modules to check: one for EFI and one for legacy boot. The EFI check is tricky: Indeed, there can be more than one EFI platform enabled simultaneously; indeed, on x86_64, we can have both the 32-bit and 64-bit EFI platforms enabled. So the check is inverted, and we check that no platform is not enabled (yeah, double negation). For consistency, we do the same for the legacy boot, even though in that case, there can only ever be only one enabled at once at most. Furthermore, mender-grubenv does not support multiple installations of grub concurrently; it can only be installed for either legacy or EFI, not both at the same time: /etc/mender-grubenv.cfg, its configuration file, can only contain settings for one or the other, not both. So we add a new check to Config.in to support only one grub installation type at a time. Signed-off-by: Adam Duskett <aduskett@gmail.com> [yann.morin.1998@free.fr: - drop superfluous check on empty modules lists - move EFI and legacy commands under same condition as checks - variables were renamed - misc eye-candy ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Köry Maincent <kory.maincent@bootlin.com>
2021-12-03 19:51:06 +01:00
ifneq ($(MENDER_GRUBENV_MODULES_MISSING_EFI),)
$(error The following missing grub2 efi modules must be enabled for mender-grubenv \
to work: $(MENDER_GRUBENV_MODULES_MISSING_EFI))
endif
ifneq ($(MENDER_GRUBENV_MODULES_MISSING_PC),)
$(error The following missing grub2 pc modules must be enabled for mender-grubenv \
to work: $(MENDER_GRUBENV_MODULES_MISSING_PC))
endif
endif
define MENDER_GRUBENV_CONFIGURE_CMDS
$(INSTALL) -m 0644 $(MENDER_GRUBENV_DEFINES) $(@D)/mender_grubenv_defines
endef
define MENDER_GRUBENV_BUILD_CMDS
$(MENDER_GRUBENV_MAKE_ENV) $(MAKE) -C $(@D)
endef
define MENDER_GRUBENV_INSTALL_TARGET_CMDS
$(MENDER_GRUBENV_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
endef
define MENDER_GRUBENV_INSTALL_IMAGES_CMDS
package/mender-grubenv: fix grub module checks Commit b68810e70cbd (boot/grub2: add support to build multiple Grub2 configurations in the same build) broke mender-grubenv by splititng up BR2_TARGET_GRUB2_BUILTIN_MODULES into two separate symbols, one for legacy boot and one for EFI boot. This change causes a systematic build failure now, as the legacy variable BR2_TARGET_GRUB2_BUILTIN_MODULES is now always empty (during build). We fix that by supplicating the missing modules to check: one for EFI and one for legacy boot. The EFI check is tricky: Indeed, there can be more than one EFI platform enabled simultaneously; indeed, on x86_64, we can have both the 32-bit and 64-bit EFI platforms enabled. So the check is inverted, and we check that no platform is not enabled (yeah, double negation). For consistency, we do the same for the legacy boot, even though in that case, there can only ever be only one enabled at once at most. Furthermore, mender-grubenv does not support multiple installations of grub concurrently; it can only be installed for either legacy or EFI, not both at the same time: /etc/mender-grubenv.cfg, its configuration file, can only contain settings for one or the other, not both. So we add a new check to Config.in to support only one grub installation type at a time. Signed-off-by: Adam Duskett <aduskett@gmail.com> [yann.morin.1998@free.fr: - drop superfluous check on empty modules lists - move EFI and legacy commands under same condition as checks - variables were renamed - misc eye-candy ] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Cc: Köry Maincent <kory.maincent@bootlin.com>
2021-12-03 19:51:06 +01:00
$(MENDER_GRUBENV_INSTALL_I386_CFG)
$(MENDER_GRUBENV_INSTALL_EFI_CFG)
endef
$(eval $(generic-package))