* [PATCH v2] wic/bootimg-efi: IMAGE_EFI_BOOT_FILES added to separate bootimg-efi and bootimg-partition
@ 2020-08-26 8:13 Jamaluddin, Khairul Rohaizzat
2020-08-26 12:28 ` [OE-core] " Richard Purdie
2020-08-27 19:39 ` Randy Witt
0 siblings, 2 replies; 3+ messages in thread
From: Jamaluddin, Khairul Rohaizzat @ 2020-08-26 8:13 UTC (permalink / raw)
To: openembedded-core; +Cc: randy.e.witt
From: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com>
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 <khairul.rohaizzat.jamaluddin@intel.com>
---
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")))
+
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),
--
2.7.4
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [OE-core] [PATCH v2] wic/bootimg-efi: IMAGE_EFI_BOOT_FILES added to separate bootimg-efi and bootimg-partition
2020-08-26 8:13 [PATCH v2] wic/bootimg-efi: IMAGE_EFI_BOOT_FILES added to separate bootimg-efi and bootimg-partition Jamaluddin, Khairul Rohaizzat
@ 2020-08-26 12:28 ` Richard Purdie
2020-08-27 19:39 ` Randy Witt
1 sibling, 0 replies; 3+ messages in thread
From: Richard Purdie @ 2020-08-26 12:28 UTC (permalink / raw)
To: Jamaluddin, Khairul Rohaizzat, openembedded-core; +Cc: randy.e.witt
On Wed, 2020-08-26 at 16:13 +0800, Jamaluddin, Khairul Rohaizzat wrote:
> From: Khairul Rohaizzat Jamaluddin <
> khairul.rohaizzat.jamaluddin@intel.com>
>
> 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 <khairul.rohaizzat.jamaluddin@intel.com>
This looks like the right idea but it fails in testing:
https://autobuilder.yoctoproject.org/typhoon/#/builders/80/builds/1280
Cheers,
Richard
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [OE-core] [PATCH v2] wic/bootimg-efi: IMAGE_EFI_BOOT_FILES added to separate bootimg-efi and bootimg-partition
2020-08-26 8:13 [PATCH v2] wic/bootimg-efi: IMAGE_EFI_BOOT_FILES added to separate bootimg-efi and bootimg-partition Jamaluddin, Khairul Rohaizzat
2020-08-26 12:28 ` [OE-core] " Richard Purdie
@ 2020-08-27 19:39 ` Randy Witt
1 sibling, 0 replies; 3+ messages in thread
From: Randy Witt @ 2020-08-27 19:39 UTC (permalink / raw)
To: Jamaluddin, Khairul Rohaizzat, openembedded-core
On 8/26/20 1:13 AM, Jamaluddin, Khairul Rohaizzat wrote:
> From: Khairul Rohaizzat Jamaluddin <khairul.rohaizzat.jamaluddin@intel.com>
>
> 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 <khairul.rohaizzat.jamaluddin@intel.com>
> ---
> 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),
>
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-08-27 19:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-26 8:13 [PATCH v2] wic/bootimg-efi: IMAGE_EFI_BOOT_FILES added to separate bootimg-efi and bootimg-partition Jamaluddin, Khairul Rohaizzat
2020-08-26 12:28 ` [OE-core] " Richard Purdie
2020-08-27 19:39 ` Randy Witt
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.