]> code.ossystems Code Review - openembedded-core.git/commitdiff
kernel.bbclass: use common strip()
authorSaul Wold <Saul.Wold@windriver.com>
Wed, 12 Jan 2022 17:20:41 +0000 (09:20 -0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 13 Jan 2022 13:57:08 +0000 (13:57 +0000)
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.wold@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/kernel.bbclass

index 7685c6921fa8539c3c7eef82a1aa6be55748977d..473e28be4774ab6d2f473304fa02facf2952aeb6 100644 (file)
@@ -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