mbox series

[v6,0/9] standalone wic

Message ID 20260225074931.1661345-1-twoerner@gmail.com
Headers show
Series standalone wic | expand

Message

Trevor Woerner Feb. 25, 2026, 7:49 a.m. UTC
This series of patches splits wic out from oe-core into its own 
standalone utility. The wic utility will continue to be under The Yocto
Project umbrella, but will no longer be integrated into the project
as part of oe-core. The ultimate goal is to make wic a completely
independent tool, hosted on PyPI, with its own tests, development
roadmap, and releases.

Some benefits include:
- relieving the oe-core maintainers from having to review wic patches
- allow the tool to be used outside of The Yocto Project
- provide more flexibility to explore other features, libraries,
  mechanisms, etc 

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 -v -r wic 

Previously, I had two separate patch sets for wic on oe-core: one 
to create a standalone utility, and one to re-implement variable
sector-size handling. Both these were combined to create a combined "v5"
patch set.

In v6 the major changes are:
- code cleanups to remove cases of "if sector_size and sector_size =
  512" in places where we can guarantee sector_size will exist
- cleanups to replace "getattr(var, 'sector_size', 512) or 512" since
  the 3rd arg to getattr() is already setting a default if the variable
  name is not found
- many comment and commit comment improvements
- error out if extraopts includes options to set the sector-size in wks
  files
- patch 2 (add ufs class) was dropped
- patches 3 and 4 were reversed (move/save wks files before removing the
  rest of wic from oe-core)

For the patch sets up to and including v5:
For the standalone patch set:
v1: an RFC patchset was sent out, split up into small patches for easy
    review
v2: add wic utility to list of native dependencies of
    image_types_wic.bbclass
v3: squash all commits together to apply atomically
v4: (does not exist)
v5: rebase on latest master
    split commits back out acknowledging any bisection that lands
    between them will fail
    combine with sector-size patch

For the sector-size patch:
v1: initial patch set 
v2: add Mark as co-author of ufs class
    try to fix a build warning when not using wic 
v3: actually fix warning when not using wic 
v4: deprecate, but allow, WIC_SECTOR_SIZE to continue to be used to set 
    the sector-size both from config files and the environment
    warn when both are used, but prefer cmdline value
    change partition type of sample wks to gpt 
v5: fix a bug where WIC_SECTOR_SIZE is not given anywhere
    combine with standalone patch set 


Trevor Woerner (9):
  wic: re-implement sector-size support
  wic: move sample *wks files
  wic: move to standalone repository
  wic: add recipe
  oe-selftest/cases/wic.py: update WicTestCase
  oe-selftest/cases/wic.py: oe-selftest -r wic.CLITests -> PASS
  oe-selftest/cases/wic.py: oe-selftest -r wic.ModifyTests -> PASS
  oe-selftest/cases/wic.py: oe-selftest -r wic.Wic -> PASS
  oe-selftest/cases/wic.py: oe-selftest -r wic.Wic2 -> PASS

 meta/classes-recipe/image_types_wic.bbclass   |    6 +-
 meta/conf/distro/include/maintainers.inc      |    3 +-
 meta/lib/oeqa/selftest/cases/wic.py           |  294 ++--
 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                     |  710 ----------
 scripts/lib/wic/filemap.py                    |  583 --------
 scripts/lib/wic/help.py                       | 1188 -----------------
 scripts/lib/wic/ksparser.py                   |  322 -----
 scripts/lib/wic/misc.py                       |  266 ----
 scripts/lib/wic/partition.py                  |  562 --------
 scripts/lib/wic/pluginbase.py                 |  144 --
 scripts/lib/wic/plugins/imager/direct.py      |  710 ----------
 .../wic/plugins/source/bootimg_biosplusefi.py |  213 ---
 scripts/lib/wic/plugins/source/bootimg_efi.py |  435 ------
 .../wic/plugins/source/bootimg_partition.py   |  162 ---
 .../lib/wic/plugins/source/bootimg_pcbios.py  |  483 -------
 scripts/lib/wic/plugins/source/empty.py       |   89 --
 .../lib/wic/plugins/source/extra_partition.py |  146 --
 .../wic/plugins/source/isoimage_isohybrid.py  |  463 -------
 scripts/lib/wic/plugins/source/rawcopy.py     |  115 --
 scripts/lib/wic/plugins/source/rootfs.py      |  236 ----
 scripts/wic                                   |  600 ---------
 39 files changed, 165 insertions(+), 7594 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

Comments

