diff options
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/kernel.bbclass | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass index 756707a3c2..14f41e9b17 100644 --- a/meta/classes/kernel.bbclass +++ b/meta/classes/kernel.bbclass | |||
@@ -595,19 +595,27 @@ do_strip[dirs] = "${B}" | |||
595 | addtask strip before do_sizecheck after do_kernel_link_images | 595 | addtask strip before do_sizecheck after do_kernel_link_images |
596 | 596 | ||
597 | # Support checking the kernel size since some kernels need to reside in partitions | 597 | # Support checking the kernel size since some kernels need to reside in partitions |
598 | # with a fixed length or there is a limit in transferring the kernel to memory | 598 | # with a fixed length or there is a limit in transferring the kernel to memory. |
599 | # If more than one image type is enabled, warn on any that don't fit but only fail | ||
600 | # if none fit. | ||
599 | do_sizecheck() { | 601 | do_sizecheck() { |
600 | if [ ! -z "${KERNEL_IMAGE_MAXSIZE}" ]; then | 602 | if [ ! -z "${KERNEL_IMAGE_MAXSIZE}" ]; then |
601 | invalid=`echo ${KERNEL_IMAGE_MAXSIZE} | sed 's/[0-9]//g'` | 603 | invalid=`echo ${KERNEL_IMAGE_MAXSIZE} | sed 's/[0-9]//g'` |
602 | if [ -n "$invalid" ]; then | 604 | if [ -n "$invalid" ]; then |
603 | die "Invalid KERNEL_IMAGE_MAXSIZE: ${KERNEL_IMAGE_MAXSIZE}, should be an integerx (The unit is Kbytes)" | 605 | die "Invalid KERNEL_IMAGE_MAXSIZE: ${KERNEL_IMAGE_MAXSIZE}, should be an integer (The unit is Kbytes)" |
604 | fi | 606 | fi |
607 | at_least_one_fits= | ||
605 | for type in ${KERNEL_IMAGETYPES} ; do | 608 | for type in ${KERNEL_IMAGETYPES} ; do |
606 | size=`du -ks ${B}/${KERNEL_OUTPUT_DIR}/$type | awk '{print $1}'` | 609 | size=`du -ks ${B}/${KERNEL_OUTPUT_DIR}/$type | awk '{print $1}'` |
607 | if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then | 610 | if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then |
608 | warn "This kernel $type (size=$size(K) > ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device. Please reduce the size of the kernel by making more of it modular." | 611 | bbwarn "This kernel $type (size=$size(K) > ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device." |
612 | else | ||
613 | at_least_one_fits=y | ||
609 | fi | 614 | fi |
610 | done | 615 | done |
616 | if [ -z "$at_least_one_fits" ]; then | ||
617 | die "All kernel images are too big for your device. Please reduce the size of the kernel by making more of it modular." | ||
618 | fi | ||
611 | fi | 619 | fi |
612 | } | 620 | } |
613 | do_sizecheck[dirs] = "${B}" | 621 | do_sizecheck[dirs] = "${B}" |