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