Re-use the runstrip() code from oe.packaging, for the kernel
stripping process. Since runstrip() is python the kernel do_strip()
need to be converted to Python also. The stripped kernel image
will be used for deployment in do_deploy(). This will allow the
package.bbclass to split an unstripped kernel binary for the debug
information and extended packagedata. The extended package data is
used by create-spdx.

Signed-off-by: Saul Wold <saul.w...@windriver.com>
---
 meta/classes/kernel.bbclass | 44 ++++++++++++++++---------------------
 1 file changed, 19 insertions(+), 25 deletions(-)

diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 7685c6921fa..473e28be477 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -700,30 +700,19 @@ do_kernel_link_images() {
 }
 addtask kernel_link_images after do_compile before do_strip
 
-do_strip() {
-       if [ -n "${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}" ]; then
-               if ! (echo "${KERNEL_IMAGETYPES}" | grep -wq "vmlinux"); then
-                       bbwarn "image type(s) will not be stripped (not 
supported): ${KERNEL_IMAGETYPES}"
-                       return
-               fi
-
-               cd ${B}
-               headers=`"$CROSS_COMPILE"readelf -S 
${KERNEL_OUTPUT_DIR}/vmlinux | \
-                         grep "^ \{1,\}\[[0-9 ]\{1,\}\] [^ ]" | \
-                         sed "s/^ \{1,\}\[[0-9 ]\{1,\}\] //" | \
-                         gawk '{print $1}'`
-
-               for str in ${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}; do {
-                       if ! (echo "$headers" | grep -q "^$str$"); then
-                               bbwarn "Section not found: $str";
-                       fi
-
-                       "$CROSS_COMPILE"strip -s -R $str 
${KERNEL_OUTPUT_DIR}/vmlinux
-               }; done
-
-               bbnote "KERNEL_IMAGE_STRIP_EXTRA_SECTIONS is set, stripping 
sections:" \
-                       "${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}"
-       fi;
+python do_strip() {
+    import shutil
+
+    strip = d.getVar('STRIP')
+    extra_sections = d.getVar('KERNEL_IMAGE_STRIP_EXTRA_SECTIONS')
+    kernel_image = d.getVar('B') + "/" + d.getVar('KERNEL_OUTPUT_DIR') + 
"/vmlinux"
+
+    if (extra_sections and kernel_image.find('boot/vmlinux') != -1):
+        kernel_image_stripped = kernel_image + ".stripped"
+        shutil.copy2(kernel_image, kernel_image_stripped)
+        oe.package.runstrip((kernel_image_stripped, 8, strip, extra_sections))
+        bb.debug(1, "KERNEL_IMAGE_STRIP_EXTRA_SECTIONS is set, stripping 
sections: " + \
+            extra_sections)
 }
 do_strip[dirs] = "${B}"
 
@@ -768,7 +757,12 @@ kernel_do_deploy() {
 
        for imageType in ${KERNEL_IMAGETYPES} ; do
                baseName=$imageType-${KERNEL_IMAGE_NAME}
-               install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType 
$deployDir/$baseName${KERNEL_IMAGE_BIN_EXT}
+
+               if [ -s ${KERNEL_OUTPUT_DIR}/$imageType.stripped ] ; then
+                       install -m 0644 
${KERNEL_OUTPUT_DIR}/$imageType.stripped 
$deployDir/$baseName${KERNEL_IMAGE_BIN_EXT}
+               else
+                       install -m 0644 ${KERNEL_OUTPUT_DIR}/$imageType 
$deployDir/$baseName${KERNEL_IMAGE_BIN_EXT}
+               fi
                if [ -n "${KERNEL_IMAGE_LINK_NAME}" ] ; then
                        ln -sf $baseName${KERNEL_IMAGE_BIN_EXT} 
$deployDir/$imageType-${KERNEL_IMAGE_LINK_NAME}${KERNEL_IMAGE_BIN_EXT}
                fi
-- 
2.31.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#160493): 
https://lists.openembedded.org/g/openembedded-core/message/160493
Mute This Topic: https://lists.openembedded.org/mt/88377978/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to