From: Louis Rannou via B4 Relay <devnull+louis.rannou.non.se.com@kernel.org>
To: openembedded-core@lists.openembedded.org
Cc: Louis Rannou <louis.rannou@non.se.com>, pierre-loup.gosse@smile.fr
Subject: [PATCH 2/2] wic: extra-partition: introduce variable matching sourceparams
Date: Wed, 07 Jan 2026 11:40:51 +0100 [thread overview]
Message-ID: <20260107-extrafiles-v1-2-a4ddd07df231@non.se.com> (raw)
In-Reply-To: <20260107-extrafiles-v1-0-a4ddd07df231@non.se.com>
From: Louis Rannou <louis.rannou@non.se.com>
The current extra_partition plugin uses predictable variable names (the
configuration must predict the image partition label or uuid). This has two
inconveniences:
- an extra partition that has a specific label (or uuid) is doomed with the
associated variable. The partition cannot be configured unless the label
(or uuid) is changed.
- two partitions with same label from distincts .wks cannot have different
content.
This allows the new suffix _sourceparams_foo to be appended to
IMAGE_EXTRA_PARTITION_FILES. This variable will be preferred whenever the
.wks specifies a name in the --sourceparams option.
For example:
an image may define:
IMAGE_EXTRA_PARTITION_FILES_sourceparams_foo = "bar.conf"
and the .wks line have line:
part --source extra_partition --sourceparams "name=foo"
Signed-off-by: Louis Rannou <louis.rannou@non.se.com>
---
meta/lib/oeqa/selftest/cases/wic.py | 16 ++++++++++-----
| 24 +++++++++++++++++------
2 files changed, 29 insertions(+), 11 deletions(-)
diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py
index 55fb8dfd1b..542ce6fb05 100644
--- a/meta/lib/oeqa/selftest/cases/wic.py
+++ b/meta/lib/oeqa/selftest/cases/wic.py
@@ -1657,6 +1657,7 @@ INITRAMFS_IMAGE = "core-image-initramfs-boot"
def test_extra_partition_plugin(self):
"""Test extra partition plugin"""
config = dedent("""\
+ IMAGE_EXTRA_PARTITION_FILES_sourceparams-foo = "bar.conf"
IMAGE_EXTRA_PARTITION_FILES_label-foo = "bar.conf;foo.conf"
IMAGE_EXTRA_PARTITION_FILES_uuid-e7d0824e-cda3-4bed-9f54-9ef5312d105d = "bar.conf;foobar.conf bar2.conf;foobar2.conf bar3.conf bar4.conf"
IMAGE_EXTRA_PARTITION_FILES = "foo/*"
@@ -1688,9 +1689,13 @@ INITRAMFS_IMAGE = "core-image-initramfs-boot"
try:
with NamedTemporaryFile("w", suffix=".wks") as wks:
- wks.writelines(['part / --source extra_partition --ondisk sda --label foo --align 4 --size 5M\n',
- 'part / --source extra_partition --ondisk sda --fstype=vfat --uuid e7d0824e-cda3-4bed-9f54-9ef5312d105d --align 4 --size 5M\n',
- 'part / --source extra_partition --ondisk sda --fstype=ext4 --label bar --align 4 --size 5M\n'])
+ wks.writelines([
+ 'part / --source extra_partition --ondisk sda --sourceparams "name=foo" --align 4 --size 5M\n',
+ 'part / --source extra_partition --ondisk sda --label foo --align 4 --size 5M\n',
+ 'part / --source extra_partition --ondisk sda --fstype=vfat --uuid e7d0824e-cda3-4bed-9f54-9ef5312d105d --align 4 --size 5M\n',
+ 'part / --source extra_partition --ondisk sda --fstype=ext4 --label bar --align 4 --size 5M\n',
+ 'bootloader --ptable gpt\n',
+ ])
wks.flush()
_, wicimg = self._get_wic(wks.name)
@@ -1698,14 +1703,15 @@ INITRAMFS_IMAGE = "core-image-initramfs-boot"
partls = result.output.split('\n')[1:]
# Assert the number of partitions is correct
- self.assertEqual(3, len(partls), msg="Expect 3 partitions, not %s" % result.output)
+ self.assertEqual(4, len(partls), msg="Expect 4 partitions, not %s" % result.output)
# Fstype column from 'wic ls' should be fstype as given in the part command
- for part_id, part_fs in enumerate(["fat16", "fat16", "ext4"]):
+ for part_id, part_fs in enumerate(["fat16", "fat16", "fat16", "ext4"]):
self.assertIn(part_fs, partls[part_id])
# For each partition, assert expected files exist
for part, part_glob in enumerate([
+ ["bar.conf"],
["foo.conf"],
["foobar.conf", "foobar2.conf", "bar3.conf", "bar4.conf"],
["bar.conf", "bar2.conf"],
--git a/scripts/lib/wic/plugins/source/extra_partition.py b/scripts/lib/wic/plugins/source/extra_partition.py
index d370b0107e..f9410388fa 100644
--- a/scripts/lib/wic/plugins/source/extra_partition.py
+++ b/scripts/lib/wic/plugins/source/extra_partition.py
@@ -18,15 +18,17 @@ class ExtraPartitionPlugin(SourcePlugin):
The plugin supports:
- Glob pattern matching for file selection.
- File renaming.
- - Suffixes to specify the target partition (by label, UUID, or partname),
- enabling multiple extra partitions to coexist.
+ - Suffixes to specify the target partition (by params-name, label, UUID,
+ or partname), enabling multiple extra partitions to coexist.
For example:
+ IMAGE_EXTRA_PARTITION_FILES_sourceparams-name = "bar.conf;foo.conf"
IMAGE_EXTRA_PARTITION_FILES_label-foo = "bar.conf;foo.conf"
IMAGE_EXTRA_PARTITION_FILES_uuid-e7d0824e-cda3-4bed-9f54-9ef5312d105d = "bar.conf;foobar.conf"
IMAGE_EXTRA_PARTITION_FILES = "foo/*"
WICVARS:append = "\
+ IMAGE_EXTRA_PARTITION_FILES_sourceparams-name \
IMAGE_EXTRA_PARTITION_FILES_label-foo \
IMAGE_EXTRA_PARTITION_FILES_uuid-e7d0824e-cda3-4bed-9f54-9ef5312d105d \
"
@@ -53,11 +55,21 @@ class ExtraPartitionPlugin(SourcePlugin):
raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting")
extra_files = None
- for (fmt, id) in (("_uuid-%s", part.uuid), ("_label-%s", part.label), ("_part-name-%s", part.part_name), (None, None)):
- if fmt:
- var = fmt % id
- else:
+ for (fmt, part_id) in (
+ ("_sourceparams-%s", source_params.get("name")),
+ ("_uuid-%s", part.uuid),
+ ("_label-%s", part.label),
+ ("_part-name-%s", part.part_name),
+ (None, None)
+ ):
+ if fmt is None:
var = ""
+ elif part_id is not None:
+ var = fmt % part_id
+ else:
+ continue
+
+ logger.debug("Looking for extra files in %s" % cls.image_extra_partition_files_var_name + var)
extra_files = get_bitbake_var(cls.image_extra_partition_files_var_name + var)
if extra_files is not None:
break
--
2.43.0
next prev parent reply other threads:[~2026-01-07 10:41 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-07 10:40 [PATCH 0/2] wic: extra-partitions: new variable to be combined with sourceparams Louis Rannou via B4 Relay
2026-01-07 10:40 ` [PATCH 1/2] oeqa/selftest: wic: improve extra-partition plugin tests Louis Rannou via B4 Relay
2026-01-07 10:40 ` Louis Rannou via B4 Relay [this message]
2026-01-07 16:39 ` [PATCH 2/2] wic: extra-partition: introduce variable matching sourceparams Pierre-loup GOSSE
2026-01-08 9:00 ` Louis Rannou
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=20260107-extrafiles-v1-2-a4ddd07df231@non.se.com \
--to=devnull+louis.rannou.non.se.com@kernel.org \
--cc=louis.rannou@non.se.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=pierre-loup.gosse@smile.fr \
/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