package/mender-grubenv: fix grub module checks
PATCH v4 1/1 package/mender-grubenv: fix grub module checks
Commit 3efb5e31fc05705ce3c46b1f0ec031978a5cfab6 broke mender-grubenv by splititng up BR2_TARGET_GRUB2_BUILTIN_MODULES and BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI. Indeed, when a user now builds a system with EFI, the MENDER_GRUBENV_MODULES_MISSING list always returns a full list of grub modules, resulting in the error condition on line 46 to trigger.
In addition, BR2_TARGET_GRUB2_BUILTIN_MODULES has been renamed to BR2_TARGET_GRUB2_BUILTIN_MODULES_PC, so this is changed in mender-grubenv.mk as well.
- Add a ifneq check for both efi and i386 targets. If any of them are selected, check if the corresponding module list is empty and print an error message if so.
- Add two ifeqs, one for BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI and the other for BR2_TARGET_GRUB2_BUILTIN_MODULES_PC. If either is not empty, check for the required modules and error out if either of the two have missing modules.
- Split up the MENDER_GRUBENV_INSTALL_IMAGES_CMDS into two separate parts, one for I386_PC/ARM_UBOOT, and another for EFI targets. This allows both EFI and I386 builds to install at the same time.
---
changes v1 -> v2:
- Change ifeq ($(BR2_TARGET_GRUB2_X86_64_EFI),y) to
ifneq ($(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI),) to cover all grub2 efi
scenarios. (Thomas) - Change BR2_TARGET_GRUB2_BUILTIN_MODULES to
BR2_TARGET_GRUB2_BUILTIN_MODULES_PC (thomas)
Changes v2 -> v3:
- Check for both MODULES_EFI and MODULES_PC (Thomas)
Changes v3 -> v4:
- Add qstrips to needed variables (Thomas)
- Check for empty module lists (Thomas)
- Split up MENDER_GRUBENV_INSTALL_IMAGES_CMDS to work with pc and efi at the same time.
package/mender-grubenv/mender-grubenv.mk | 52 ++++++++++++++++++------ 1 file changed, 40 insertions(+), 12 deletions(-)
package/mender-grubenv/mender-grubenv.mk +40 -12
@@ -31,14 +31,38 @@ MENDER_GRUBENV_DEFINES = \ # 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 -MENDER_GRUBENV_MODULES_MISSING = \ - $(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES)),\ + +# Unfortuantly, there is no easy way to check if the efi list is empty without +# checking to see if any of the supported EFI platforms are selected. +ifneq ($(BR2_TARGET_GRUB2_I386_EFI)$(BR2_TARGET_GRUB2_X86_64_EFI)$(BR2_TARGET_GRUB2_ARM_EFI)$(BR2_TARGET_GRUB2_ARM64_EFI),) +ifeq ($(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI)),) +$(error The following missing grub2 efi modules must be enabled for mender-grubenv \ + to work: $(MENDER_GRUBENV_MANDATORY_MODULES)) +endif +MENDER_GRUBENV_MODULES_MISSING_EFI = \ + $(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI)),\ + $(MENDER_GRUBENV_MANDATORY_MODULES)) +endif + +ifeq ($(BR2_TARGET_GRUB2_I386_PC),y) +ifeq ($(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_PC)),) +$(error The following missing grub2 efi modules must be enabled for mender-grubenv \ + to work: $(MENDER_GRUBENV_MANDATORY_MODULES)) +endif +MENDER_GRUBENV_MODULES_MISSING_PC = \ + $(filter-out $(call qstrip,$(BR2_TARGET_GRUB2_BUILTIN_MODULES_PC)),\ $(MENDER_GRUBENV_MANDATORY_MODULES)) +endif ifeq ($(BR2_PACKAGE_MENDER_GRUBENV)$(BR_BUILDING),yy) -ifneq ($(MENDER_GRUBENV_MODULES_MISSING),) -$(error The following missing grub2 modules must be enabled for mender-grubenv \ - to work: $(MENDER_GRUBENV_MODULES_MISSING)) +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
@@ -56,19 +80,23 @@ endef # Overwrite the default grub2 config files with the ones in this package. ifeq ($(BR2_TARGET_GRUB2_I386_PC)$(BR2_TARGET_GRUB2_ARM_UBOOT),y) -define MENDER_GRUBENV_INSTALL_IMAGES_CMDS - mkdir -p $(BINARIES_DIR)/boot-part/grub +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* \ - $(BINARIES_DIR)/boot-part/grub + $(BINARIES_DIR)/boot-part/grub; endef -else -define MENDER_GRUBENV_INSTALL_IMAGES_CMDS - mkdir -p $(BINARIES_DIR)/efi-part/EFI/BOOT +MENDER_GRUBENV_INSTALL_IMAGES_CMDS += $(MENDER_GRUBENV_INSTALL_I386_CFG) +endif + +ifneq ($(BR2_TARGET_GRUB2_I386_EFI)$(BR2_TARGET_GRUB2_X86_64_EFI)$(BR2_TARGET_GRUB2_ARM_EFI)$(BR2_TARGET_GRUB2_ARM64_EFI),) +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* \ - $(BINARIES_DIR)/efi-part/EFI/BOOT + $(BINARIES_DIR)/efi-part/EFI/BOOT; endef +MENDER_GRUBENV_INSTALL_IMAGES_CMDS += $(MENDER_GRUBENV_INSTALL_EFI_CFG) endif $(eval $(generic-package))
Signature · 6 lines
2.33.1 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot