* [PATCH v5 0/3] Deploy DTBs with separate recipe
@ 2026-02-06 12:27 Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 1/3] meta: Fix do_copy_boot_files error for different distros of same machine Anton Mikanovich
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Anton Mikanovich @ 2026-02-06 12:27 UTC (permalink / raw)
To: isar-users; +Cc: Anton Mikanovich
Image task "do_copy_boot_files" is used to deploy kernel, initrd and
devicetree binaries to deploy directory.
When different images for the same target are built (e.g., "-base" and
"-debug") in parallel, this causes issues with DTB deployment since
they have no any image_name-specific stuff in the path, unlike kernel
and initrd.
Here we make a separate recipe responsible for the DTB deployment.
DTBs are extracted from the kernel package (provided by distro or
self-built).
The recipe 'dtb-files' is MACHINE-dependent, so different DTB_FILES
may be deployed for different machines. At the same time, all these
'dtb-files-${MACHINE}' targets depend on the same kernel package, so
it is built only once.
The case when different distros (e.g., bullseye/bookworm) are using the
same name for DTB binaries is covered by the patch 1. It also covers
the case when image uses different kernel suffix (e.g., "realtime"
option for the kernel in some downstreams).
Related topics on maillist:
https://groups.google.com/g/isar-users/c/ht3YmKZcJlM
https://groups.google.com/g/isar-users/c/4BRDM02xC40
https://groups.google.com/g/isar-users/c/qAnjahjjfsw
https://groups.google.com/g/isar-users/c/ZMD4XY4dKWQ
https://groups.google.com/g/isar-users/c/PSGU_AcdPZ8
https://groups.google.com/g/isar-users/c/Va0Ue-ISYeA
https://groups.google.com/g/isar-users/c/ixzytHYnTmI
Changes since v4:
- Rebase on next.
- Squash latest patch to first one.
- Fix deploy paths in initrd tests.
Changes since v3:
- Rebase on next.
- Fix target deploy dir path for installer.
Changes since v2:
- Patch 1: Consider also kernel suffix.
- Patch 2: Use separate testcase for possible dtb clashes.
- Minor cosmetic fixes.
Changes since v1:
- Separate `dtb-files` recipe used instead of linux one
- Included older "[PATCH] Fix do_copy_boot_files error" into the
series ( https://groups.google.com/g/isar-users/c/Va0Ue-ISYeA )
Anton Mikanovich (1):
testsuite: Add test to check dtb deployment
Ilia Skochilov (1):
meta: Fix do_copy_boot_files error for different distros of same
machine
Uladzimir Bely (1):
meta: Move DTB deployment to a separate dtb-files recipe
RECIPE-API-CHANGELOG.md | 15 +++++++
.../installer-add-rootfs.bbclass | 4 +-
meta/classes-recipe/image.bbclass | 15 +++----
meta/conf/bitbake.conf | 2 +-
meta/recipes-kernel/dtb-files/dtb-files.bb | 41 +++++++++++++++++++
testsuite/citest.py | 30 ++++++++++++--
6 files changed, 92 insertions(+), 15 deletions(-)
create mode 100644 meta/recipes-kernel/dtb-files/dtb-files.bb
--
2.43.0
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260206122910.248334-1-amikan%40ilbers.de.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 1/3] meta: Fix do_copy_boot_files error for different distros of same machine
2026-02-06 12:27 [PATCH v5 0/3] Deploy DTBs with separate recipe Anton Mikanovich
@ 2026-02-06 12:27 ` Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 2/3] testsuite: Add test to check dtb deployment Anton Mikanovich
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Anton Mikanovich @ 2026-02-06 12:27 UTC (permalink / raw)
To: isar-users
Cc: Ilia Skochilov, Uladzimir Bely, Badrikesh Prusty, Anton Mikanovich
From: Ilia Skochilov <iskochilov@ilbers.de>
When building different distros with the same machine (e.g.,
phyboard-mira-bullseye and phyboard-mira-bookworm) it happens that
some files with the same name (e.g, DTB files) are deployed
to the same location and this causes build error.
Use DISTRO- and KERNEL- dependent deploy directory.
Also fix paths in installer and testsuite.
Signed-off-by: Ilia Skochilov <iskochilov@ilbers.de>
Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
Signed-off-by: Badrikesh Prusty <badrikesh.prusty@siemens.com>
Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
RECIPE-API-CHANGELOG.md | 15 +++++++++++++++
.../classes-recipe/installer-add-rootfs.bbclass | 4 +++-
meta/conf/bitbake.conf | 2 +-
testsuite/citest.py | 7 ++++---
4 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
index 0bad8a44..6d7f12b2 100644
--- a/RECIPE-API-CHANGELOG.md
+++ b/RECIPE-API-CHANGELOG.md
@@ -962,3 +962,18 @@ INSTALLER_UNATTENDED_ABORT_ENABLE = "1"
# Optional: set countdown timeout in seconds (default 5)
INSTALLER_UNATTENDED_ABORT_TIMEOUT = "5"
```
+
+### Change DEPLOY_DIR_IMAGE path
+
+Change DEPLOY_DIR_IMAGE from ${DEPLOY_DIR}/images/${MACHINE} to
+${DEPLOY_DIR}/images/${MACHINE}-${DISTRO}-${KERNEL_NAME}. When building
+different distros with the same machine the following error occurs:
+
+do_copy_boot_files: The recipe isar-image-base is trying to install files
+into a shared area when those files already exists. It happens when some
+files have the same names (e.g., dtb files) for different distros.
+
+To prevent this new path is separated also by distro and kernel values.
+
+This change will influence on build artifacts location and should be taken
+into account by downstreams.
diff --git a/meta-isar/classes-recipe/installer-add-rootfs.bbclass b/meta-isar/classes-recipe/installer-add-rootfs.bbclass
index 2fa551bd..b79c2357 100644
--- a/meta-isar/classes-recipe/installer-add-rootfs.bbclass
+++ b/meta-isar/classes-recipe/installer-add-rootfs.bbclass
@@ -13,7 +13,9 @@ INSTALLER_TARGET_IMAGES ??= "${INSTALLER_TARGET_IMAGE}"
INSTALLER_TARGET_MC ??= "installer-target"
INSTALLER_TARGET_DISTRO ??= "${DISTRO}"
INSTALLER_TARGET_MACHINE ??= "${MACHINE}"
-INSTALLER_TARGET_DEPLOY_DIR_IMAGE ??= "${DEPLOY_DIR}/images/${INSTALLER_TARGET_MACHINE}"
+INSTALLER_TARGET_KERNEL_NAME ??= "${KERNEL_NAME}"
+INSTALLER_TARGET_DEPLOY_DIR_POSTFIX ??= "${@ ('-'+d.getVar('INSTALLER_TARGET_KERNEL_NAME')) if d.getVar('INSTALLER_TARGET_KERNEL_NAME') else ''}"
+INSTALLER_TARGET_DEPLOY_DIR_IMAGE ??= "${DEPLOY_DIR}/images/${INSTALLER_TARGET_MACHINE}-${INSTALLER_TARGET_DISTRO}${INSTALLER_TARGET_DEPLOY_DIR_POSTFIX}"
IMAGE_DATA_FILE ??= "${INSTALLER_TARGET_IMAGE}-${INSTALLER_TARGET_DISTRO}-${INSTALLER_TARGET_MACHINE}"
IMAGE_DATA_POSTFIX ??= "wic.zst"
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 0f84e715..ad3d6b53 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -57,7 +57,7 @@ WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}/${PV}-${PR}"
GIT_DL_LINK_DIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}"
DEPLOY_DIR_BOOTSTRAP = "${DEPLOY_DIR}/bootstrap"
DEPLOY_DIR_SDKCHROOT = "${DEPLOY_DIR}/sdkchroot"
-DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}"
+DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}-${DISTRO}${@ ('-'+d.getVar('KERNEL_NAME')) if d.getVar('KERNEL_NAME') else ''}"
DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
SSTATE_MANIFESTS = "${TMPDIR}/sstate-control/${DISTRO}-${DISTRO_ARCH}"
diff --git a/testsuite/citest.py b/testsuite/citest.py
index f11cd5af..8047c42c 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -496,8 +496,9 @@ class InitRdBaseTest(CIBaseTest):
super().init()
self.deploy_dir = os.path.join(self.build_dir, 'tmp', 'deploy')
- def deploy_dir_image(self, machine):
- return os.path.join(self.deploy_dir, 'images', machine)
+ def deploy_dir_image(self, mc, image):
+ multiconfig = f"{mc}:{image}"
+ return CIUtils.getVars('DEPLOY_DIR_IMAGE', target=multiconfig)
def dracut_in_image(self, targets):
machine = 'qemuamd64'
@@ -526,7 +527,7 @@ class InitRdBaseTest(CIBaseTest):
bb_should_fail=False):
mc = f'mc:{machine}-{distro.removeprefix("debian-")}'
initrd_image = f'{initrd}-{distro}-{machine}-initrd.img'
- initrd_path = os.path.join(self.deploy_dir_image(machine), initrd_image)
+ initrd_path = os.path.join(self.deploy_dir_image(mc, initrd), initrd_image)
# cleansstate if the initrd image was already built/deployed to verify
# that a new build does result in the image being deployed
--
2.43.0
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260206122910.248334-2-amikan%40ilbers.de.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 2/3] testsuite: Add test to check dtb deployment
2026-02-06 12:27 [PATCH v5 0/3] Deploy DTBs with separate recipe Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 1/3] meta: Fix do_copy_boot_files error for different distros of same machine Anton Mikanovich
@ 2026-02-06 12:27 ` Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe Anton Mikanovich
2026-02-09 14:31 ` [PATCH v5 0/3] Deploy DTBs with separate recipe Zhihang Wei
3 siblings, 0 replies; 8+ messages in thread
From: Anton Mikanovich @ 2026-02-06 12:27 UTC (permalink / raw)
To: isar-users; +Cc: Anton Mikanovich
Build several images in parallel to catch all possible conflicts
between deployed DTB files:
- Same distro/machine, different images.
- Same machine, different distros.
Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
testsuite/citest.py | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/testsuite/citest.py b/testsuite/citest.py
index 8047c42c..bed0505b 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -678,6 +678,29 @@ class WicTest(CIBaseTest):
)
+class DtbDeployTest(CIBaseTest):
+
+ """
+ Build some targets potentially causing DTB deploy issues.
+ Cover cases:
+ - Same machine, different distros
+ - Same machine/distro, different images
+
+ :avocado: tags=dtbdeploy,full
+ """
+
+ def test_dtb_deploy(self):
+ targets = [
+ 'mc:phyboard-mira-bullseye:isar-image-base',
+ 'mc:phyboard-mira-bullseye:isar-image-ci',
+ 'mc:phyboard-mira-bookworm:isar-image-base',
+ 'mc:phyboard-mira-bookworm:isar-image-ci',
+ ]
+
+ self.init()
+ self.perform_build_test(targets)
+
+
class NoCrossTest(CIBaseTest):
"""
--
2.43.0
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260206122910.248334-3-amikan%40ilbers.de.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe
2026-02-06 12:27 [PATCH v5 0/3] Deploy DTBs with separate recipe Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 1/3] meta: Fix do_copy_boot_files error for different distros of same machine Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 2/3] testsuite: Add test to check dtb deployment Anton Mikanovich
@ 2026-02-06 12:27 ` Anton Mikanovich
2026-02-06 13:39 ` 'Jan Kiszka' via isar-users
2026-02-09 14:31 ` [PATCH v5 0/3] Deploy DTBs with separate recipe Zhihang Wei
3 siblings, 1 reply; 8+ messages in thread
From: Anton Mikanovich @ 2026-02-06 12:27 UTC (permalink / raw)
To: isar-users; +Cc: Uladzimir Bely, Anton Mikanovich
From: Uladzimir Bely <ubely@ilbers.de>
Task do_copy_boot_files was deploying DTB files into the same location
for different images (e.g. -base or -debug). This causes build issue.
Introduce `dtb-files` recipe responsible for the extraction of DTBs
from linux-image package (distro or self-built) and their deployment.
Different images for the same machine now depend on this recipe and
shouldn't cause parallel execution issues.
Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
meta/classes-recipe/image.bbclass | 15 +++-----
meta/recipes-kernel/dtb-files/dtb-files.bb | 41 ++++++++++++++++++++++
2 files changed, 46 insertions(+), 10 deletions(-)
create mode 100644 meta/recipes-kernel/dtb-files/dtb-files.bb
diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass
index e605bc80..dc599535 100644
--- a/meta/classes-recipe/image.bbclass
+++ b/meta/classes-recipe/image.bbclass
@@ -372,6 +372,11 @@ INITRD_IMG = "${PP_DEPLOY}/${INITRD_DEPLOY_FILE}"
# only one dtb file supported, pick the first
DTB_IMG = "${PP_DEPLOY}/${@(d.getVar('DTB_FILES').split() or [''])[0]}"
+python() {
+ if d.getVar('DTB_FILES'):
+ d.appendVarFlag("do_copy_boot_files", "depends", "dtb-files-${MACHINE}:do_deploy")
+}
+
do_copy_boot_files[cleandirs] += "${DEPLOYDIR}"
do_copy_boot_files[sstate-inputdirs] = "${DEPLOYDIR}"
do_copy_boot_files[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
@@ -385,16 +390,6 @@ do_copy_boot_files() {
sudo cat "$kernel" > "${DEPLOYDIR}/${KERNEL_IMAGE}"
fi
- for file in ${DTB_FILES}; do
- dtb="$(find '${IMAGE_ROOTFS}/usr/lib' -type f \
- -iwholename '*linux-image-*/'${file} | head -1)"
-
- if [ -z "$dtb" -o ! -e "$dtb" ]; then
- die "${file} not found"
- fi
-
- cp -f "$dtb" "${DEPLOYDIR}/"
- done
}
addtask copy_boot_files before do_rootfs_postprocess after do_rootfs_install
diff --git a/meta/recipes-kernel/dtb-files/dtb-files.bb b/meta/recipes-kernel/dtb-files/dtb-files.bb
new file mode 100644
index 00000000..f64b4845
--- /dev/null
+++ b/meta/recipes-kernel/dtb-files/dtb-files.bb
@@ -0,0 +1,41 @@
+# This software is a part of Isar.
+# Copyright (C) ilbers GmbH, 2025
+#
+# SPDX-License-Identifier: MIT
+
+inherit dpkg-raw
+
+PN:append = "-${MACHINE}"
+
+KERNEL_IMAGE_PKG ??= "${@ ("linux-image-" + d.getVar("KERNEL_NAME")) if d.getVar("KERNEL_NAME") else ""}"
+
+DEPENDS = "${KERNEL_IMAGE_PKG}"
+DEBIAN_BUILD_DEPENDS = "${KERNEL_IMAGE_PKG}"
+
+DPKG_ARCH = "${PACKAGE_ARCH}"
+
+do_prepare_build:append() {
+ for dtb in ${DTB_FILES}; do
+ dir=debian/${PN}/usr/lib/${PN}/$(dirname ${dtb})
+ cat <<EOF >> ${S}/debian/rules
+ mkdir -p ${dir}
+ find /usr/lib/linux-image* -path "*${dtb}" -print -exec cp {} ${dir} \;
+EOF
+ done
+}
+
+DTB_PACKAGE ??= "${PN}_${CHANGELOG_V}_${DISTRO_ARCH}.deb"
+
+do_deploy[dirs] = "${DEPLOY_DIR_IMAGE}"
+do_deploy[cleandirs] = "${WORKDIR}/deploy"
+do_deploy() {
+ dpkg --fsys-tarfile ${WORKDIR}/${DTB_PACKAGE} | \
+ tar --wildcards --extract --directory ${WORKDIR}/deploy ./usr/lib/${PN}
+ for dtb in ${DTB_FILES}; do
+ mkdir -p ${DEPLOY_DIR_IMAGE}/$(dirname ${dtb})
+ find ${WORKDIR}/deploy/usr/lib/${PN} -path "*${dtb}" -print \
+ -exec cp {} ${DEPLOY_DIR_IMAGE}/${dtb} \;
+ done
+}
+
+addtask deploy before do_deploy_deb after do_dpkg_build
--
2.43.0
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/20260206122910.248334-4-amikan%40ilbers.de.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe
2026-02-06 12:27 ` [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe Anton Mikanovich
@ 2026-02-06 13:39 ` 'Jan Kiszka' via isar-users
2026-02-11 11:12 ` Baurzhan Ismagulov
0 siblings, 1 reply; 8+ messages in thread
From: 'Jan Kiszka' via isar-users @ 2026-02-06 13:39 UTC (permalink / raw)
To: Anton Mikanovich, isar-users; +Cc: Uladzimir Bely
On 06.02.26 13:27, Anton Mikanovich wrote:
> From: Uladzimir Bely <ubely@ilbers.de>
>
> Task do_copy_boot_files was deploying DTB files into the same location
> for different images (e.g. -base or -debug). This causes build issue.
>
But this still doesn't justify this redundant extraction. Adjust the
deployment paths and be done.
Jan
> Introduce `dtb-files` recipe responsible for the extraction of DTBs
> from linux-image package (distro or self-built) and their deployment.
>
> Different images for the same machine now depend on this recipe and
> shouldn't cause parallel execution issues.
>
> Signed-off-by: Uladzimir Bely <ubely@ilbers.de>
> Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
> ---
> meta/classes-recipe/image.bbclass | 15 +++-----
> meta/recipes-kernel/dtb-files/dtb-files.bb | 41 ++++++++++++++++++++++
> 2 files changed, 46 insertions(+), 10 deletions(-)
> create mode 100644 meta/recipes-kernel/dtb-files/dtb-files.bb
>
> diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass
> index e605bc80..dc599535 100644
> --- a/meta/classes-recipe/image.bbclass
> +++ b/meta/classes-recipe/image.bbclass
> @@ -372,6 +372,11 @@ INITRD_IMG = "${PP_DEPLOY}/${INITRD_DEPLOY_FILE}"
> # only one dtb file supported, pick the first
> DTB_IMG = "${PP_DEPLOY}/${@(d.getVar('DTB_FILES').split() or [''])[0]}"
>
> +python() {
> + if d.getVar('DTB_FILES'):
> + d.appendVarFlag("do_copy_boot_files", "depends", "dtb-files-${MACHINE}:do_deploy")
> +}
> +
> do_copy_boot_files[cleandirs] += "${DEPLOYDIR}"
> do_copy_boot_files[sstate-inputdirs] = "${DEPLOYDIR}"
> do_copy_boot_files[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
> @@ -385,16 +390,6 @@ do_copy_boot_files() {
> sudo cat "$kernel" > "${DEPLOYDIR}/${KERNEL_IMAGE}"
> fi
>
> - for file in ${DTB_FILES}; do
> - dtb="$(find '${IMAGE_ROOTFS}/usr/lib' -type f \
> - -iwholename '*linux-image-*/'${file} | head -1)"
> -
> - if [ -z "$dtb" -o ! -e "$dtb" ]; then
> - die "${file} not found"
> - fi
> -
> - cp -f "$dtb" "${DEPLOYDIR}/"
> - done
> }
> addtask copy_boot_files before do_rootfs_postprocess after do_rootfs_install
>
> diff --git a/meta/recipes-kernel/dtb-files/dtb-files.bb b/meta/recipes-kernel/dtb-files/dtb-files.bb
> new file mode 100644
> index 00000000..f64b4845
> --- /dev/null
> +++ b/meta/recipes-kernel/dtb-files/dtb-files.bb
> @@ -0,0 +1,41 @@
> +# This software is a part of Isar.
> +# Copyright (C) ilbers GmbH, 2025
> +#
> +# SPDX-License-Identifier: MIT
> +
> +inherit dpkg-raw
> +
> +PN:append = "-${MACHINE}"
> +
> +KERNEL_IMAGE_PKG ??= "${@ ("linux-image-" + d.getVar("KERNEL_NAME")) if d.getVar("KERNEL_NAME") else ""}"
> +
> +DEPENDS = "${KERNEL_IMAGE_PKG}"
> +DEBIAN_BUILD_DEPENDS = "${KERNEL_IMAGE_PKG}"
> +
> +DPKG_ARCH = "${PACKAGE_ARCH}"
> +
> +do_prepare_build:append() {
> + for dtb in ${DTB_FILES}; do
> + dir=debian/${PN}/usr/lib/${PN}/$(dirname ${dtb})
> + cat <<EOF >> ${S}/debian/rules
> + mkdir -p ${dir}
> + find /usr/lib/linux-image* -path "*${dtb}" -print -exec cp {} ${dir} \;
> +EOF
> + done
> +}
> +
> +DTB_PACKAGE ??= "${PN}_${CHANGELOG_V}_${DISTRO_ARCH}.deb"
> +
> +do_deploy[dirs] = "${DEPLOY_DIR_IMAGE}"
> +do_deploy[cleandirs] = "${WORKDIR}/deploy"
> +do_deploy() {
> + dpkg --fsys-tarfile ${WORKDIR}/${DTB_PACKAGE} | \
> + tar --wildcards --extract --directory ${WORKDIR}/deploy ./usr/lib/${PN}
> + for dtb in ${DTB_FILES}; do
> + mkdir -p ${DEPLOY_DIR_IMAGE}/$(dirname ${dtb})
> + find ${WORKDIR}/deploy/usr/lib/${PN} -path "*${dtb}" -print \
> + -exec cp {} ${DEPLOY_DIR_IMAGE}/${dtb} \;
> + done
> +}
> +
> +addtask deploy before do_deploy_deb after do_dpkg_build
--
Siemens AG, Foundational Technologies
Linux Expert Center
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/9a13a7a0-0f74-4730-929c-dfdc981ededb%40siemens.com.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/3] Deploy DTBs with separate recipe
2026-02-06 12:27 [PATCH v5 0/3] Deploy DTBs with separate recipe Anton Mikanovich
` (2 preceding siblings ...)
2026-02-06 12:27 ` [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe Anton Mikanovich
@ 2026-02-09 14:31 ` Zhihang Wei
3 siblings, 0 replies; 8+ messages in thread
From: Zhihang Wei @ 2026-02-09 14:31 UTC (permalink / raw)
To: Anton Mikanovich, isar-users
On 2/6/26 13:27, Anton Mikanovich wrote:
> Image task "do_copy_boot_files" is used to deploy kernel, initrd and
> devicetree binaries to deploy directory.
>
> When different images for the same target are built (e.g., "-base" and
> "-debug") in parallel, this causes issues with DTB deployment since
> they have no any image_name-specific stuff in the path, unlike kernel
> and initrd.
>
> Here we make a separate recipe responsible for the DTB deployment.
> DTBs are extracted from the kernel package (provided by distro or
> self-built).
>
> The recipe 'dtb-files' is MACHINE-dependent, so different DTB_FILES
> may be deployed for different machines. At the same time, all these
> 'dtb-files-${MACHINE}' targets depend on the same kernel package, so
> it is built only once.
>
> The case when different distros (e.g., bullseye/bookworm) are using the
> same name for DTB binaries is covered by the patch 1. It also covers
> the case when image uses different kernel suffix (e.g., "realtime"
> option for the kernel in some downstreams).
>
> Related topics on maillist:
>
> https://groups.google.com/g/isar-users/c/ht3YmKZcJlM
> https://groups.google.com/g/isar-users/c/4BRDM02xC40
> https://groups.google.com/g/isar-users/c/qAnjahjjfsw
> https://groups.google.com/g/isar-users/c/ZMD4XY4dKWQ
> https://groups.google.com/g/isar-users/c/PSGU_AcdPZ8
> https://groups.google.com/g/isar-users/c/Va0Ue-ISYeA
> https://groups.google.com/g/isar-users/c/ixzytHYnTmI
>
> Changes since v4:
> - Rebase on next.
> - Squash latest patch to first one.
> - Fix deploy paths in initrd tests.
>
> Changes since v3:
> - Rebase on next.
> - Fix target deploy dir path for installer.
>
> Changes since v2:
> - Patch 1: Consider also kernel suffix.
> - Patch 2: Use separate testcase for possible dtb clashes.
> - Minor cosmetic fixes.
>
> Changes since v1:
> - Separate `dtb-files` recipe used instead of linux one
> - Included older "[PATCH] Fix do_copy_boot_files error" into the
> series ( https://groups.google.com/g/isar-users/c/Va0Ue-ISYeA )
>
> Anton Mikanovich (1):
> testsuite: Add test to check dtb deployment
>
> Ilia Skochilov (1):
> meta: Fix do_copy_boot_files error for different distros of same
> machine
>
> Uladzimir Bely (1):
> meta: Move DTB deployment to a separate dtb-files recipe
>
> RECIPE-API-CHANGELOG.md | 15 +++++++
> .../installer-add-rootfs.bbclass | 4 +-
> meta/classes-recipe/image.bbclass | 15 +++----
> meta/conf/bitbake.conf | 2 +-
> meta/recipes-kernel/dtb-files/dtb-files.bb | 41 +++++++++++++++++++
> testsuite/citest.py | 30 ++++++++++++--
> 6 files changed, 92 insertions(+), 15 deletions(-)
> create mode 100644 meta/recipes-kernel/dtb-files/dtb-files.bb
>
Hi, from CI side there is at least one confirmed error:
In full, "citest.py:NoCrossTest.test_nocross" failed when building target
'mc:qemuamd64-iso-bookworm:isar-image-ci'.
Log follows:
ERROR: mc:qemuamd64-iso-bookworm:isar-image-ci-1.0-r0 do_image_wic:
ExecutionError('/work/build/tmp/work/debian-bookworm-amd64/isar-image-ci-qemuamd64-iso/1.0-r0/temp/run.do_image_wic.94122',
1, None, None)
ERROR: Logfile of failure stored in:
/work/build/tmp/work/debian-bookworm-amd64/isar-image-ci-qemuamd64-iso/1.0-r0/temp/log.do_image_wic.94122
ERROR: Task
(mc:qemuamd64-iso-bookworm:/work/build/../meta-test/recipes-core/images/isar-image-ci.bb:do_image_wic)
failed with exit code '1'
And log.do_image_wic.94122:
......
Setting up grub-common (2.06-13+deb12u1) ...
Setting up grub-efi-amd64-bin (2.06-13+deb12u1) ...
Processing triggers for libc-bin (2.36-9+deb12u13) ...
Processing triggers for man-db (2.11.2-2) ...
INFO: Creating image(s)...
ERROR: _exec_cmd: cd
/tmp/isar-image-ci-debian-bookworm-qemuamd64-iso.wic/tmp.wic.27jkr5qc/INITRD
&& find . | cpio -o -H newc -R root:root
>/tmp/isar-image-ci-debian-bookworm-qemuamd64-iso.wic/tmp.wic.27jkr5qc/initrd.cpio
returned '127' instead of 0
output: /bin/sh: 1: cpio: not found
To redo the test using avocado:
1. Have a clean clone of isar, checkout to branch next and apply your
patches:
$ git clone -b next https://github.com/ilbers/isar.git
$ cd isar
$ git am /path-to/0001-my-contribution-to-isar.patch
2. Disable unrelated targets to make error appears faster, by applying
the following diff to "testsuite/citest.py":
diff --git a/testsuite/citest.py b/testsuite/citest.py
index bed0505b..8586f76b 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -711,36 +711,7 @@ class NoCrossTest(CIBaseTest):
def test_nocross(self):
targets = [
- 'mc:qemuarm-buster:isar-image-ci',
- 'mc:qemuarm-bullseye:isar-image-base',
- 'mc:qemuarm64-bullseye:isar-image-base',
- 'mc:qemuarm64-bookworm:isar-image-ci',
- 'mc:qemui386-buster:isar-image-base',
- 'mc:qemui386-bullseye:isar-image-base',
- 'mc:qemuamd64-buster:isar-image-ci',
- 'mc:qemuamd64-bullseye:isar-initramfs',
- 'mc:qemumipsel-bullseye:isar-image-base',
- 'mc:imx6-sabrelite-bullseye:isar-image-base',
- 'mc:phyboard-mira-bullseye:isar-image-base',
- 'mc:hikey-bullseye:isar-image-base',
- 'mc:virtualbox-bullseye:isar-image-base',
- 'mc:virtualbox-bookworm:isar-image-base',
- 'mc:bananapi-bullseye:isar-image-base',
- 'mc:bananapi-bookworm:isar-image-base',
- 'mc:nanopi-neo-bullseye:isar-image-base',
- 'mc:nanopi-neo-bookworm:isar-image-base',
- 'mc:qemuamd64-focal:isar-image-ci',
- 'mc:qemuamd64-bookworm:isar-image-ci',
'mc:qemuamd64-iso-bookworm:isar-image-ci',
- 'mc:qemui386-bookworm:isar-image-base',
- 'mc:qemumipsel-bookworm:isar-image-ci',
- 'mc:hikey-bookworm:isar-image-base',
- 'mc:beagleplay-bookworm:isar-image-base',
- 'mc:qemuarm64-noble:isar-image-base',
- 'mc:qemuamd64-noble:isar-image-base',
- 'mc:qemuamd64-jammy:isar-image-base',
- 'mc:qemuarm64-jammy:isar-image-base',
- 'mc:x86-pc-bookworm:isar-image-base',
]
self.init()
3. Run kas shell, setup CI prerequisites (avocado, qemu) and cleanup:
$ ./kas/kas-container shell kas/isar.yaml --command \
"rm -rf /work/build/conf && /work/scripts/ci_setup.sh"
4. Run the failed test:
$ cd /work/testsuite
$ avocado run citest.py:NoCrossTest.test_nocross$
(took ~6 minutes on my laptop for this error to show up)
There are other errors but I believe they are caused by network
failures. I'm re-testing them
now. Otherwise I'll let you know.
Zhihang
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/73a7e61b-150e-485f-93a1-ec752d83035e%40ilbers.de.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe
2026-02-06 13:39 ` 'Jan Kiszka' via isar-users
@ 2026-02-11 11:12 ` Baurzhan Ismagulov
2026-02-12 6:49 ` 'Jan Kiszka' via isar-users
0 siblings, 1 reply; 8+ messages in thread
From: Baurzhan Ismagulov @ 2026-02-11 11:12 UTC (permalink / raw)
To: isar-users; +Cc: Anton Mikanovich, Uladzimir Bely, Jan Kiszka
On 2026-02-06 14:39, 'Jan Kiszka' via isar-users wrote:
> > Task do_copy_boot_files was deploying DTB files into the same location
> > for different images (e.g. -base or -debug). This causes build issue.
>
> But this still doesn't justify this redundant extraction. Adjust the
> deployment paths and be done.
Currently, the deployment is done in the image. Two images deploying to the
same dtb path cause conflicts (with sstate-cache, IIRC). Detaching the
deployment from the image and attaching it to the kernel is addressing this.
We'll split the testcases to demonstrate this issue.
With kind regards,
Baurzhan
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/aYxkMEGLkQbvJyCD%40abai.de.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe
2026-02-11 11:12 ` Baurzhan Ismagulov
@ 2026-02-12 6:49 ` 'Jan Kiszka' via isar-users
0 siblings, 0 replies; 8+ messages in thread
From: 'Jan Kiszka' via isar-users @ 2026-02-12 6:49 UTC (permalink / raw)
To: isar-users, Anton Mikanovich, Uladzimir Bely
On 11.02.26 12:12, Baurzhan Ismagulov wrote:
> On 2026-02-06 14:39, 'Jan Kiszka' via isar-users wrote:
>>> Task do_copy_boot_files was deploying DTB files into the same location
>>> for different images (e.g. -base or -debug). This causes build issue.
>>
>> But this still doesn't justify this redundant extraction. Adjust the
>> deployment paths and be done.
>
> Currently, the deployment is done in the image. Two images deploying to the
> same dtb path cause conflicts (with sstate-cache, IIRC). Detaching the
> deployment from the image and attaching it to the kernel is addressing this.
> We'll split the testcases to demonstrate this issue.
This is not the problem of the image recipes deploying, it's a problem
of the deploying to the same path. That's why I doubt this solution.
Jan
--
Siemens AG, Foundational Technologies
Linux Expert Center
--
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/09e3a5af-c3a6-47db-beb9-fea9fde041a7%40siemens.com.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-02-12 6:49 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-06 12:27 [PATCH v5 0/3] Deploy DTBs with separate recipe Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 1/3] meta: Fix do_copy_boot_files error for different distros of same machine Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 2/3] testsuite: Add test to check dtb deployment Anton Mikanovich
2026-02-06 12:27 ` [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe Anton Mikanovich
2026-02-06 13:39 ` 'Jan Kiszka' via isar-users
2026-02-11 11:12 ` Baurzhan Ismagulov
2026-02-12 6:49 ` 'Jan Kiszka' via isar-users
2026-02-09 14:31 ` [PATCH v5 0/3] Deploy DTBs with separate recipe Zhihang Wei
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox