From: Jeff Kletsky Date: Wed, 13 Nov 2019 21:09:48 +0000 (-0800) Subject: build: define check-kernel-size to remove unflashable images X-Git-Tag: v21.02.0-rc1~4040 X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=f0b76d02e8345022d417f02733504cfd862a2d6f;p=openwrt%2Fopenwrt.git build: define check-kernel-size to remove unflashable images Certain boards have limitations on U-Boot that prevent flashing of images where the kernel size exceeds a threshold, yet sysupgrade can sucessfully manage larger kernels. The current check-size will remove the target artifact if its total size exceeds the threshold. If applied after append-kernel, it will remove the kernel, but the remaining image-assembly steps will continue, resulting in an image without a kernel that is likely unbootable. By defining check-kernel-size, it is now possible to prevent release of such unbootable images through a construct similar to: IMAGE/factory.img := append-kernel | pad-to $$$$(GL_UBOOT_UBI_OFFSET) | \ append-ubi | check-kernel-size $$$$(GL_UBOOT_UBI_OFFSET) Cc: Chuanhong Guo Signed-off-by: Jeff Kletsky --- diff --git a/include/image-commands.mk b/include/image-commands.mk index 3b091f26ac..37cb083bbf 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -275,6 +275,13 @@ define Build/check-size } endef +define Build/check-kernel-size + @[ $$(($(subst k,* 1024,$(subst m, * 1024k,$(1))))) -ge "$$(stat -c%s $(IMAGE_KERNEL))" ] || { \ + echo "WARNING: Kernel for $@ is too big > $(1)" >&2; \ + rm -f $@; \ + } +endef + define Build/combined-image -sh $(TOPDIR)/scripts/combined-image.sh \ "$(IMAGE_KERNEL)" \