boot/barebox: install all barebox images if none were specified

When selecting barebox in menuconfig, BR2_TARGET_BAREBOX_IMAGE_FILE will
be empty by default, which causes Buildroot to install whatever the
barebox-flash-image symlink points at for barebox versions >= v2012.10.0.

This is an outdated fallback, because barebox-flash-image is only valid
when the barebox build produces a single binary. Virtually all new
defconfigs added in the last couple of years are multiconfig
(CONFIG_PBL_IMAGE=y) however, meaning that a single imx_v7_defconfig
or multi_v8_defconfig will produce many images that support different
boards or even platforms.

As there is no single valid target for barebox-flash-image to point at
in this case, this symlink will point at a non-existing
'multi-image-build' to alert the user to this fact.

As replacement for barebox-flash-image, barebox commit 550cf79c216a
("Make list of flash images and fix link all single image cases") first
released with v2015.12.0 creates a barebox-flash-images file with a list
of all images built by barebox.

Have buildroot use that file as a fallback before trying
barebox-flash-image to have a fallback that works for any recent barebox
defconfig as well.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Ahmad Fatoum 2024-02-19 22:06:28 +01:00 committed by Peter Korsgaard
parent 9047058cd8
commit b89648b4d0
3 changed files with 16 additions and 4 deletions

View File

@ -36,8 +36,13 @@ config BR2_TARGET_BAREBOX_AUX_IMAGE_FILE
the images directory.
If left empty, defaults to:
- barebox.bin for barebox versions older than 2012.10.
- barebox-flash-image for later versions.
- all images as listed in barebox-flash-images (>= v2015.12.0)
- the image pointed at by barebox-flash-image (>= v2012.10.0)
- barebox.bin for even older barebox versions
In any case, this only influences the artifacts collected by
Buildroot. They will still need to be referenced from image
packages or flashed separately onto the hardware.
config BR2_TARGET_BAREBOX_AUX_CUSTOM_ENV
bool "Generate an environment image"

View File

@ -151,6 +151,8 @@ $(1)_IMAGE_FILES = $$(call qstrip,$$(BR2_TARGET_$(1)_IMAGE_FILE))
define $(1)_INSTALL_IMAGES_CMDS
if test -n "$$($(1)_IMAGE_FILES)"; then \
cp -L $$(foreach image,$$($(1)_IMAGE_FILES),$$(@D)/$$(image)) $$(BINARIES_DIR) ; \
elif test -e $$(@D)/barebox-flash-images ; then \
cp -L $$(foreach image,$$(shell cat $$(@D)/barebox-flash-images),$$(@D)/$$(image)) $$(BINARIES_DIR) ; \
elif test -h $$(@D)/barebox-flash-image ; then \
cp -L $$(@D)/barebox-flash-image $$(BINARIES_DIR)/barebox.bin ; \
else \

View File

@ -36,8 +36,13 @@ config BR2_TARGET_BAREBOX_IMAGE_FILE
the images directory.
If left empty, defaults to:
- barebox.bin for barebox versions older than 2012.10.
- barebox-flash-image for later versions.
- all images as listed in barebox-flash-images (>= v2015.12.0)
- the image pointed at by barebox-flash-image (>= v2012.10.0)
- barebox.bin for even older barebox versions
In any case, this only influences the artifacts collected by
Buildroot. They will still need to be referenced from image
packages or flashed separately onto the hardware.
config BR2_TARGET_BAREBOX_BAREBOXENV
bool "bareboxenv tool in target"