Re: [OE-core] [PATCH] wic/bootimg-efi: Add support for IMAGE_BOOT_FILES
Hi, On Thu, 2020-07-23 at 15:21 +0530, Khasim Syed Mohammed wrote: > List of files defined using IMAGE_BOOT_FILES are installed into > the boot partition when preparing an image using the wic tool with > the bootimg-efi source plugin. > > The code snippet introduced is taken as is from bootimg-partition.py > > Change-Id: I8dbb6b4e7c24870f587a6f31e6ae4a87d7033782 > Issue-Id: PLATFORMS-3134 > Signed-off-by: Khasim Syed Mohammed > --- > scripts/lib/wic/plugins/source/bootimg-efi.py | 60 > +++ > 1 file changed, 60 insertions(+) > > diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py > b/scripts/lib/wic/plugins/source/bootimg-efi.py > index 2cfdc10ecd..14c1723577 100644 > --- a/scripts/lib/wic/plugins/source/bootimg-efi.py > +++ b/scripts/lib/wic/plugins/source/bootimg-efi.py > @@ -13,6 +13,9 @@ > import logging > import os > import shutil > +import re > + > +from glob import glob > > from wic import WicError > from wic.engine import get_custom_config > @@ -209,6 +212,57 @@ 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') > +else: > +boot_files = None > +for (fmt, id) in (("_uuid-%s", part.uuid), ("_label-%s", > part.label), (None, None)): > +if fmt: > +var = fmt % id > +else: > +var = "" > + > +boot_files = get_bitbake_var("IMAGE_BOOT_FILES" + > var) > +if boot_files: > +break > + > +logger.debug('Boot files: %s', boot_files) > + > +# list of tuples (src_name, dst_name) > +deploy_files = [] > +for src_entry in re.findall(r'[\w;\-\./\*]+', > boot_files): > +if ';' in src_entry: > +dst_entry = tuple(src_entry.split(';')) > +if not dst_entry[0] or not dst_entry[1]: > +raise WicError('Malformed boot file entry: > %s' % src_entry) > +else: > +dst_entry = (src_entry, src_entry) > + > +logger.debug('Destination entry: %r', dst_entry) > +deploy_files.append(dst_entry) > + > +cls.install_task = []; > +for deploy_entry in deploy_files: > +src, dst = deploy_entry > +if '*' in src: > +# by default install files under their basename > +entry_name_fn = os.path.basename > +if dst != src: > +# unless a target name was given, then treat > name > +# as a directory and append a basename > +entry_name_fn = lambda name: \ > +os.path.join(dst, > + os.path.basenam > e(name)) > + > +srcs = glob(os.path.join(kernel_dir, src)) > + > +logger.debug('Globbed sources: %s', ', > '.join(srcs)) > +for entry in srcs: > +src = os.path.relpath(entry, kernel_dir) > +entry_dst_name = entry_name_fn(entry) > +cls.install_task.append((src, > entry_dst_name)) > +else: > +cls.install_task.append((src, dst)) > > @classmethod > def do_prepare_partition(cls, part, source_params, creator, > cr_workdir, > @@ -238,6 +292,12 @@ class BootimgEFIPlugin(SourcePlugin): > (staging_kernel_dir, kernel, hdddir, kernel) > exec_cmd(install_cmd) > > +if get_bitbake_var("IMAGE_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), > + os.path.join(hdddir, dst_path)) > +exec_cmd(install_cmd) > > try: > if source_params['loader'] == 'grub-efi': This patch was recently merged to master https://git.openembedded.org/openembedded-core/commit/scripts/lib/wic/plugins/source/bootimg-efi.py?id=a44ab3a4ee5b3c57812909c6194456f299d6ba7f The IMAGE_BOOT_FILES feature is important for N1SDP ARM Platform and it's used to copy few DTBs to boot partition. Without this feature the wic image for N1SDP will support only ACPI boot and it will be broken for DTB based booting, as this feature is working on master its only missing on dunfell branch. I hereby request to consider this patch for dunfell branch as well. It will help ARM partners to use WIC image for both ACPI and DTBs based booting and avoid customizing the build for N1SDP. Let me know if you find any issues in m
Re: Fw: [OE-core] [PATCH] wic/bootimg-efi: Add support for IMAGE_BOOT_FILES
Hi Lee, On Fri, 2020-07-24 at 12:12 +0530, Khasim Mohammed wrote: > > > From: openembedded-core@lists.openembedded.org < > openembedded-core@lists.openembedded.org> on behalf of Lee Chee Yang > via lists.openembedded.org < > chee.yang.lee=intel@lists.openembedded.org> > Sent: Friday, July 24, 2020 6:28 AM > To: Khasim Mohammed; openembedded-core@lists.openembedded.org > Cc: nd > Subject: Re: [OE-core] [PATCH] wic/bootimg-efi: Add support for > IMAGE_BOOT_FILES > > Hi, > I think currently IMAGE_BOOT_FILES test run on bootimg-partition > only. yes. > Could you add test cases for bootimg-efi too? > I posted a separate patch to test IMAGE_BOOT_FILES for bootimg-efi. Thanks. Regards, Khasim > -Original Message- > From: openembedded-core@lists.openembedded.org < > openembedded-core@lists.openembedded.org> On Behalf Of Khasim > Mohammed > Sent: Thursday, 23 July, 2020 5:52 PM > To: openembedded-core@lists.openembedded.org > Cc: n...@arm.com; Khasim Syed Mohammed > Subject: [OE-core] [PATCH] wic/bootimg-efi: Add support for > IMAGE_BOOT_FILES > > List of files defined using IMAGE_BOOT_FILES are installed into the > boot partition when preparing an image using the wic tool with the > bootimg-efi source plugin. > > The code snippet introduced is taken as is from bootimg-partition.py > > Change-Id: I8dbb6b4e7c24870f587a6f31e6ae4a87d7033782 > Issue-Id: PLATFORMS-3134 > Signed-off-by: Khasim Syed Mohammed > --- > scripts/lib/wic/plugins/source/bootimg-efi.py | 60 > +++ > 1 file changed, 60 insertions(+) > > diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py > b/scripts/lib/wic/plugins/source/bootimg-efi.py > index 2cfdc10ecd..14c1723577 100644 > --- a/scripts/lib/wic/plugins/source/bootimg-efi.py > +++ b/scripts/lib/wic/plugins/source/bootimg-efi.py > @@ -13,6 +13,9 @@ > import logging > import os > import shutil > +import re > + > +from glob import glob > > from wic import WicError > from wic.engine import get_custom_config @@ -209,6 +212,57 @@ 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') > +else: > +boot_files = None > +for (fmt, id) in (("_uuid-%s", part.uuid), ("_label-%s", > part.label), (None, None)): > +if fmt: > +var = fmt % id > +else: > +var = "" > + > +boot_files = get_bitbake_var("IMAGE_BOOT_FILES" + > var) > +if boot_files: > +break > + > +logger.debug('Boot files: %s', boot_files) > + > +# list of tuples (src_name, dst_name) > +deploy_files = [] > +for src_entry in re.findall(r'[\w;\-\./\*]+', > boot_files): > +if ';' in src_entry: > +dst_entry = tuple(src_entry.split(';')) > +if not dst_entry[0] or not dst_entry[1]: > +raise WicError('Malformed boot file entry: > %s' % src_entry) > +else: > +dst_entry = (src_entry, src_entry) > + > +logger.debug('Destination entry: %r', dst_entry) > +deploy_files.append(dst_entry) > + > +cls.install_task = []; > +for deploy_entry in deploy_files: > +src, dst = deploy_entry > +if '*' in src: > +# by default install files under their basename > +entry_name_fn = os.path.basename > +if dst != src: > +# unless a target name was given, then treat > name > +# as a directory and append a basename > +entry_name_fn = lambda name: \ > +os.path.join(dst, > + > + os.path.basename(name)) > + > +srcs = glob(os.path.join(kernel_dir, src)) > + > +logger.debug('Globbed sources: %s', ', > '.join(srcs)) > +for entry in srcs: > +src = os.path.relpath(entry, kernel_dir) > +entry_dst_name = entry_name_fn(entry) > +cls.install_task.append((src
[OE-core] [PATCH] selftest: wic: IMAGE_BOOT_FILES test to run on bootimg-efi
bootimg-efi is updated to install files listed in IMAGE_BOOT_FILES into the boot partition. The test_mkefidisk in oeqa selftest is updated to run IMAGE_BOOT_FILES test for bootimg-efi. Change-Id: Id577e853fecc5fe58531c7afa33db3b1c00c8319 Signed-off-by: Khasim Syed Mohammed --- meta/lib/oeqa/selftest/cases/wic.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meta/lib/oeqa/selftest/cases/wic.py b/meta/lib/oeqa/selftest/cases/wic.py index 8b58285c32..41b15f6323 100644 --- a/meta/lib/oeqa/selftest/cases/wic.py +++ b/meta/lib/oeqa/selftest/cases/wic.py @@ -210,6 +210,8 @@ class Wic(WicTestCase): def test_mkefidisk(self): """Test creation of mkefidisk image""" cmd = "wic create mkefidisk -e core-image-minimal -o %s" % self.resultdir +kimgtype = get_bb_var('KERNEL_IMAGETYPE', 'core-image-minimal') +self.write_config('IMAGE_BOOT_FILES = "%s"\n' % kimgtype) runCmd(cmd) self.assertEqual(1, len(glob(self.resultdir + "mkefidisk-*direct"))) -- 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#140914): https://lists.openembedded.org/g/openembedded-core/message/140914 Mute This Topic: https://lists.openembedded.org/mt/75761675/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-
[OE-core] [PATCH] wic/bootimg-efi: Add support for IMAGE_BOOT_FILES
List of files defined using IMAGE_BOOT_FILES are installed into the boot partition when preparing an image using the wic tool with the bootimg-efi source plugin. The code snippet introduced is taken as is from bootimg-partition.py Change-Id: I8dbb6b4e7c24870f587a6f31e6ae4a87d7033782 Issue-Id: PLATFORMS-3134 Signed-off-by: Khasim Syed Mohammed --- scripts/lib/wic/plugins/source/bootimg-efi.py | 60 +++ 1 file changed, 60 insertions(+) diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py index 2cfdc10ecd..14c1723577 100644 --- a/scripts/lib/wic/plugins/source/bootimg-efi.py +++ b/scripts/lib/wic/plugins/source/bootimg-efi.py @@ -13,6 +13,9 @@ import logging import os import shutil +import re + +from glob import glob from wic import WicError from wic.engine import get_custom_config @@ -209,6 +212,57 @@ 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') +else: +boot_files = None +for (fmt, id) in (("_uuid-%s", part.uuid), ("_label-%s", part.label), (None, None)): +if fmt: +var = fmt % id +else: +var = "" + +boot_files = get_bitbake_var("IMAGE_BOOT_FILES" + var) +if boot_files: +break + +logger.debug('Boot files: %s', boot_files) + +# list of tuples (src_name, dst_name) +deploy_files = [] +for src_entry in re.findall(r'[\w;\-\./\*]+', boot_files): +if ';' in src_entry: +dst_entry = tuple(src_entry.split(';')) +if not dst_entry[0] or not dst_entry[1]: +raise WicError('Malformed boot file entry: %s' % src_entry) +else: +dst_entry = (src_entry, src_entry) + +logger.debug('Destination entry: %r', dst_entry) +deploy_files.append(dst_entry) + +cls.install_task = []; +for deploy_entry in deploy_files: +src, dst = deploy_entry +if '*' in src: +# by default install files under their basename +entry_name_fn = os.path.basename +if dst != src: +# unless a target name was given, then treat name +# as a directory and append a basename +entry_name_fn = lambda name: \ +os.path.join(dst, + os.path.basename(name)) + +srcs = glob(os.path.join(kernel_dir, src)) + +logger.debug('Globbed sources: %s', ', '.join(srcs)) +for entry in srcs: +src = os.path.relpath(entry, kernel_dir) +entry_dst_name = entry_name_fn(entry) +cls.install_task.append((src, entry_dst_name)) +else: +cls.install_task.append((src, dst)) @classmethod def do_prepare_partition(cls, part, source_params, creator, cr_workdir, @@ -238,6 +292,12 @@ class BootimgEFIPlugin(SourcePlugin): (staging_kernel_dir, kernel, hdddir, kernel) exec_cmd(install_cmd) +if get_bitbake_var("IMAGE_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), + os.path.join(hdddir, dst_path)) +exec_cmd(install_cmd) try: if source_params['loader'] == 'grub-efi': -- 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#140895): https://lists.openembedded.org/g/openembedded-core/message/140895 Mute This Topic: https://lists.openembedded.org/mt/75742779/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-