b9aca834e8
The current image build code has a number of race conditions and interface
contract violations in the custom image build steps:
- Build/install-zImage, solely used by at91, relies on $(PROFILE_SANITIZED)
which is not available when building with CONFIG_TARGET_MULTI_PROFILE
- Build/at91-sdcard, which may run concurrently, creates scratch files at
fixed locations and manipulates target files directly which can lead
to file corruption and other unexpected failures
Rename the install-zImage macro to at91-install-zImage and move it to the
at91 image Makefile since this target is the sole user. Also utilize "$@"
as output file name and switch the usage of $(PROFILE_SANITIZED) to
$(DEVICE_NAME) in order to fix naming under multi profile builds.
Fix the at91-sdcard macro to construct scratch file paths relative to "$@",
which is guaranteed to be unique and store the final artifact output in "$@"
as well, instead of inside $(BIN_DIR). The generic image build code takes
care of moving a build steps "$@" output to the final destination in a
concurrency-safe manner.
Finally remove the broken install-zImage from the generic image-commands
Makefile.
Fixes: d7a679a036
("at91: Install zImage.")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
77 lines
1.6 KiB
Makefile
77 lines
1.6 KiB
Makefile
#
|
|
# Copyright (C) 2006-2013 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/image.mk
|
|
|
|
KERNEL_LOADADDR := 0x20008000
|
|
|
|
define Build/at91-install-zImage
|
|
$(CP) $(KDIR)/zImage $@
|
|
endef
|
|
|
|
ifeq ($(SUBTARGET),legacy)
|
|
include ./legacy.mk
|
|
endif
|
|
ifeq ($(SUBTARGET),sama5)
|
|
include ./sama5.mk
|
|
endif
|
|
|
|
define Device/Default
|
|
$(Device/default-nand)
|
|
PROFILES := Default
|
|
FILESYSTEMS := squashfs ubifs
|
|
DEVICE_DTS := $(1)
|
|
KERNEL_NAME := zImage
|
|
KERNEL_SIZE := 4096k
|
|
KERNEL := kernel-bin | append-dtb | lzma | uImage lzma
|
|
DTB_SIZE := 128k
|
|
endef
|
|
|
|
define Device/dtb
|
|
KERNEL := kernel-bin | lzma | uImage lzma
|
|
endef
|
|
|
|
define Device/evaluation
|
|
KERNEL_INSTALL := 1
|
|
KERNEL_SUFFIX := -uImage
|
|
IMAGES := root.ubi
|
|
IMAGE/root.ubi := append-ubi
|
|
endef
|
|
|
|
define Device/evaluation-zImage
|
|
IMAGES += zImage
|
|
IMAGE/zImage := at91-install-zImage
|
|
endef
|
|
|
|
define Device/evaluation-dtb
|
|
$(Device/evaluation)
|
|
$(Device/dtb)
|
|
$(Device/evaluation-zImage)
|
|
IMAGES += dtb
|
|
IMAGE/dtb := install-dtb
|
|
endef
|
|
|
|
define Device/evaluation-fit
|
|
$(Device/evaluation)
|
|
KERNEL_SUFFIX := -fit-uImage.itb
|
|
KERNEL := kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(DEVICE_DTS).dtb
|
|
endef
|
|
|
|
define Device/production
|
|
UBINIZE_OPTS := -E 5
|
|
IMAGES := factory.bin
|
|
IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
|
|
endef
|
|
|
|
define Device/production-dtb
|
|
$(Device/production)
|
|
$(Device/dtb)
|
|
IMAGE/factory.bin := append-dtb | pad-to $$$$(DTB_SIZE) \
|
|
| append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi
|
|
endef
|
|
|
|
$(eval $(call BuildImage))
|