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>
			
			
This commit is contained in:
		| @@ -113,11 +113,6 @@ define Build/install-dtb | |||||||
| 	) | 	) | ||||||
| endef | endef | ||||||
|  |  | ||||||
| define Build/install-zImage |  | ||||||
|     $(CP) $(KDIR)/zImage \ |  | ||||||
|       $(BIN_DIR)/$(IMG_PREFIX)-$(PROFILE_SANITIZED)-zImage |  | ||||||
| endef |  | ||||||
|  |  | ||||||
| define Build/fit | define Build/fit | ||||||
| 	$(TOPDIR)/scripts/mkits.sh \ | 	$(TOPDIR)/scripts/mkits.sh \ | ||||||
| 		-D $(DEVICE_NAME) -o $@.its -k $@ \ | 		-D $(DEVICE_NAME) -o $@.its -k $@ \ | ||||||
|   | |||||||
| @@ -9,6 +9,10 @@ include $(INCLUDE_DIR)/image.mk | |||||||
|  |  | ||||||
| KERNEL_LOADADDR := 0x20008000 | KERNEL_LOADADDR := 0x20008000 | ||||||
|  |  | ||||||
|  | define Build/at91-install-zImage | ||||||
|  |     $(CP) $(KDIR)/zImage $@ | ||||||
|  | endef | ||||||
|  |  | ||||||
| ifeq ($(SUBTARGET),legacy) | ifeq ($(SUBTARGET),legacy) | ||||||
| include ./legacy.mk | include ./legacy.mk | ||||||
| endif | endif | ||||||
| @@ -40,7 +44,7 @@ endef | |||||||
|  |  | ||||||
| define Device/evaluation-zImage | define Device/evaluation-zImage | ||||||
|   IMAGES += zImage |   IMAGES += zImage | ||||||
|   IMAGE/zImage := install-zImage |   IMAGE/zImage := at91-install-zImage | ||||||
| endef | endef | ||||||
|  |  | ||||||
| define Device/evaluation-dtb | define Device/evaluation-dtb | ||||||
|   | |||||||
| @@ -16,24 +16,19 @@ define Build/at91-sdcard | |||||||
|         $(BIN_DIR)/u-boot-$(dts:at91-%=%)_mmc/u-boot.bin \ |         $(BIN_DIR)/u-boot-$(dts:at91-%=%)_mmc/u-boot.bin \ | ||||||
|             ::u-boot.bin; \ |             ::u-boot.bin; \ | ||||||
|      $(CP) $(BIN_DIR)/at91bootstrap-$(dts:at91-%=%)sd_uboot*/*.bin \ |      $(CP) $(BIN_DIR)/at91bootstrap-$(dts:at91-%=%)sd_uboot*/*.bin \ | ||||||
|          $(BIN_DIR)/BOOT.bin; \ |          $@.BOOT.bin; \ | ||||||
|      mcopy -i $@.boot $(BIN_DIR)/BOOT.bin ::BOOT.bin;) |      mcopy -i $@.boot $@.BOOT.bin ::BOOT.bin;) | ||||||
|  |  | ||||||
|   ./gen_at91_sdcard_img.sh \ |   ./gen_at91_sdcard_img.sh \ | ||||||
|       $(dir $@)$(IMG_PREFIX)-$(DEVICE_NAME)-sdcard.img \ |       $@.img \ | ||||||
|       $@.boot \ |       $@.boot \ | ||||||
|       $(KDIR)/root.ext4 \ |       $(KDIR)/root.ext4 \ | ||||||
|       $(AT91_SD_BOOT_PARTSIZE) \ |       $(AT91_SD_BOOT_PARTSIZE) \ | ||||||
|       $(CONFIG_TARGET_ROOTFS_PARTSIZE) |       $(CONFIG_TARGET_ROOTFS_PARTSIZE) | ||||||
|  |  | ||||||
|   gzip -nc9 $(dir $@)$(IMG_PREFIX)-$(DEVICE_NAME)-sdcard.img \ |   gzip -nc9 $@.img > $@ | ||||||
|          > $(dir $@)$(IMG_PREFIX)-$(DEVICE_NAME)-sdcard.img.gz |  | ||||||
|  |  | ||||||
|   $(CP) $(dir $@)$(IMG_PREFIX)-$(DEVICE_NAME)-sdcard.img.gz \ |   rm -f $@.img $@.boot $@.BOOT.bin | ||||||
|         $(BIN_DIR)/ |  | ||||||
|  |  | ||||||
|   rm -f $(BIN_DIR)/BOOT.bin |  | ||||||
|   rm -f $@.boot |  | ||||||
| endef | endef | ||||||
|  |  | ||||||
| define Device/evaluation-sdimage | define Device/evaluation-sdimage | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jo-Philipp Wich
					Jo-Philipp Wich