wic shells out to a range of host tools but does not declare them, so wherever it is installed as a package it works only by chance depending on what the host has installed. The do_image_wic task does not have that problem: image_types_wic.bbclass makes the image recipe depend on the -native recipe of each tool, so they are all in the image's own native sysroot by the time wic runs. Nothing outside that task gets the same treatment.
Patch 1 narrows wic-tools to staging wic's host tools: the target bootloader firmware (syslinux, grub-efi, systemd-boot) it depended on for the wic oe-selftest is now built by that oe-selftest instead. Which firmware is needed depends on the plugins a .wks uses, so it belongs to whoever supplies the .wks, not to wic-tools. Images already work that way through WKS_FILE_DEPENDS in image_types_wic.bbclass, and now the oe-selftest does too. Patch 2 removes a dependency that outlived its reason. wic gained virtual/cross-binutils in 2022 because its EFI boot image plugin assembled unified kernel images and needed cross-objcopy. That plugin stopped doing so in 2024 and now points at uki.bbclass, which declares virtual/cross-binutils itself. Nothing wic runs invokes objcopy any more. Patch 3 gives the tool list a single home and uses it. wic declares the host tools it runs as RDEPENDS, so they are installed alongside it in every variant that packages it; and the two other copies of that list go away in the same patch. wic-tools and image_types_wic.bbclass had written it out separately and drifted apart; both now just depend on wic-native, and native.bbclass's do_populate_sysroot[rdeptask] stages everything wic runtime-depends on. Three things stay written out. cdrtools has only a native recipe in oe-core, so there is no package a target or nativesdk wic could name, even though wic does run mkisofs; the build host gets it from wic-tools and from WKS_FILE_DEPENDS. grub is bootloader territory, which belongs to whatever drives wic. pseudo is wic-tools staging what the oe-selftest needs. Patches 4 and 5 are follow-on cleanups of the wic oe-selftest: drop a dead in-tree wic lookup, and drop the redundant per-test PATH overrides that duplicated what the test setup already establishes. Patch 6 fixes a dependency that has been on the wrong axis since 2019: an image depends on syslinux-native when the build host is x86, but it is the target that decides whether a .wks needs it, so an x86 image built on a non-x86 host ends up with the bootloader but not the installer. That is bug 16383, which carries the full history: https://bugzilla.yoctoproject.org/show_bug.cgi?id=16383 changes in v6: - new patch 2: drop the obsolete virtual/cross-binutils dependency from wic-tools and image_types_wic.bbclass. It comes before the tool-list patch so that patch does not have to describe wic-tools as needing binutils only for it to be removed shortly afterwards. - drop the shared conf/wic-helper-tools.inc that v5 added. Review pointed out that once wic has the RDEPENDS, a consumer can just depend on wic-native and let do_populate_sysroot[rdeptask] do the rest, which is true and removes the need for a list to keep in sync. The tool list now lives only in the wic recipe. - the tool list is now defined and used in one patch rather than two: wic gets the RDEPENDS, and image_types_wic.bbclass and wic-tools take the tools from wic-native, together. Images still gain tar-native and util-linux-native relative to master, which was the drift v5 was fixing. - retitle the syslinux patch with an image_types_wic prefix, and gate WKS_FILE_DEPENDS_DEFAULT with target-arch appends now that the shared variable is gone. wic-tools keeps the arch-gated DEPENDS it already had on master. changes in v5: - the SDK_FEATURES half of the v4 series (patches 5 to 10) is not here. Reworking it to resolve features at the class level, as review asked, turned it into a larger piece of work than the wic changes it was travelling with, so it is being finished and sent as its own series. - new patch: one shared list of the tools wic runs, replacing the three copies that had drifted apart. Images gain tar-native and util-linux-native, which only wic-tools staged before. - new patch: gate syslinux-native on the target rather than the build host [YOCTO #13276] - wic RDEPENDS patch: drop the bootloader (grub, syslinux) RDEPENDS entirely; wic declares only the host tools it runs. The bootloader firmware wic copies into an image is the responsibility of whatever drives wic (the oe-selftest, and image_types_wic.bbclass via WKS_FILE_DEPENDS), not of the wic package. This also removes the arch-gating that the v4 grub/syslinux RDEPENDS required. - drastically trimmed the commit messages and in-tree comments throughout the series changes in v4: - new patch 1: move the target bootloader firmware out of wic-tools and stage it from the wic oe-selftest instead, so wic-tools carries only the host tools wic runs - new selftest cleanups (drop the dead COREBASE/scripts wic lookup and the redundant per-test PATH overrides) changes in v3: - list the tools on all variants rather than only the nativesdk variant changes in v2: - dropped the wic-tools.inc refactor; folded the tool list into the wic recipe - reworked the buildtools-extended-tarball change into a plain removal Trevor Woerner (6): wic-tools: drop the target bootloader firmware image_types_wic, wic-tools: drop the obsolete cross-binutils dependency wic: add runtime dependencies on the tools it invokes oeqa/selftest/wic: drop dead COREBASE/scripts wic lookup oeqa/selftest/wic: drop redundant per-test PATH overrides image_types_wic: gate syslinux-native on the target, not the build host meta/classes-recipe/image_types_wic.bbclass | 10 +- meta/lib/oeqa/selftest/cases/wic.py | 842 +++++++++----------- meta/recipes-core/meta/wic-tools.bb | 13 +- meta/recipes-support/wic/wic_0.3.1.bb | 12 + 4 files changed, 414 insertions(+), 463 deletions(-) -- 2.50.0.173.g8b6f19ccfc3a
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#242509): https://lists.openembedded.org/g/openembedded-core/message/242509 Mute This Topic: https://lists.openembedded.org/mt/120558611/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
