diff options
| -rw-r--r-- | meta/classes/kernel.bbclass | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass index af58887f28..f3a55535fb 100644 --- a/meta/classes/kernel.bbclass +++ b/meta/classes/kernel.bbclass | |||
| @@ -88,7 +88,7 @@ do_compile_kernelmodules() { | |||
| 88 | bbnote "no modules to compile" | 88 | bbnote "no modules to compile" |
| 89 | fi | 89 | fi |
| 90 | } | 90 | } |
| 91 | addtask compile_kernelmodules after do_compile before do_install | 91 | addtask compile_kernelmodules after do_compile before do_strip |
| 92 | 92 | ||
| 93 | kernel_do_install() { | 93 | kernel_do_install() { |
| 94 | # | 94 | # |
| @@ -289,6 +289,35 @@ python split_kernel_packages () { | |||
| 289 | do_split_packages(d, root='/lib/firmware', file_regex='^(.*)\.cis$', output_pattern='kernel-firmware-%s', description='Firmware for %s', recursive=True, extra_depends='') | 289 | do_split_packages(d, root='/lib/firmware', file_regex='^(.*)\.cis$', output_pattern='kernel-firmware-%s', description='Firmware for %s', recursive=True, extra_depends='') |
| 290 | } | 290 | } |
| 291 | 291 | ||
| 292 | do_strip() { | ||
| 293 | if [ -n "${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}" ]; then | ||
| 294 | if [[ "${KERNEL_IMAGETYPE}" != "vmlinux" ]]; then | ||
| 295 | bbwarn "image type will not be stripped (not supported): ${KERNEL_IMAGETYPE}" | ||
| 296 | return | ||
| 297 | fi | ||
| 298 | |||
| 299 | cd ${B} | ||
| 300 | headers=`"$CROSS_COMPILE"readelf -S ${KERNEL_OUTPUT} | \ | ||
| 301 | grep "^ \{1,\}\[[0-9 ]\{1,\}\] [^ ]" | \ | ||
| 302 | sed "s/^ \{1,\}\[[0-9 ]\{1,\}\] //" | \ | ||
| 303 | gawk '{print $1}'` | ||
| 304 | |||
| 305 | for str in ${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}; do { | ||
| 306 | if [[ "$headers" != *"$str"* ]]; then | ||
| 307 | bbwarn "Section not found: $str"; | ||
| 308 | fi | ||
| 309 | |||
| 310 | "$CROSS_COMPILE"strip -s -R $str ${KERNEL_OUTPUT} | ||
| 311 | }; done | ||
| 312 | |||
| 313 | bbnote "KERNEL_IMAGE_STRIP_EXTRA_SECTIONS is set, stripping sections:" \ | ||
| 314 | "${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}" | ||
| 315 | fi; | ||
| 316 | } | ||
| 317 | do_strip[dirs] = "${B}" | ||
| 318 | |||
| 319 | addtask do_strip before do_sizecheck after do_kernel_link_vmlinux | ||
| 320 | |||
| 292 | # Support checking the kernel size since some kernels need to reside in partitions | 321 | # Support checking the kernel size since some kernels need to reside in partitions |
| 293 | # with a fixed length or there is a limit in transferring the kernel to memory | 322 | # with a fixed length or there is a limit in transferring the kernel to memory |
| 294 | do_sizecheck() { | 323 | do_sizecheck() { |
| @@ -302,7 +331,7 @@ do_sizecheck() { | |||
| 302 | } | 331 | } |
| 303 | do_sizecheck[dirs] = "${B}" | 332 | do_sizecheck[dirs] = "${B}" |
| 304 | 333 | ||
| 305 | addtask sizecheck before do_install after do_kernel_link_vmlinux | 334 | addtask sizecheck before do_install after do_strip |
| 306 | 335 | ||
| 307 | KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PE}-${PV}-${PR}-${MACHINE}-${DATETIME}" | 336 | KERNEL_IMAGE_BASE_NAME ?= "${KERNEL_IMAGETYPE}-${PE}-${PV}-${PR}-${MACHINE}-${DATETIME}" |
| 308 | # Don't include the DATETIME variable in the sstate package signatures | 337 | # Don't include the DATETIME variable in the sstate package signatures |
