[PATCH v5 5/6] wic: extra-partitions: move extra-files WicError to do_prepare_partition

Adam Duskett
2026-01-16T09:32:25Z

For organizational purposes, move the raised WicError if extra files isn't
provided by a user to the do_prepare_partition method and rewrite the message
to be more clear if a user wishes to create an empty partition.

The original error is changed to a warning in the event a user has a typo
in the variable. For example:

IMAGE_EXTRA_PARTITION_FILES_label-fooo = "bar.conf"
part --source extra-partition --fstype=ext4 --label foo

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
---
v1 -> v2: If the list is blank, print a warning instead of an info.

v2 -> v4: Raise an error in do_prepare_partition instead of making
extra files optional. Extend error message.

v4 -> v5: Chagne logger.warning to logger.info

scripts/lib/wic/plugins/source/extra_partition.py | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/scripts/lib/wic/plugins/source/extra_partition.py b/scripts/lib/wic/plugins/source/extra_partition.py
index 25aab06c52..327bc2b8c3 100644
--- a/scripts/lib/wic/plugins/source/extra_partition.py
+++ b/scripts/lib/wic/plugins/source/extra_partition.py
@@ -55,11 +55,13 @@ class ExtraPartitionPlugin(SourcePlugin):
"""
Parse the files of which to copy.
"""
+ cls.extra_files_task = []
deploy_files = []

extra_files = cls._get_extra_vars(part, cls.image_extra_partition_files_var_name)
if extra_files is None:
- raise WicError('No extra files defined, %s unset for entry #%d' % (cls.image_extra_partition_files_var_name, part.lineno))
+ logger.info('No extra files defined, %s unset for entry #%d' % (cls.image_extra_partition_files_var_name, part.lineno))
+ return

logger.info('Extra files: %s', extra_files)
for src_entry in re.findall(r'[\w;\-./*]+', extra_files):
@@ -73,7 +75,6 @@ class ExtraPartitionPlugin(SourcePlugin):
logger.debug('Destination entry: %r', dst_entry)
deploy_files.append(dst_entry)

- cls.extra_files_task = []
for deploy_entry in deploy_files:
src, dst = deploy_entry
if '*' in src:
@@ -125,6 +126,12 @@ class ExtraPartitionPlugin(SourcePlugin):
"""
extradir = "%s/extra.%d" % (cr_workdir, part.lineno)

+ if not cls.extra_files_task:
+ raise WicError("Entry #%d does not have a corresponding %s variable set!"
+ "If you wish to create an empty partition, remove "
+ "--source extra-partition from the wks file"
+ % (part.lineno, cls.image_extra_partition_files_var_name))
+
if not kernel_dir:
kernel_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
if not kernel_dir:
--
2.52.0