Mathieu Dubois-Briand Feb. 25, 2026, 10:34 a.m. UTC | #1
On Wed Feb 25, 2026 at 8:49 AM CET, Trevor Woerner via lists.openembedded.org wrote:
> This series of patches splits wic out from oe-core into its own 
> standalone utility. The wic utility will continue to be under The Yocto
> Project umbrella, but will no longer be integrated into the project
> as part of oe-core. The ultimate goal is to make wic a completely
> independent tool, hosted on PyPI, with its own tests, development
> roadmap, and releases.
>
> Some benefits include:
> - relieving the oe-core maintainers from having to review wic patches
> - allow the tool to be used outside of The Yocto Project
> - provide more flexibility to explore other features, libraries,
>   mechanisms, etc 
>
> 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 -v -r wic 
>
> Previously, I had two separate patch sets for wic on oe-core: one 
> to create a standalone utility, and one to re-implement variable
> sector-size handling. Both these were combined to create a combined "v5"
> patch set.
>
> In v6 the major changes are:
> - code cleanups to remove cases of "if sector_size and sector_size =
>   512" in places where we can guarantee sector_size will exist
> - cleanups to replace "getattr(var, 'sector_size', 512) or 512" since
>   the 3rd arg to getattr() is already setting a default if the variable
>   name is not found
> - many comment and commit comment improvements
> - error out if extraopts includes options to set the sector-size in wks
>   files
> - patch 2 (add ufs class) was dropped
> - patches 3 and 4 were reversed (move/save wks files before removing the
>   rest of wic from oe-core)
>
> For the patch sets up to and including v5:
> For the standalone patch set:
> v1: an RFC patchset was sent out, split up into small patches for easy
>     review
> v2: add wic utility to list of native dependencies of
>     image_types_wic.bbclass
> v3: squash all commits together to apply atomically
> v4: (does not exist)
> v5: rebase on latest master
>     split commits back out acknowledging any bisection that lands
>     between them will fail
>     combine with sector-size patch
>
> For the sector-size patch:
> v1: initial patch set 
> v2: add Mark as co-author of ufs class
>     try to fix a build warning when not using wic 
> v3: actually fix warning when not using wic 
> v4: deprecate, but allow, WIC_SECTOR_SIZE to continue to be used to set 
>     the sector-size both from config files and the environment
>     warn when both are used, but prefer cmdline value
>     change partition type of sample wks to gpt 
> v5: fix a bug where WIC_SECTOR_SIZE is not given anywhere
>     combine with standalone patch set 
>
>
> Trevor Woerner (9):

Hi Trevor,

Thanks for the new version.

We have some test failure as the wic tool is not found in path. I
believe we already discussed that previously, but I'm not sure what was
the conclusion.

Poky - The Yocto Project testing distribution
Running '. ./init-build-env; wic create directdisk -e core-image-sato -o ${BUILDDIR}/tmp/deploy/wic_images/qemux86/directdisk/core-image-sato/' with output to /srv/pokybuild/yocto-worker/wic/build/build/command-1-cmds.log in /srv/pokybuild/yocto-worker/wic/build/build
/bin/bash: line 1: wic: command not found

https://autobuilder.yoctoproject.org/valkyrie/#/builders/15/builds/3190

I will let other tests finish, so we can have an overview of the
situation.

Thanks,
Mathieu
Trevor Woerner Feb. 25, 2026, 12:22 p.m. UTC | #2
On Wed 2026-02-25 @ 11:34:41 AM, Mathieu Dubois-Briand wrote:
> On Wed Feb 25, 2026 at 8:49 AM CET, Trevor Woerner via lists.openembedded.org wrote:
> > This series of patches splits wic out from oe-core into its own 
> > standalone utility. The wic utility will continue to be under The Yocto
> > Project umbrella, but will no longer be integrated into the project
> > as part of oe-core. The ultimate goal is to make wic a completely
> > independent tool, hosted on PyPI, with its own tests, development
> > roadmap, and releases.
> >
> > Some benefits include:
> > - relieving the oe-core maintainers from having to review wic patches
> > - allow the tool to be used outside of The Yocto Project
> > - provide more flexibility to explore other features, libraries,
> >   mechanisms, etc 
> >
> > 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 -v -r wic 
> >
> > Previously, I had two separate patch sets for wic on oe-core: one 
> > to create a standalone utility, and one to re-implement variable
> > sector-size handling. Both these were combined to create a combined "v5"
> > patch set.
> >
> > In v6 the major changes are:
> > - code cleanups to remove cases of "if sector_size and sector_size =
> >   512" in places where we can guarantee sector_size will exist
> > - cleanups to replace "getattr(var, 'sector_size', 512) or 512" since
> >   the 3rd arg to getattr() is already setting a default if the variable
> >   name is not found
> > - many comment and commit comment improvements
> > - error out if extraopts includes options to set the sector-size in wks
> >   files
> > - patch 2 (add ufs class) was dropped
> > - patches 3 and 4 were reversed (move/save wks files before removing the
> >   rest of wic from oe-core)
> >
> > For the patch sets up to and including v5:
> > For the standalone patch set:
> > v1: an RFC patchset was sent out, split up into small patches for easy
> >     review
> > v2: add wic utility to list of native dependencies of
> >     image_types_wic.bbclass
> > v3: squash all commits together to apply atomically
> > v4: (does not exist)
> > v5: rebase on latest master
> >     split commits back out acknowledging any bisection that lands
> >     between them will fail
> >     combine with sector-size patch
> >
> > For the sector-size patch:
> > v1: initial patch set 
> > v2: add Mark as co-author of ufs class
> >     try to fix a build warning when not using wic 
> > v3: actually fix warning when not using wic 
> > v4: deprecate, but allow, WIC_SECTOR_SIZE to continue to be used to set 
> >     the sector-size both from config files and the environment
> >     warn when both are used, but prefer cmdline value
> >     change partition type of sample wks to gpt 
> > v5: fix a bug where WIC_SECTOR_SIZE is not given anywhere
> >     combine with standalone patch set 
> >
> >
> > Trevor Woerner (9):
> 
> Hi Trevor,
> 
> Thanks for the new version.
> 
> We have some test failure as the wic tool is not found in path. I
> believe we already discussed that previously, but I'm not sure what was
> the conclusion.
> 
> Poky - The Yocto Project testing distribution
> Running '. ./init-build-env; wic create directdisk -e core-image-sato -o ${BUILDDIR}/tmp/deploy/wic_images/qemux86/directdisk/core-image-sato/' with output to /srv/pokybuild/yocto-worker/wic/build/build/command-1-cmds.log in /srv/pokybuild/yocto-worker/wic/build/build
> /bin/bash: line 1: wic: command not found
> 
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/15/builds/3190
> 
> I will let other tests finish, so we can have an overview of the
> situation.

Thanks for the report.

Are these failures from oe-selftests defined in oe-core?
I can't quite figure out which tests these are.