From: Trevor Woerner <twoerner@gmail.com>
To: Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: openembedded-core@lists.openembedded.org,
Bruce Ashfield <bruce.ashfield@gmail.com>,
Mark Hatle <mark.hatle@kernel.crashing.org>
Subject: Re: [OE-core] [PATCH v9 4/5] wic: move canned *wks files
Date: Sat, 4 Apr 2026 14:19:30 -0400 [thread overview]
Message-ID: <adFWMmXJzzTo0CSj@localhost.localdomain> (raw)
In-Reply-To: <adEyY7c8FLpJPNkc@localhost.localdomain>
On Sat 2026-04-04 @ 11:46:43 AM, Trevor Woerner wrote:
> On Sat 2026-04-04 @ 08:27:13 AM, Richard Purdie wrote:
> > On Fri, 2026-04-03 at 18:23 -0400, Trevor Woerner wrote:
> > > On Fri 2026-04-03 @ 10:13:00 PM, Richard Purdie wrote:
> > > > On Fri, 2026-04-03 at 14:35 -0400, Trevor Woerner via lists.openembedded.org wrote:
> > > > > When "wic create ..." is invoked with a bare *wks name (i.e. without the
> > > > > `.wks` extension), wic calls engine.py:find_canned_images() to find the
> > > > > fully qualified *wks file. This function searches every directory formed by:
> > > > > - permutating all BBLAYERS with `/wic`
> > > > > - permutating all BBLAYERS with `/scripts/lib/wic/canned-wks`
> > > > > - checking `<scripts_path>/lib/wic/canned-wks`
> > > > > Where `<scripts_path>` is the directory containing the wic program.
> > > >
> > > > It doesn't. I just looked at the code and it uses BBPATH. That can be
> > > > similar to BBLAYERS but it is different and the commit messages really
> > > > should refer to BBPATH.
> > >
> > > In the oe-selftest wic tests, most of the "wic create ..." commands
> > > are called with bare *wks files (i.e. *wks files without the `.wks`
> > > extension). When this happens, as "wic create..." is called, it starts
> > > by running the code found here:
> > >
> > > https://git.openembedded.org/openembedded-core/tree/scripts/wic#n206
> > >
> > > which calls:
> > >
> > > https://git.openembedded.org/openembedded-core/tree/scripts/lib/wic/engine.py#n46
> > >
> > > which follows the algorithm that I have described above.
> > >
> > > So for the oe-selftests to pass I wanted to move them.
> >
> > You are right, it is using BBLAYERS. This is very confusing since the
> > wks files are using BBPATH, which is similar but subtly different.
> >
> > Is there any reason it can't use BBPATH to match?
> >
> > I agree the files need to move but I'd like them to end up in
> > meta/files/wic, not meta/wic. Whilst it complicates the migration a
> > little, I think it would be best to move them once and get them into
> > the right place.
> >
> > The questions are then firstly, how to do that simply, then secondly,
> > how to clean up the rest of this (and when to do that).
> >
> > Adding files/wic into the search path is trivial. Deprecating the
> > existing search paths with appropriate warnings is a bit trickier and
> > there is the question of when we should do that, before or after the
> > current release. "after" would seem more obvious, but it will mean two
> > different behaviours before and after release and with a standalone
> > tool, this does become harder.
>
> I'm only guessing here, but it looks like someone wrote "wic create" to
> run two different ways: with the wks file specified with or without the
> ".wks" extension.
>
> If ".wks" is not given (e.g. "wic create directdisk-gpt ...", which is
> what occurs in the oe-selftest tests, i.e. when wic is run independently
> without being part of a bitbake build) then wic invokes its own search
> algorithm to try to find the wks file using BBLAYERS and script_dir. In
> this case the wks file is specified without the ".wks" and no path
> information is given on the cmdline. It is up to wic to find the actual
> wks file itself.
>
> If the ".wks" is included (which is what happens when wic is called as
> part of a bitbake build and therefore the image_types_wic.bbclass is
> used) then the class adds the ".wks" at the end, and also gives wic the
> path to the wks file which it finds using WKS_SEARCH_PATH which is based
> on BBPATH and COREBASE.
>
> Assuming the persona of someone who wants to use this new, independent
> wic tool, and who knows nothing about The Yocto Project or bitbake, I
> think having wic look in "magical" places for the wks file would be hard
> to understand and surprising. As an independent tool I think the user
> should provide the path to the actual wks file (with the ".wks"
> extension) and if that file can't be found as specified on the cmdline,
> wic should simply fail with an error.
>
> As part of making wic an independent tool, I think wic's code to search
> for a wks file if the ".wks" is not provided should be removed. This
> means that, as part of the transition, I would have to modify each "wic
> create" test in oe-core's oe-selftests. I'm fine with that. That could
> be done cleanly if I write a little function to find the wks file in
> the wic.py oe-selftest itself using the same logic as is used in the
> image_types_wic.bbclass.
>
> To summarize: in my opinion, wic shouldn't have search logic. From wic's
> point of view the wks file should be specified on the cmdline in a way
> that wic will find the file the user wants to use (or not find it).
> The oe-selftests should be updated to use the same search logic from
> the image_types_wic.bbclass so that when it invokes "wic create" it is
> providing wic with the path to a wks file that has a ".wks" extension
> (which is how bitbake invokes wic) instead of specifying a bare wks file
> and hoping wic will find it.
Looking at the code, it's a little deeper than that. wic also has a "wic
list" subcommand to "list available canned images and source plugins"
and it uses the same search logic (using BBLAYERS) to find "canned
images". The existing wic documentation, help text, and code refers to
these bare wks names as "images" or "canned images". If you specify a
bare wks to "wic create" and it can't find the wks file, the error
message says (in part): "No image named %s found..." (instead of "No wks
named %s found...".
Maybe I'm not understanding the history here, or maybe there's some
use-case I don't understand (or has long since stopped working) but what
"wic create" needs here is a wks file, not an image name, and conflating
the two seems very odd.
If it were up to me I'd clean the whole thing up. "wic create" needs a
wks file to guide it, not an image name that wic is going to use to find
a <image>.wks file using its own search logic.
I already have two patches to do this: one to add the bbclass search
logic to the oe-selftest wic tests, and a second one to remove wic's
image search logic from wic itself.
The first one is fairly easy to add and justify (I think).
The second one might be harder. Maybe there is some strange use-case
where we want wic to handle "wic create <bare-wks>" where <bare-wks> is
thought of as an image name? Removing wic's bare-wks search logic also
removes the "wic list images" subcommand since the only point of that
subcommand is to invoke its search logic and find "images" (which are
actually wks files).
> I'm happy to add "files/wic" as another location for
> image_types_wic.bbclass to search for wks files.
>
> > > > I don't understand why these need to move given WKS_SEARCH_PATH remains
> > > > unchanged, unless wic is going to ignore WKS_SEARCH_PATH going forward?
> > >
> > > As an independent tool, these *wks files are rather oe-core-specific,
> > > so I thought they should stay with the oe-core/meta layer, the same way
> > > that, say, raspberry pi-specific *wks files stay in the raspberry pi
> > > layer.
> > >
> > > My first thought was to remove them from the standalone wic repository
> > > altogether, but then decided I could keep them as examples.
> > >
> > > I thought it would be dangerous to leave them in the wic source
> > > tree where the above algorithm could find them. If I leave them in
> > > src/wic/canned-wks, someone uses the tool and creates a *wks file with a
> > > similar name to one of the canned-wks files, but they have a typo and
> > > the canned one gets used instead of theirs...
> > >
> > > ...maybe I'm overthinking it?
> >
> > It is definitely dangerous to leave them in the search paths so I agree
> > with that. The files do belong in OE-Core too. It is still a little
> > dangerous having files lying around which have the same names as the
> > ones in core since this kind of duplication still can confuse people
> > when they edit the wrong file. We have bigger issues I guess but some
> > renaming of the examples might help.
> >
> > Cheers,
> >
> > Richard
> >
> >
next prev parent reply other threads:[~2026-04-04 18:19 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-03 18:35 [PATCH v9 0/5] standalone wic Trevor Woerner
2026-04-03 18:35 ` [PATCH v9 1/5] wic: add recipe Trevor Woerner
2026-04-07 15:48 ` [OE-core] " Yoann Congal
2026-04-03 18:35 ` [PATCH v9 2/5] oe-selftest/cases/wic.py: update WicTestCase Trevor Woerner
2026-04-03 18:35 ` [PATCH v9 3/5] selftest/cases/wic.py: remove test_sparse_copy Trevor Woerner
2026-04-03 18:35 ` [PATCH v9 4/5] wic: move canned *wks files Trevor Woerner
2026-04-03 21:13 ` [OE-core] " Richard Purdie
2026-04-03 22:23 ` Trevor Woerner
2026-04-04 7:27 ` Richard Purdie
2026-04-04 15:46 ` Trevor Woerner
2026-04-04 18:19 ` Trevor Woerner [this message]
2026-04-04 18:36 ` Richard Purdie
2026-04-04 20:38 ` Trevor Woerner
2026-04-05 9:17 ` Richard Purdie
2026-04-05 12:04 ` Trevor Woerner
2026-04-05 14:16 ` Richard Purdie
2026-04-05 15:22 ` Trevor Woerner
[not found] ` <18A2F52EC877AF22.657799@lists.openembedded.org>
2026-04-03 21:37 ` Richard Purdie
2026-04-03 18:35 ` [PATCH v9 5/5] wic: remove to standalone repository 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=adFWMmXJzzTo0CSj@localhost.localdomain \
--to=twoerner@gmail.com \
--cc=bruce.ashfield@gmail.com \
--cc=mark.hatle@kernel.crashing.org \
--cc=openembedded-core@lists.openembedded.org \
--cc=richard.purdie@linuxfoundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox