package/mender-grubenv: Fix per-package building

Normally, two packages should never touch the same file. However, the
mender-grubenv package is a special case, as its sole purpose is to overwrite
the grub.cfg file.

As per-package directory building has no guarantee that the grub package is
rsynced to the target directory before the mender-grubenv package, this leads
to the possiblity that mender-grubenvs grub.conf file is overwritten with the
stock grub2 packages grub.conf file.

Instead of a MENDER_GRUBENV_INSTALL_I386_CFG and MENDER_GRUBENV_INSTALL_EFI_CFG
being part if MENDER_GRUBENV_INSTALL_IMAGES_CMDS, move them to
TARGET_FINALIZE_HOOKS. This guarantees that the grub.cfg provided by the
mender-grubenv package is installed after grub.conf provided by the grub2
package.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
This commit is contained in:
Adam Duskett
2024-09-04 16:25:06 +02:00
committed by Arnout Vandecappelle
parent 699b3c38fd
commit aa3ba97554

View File

@@ -11,7 +11,6 @@ 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 util-linux
MENDER_GRUBENV_INSTALL_IMAGES = YES
MENDER_GRUBENV_MAKE_ENV = \
$(TARGET_CONFIGURE_OPTS) \
@@ -34,12 +33,13 @@ MENDER_GRUBENV_MAKE_ENV += BOOT_DIR=/boot
define MENDER_GRUBENV_INSTALL_I386_CFG
mkdir -p $(BINARIES_DIR)/boot-part/grub
cp -dpfr $(@D)/mender_grub.cfg \
cp -dpfr $(MENDER_GRUBENV_BUILDDIR)/mender_grub.cfg \
$(TARGET_DIR)/boot/grub/grub.cfg
cp -dpfr $(TARGET_DIR)/boot/grub/grub.cfg \
$(TARGET_DIR)/boot/grub-mender-grubenv \
$(BINARIES_DIR)/boot-part/
endef
MENDER_GRUBENV_TARGET_FINALIZE_HOOKS += MENDER_GRUBENV_INSTALL_I386_CFG
endif # BR2_TARGET_GRUB2_HAS_LEGACY_BOOT
ifeq ($(BR2_TARGET_GRUB2_HAS_EFI_BOOT),y)
@@ -51,13 +51,14 @@ MENDER_GRUBENV_MAKE_ENV += BOOT_DIR=/boot/EFI/BOOT
define MENDER_GRUBENV_INSTALL_EFI_CFG
mkdir -p $(BINARIES_DIR)/efi-part/EFI/BOOT
cp -dpfr $(@D)/mender_grub.cfg \
cp -dpfr $(MENDER_GRUBENV_BUILDDIR)/mender_grub.cfg \
$(TARGET_DIR)/boot/EFI/BOOT/grub.cfg
cp -dpfr $(TARGET_DIR)/boot/EFI/BOOT/grub.cfg \
$(BINARIES_DIR)/efi-part/EFI/BOOT
cp -dpfr $(TARGET_DIR)/boot/EFI/BOOT/grub-mender-grubenv \
$(BINARIES_DIR)/efi-part/
endef
MENDER_GRUBENV_TARGET_FINALIZE_HOOKS += MENDER_GRUBENV_INSTALL_EFI_CFG
endif # BR2_TARGET_GRUB2_HAS_EFI_BOOT
ifeq ($(BR2_PACKAGE_MENDER_GRUBENV)$(BR_BUILDING),yy)
@@ -86,9 +87,4 @@ define MENDER_GRUBENV_INSTALL_TARGET_CMDS
echo 'ENV_DIR=/boot/grub-mender-grubenv' > $(TARGET_DIR)/etc/mender_grubenv.config
endef
define MENDER_GRUBENV_INSTALL_IMAGES_CMDS
$(MENDER_GRUBENV_INSTALL_I386_CFG)
$(MENDER_GRUBENV_INSTALL_EFI_CFG)
endef
$(eval $(generic-package))