| Message ID | 4b35158b-a117-41d5-bf9b-5ff06c756b7a@siemens.com |
|---|---|
| State | Accepted, archived |
| Headers | show |
| Series | image: Fix variable dependency chain | expand |
Applied to next, thanks. On 11/23/25 19:30, 'Jan Kiszka' via isar-users wrote: > From: Jan Kiszka <jan.kiszka@siemens.com> > > As ROOTFS_PACKAGES is constructed from IMAGE_INSTALL or SDK_INSTALL via > an inline python function, we need to help its consumer > do_rootfs_install with maintaining its variable dependency chain. > > The issue was easy to trigger by rebuilding an image after switching > between different distro kernels. > > Instead of adding another do_rootfs_install[vardeps] rule to users of > rootfs, introduce the ROOTFS_VARDEPS variable which can be defined by > class users according to their ROOTFS_PACKAGES construction. > > Fixes: c63bb31b6f3a ("add multiarch support") > Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> > --- > meta/classes/image.bbclass | 1 + > meta/classes/rootfs.bbclass | 3 ++- > meta/classes/sdk.bbclass | 5 +---- > 3 files changed, 4 insertions(+), 5 deletions(-) > > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass > index 1fa71c17..d11dbee5 100644 > --- a/meta/classes/image.bbclass > +++ b/meta/classes/image.bbclass > @@ -101,6 +101,7 @@ ROOTFS_FEATURES += "\ > populate-systemd-preset \ > " > ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${@isar_multiarch_packages('IMAGE_INSTALL', d)}" > +ROOTFS_VARDEPS += "IMAGE_INSTALL" > ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" > ROOTFS_DPKGSTATUS_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" > ROOTFS_PACKAGE_SUFFIX ?= "${PN}-${DISTRO}-${MACHINE}" > diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass > index e1179e61..748ed034 100644 > --- a/meta/classes/rootfs.bbclass > +++ b/meta/classes/rootfs.bbclass > @@ -18,6 +18,7 @@ def initramfs_generator_cmdline(d): > return "update-initramfs -u -v -k \"$kernel_version\"" > > ROOTFS_PACKAGES ?= "" > +ROOTFS_VARDEPS ?= "" > ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLINE').split()[0]}" > ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ initramfs_generator_cmdline(d)}" > ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}" > @@ -384,7 +385,7 @@ rootfs_clear_initrd_symlinks() { > } > > do_rootfs_install[root_cleandirs] = "${ROOTFSDIR}" > -do_rootfs_install[vardeps] += "${ROOTFS_CONFIGURE_COMMAND} ${ROOTFS_INSTALL_COMMAND}" > +do_rootfs_install[vardeps] += "${ROOTFS_CONFIGURE_COMMAND} ${ROOTFS_INSTALL_COMMAND} ${ROOTFS_VARDEPS}" > do_rootfs_install[vardepsexclude] += "IMAGE_ROOTFS" > do_rootfs_install[depends] = "bootstrap-${@'target' if d.getVar('ROOTFS_ARCH') == d.getVar('DISTRO_ARCH') else 'host'}:do_build" > do_rootfs_install[recrdeptask] = "do_deploy_deb" > diff --git a/meta/classes/sdk.bbclass b/meta/classes/sdk.bbclass > index 46436d97..5933b52a 100644 > --- a/meta/classes/sdk.bbclass > +++ b/meta/classes/sdk.bbclass > @@ -55,6 +55,7 @@ def get_rootfs_distro(d): > ROOTFS_ARCH:class-sdk = "${HOST_ARCH}" > ROOTFS_DISTRO:class-sdk = "${@get_rootfs_distro(d)}" > ROOTFS_PACKAGES:class-sdk = "sdk-files ${SDK_TOOLCHAIN} ${SDK_PREINSTALL} ${@isar_multiarch_packages('SDK_INSTALL', d)}" > +ROOTFS_VARDEPS:class-sdk = "SDK_INSTALL SDK_INCLUDE_ISAR_APT" > ROOTFS_FEATURES:append:class-sdk = " clean-package-cache generate-manifest export-dpkg-status" > ROOTFS_MANIFEST_DEPLOY_DIR:class-sdk = "${DEPLOY_DIR_SDKCHROOT}" > ROOTFS_DPKGSTATUS_DEPLOY_DIR:class-sdk = "${DEPLOY_DIR_SDKCHROOT}" > @@ -70,10 +71,6 @@ SDKROOTFSDEPENDS = "" > SDKROOTFSDEPENDS:class-sdk = "${BPN}:do_rootfs" > do_rootfs_install[depends] += "${SDKROOTFSDEPENDS}" > > -SDKROOTFSVARDEPS = "" > -SDKROOTFSVARDEPS:class-sdk = "SDK_INCLUDE_ISAR_APT" > -do_rootfs_install[vardeps] += "${SDKROOTFSVARDEPS}" > - > ROOTFS_POSTPROCESS_COMMAND:remove = "${@'rootfs_cleanup_isar_apt' if bb.utils.to_boolean(d.getVar('SDK_INCLUDE_ISAR_APT')) else ''}" > > # additional SDK steps
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 1fa71c17..d11dbee5 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -101,6 +101,7 @@ ROOTFS_FEATURES += "\ populate-systemd-preset \ " ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${@isar_multiarch_packages('IMAGE_INSTALL', d)}" +ROOTFS_VARDEPS += "IMAGE_INSTALL" ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" ROOTFS_DPKGSTATUS_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" ROOTFS_PACKAGE_SUFFIX ?= "${PN}-${DISTRO}-${MACHINE}" diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass index e1179e61..748ed034 100644 --- a/meta/classes/rootfs.bbclass +++ b/meta/classes/rootfs.bbclass @@ -18,6 +18,7 @@ def initramfs_generator_cmdline(d): return "update-initramfs -u -v -k \"$kernel_version\"" ROOTFS_PACKAGES ?= "" +ROOTFS_VARDEPS ?= "" ROOTFS_INITRAMFS_GENERATOR_CMD = "${@ d.getVar('ROOTFS_INITRAMFS_GENERATOR_CMDLINE').split()[0]}" ROOTFS_INITRAMFS_GENERATOR_CMDLINE = "${@ initramfs_generator_cmdline(d)}" ROOTFS_BASE_DISTRO ?= "${BASE_DISTRO}" @@ -384,7 +385,7 @@ rootfs_clear_initrd_symlinks() { } do_rootfs_install[root_cleandirs] = "${ROOTFSDIR}" -do_rootfs_install[vardeps] += "${ROOTFS_CONFIGURE_COMMAND} ${ROOTFS_INSTALL_COMMAND}" +do_rootfs_install[vardeps] += "${ROOTFS_CONFIGURE_COMMAND} ${ROOTFS_INSTALL_COMMAND} ${ROOTFS_VARDEPS}" do_rootfs_install[vardepsexclude] += "IMAGE_ROOTFS" do_rootfs_install[depends] = "bootstrap-${@'target' if d.getVar('ROOTFS_ARCH') == d.getVar('DISTRO_ARCH') else 'host'}:do_build" do_rootfs_install[recrdeptask] = "do_deploy_deb" diff --git a/meta/classes/sdk.bbclass b/meta/classes/sdk.bbclass index 46436d97..5933b52a 100644 --- a/meta/classes/sdk.bbclass +++ b/meta/classes/sdk.bbclass @@ -55,6 +55,7 @@ def get_rootfs_distro(d): ROOTFS_ARCH:class-sdk = "${HOST_ARCH}" ROOTFS_DISTRO:class-sdk = "${@get_rootfs_distro(d)}" ROOTFS_PACKAGES:class-sdk = "sdk-files ${SDK_TOOLCHAIN} ${SDK_PREINSTALL} ${@isar_multiarch_packages('SDK_INSTALL', d)}" +ROOTFS_VARDEPS:class-sdk = "SDK_INSTALL SDK_INCLUDE_ISAR_APT" ROOTFS_FEATURES:append:class-sdk = " clean-package-cache generate-manifest export-dpkg-status" ROOTFS_MANIFEST_DEPLOY_DIR:class-sdk = "${DEPLOY_DIR_SDKCHROOT}" ROOTFS_DPKGSTATUS_DEPLOY_DIR:class-sdk = "${DEPLOY_DIR_SDKCHROOT}" @@ -70,10 +71,6 @@ SDKROOTFSDEPENDS = "" SDKROOTFSDEPENDS:class-sdk = "${BPN}:do_rootfs" do_rootfs_install[depends] += "${SDKROOTFSDEPENDS}" -SDKROOTFSVARDEPS = "" -SDKROOTFSVARDEPS:class-sdk = "SDK_INCLUDE_ISAR_APT" -do_rootfs_install[vardeps] += "${SDKROOTFSVARDEPS}" - ROOTFS_POSTPROCESS_COMMAND:remove = "${@'rootfs_cleanup_isar_apt' if bb.utils.to_boolean(d.getVar('SDK_INCLUDE_ISAR_APT')) else ''}" # additional SDK steps