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

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

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?

Sau!

[0] https://bugzilla.yoctoproject.org/show_bug.cgi?id=3515


qemux86 musl cryptodev:
https://autobuilder.yoctoproject.org/typhoon/#/builders/64/builds/4512/steps/11/logs/stdio

qemux86-64 musl cryptodev:
https://autobuilder.yoctoproject.org/typhoon/#/builders/45/builds/4526

qemux86 cryptodev:
https://autobuilder.yoctoproject.org/typhoon/#/builders/52/builds/4476/steps/11/logs/stdio

I tried these and have not been able to reproduce the failure.



selftest failure in linux-yocto:
https://autobuilder.yoctoproject.org/typhoon/#/builders/87/builds/2981/steps/14/logs/stdio
(file truncated makes it sound like a race?)

stap kernel module failure:
https://autobuilder.yoctoproject.org/typhoon/#/builders/110/builds/3395/steps/13/logs/stdio
(race/intermittent?)

another kernel module race:
https://autobuilder.yoctoproject.org/typhoon/#/builders/63/builds/4480/steps/16/logs/stdio

Might need to try this on the AB once I resolve the kernel stripping issue above.

Sau!

Cheers,

Richard




--
Sau!
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#160172): 
https://lists.openembedded.org/g/openembedded-core/message/160172
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