On Tue, 2022-01-04 at 14:07 -0800, Saul Wold wrote:
> 
> On 12/22/21 01:09, Richard Purdie wrote:
> > On Tue, 2021-12-21 at 11:08 -0800, Saul Wold wrote:
> > > Stop ignoring or skipping the kernel and kernel modules code in the
> > > split debug and striping functions, this will allow create_spdx to
> > > process the kernel and modules.
> > > 
> > > Signed-off-by: Saul Wold <[email protected]>
> > > ---
> > >   meta/classes/package.bbclass | 8 ++------
> > >   1 file changed, 2 insertions(+), 6 deletions(-)
> > > 
> > > diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
> > > index 84eafbd529..4b7fe4f1e1 100644
> > > --- a/meta/classes/package.bbclass
> > > +++ b/meta/classes/package.bbclass
> > > @@ -390,10 +390,6 @@ def splitdebuginfo(file, dvar, debugdir, 
> > > debuglibdir, debugappend, debugsrcdir,
> > >       dvar = d.getVar('PKGD')
> > >       objcopy = d.getVar("OBJCOPY")
> > >   
> > > -    # We ignore kernel modules, we don't generate debug info files.
> > > -    if file.find("/lib/modules/") != -1 and file.endswith(".ko"):
> > > -        return (file, sources)
> > > -
> > >       newmode = None
> > >       if not os.access(file, os.W_OK) or os.access(file, os.R_OK):
> > >           origmode = os.stat(file)[stat.ST_MODE]
> > > @@ -1147,7 +1143,7 @@ python split_and_strip_files () {
> > >   
> > >                   if file.endswith(".ko") and file.find("/lib/modules/") 
> > > != -1:
> > >                       kernmods.append(file)
> > > -                    continue
> > > +
> > >                   if oe.package.is_static_lib(file):
> > >                       staticlibs.append(file)
> > >                       continue
> > > @@ -1165,7 +1161,7 @@ python split_and_strip_files () {
> > >                       continue
> > >                   # Check its an executable
> > >                   if (s[stat.ST_MODE] & stat.S_IXUSR) or (s[stat.ST_MODE] 
> > > & stat.S_IXGRP) or (s[stat.ST_MODE] & stat.S_IXOTH) \
> > > -                        or ((file.startswith(libdir) or 
> > > file.startswith(baselibdir)) and (".so" in f or ".node" in f)):
> > > +                        or ((file.startswith(libdir) or 
> > > file.startswith(baselibdir)) and (".so" in f or ".node" in f)) or 
> > > (f.startswith('vmlinux') or ".ko" in f):
> > >   
> > >                       if cpath.islink(file):
> > >                           checkelflinks[file] = ltarget
> > 
> > edgerouter:
> > https://autobuilder.yoctoproject.org/typhoon/#/builders/62/builds/4513
> > https://autobuilder.yoctoproject.org/typhoon/#/builders/111/builds/2507/steps/11/logs/stdio
> > 
> So I have been digging into this and it seems that an option was added a 
> decade ago or so to strip the kernel/vmlinux when it's too big, this was 
> done for at least the routerstationpro according to bug #3515 [0], and 
> persists with the edgerouter, although I am not sure if it would still 
> actually be required as the edgerouter also uses the 
> KERNEL_ALT_IMAGETYPE to create a smaller binary kernel image.
> 
> The change I proposed causes the all kernels to be stripped all the time 
> as part of the split_and_strip_files(). As I see it there few different 
> options:
> 
> 1) Set KERNEL_IMAGE_EXTRA_STRIP_SECTIONS = "" in create_spdx.bbclass
>    - This solves the problem with create_spdx.bbclass is in use, but not 
> the general case

I don't think I like this as it is a side effect that isn't obvious or expected.

> 
> 2) Remove the KERNEL_IMAGE_EXTRA_STRIP_SECTIONS from edgerouter.conf
>    - Will solve the edgerouter case but may not solve other usages 
> unknown to me.
>    - Does anyone know of other machines/layers usage of this variable?
> 
> 3) deprecate the kernel.bbclass:do_strip function in favor of using the 
> split_and_strip_files() of package.bbclass

I know Bruce has said he doesn't like this, however stepping back, these issues
were from a time our stripping code was young and evolving. If we can
standardise and have it all work together well in one set of functions, I think
that is worth looking at. I'd prefer the kernel wasn't a special case if it no
longer needs to be.

That said, I don't remember the details of why we did this.


> 
> 4) Change error to warning in packaging.bbclass for the kernel only
>    - This would explain that a kernel image (vmlinux) is already 
> stripped and extended package data would not be available for for SPDX 
> creation.
> 
> RP, Bruce, Joshua: Thoughts?

If we can simplify and stop the kernel being a special case for this code (or
handle kernels generically) that would be worth a bit of effort IMO...

Cheers,

Richard



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#160211): 
https://lists.openembedded.org/g/openembedded-core/message/160211
Mute This Topic: https://lists.openembedded.org/mt/87884056/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to