public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: "'Jan Kiszka' via isar-users" <isar-users@googlegroups.com>
To: Anton Mikanovich <amikan@ilbers.de>, isar-users@googlegroups.com
Cc: Uladzimir Bely <ubely@ilbers.de>
Subject: Re: [PATCH v5 3/3] meta: Move DTB deployment to a separate dtb-files recipe
Date: Fri, 6 Feb 2026 14:39:33 +0100	[thread overview]
Message-ID: <9a13a7a0-0f74-4730-929c-dfdc981ededb@siemens.com> (raw)
In-Reply-To: <20260206122910.248334-4-amikan@ilbers.de>

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.

      reply	other threads:[~2026-02-06 13:39 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9a13a7a0-0f74-4730-929c-dfdc981ededb@siemens.com \
    --to=isar-users@googlegroups.com \
    --cc=amikan@ilbers.de \
    --cc=jan.kiszka@siemens.com \
    --cc=ubely@ilbers.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox