package/mender-grubenv: fix installation with genimage.sh script

mender-grubenv currently has 3 problems that prevent an x86_64-efi image from
successfully being made with the genimage.sh script.

- mender-grubenv does not currently depend on Grub2.
  While Grub2 is not needed to build the mender-grubenv package, Grub2 needs
  to be built first for mender-grubenv to overwrite the default Grub2 files
  reliably.

- The MENDER_GRUBENV_ENV_DIR variable points to /boot/efi/EFI/BOOT instead of
  /boot/EFI/BOOT, which is where the Grub2 package installs the default files.
  This variable now points to the correct location.

- The Grub2 package installs images to $(BINARIES_DIR)/efi-part, which the
  mender-grubenv package currently does not do. As such; the default Grub2
  configuration file is used instead of the one provided by mender-grubenv.
  Adding a MENDER_GRUBENV_INSTALL_IMAGES_CMDS define in mender-grubenv.mk which
  copies the installed files from $(TARGET_DIR)/boot/EFI to
  $(BINARIES_DIR)/efi-part fixes this issue.

Signed-off-by: Adam Duskett <aduskett@greenlots.com>
[Thomas:
 - drop "runtime" on the depends on BR2_TARGET_GRUB2 since we now have
   a build-time dependency on it
 - explicitly copy the files installed by mender-grubenv in
   MENDER_GRUBENV_INSTALL_IMAGES_CMDS instead of blindly copying
   everything that is in $(TARGET_DIR)/boot/EFI]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Adam Duskett 2019-09-02 15:34:41 -07:00 committed by Thomas Petazzoni
parent 1a05c43a3e
commit 425f79087a
2 changed files with 14 additions and 2 deletions

View File

@ -4,7 +4,7 @@ config BR2_PACKAGE_MENDER_GRUBENV
depends on BR2_PACKAGE_MENDER # runtime depends on BR2_PACKAGE_MENDER # runtime
# grubenv provides it's own fw_printenv. # grubenv provides it's own fw_printenv.
depends on !BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV depends on !BR2_PACKAGE_UBOOT_TOOLS_FWPRINTENV
depends on BR2_TARGET_GRUB2 # runtime depends on BR2_TARGET_GRUB2
help help
Contains the boot scripts and tools used by Mender to Contains the boot scripts and tools used by Mender to
integrate with the GRUB bootloader. integrate with the GRUB bootloader.

View File

@ -8,11 +8,15 @@ MENDER_GRUBENV_VERSION = 1.3.0
MENDER_GRUBENV_SITE = $(call github,mendersoftware,grub-mender-grubenv,$(MENDER_GRUBENV_VERSION)) MENDER_GRUBENV_SITE = $(call github,mendersoftware,grub-mender-grubenv,$(MENDER_GRUBENV_VERSION))
MENDER_GRUBENV_LICENSE = Apache-2.0 MENDER_GRUBENV_LICENSE = Apache-2.0
MENDER_GRUBENV_LICENSE_FILES = LICENSE 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
ifeq ($(BR2_TARGET_GRUB2_I386_PC)$(BR2_TARGET_GRUB2_ARM_UBOOT),y) ifeq ($(BR2_TARGET_GRUB2_I386_PC)$(BR2_TARGET_GRUB2_ARM_UBOOT),y)
MENDER_GRUBENV_ENV_DIR = /boot/grub MENDER_GRUBENV_ENV_DIR = /boot/grub
else else
MENDER_GRUBENV_ENV_DIR = /boot/efi/EFI/BOOT MENDER_GRUBENV_ENV_DIR = /boot/EFI/BOOT
endif endif
MENDER_GRUBENV_MAKE_ENV = \ MENDER_GRUBENV_MAKE_ENV = \
@ -50,4 +54,12 @@ define MENDER_GRUBENV_INSTALL_TARGET_CMDS
$(MENDER_GRUBENV_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install $(MENDER_GRUBENV_MAKE_ENV) $(MAKE) DESTDIR=$(TARGET_DIR) -C $(@D) install
endef endef
# Overwrite the default grub2 config files with the ones in this package.
define MENDER_GRUBENV_INSTALL_IMAGES_CMDS
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
endef
$(eval $(generic-package)) $(eval $(generic-package))