@@ -72,12 +72,23 @@ class WicTestCase(OESelftestTestCase):
if self.td['USE_NLS'] != 'yes':
self.skipTest('wic-tools needs USE_NLS=yes')
- bitbake('wic-tools core-image-minimal core-image-minimal-mtdutils')
+ targets = 'wic-tools core-image-minimal core-image-minimal-mtdutils'
+ targets += ' ' + ' '.join(self._firmware_recipes())
+ bitbake(targets)
WicTestCase.image_is_ready = True
os.environ['PATH'] = self._get_wic_path()
rmtree(self.resultdir, ignore_errors=True)
+ def _firmware_recipes(self):
+ arch = self.td['HOST_ARCH']
+ recipes = []
+ if arch in ('i586', 'i686', 'x86_64', 'x86-64'):
+ recipes += ['syslinux', 'grub-efi', 'systemd-boot']
+ elif arch == 'aarch64':
+ recipes += ['grub-efi', 'systemd-boot']
+ return recipes
+
def tearDownLocal(self):
"""Remove resultdir as it may contain images."""
if self._old_path is None:
@@ -391,9 +402,13 @@ class Wic(WicTestCase):
@skipIfNotArch(['i586', 'i686', 'x86_64'])
def test_build_artifacts(self):
"""Test wic create directdisk providing all artifacts."""
- bb_vars = get_bb_vars(['STAGING_DATADIR', 'RECIPE_SYSROOT_NATIVE'],
- 'wic-tools')
- bb_vars.update(get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_ROOTFS'],
+ # wic expects syslinux in core-image-minimal's recipe sysroot.
+ config = 'DEPENDS:pn-core-image-minimal += "syslinux"\n'
+ self.append_config(config)
+ bitbake('core-image-minimal')
+ self.remove_config(config)
+ bb_vars = get_bb_vars(['RECIPE_SYSROOT_NATIVE'], 'wic-tools')
+ bb_vars.update(get_bb_vars(['STAGING_DATADIR', 'DEPLOY_DIR_IMAGE', 'IMAGE_ROOTFS'],
'core-image-minimal'))
bbvars = {key.lower(): value for key, value in bb_vars.items()}
bbvars['resultdir'] = self.resultdir
@@ -494,9 +509,13 @@ class Wic(WicTestCase):
@skipIfNotArch(['i586', 'i686', 'x86_64'])
def test_rootfs_artifacts(self):
"""Test usage of rootfs plugin with rootfs paths"""
- bb_vars = get_bb_vars(['STAGING_DATADIR', 'RECIPE_SYSROOT_NATIVE'],
- 'wic-tools')
- bb_vars.update(get_bb_vars(['DEPLOY_DIR_IMAGE', 'IMAGE_ROOTFS'],
+ # wic expects syslinux in core-image-minimal's recipe sysroot.
+ config = 'DEPENDS:pn-core-image-minimal += "syslinux"\n'
+ self.append_config(config)
+ bitbake('core-image-minimal')
+ self.remove_config(config)
+ bb_vars = get_bb_vars(['RECIPE_SYSROOT_NATIVE'], 'wic-tools')
+ bb_vars.update(get_bb_vars(['STAGING_DATADIR', 'DEPLOY_DIR_IMAGE', 'IMAGE_ROOTFS'],
'core-image-minimal'))
bbvars = {key.lower(): value for key, value in bb_vars.items()}
bbvars['wks'] = "directdisk-multi-rootfs"
@@ -10,10 +10,9 @@ DEPENDS = "\
e2fsprogs-native util-linux-native tar-native erofs-utils-native \
virtual/cross-binutils \
"
-DEPENDS:append:x86 = " syslinux-native syslinux grub-efi systemd-boot"
-DEPENDS:append:x86-64 = " syslinux-native syslinux grub-efi systemd-boot"
-DEPENDS:append:x86-x32 = " syslinux-native syslinux grub-efi"
-DEPENDS:append:aarch64 = " grub-efi systemd-boot"
+DEPENDS:append:x86 = " syslinux-native"
+DEPENDS:append:x86-64 = " syslinux-native"
+DEPENDS:append:x86-x32 = " syslinux-native"
INHIBIT_DEFAULT_DEPS = "1"
wic-tools should stage only wic's host tools, but its arch-specific appends also depended on target bootloader firmware (syslinux, grub-efi, systemd-boot) solely for the wic oe-selftest. Which firmware is needed depends on the plugins a .wks uses, so that firmware is the responsibility of whoever supplies the .wks, not of wic-tools. Have the oe-selftest bitbake those recipes itself instead. Images already work that way through WKS_FILE_DEPENDS in image_types_wic.bbclass, and the oe-selftest now does the equivalent, adding syslinux to core-image-minimal's DEPENDS where the tests expect it in the recipe sysroot. AI-Generated: codex/claude-opus 5 (xhigh) Signed-off-by: Trevor Woerner <twoerner@gmail.com> --- changes in v5: - trimmed the commit message and in-tree comments changes in v4: - new in v4 --- meta/lib/oeqa/selftest/cases/wic.py | 33 +++++++++++++++++++++++------ meta/recipes-core/meta/wic-tools.bb | 7 +++--- 2 files changed, 29 insertions(+), 11 deletions(-)