[PATCH v9 0/5] standalone wic

Trevor Woerner
2026-04-03T18:36:15Z

The wic utility will no longer be integrated into the oe-core
repository. However, the wic utility will continue to exist under The
Yocto Project umbrella. This will allow wic to be more easily used
independently of bitbake and oe-core.

The new home of wic is:
https://git.yoctoproject.org/wic

These changes have been tested with oe-selftest as follows:
$ sudo .../layers/openembedded-core/scripts/runqemu-gen-tapdevs <my numeric group id> 4
$ oe-selftest -r wic

The original patchset contained several more patches. Two patches that
were part of this set have already been accepted into oe-core, and
several patches that added "--vars <envfile>" options to many wic
invocations in the oe-selftests are no longer needed.

The order of the patches in this patchset is entirely different from
the order of the patches in previous patchsets. Although it had been
decided that it would be okay if patches in this series break the build
(then fix the build in later patches), it was pointed out that using
a different order would minimize (or eliminate) and breakages while
continuing to make small, incremental changes.

This version differs from previous versions as follows:
- the patch to provide the sector-size via the cmdline has already been
accepted, therefore it is dropped from this patchset
- a patch to fix a long-standing sparse_copy() bug was accepted into
oe-core already, therefore no changes are needed in this patchset to
work around the issue
- wic will continue to look in `wic` and `scripts/lib/wic/canned-wks`
directories for *wks files
- use bitbake to learn variable values if bitbake is available, previous
patchsets refused to use bitbake to discover variable values and
insisted on always using a --vars file, even if the bitbake program
was available
- by continuing to use bitbake (if available) most of the patches to
tweak the oe-selftests are no longer required (since they are run in
an environment where bitbake is available)
- reorder the patches in this series to minimize build breakages

In v8 the only patch was to upstream the sector-size cmdline option.

In v7 the code was changed to work around the sparse_copy() bug. That
bug was root-caused and sent upstream independently.

Changes in v6:
- many code and comment changes based on feedback from v5 on the mailing
list
- this version included many updates to add a cmdline argument for
sector-size, this support was added upstream independently
- a patch to add a ufs bbclass was dropped
- move the canned-wks files before removing wic so the histories of
these files are preserved

Changes in v5:
- rebased on latest master
- split commits out to make them easier to review
- a patch to add sector-size on the cmdline was added

Changes in v4:
- deprecate but allow sector-size to be set via WIC_SECTOR_SIZE
- change partition type of sample wks file to gpt

Changes in v3:
- squash all commits into one
- take another crack at trying to fix a warning if wic is not being used

Changes in v2:
- try to fix a build warning when not using wic
- add Mark as co-author of ufs class
- add wic utility to the list of native dependencies of
image_types_wic.bbclass

Trevor Woerner (5):
wic: add recipe
oe-selftest/cases/wic.py: update WicTestCase
selftest/cases/wic.py: remove test_sparse_copy
wic: move canned *wks files
wic: remove to standalone repository

meta/classes-recipe/image_types_wic.bbclass | 4 +-
meta/conf/distro/include/maintainers.inc | 3 +-
meta/lib/oeqa/selftest/cases/wic.py | 64 +-
meta/recipes-core/meta/wic-tools.bb | 1 +
meta/recipes-support/wic/wic_0.3.0.bb | 18 +
.../canned-wks => meta/wic}/common.wks.inc | 0
.../wic}/directdisk-bootloader-config.cfg | 0
.../wic}/directdisk-bootloader-config.wks | 0
.../wic}/directdisk-gpt.wks | 0
.../wic}/directdisk-multi-rootfs.wks | 0
.../canned-wks => meta/wic}/directdisk.wks | 0
.../wic}/efi-bootdisk.wks.in | 0
.../wic}/efi-uki-bootdisk.wks.in | 0
.../wic/canned-wks => meta/wic}/mkefidisk.wks | 0
.../canned-wks => meta/wic}/mkhybridiso.wks | 0
.../canned-wks => meta/wic}/qemuloongarch.wks | 0
.../wic/canned-wks => meta/wic}/qemuriscv.wks | 0
.../wic}/qemux86-directdisk.wks | 0
.../wic}/sdimage-bootpart.wks | 0
.../wic}/systemd-bootdisk.wks | 0
scripts/lib/wic/__init__.py | 10 -
scripts/lib/wic/engine.py | 718 ----------
scripts/lib/wic/filemap.py | 590 --------
scripts/lib/wic/help.py | 1197 -----------------
scripts/lib/wic/ksparser.py | 322 -----
scripts/lib/wic/misc.py | 272 ----
scripts/lib/wic/partition.py | 615 ---------
scripts/lib/wic/pluginbase.py | 144 --
scripts/lib/wic/plugins/imager/direct.py | 702 ----------
.../wic/plugins/source/bootimg_biosplusefi.py | 213 ---
scripts/lib/wic/plugins/source/bootimg_efi.py | 436 ------
.../wic/plugins/source/bootimg_partition.py | 162 ---
.../lib/wic/plugins/source/bootimg_pcbios.py | 484 -------
scripts/lib/wic/plugins/source/empty.py | 89 --
.../lib/wic/plugins/source/extra_partition.py | 146 --
.../wic/plugins/source/isoimage_isohybrid.py | 464 -------
scripts/lib/wic/plugins/source/rawcopy.py | 115 --
scripts/lib/wic/plugins/source/rootfs.py | 236 ----
scripts/wic | 641 ---------
39 files changed, 58 insertions(+), 7588 deletions(-)
create mode 100644 meta/recipes-support/wic/wic_0.3.0.bb
rename {scripts/lib/wic/canned-wks => meta/wic}/common.wks.inc (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/directdisk-bootloader-config.cfg (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/directdisk-bootloader-config.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/directdisk-gpt.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/directdisk-multi-rootfs.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/directdisk.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/efi-bootdisk.wks.in (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/efi-uki-bootdisk.wks.in (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/mkefidisk.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/mkhybridiso.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/qemuloongarch.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/qemuriscv.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/qemux86-directdisk.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/sdimage-bootpart.wks (100%)
rename {scripts/lib/wic/canned-wks => meta/wic}/systemd-bootdisk.wks (100%)
delete mode 100644 scripts/lib/wic/__init__.py
delete mode 100644 scripts/lib/wic/engine.py
delete mode 100644 scripts/lib/wic/filemap.py
delete mode 100644 scripts/lib/wic/help.py
delete mode 100644 scripts/lib/wic/ksparser.py
delete mode 100644 scripts/lib/wic/misc.py
delete mode 100644 scripts/lib/wic/partition.py
delete mode 100644 scripts/lib/wic/pluginbase.py
delete mode 100644 scripts/lib/wic/plugins/imager/direct.py
delete mode 100644 scripts/lib/wic/plugins/source/bootimg_biosplusefi.py
delete mode 100644 scripts/lib/wic/plugins/source/bootimg_efi.py
delete mode 100644 scripts/lib/wic/plugins/source/bootimg_partition.py
delete mode 100644 scripts/lib/wic/plugins/source/bootimg_pcbios.py
delete mode 100644 scripts/lib/wic/plugins/source/empty.py
delete mode 100644 scripts/lib/wic/plugins/source/extra_partition.py
delete mode 100644 scripts/lib/wic/plugins/source/isoimage_isohybrid.py
delete mode 100644 scripts/lib/wic/plugins/source/rawcopy.py
delete mode 100644 scripts/lib/wic/plugins/source/rootfs.py
delete mode 100755 scripts/wic

--
2.51.0