Re: [OE-core] [PATCH] wic/bootimg-efi: Add support for IMAGE_BOOT_FILES

2020-08-16 Thread Khasim Mohammed
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 

Re: Fw: [OE-core] [PATCH] wic/bootimg-efi: Add support for IMAGE_BOOT_FILES

2020-07-24 Thread Khasim Mohammed
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,
> entry_dst_name))
> +else:
> +cls.install_task.appen

[OE-core] [PATCH] selftest: wic: IMAGE_BOOT_FILES test to run on bootimg-efi

2020-07-24 Thread Khasim Mohammed
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

2020-07-23 Thread Khasim Mohammed
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]
-=-=-=-=-=-=-=-=-=-=-=-