On Tue, Jan 11, 2022 at 6:59 PM Saul Wold <[email protected]> wrote:
>
> 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 <[email protected]>
> ---
>  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..b2f9e3c8071 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

We are losing this warning in the relocated / common routine. It looks
like something we could continue to detect and warn on, no ?

> -
> -                       "$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 is not None and kernel_image.find('boot/vmlinux') != 
> -1):

Minor 'nit .. I'd probably just write that as: if extra_sections
(versus the is not None) .. but maybe you have it that way due to that
check not working.

> +        kernel_image_stripped = kernel_image + ".stripped"
> +        shutil.copy2(kernel_image, kernel_image_stripped)
> +        oe.package.runstrip((kernel_image_stripped, 8, strip, 
> extra_sections))
> +        bb.note ("KERNEL_IMAGE_STRIP_EXTRA_SECTIONS is set, stripping 
> sections: " + \
> +            extra_sections)

In theory, we could move the debug log to the common routine when it
detects the extra section argument

>  }
>  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

Is there a scenario when the ".stripped" image isn't available ?
Wouldn't that already be an error, and so the deploy should just be an
error, versus copying the non-stripped one ?

Bruce

>                 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
>


-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#160482): 
https://lists.openembedded.org/g/openembedded-core/message/160482
Mute This Topic: https://lists.openembedded.org/mt/88362607/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to