wic: Use custom kernel path if provided

Message ID SN6PR04MB49095E1D789819C9E3CEC881EC349@SN6PR04MB4909.namprd04.prod.outlook.com
State Accepted, archived
Commit 1068102216a894c467f71f6046fdb37d5577545c
Headers show
Series wic: Use custom kernel path if provided | expand

Commit Message

Bill Pittman Feb. 15, 2022, 4:54 p.m. UTC
If the custom kernel path is provided in options, then
use that path instead of the default path.

Signed-off-by: Bill Pittman <bill.pittman@ni.com>
---
 scripts/wic | 3 +++
 1 file changed, 3 insertions(+)

--
2.25.1


INTERNAL - NI CONFIDENTIAL

Comments

Bill Pittman March 2, 2022, 6:15 p.m. UTC | #1
Hey all,

Gentle ping on this patch, any comments?

Thanks,
Bill
Andrei Gherzan March 2, 2022, 10:06 p.m. UTC | #2
Feb 15, 2022 16:54:28 Bill Pittman <bill.pittman@ni.com>:

> If the custom kernel path is provided in options, then
> use that path instead of the default path.

Just to understand this a bit, what is your usecase here?
--
Andrei Gherzan
gpg: rsa4096/D4D94F67AD0E9640
Richard Purdie March 2, 2022, 11:02 p.m. UTC | #3
On Tue, 2022-02-15 at 16:54 +0000, Bill Pittman wrote:
> If the custom kernel path is provided in options, then
> use that path instead of the default path.
> 
> Signed-off-by: Bill Pittman <bill.pittman@ni.com>
> ---
>  scripts/wic | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/scripts/wic b/scripts/wic
> index a741aed364..29a157bf37 100755
> --- a/scripts/wic
> +++ b/scripts/wic
> @@ -159,6 +159,9 @@ def wic_create_subcommand(options, usage_str):
>                             "(Use -e/--image-name to specify it)")
>          native_sysroot = options.native_sysroot
>  
> +    if options.kernel_dir:
> +        kernel_dir = options.kernel_dir
> +
>      if not options.vars_dir and (not native_sysroot or not
> os.path.isdir(native_sysroot)):
>          logger.info("Building wic-tools...\n")
>          subprocess.check_call(["bitbake", "wic-tools"])


The concern with these kinds of changes is I can't really test it or tell if it
is the right thing to do and I worry about it regressing in the future.

Is there part of the test coverage we should be improving too? wic does have
fairly good coverage from oe-selftest -r wic

Cheers,

Richard
Bill Pittman March 7, 2022, 4:37 p.m. UTC | #4
Andrei,

In our build, we use a two stage build, the first stage builds the IPKs and packages files, the second stage builds the various images from the feeds created in the first stage.  We've run into a corner case when the kernel repo gets an update that bumps the version, if that happens, the kernel will rebuild during the second stage build (the kernel recipe is on AUTOREV).  Unfortunately, that now creates a new kernel with a newer version that the one in the pre-built feed.  The image recipe is then assembled using the prebuilt feed (and the older kernel), however the wic script picks up the new kernel.  Then when the wic image is booted, the new kernel in the boot portion of the wic image is unable to find the right version of modules and it panics.

This is only an issue during development while the kernel recipe is on autorev, but its causing other teams (and us) some grief and this change allows the wic script to always use a custom kernel path.  In this case it allows the wic script to use the path to the kernel installed in the image recipe.

The patch I'm proposing allows options.kernel_dir to always be used if its provided.  The current code in wic_create_subcommand has a code path where it is presently ignored.

Cheers,
Bill
Bill Pittman March 7, 2022, 4:38 p.m. UTC | #5
Richard,

I don't think there are any additional test cases that need to be created for this condition.  It is a fairly unique set of circumstances that cause an error in our build system and would be difficult to reproduce outside of it.

As for your concern about this being the right thing to do, honestly I'm not sure, but it does seem wrong to me that there is a code path that ignores the value in options.kernel_dir, which is why I proposed the patch (and of course our build system was being affected by it).  I'm not sure if it is right or not, but it seems "more right" to me.

Hope that helps,
Bill

Patch

diff --git a/scripts/wic b/scripts/wic
index a741aed364..29a157bf37 100755
--- a/scripts/wic
+++ b/scripts/wic
@@ -159,6 +159,9 @@  def wic_create_subcommand(options, usage_str):
                            "(Use -e/--image-name to specify it)")
         native_sysroot = options.native_sysroot

+    if options.kernel_dir:
+        kernel_dir = options.kernel_dir
+
     if not options.vars_dir and (not native_sysroot or not os.path.isdir(native_sysroot)):
         logger.info("Building wic-tools...\n")
         subprocess.check_call(["bitbake", "wic-tools"])