aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/at91
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2018-02-13 16:12:08 +0100
committerJo-Philipp Wich <jo@mein.io>2018-02-14 15:47:16 +0100
commitb9aca834e812efc9d0bb2701eab8c78f2efb0367 (patch)
tree884935d7147a43bc06878771f7b225f3a625280a /target/linux/at91
parent7762c07c88980cff85ec20c12f18cd172260e9d9 (diff)
downloadupstream-b9aca834e812efc9d0bb2701eab8c78f2efb0367.tar.gz
upstream-b9aca834e812efc9d0bb2701eab8c78f2efb0367.tar.bz2
upstream-b9aca834e812efc9d0bb2701eab8c78f2efb0367.zip
at91: fix image building with CONFIG_TARGET_MULTI_PROFILE
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>
Diffstat (limited to 'target/linux/at91')
-rw-r--r--target/linux/at91/image/Makefile6
-rw-r--r--target/linux/at91/image/sama5.mk15
2 files changed, 10 insertions, 11 deletions
diff --git a/target/linux/at91/image/Makefile b/target/linux/at91/image/Makefile
index 12607073e4..ccaeebe7ca 100644
--- a/target/linux/at91/image/Makefile
+++ b/target/linux/at91/image/Makefile
@@ -9,6 +9,10 @@ include $(INCLUDE_DIR)/image.mk
KERNEL_LOADADDR := 0x20008000
+define Build/at91-install-zImage
+ $(CP) $(KDIR)/zImage $@
+endef
+
ifeq ($(SUBTARGET),legacy)
include ./legacy.mk
endif
@@ -40,7 +44,7 @@ endef
define Device/evaluation-zImage
IMAGES += zImage
- IMAGE/zImage := install-zImage
+ IMAGE/zImage := at91-install-zImage
endef
define Device/evaluation-dtb
diff --git a/target/linux/at91/image/sama5.mk b/target/linux/at91/image/sama5.mk
index b251d714dc..e51a0bce20 100644
--- a/target/linux/at91/image/sama5.mk
+++ b/target/linux/at91/image/sama5.mk
@@ -16,24 +16,19 @@ define Build/at91-sdcard
$(BIN_DIR)/u-boot-$(dts:at91-%=%)_mmc/u-boot.bin \
::u-boot.bin; \
$(CP) $(BIN_DIR)/at91bootstrap-$(dts:at91-%=%)sd_uboot*/*.bin \
- $(BIN_DIR)/BOOT.bin; \
- mcopy -i $@.boot $(BIN_DIR)/BOOT.bin ::BOOT.bin;)
+ $@.BOOT.bin; \
+ mcopy -i $@.boot $@.BOOT.bin ::BOOT.bin;)
./gen_at91_sdcard_img.sh \
- $(dir $@)$(IMG_PREFIX)-$(DEVICE_NAME)-sdcard.img \
+ $@.img \
$@.boot \
$(KDIR)/root.ext4 \
$(AT91_SD_BOOT_PARTSIZE) \
$(CONFIG_TARGET_ROOTFS_PARTSIZE)
- gzip -nc9 $(dir $@)$(IMG_PREFIX)-$(DEVICE_NAME)-sdcard.img \
- > $(dir $@)$(IMG_PREFIX)-$(DEVICE_NAME)-sdcard.img.gz
+ gzip -nc9 $@.img > $@
- $(CP) $(dir $@)$(IMG_PREFIX)-$(DEVICE_NAME)-sdcard.img.gz \
- $(BIN_DIR)/
-
- rm -f $(BIN_DIR)/BOOT.bin
- rm -f $@.boot
+ rm -f $@.img $@.boot $@.BOOT.bin
endef
define Device/evaluation-sdimage