All of lore.kernel.org
 help / color / mirror / Atom feed
From: Trevor Woerner <twoerner@gmail.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH v6 0/6] wic: ship the tools it invokes
Date: Sat,  1 Aug 2026 22:09:54 -0400	[thread overview]
Message-ID: <20260802021000.2886095-1-twoerner@gmail.com> (raw)

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



             reply	other threads:[~2026-08-02  2:10 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-02  2:09 Trevor Woerner [this message]
2026-08-02  2:09 ` [PATCH v6 1/6] wic-tools: drop the target bootloader firmware Trevor Woerner
2026-08-02  2:09 ` [PATCH v6 2/6] image_types_wic, wic-tools: drop the obsolete cross-binutils dependency Trevor Woerner
2026-08-02  2:09 ` [PATCH v6 3/6] wic: add runtime dependencies on the tools it invokes Trevor Woerner
2026-08-02  2:09 ` [PATCH v6 4/6] oeqa/selftest/wic: drop dead COREBASE/scripts wic lookup Trevor Woerner
2026-08-02  2:09 ` [PATCH v6 5/6] oeqa/selftest/wic: drop redundant per-test PATH overrides Trevor Woerner
2026-08-02  2:10 ` [PATCH v6 6/6] image_types_wic: gate syslinux-native on the target, not the build host Trevor Woerner

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=20260802021000.2886095-1-twoerner@gmail.com \
    --to=twoerner@gmail.com \
    --cc=openembedded-core@lists.openembedded.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.