mbox series

[v11,0/3] Move kernel artifacts deployment from image recipe

Message ID 20260609084422.3948645-1-amikan@ilbers.de
Headers show
Series Move kernel artifacts deployment from image recipe | expand

Message

Anton Mikanovich June 9, 2026, 8:44 a.m. UTC
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 move DTB deployment to the kernel recipe (for both distro and
custom kernel recipes), where DTBs and kernel image are extracted from
the kernel package.
For the distro kernels it means we install its deb into the schroot to
obtain the real artifacts from the filesystem.

To keep the same artifacts path as before "do_copy_boot_files" task is
now searching for the artifacts and create per-image symlinks.
In case any naming conflicts (like dtbs with the same name from
different kernels) the latest built dtb will be pointing by the
symlink, while both will be deployed to different subdirs without
conflicting and stay untouched.
This symlink creation is done in the same way as artifacts conficts are
handled by Yocto.

The case when different distros (e.g., bullseye/bookworm) are using the
same name for DTB binaries is covered by the patch 2. 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 v10:
- Rebase on next.
- Use the same deploy dir with per-kernel subdirs.
- Allow using different kernels for one machine.
- Restore paths for downstreams in Yocto way (symlinks).

Changes since v9:
- Base on v6.
- Rebase on next.
- Move also kernel deployment from image recipe.

Changes since v8:
- Rebase on next.
- Document how this approach differs from OpenEmbedded.

Changes since v7:
- Fix SOB.

Changes since v6:
- Fix isoimage-isohybrid-isar WIC plugin.
- Split testcases.
- Update wording.

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 (3):
  meta: Fix do_copy_boot_files error for different distros of same
    machine
  meta: Move kernel artifacts deployment from image recipe
  CI: Check kernel artifacts deployment

 RECIPE-API-CHANGELOG.md                       | 28 +++++++++++
 .../installer-add-rootfs.bbclass              |  2 +-
 meta/classes-recipe/image.bbclass             | 39 ++++++++--------
 meta/classes-recipe/linux-deploy.bbclass      | 46 +++++++++++++++++++
 meta/classes-recipe/linux-kernel.bbclass      |  3 ++
 meta/conf/bitbake.conf                        |  2 +-
 meta/recipes-kernel/linux/files/getkernel.sh  | 40 ++++++++++++++++
 meta/recipes-kernel/linux/files/rules.tmpl    | 12 +++++
 meta/recipes-kernel/linux/linux-distro.bb     | 27 +++++++++++
 testsuite/citest.py                           | 30 ++++++++----
 10 files changed, 199 insertions(+), 30 deletions(-)
 create mode 100644 meta/classes-recipe/linux-deploy.bbclass
 create mode 100755 meta/recipes-kernel/linux/files/getkernel.sh
 create mode 100644 meta/recipes-kernel/linux/files/rules.tmpl