Reviewed-by: Pierre-Loup GOSSE <[email protected]>

Thanks,

Pierre-Loup

PS: You forgot to add me in the Cc of your last answer
<https://lore.kernel.org/all/[email protected]/>
.

On Mon, Jan 12, 2026 at 9:29 AM Louis Rannou via B4 Relay <
[email protected]> wrote:

> From: Louis Rannou <[email protected]>
>
> 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 _name_%s 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_name_foo = "bar.conf"
>   and the .wks line have line:
>     part --source extra_partition --sourceparams "name=foo"
>
> Signed-off-by: Louis Rannou <[email protected]>
> ---
>  meta/lib/oeqa/selftest/cases/wic.py               | 16 ++++++++++-----
>  scripts/lib/wic/plugins/source/extra_partition.py | 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..409437a5c0 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_name-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"],
> diff --git a/scripts/lib/wic/plugins/source/extra_partition.py
> b/scripts/lib/wic/plugins/source/extra_partition.py
> index d370b0107e..0d49e2bc7c 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_name-randomname = "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_name-randomname \
>              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 (
> +                ("_name-%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
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#229214): 
https://lists.openembedded.org/g/openembedded-core/message/229214
Mute This Topic: https://lists.openembedded.org/mt/117220588/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to