In case both UBOOT_SIGN_ENABLE and UBOOT_ENV are enabled and
kernel-fitimage.bbclass is in use to generate signed kernel
fitImage, there is a circular dependency between uboot-sign
and kernel-fitimage bbclasses . The loop looks like this:
kernel-fitimage.bbclass:
- do_populate_sysroot depends on do_assemble_fitimage
- do_assemble_fitimage depends on virtual/bootloader:do_populate_sysroot
- virtual/bootloader:do_populate_sysroot depends on
virtual/bootloader:do_install
=> The virtual/bootloader:do_install installs and the
virtual/bootloader:do_populate_sysroot places into
sysroot an U-Boot environment script embedded into
kernel fitImage during do_assemble_fitimage run .
uboot-sign.bbclass:
- DEPENDS on KERNEL_PN, which is really virtual/kernel. More accurately
- do_deploy depends on do_uboot_assemble_fitimage
- do_install depends on do_uboot_assemble_fitimage
- do_uboot_assemble_fitimage depends on virtual/kernel:do_populate_sysroot
=> do_install depends on virtual/kernel:do_populate_sysroot
=> virtual/bootloader:do_install depends on virtual/kernel:do_populate_sysroot
virtual/kernel:do_populate_sysroot depends on virtual/bootloader:do_install
Attempt to resolve the loop by making u-boot do_compile() task already deploy
the
U-Boot environment script used by kernel-fitimage.bbclass do_assemble_fitimage()
into STAGING_DIR_HOST , and then by making kernel-fitimage.bbclass depend on
virtual/bootloader:do_compile instead of virtual/bootloader:do_populate_sysroot
.
Make sure it is only uboot-sign.bbclass do_uboot_assemble_fitimage() task that
depends on KERNEL_PN:do_populate_sysroot .
Fixes: 5e12dc911d0c ("u-boot: Rework signing to remove interdependencies")
Signed-off-by: Marek Vasut <[email protected]>
---
Cc: Alexandre Belloni <[email protected]>
Cc: Richard Purdie <[email protected]>
Cc: Sean Anderson <[email protected]>
---
meta/classes-recipe/kernel-fitimage.bbclass | 2 +-
meta/classes-recipe/uboot-sign.bbclass | 3 +--
meta/recipes-bsp/u-boot/u-boot.inc | 6 ++++++
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/meta/classes-recipe/kernel-fitimage.bbclass
b/meta/classes-recipe/kernel-fitimage.bbclass
index 67c98adb23..81245446a2 100644
--- a/meta/classes-recipe/kernel-fitimage.bbclass
+++ b/meta/classes-recipe/kernel-fitimage.bbclass
@@ -42,7 +42,7 @@ python __anonymous () {
ubootenv = d.getVar('UBOOT_ENV')
if ubootenv:
- d.appendVarFlag('do_assemble_fitimage', 'depends', '
virtual/bootloader:do_populate_sysroot')
+ d.appendVarFlag('do_assemble_fitimage', 'depends', '
virtual/bootloader:do_compile')
#check if there are any dtb providers
providerdtb = d.getVar("PREFERRED_PROVIDER_virtual/dtb")
diff --git a/meta/classes-recipe/uboot-sign.bbclass
b/meta/classes-recipe/uboot-sign.bbclass
index a17be745ce..e1a37b4343 100644
--- a/meta/classes-recipe/uboot-sign.bbclass
+++ b/meta/classes-recipe/uboot-sign.bbclass
@@ -96,8 +96,6 @@ python() {
sign = d.getVar('UBOOT_SIGN_ENABLE') == '1'
if d.getVar('UBOOT_FITIMAGE_ENABLE') == '1' or sign:
d.appendVar('DEPENDS', " u-boot-tools-native dtc-native")
- if sign:
- d.appendVar('DEPENDS', " " + d.getVar('KERNEL_PN'))
}
concat_dtb() {
@@ -350,6 +348,7 @@ uboot_assemble_fitimage_helper() {
fi
}
+do_uboot_assemble_fitimage[depends] = "${@(d.getVar('KERNEL_PN') +
':do_populate_sysroot') if d.getVar('UBOOT_SIGN_ENABLE') == 1 else ''}"
do_uboot_assemble_fitimage() {
if [ "${UBOOT_SIGN_ENABLE}" = "1" ] ; then
cp "${STAGING_DIR_HOST}/sysroot-only/fitImage"
"${B}/fitImage-linux"
diff --git a/meta/recipes-bsp/u-boot/u-boot.inc
b/meta/recipes-bsp/u-boot/u-boot.inc
index 3270c22e8d..61f98ec5b5 100644
--- a/meta/recipes-bsp/u-boot/u-boot.inc
+++ b/meta/recipes-bsp/u-boot/u-boot.inc
@@ -72,6 +72,12 @@ do_compile () {
then
${UBOOT_MKIMAGE} -C none -A ${UBOOT_ARCH} -T script -d
${UNPACKDIR}/${UBOOT_ENV_SRC} ${B}/${UBOOT_ENV_BINARY}
fi
+
+ if [ -n "${UBOOT_ENV}" ]
+ then
+ mkdir -p ${STAGING_DIR_HOST}/boot/
+ install -m 644 ${B}/${UBOOT_ENV_BINARY}
${STAGING_DIR_HOST}/boot/${UBOOT_ENV_IMAGE}
+ fi
}
uboot_compile_config () {
--
2.45.2
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#209671):
https://lists.openembedded.org/g/openembedded-core/message/209671
Mute This Topic: https://lists.openembedded.org/mt/110557812/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-