On 8/26/20 1:13 AM, Jamaluddin, Khairul Rohaizzat wrote:
From: Khairul Rohaizzat Jamaluddin <[email protected]>Due to recent changes in bootimg-efi to include IMAGE_BOOT_FILES, when both bootimg-partition and bootimg-efi occur in a single .wks and IMAGE_BOOT_FILES are defined, files listed in IMAGE_BOOT_FILES will be duplicated in both partition. Since IMAGE_BOOT_FILES are crucial for bootimg-partition, but optional for bootimg-efi, hence allowing bootimg-efi to have the option to ignore it. Added a new variable, IMAGE_EFI_BOOT_FILES, to handle this issue. Its basic usage is the same as IMAGE_BOOT_FILES. Usage example: IMAGE_EFI_BOOT_FILES = "u-boot.img uImage;kernel" IMAGE_EFI_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}" This commit is also squashed with the updated testcase to cover for this change. [YOCTO #14011] Signed-off-by: Khairul Rohaizzat Jamaluddin <[email protected]> --- meta/classes/image_types_wic.bbclass | 2 +- meta/lib/oeqa/selftest/cases/wic.py | 10 +++++++++- scripts/lib/wic/plugins/source/bootimg-efi.py | 8 ++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/meta/classes/image_types_wic.bbclass b/meta/classes/image_types_wic.bbclass index 7b1db50..def44bb 100644 --- a/meta/classes/image_types_wic.bbclass +++ b/meta/classes/image_types_wic.bbclass @@ -1,7 +1,7 @@ # The WICVARS variable is used to define list of bitbake variables used in wic code # variables from this list is written to <image>.env file WICVARS ?= "\ - BBLAYERS IMGDEPLOYDIR DEPLOY_DIR_IMAGE FAKEROOTCMD IMAGE_BASENAME IMAGE_BOOT_FILES \ + BBLAYERS IMGDEPLOYDIR DEPLOY_DIR_IMAGE FAKEROOTCMD IMAGE_BASENAME IMAGE_EFI_BOOT_FILES IMAGE_BOOT_FILES \ IMAGE_LINK_NAME IMAGE_ROOTFS INITRAMFS_FSTYPES INITRD INITRD_LIVE ISODIR RECIPE_SYSROOT_NATIVE \ ROOTFS_SIZE STAGING_DATADIR STAGING_DIR STAGING_LIBDIR TARGET_SYS \ KERNEL_IMAGETYPE MACHINE INITRAMFS_IMAGE INITRAMFS_IMAGE_BUNDLE INITRAMFS_LINK_NAME APPEND" diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py index e6b23c6..1149ae0 100644 --- a/meta/lib/oeqa/selftest/cases/wic.py +++ b/meta/lib/oeqa/selftest/cases/wic.py @@ -235,6 +235,14 @@ class Wic(WicTestCase): runCmd(cmd) self.assertEqual(1, len(glob(self.resultdir + "systemd-bootdisk-*direct")))+ def test_efi_bootpart(self):+ """Test creation of efi-bootpart image""" + cmd = "wic create efi-bootpart -e core-image-minimal -o %s" % self.resultdir + kimgtype = get_bb_var('KERNEL_IMAGETYPE', 'core-image-minimal') + self.write_config('IMAGE_EFI_BOOT_FILES = "%s"\n' % kimgtype) + runCmd(cmd) + self.assertEqual(1, len(glob(self.resultdir + "efi-bootpart-*direct"))) +
The test fails because "efi-bootpart" is not a wks file like "sdimage-bootpart"(which this appears to be copied from). There is an existing wks file ./scripts/lib/wic/canned-wks/mkefidisk.wks which uses the "bootimg-efi" plugin and there is already a test, test_mkefidisk(), for that wks file.
This new test, test_efi_bootpart(), doesn't actually verify the files in IMAGE_EFI_BOOT_FILES exist in the partition created, it only checks that the wic command ran successfully. So there isn't really any utility in this test over what already exists in test_mkefidisk().
Also, the file being added in IMAGE_EFI_BOOT_FILES in this test ends up being "bzImage", which is already added by default when using bootimage-efi.py.
For this test to actually test the IMAGE_EFI_BOOT_FILES functionality, it would need to do something similar to test_include_path() which actually verifies that files exist in the partition created. In this case it would need to verify that the files in IMAGE_EFI_BOOT_FILES exist in the partition. If we assume "wic ls" works, it could probably be used instead of debugfs.
def test_sdimage_bootpart(self): """Test creation of sdimage-bootpart image""" cmd = "wic create sdimage-bootpart -e core-image-minimal -o %s" % self.resultdir @@ -689,7 +697,7 @@ class Wic2(WicTestCase): wicvars = wicvars.difference(('DEPLOY_DIR_IMAGE', 'IMAGE_BOOT_FILES', 'INITRD', 'INITRD_LIVE', 'ISODIR','INITRAMFS_IMAGE', 'INITRAMFS_IMAGE_BUNDLE', 'INITRAMFS_LINK_NAME', - 'APPEND')) + 'APPEND', 'IMAGE_EFI_BOOT_FILES')) with open(path) as envfile: content = dict(line.split("=", 1) for line in envfile) # test if variables used by wic present in the .env file diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py index 14c1723..cdc7254 100644 --- a/scripts/lib/wic/plugins/source/bootimg-efi.py +++ b/scripts/lib/wic/plugins/source/bootimg-efi.py @@ -212,8 +212,8 @@ class BootimgEFIPlugin(SourcePlugin): except KeyError: raise WicError("bootimg-efi requires a loader, none specified")- if get_bitbake_var("IMAGE_BOOT_FILES") is None:- logger.debug('No boot files defined in IMAGE_BOOT_FILES') + if get_bitbake_var("IMAGE_EFI_BOOT_FILES") is None: + logger.debug('No boot files defined in IMAGE_EFI_BOOT_FILES') else: boot_files = None for (fmt, id) in (("_uuid-%s", part.uuid), ("_label-%s", part.label), (None, None)): @@ -222,7 +222,7 @@ class BootimgEFIPlugin(SourcePlugin): else: var = ""- boot_files = get_bitbake_var("IMAGE_BOOT_FILES" + var)+ boot_files = get_bitbake_var("IMAGE_EFI_BOOT_FILES" + var) if boot_files: break@@ -292,7 +292,7 @@ class BootimgEFIPlugin(SourcePlugin):(staging_kernel_dir, kernel, hdddir, kernel) exec_cmd(install_cmd)- if get_bitbake_var("IMAGE_BOOT_FILES"):+ if get_bitbake_var("IMAGE_EFI_BOOT_FILES"): for src_path, dst_path in cls.install_task: install_cmd = "install -m 0644 -D %s %s" \ % (os.path.join(kernel_dir, src_path),
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#141920): https://lists.openembedded.org/g/openembedded-core/message/141920 Mute This Topic: https://lists.openembedded.org/mt/76424154/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
