mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-28 09:39:00 +00:00
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>
87 lines
2.2 KiB
Makefile
87 lines
2.2 KiB
Makefile
AT91_SD_BOOT_PARTSIZE:=64
|
|
FAT32_BLOCK_SIZE:=1024
|
|
FAT32_BLOCKS:=$(shell echo \
|
|
$$(($(AT91_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE))))
|
|
|
|
define Build/at91-sdcard
|
|
rm -f $@.boot
|
|
mkfs.fat -C $@.boot $(FAT32_BLOCKS)
|
|
|
|
mcopy -i $@.boot $(KDIR)/zImage ::zImage
|
|
|
|
$(foreach dts,$(DEVICE_DTS), \
|
|
mcopy -i $@.boot $(DTS_DIR)/$(dts).dtb \
|
|
::$(dts).dtb; \
|
|
mcopy -i $@.boot \
|
|
$(BIN_DIR)/u-boot-$(dts:at91-%=%)_mmc/u-boot.bin \
|
|
::u-boot.bin; \
|
|
$(CP) $(BIN_DIR)/at91bootstrap-$(dts:at91-%=%)sd_uboot*/*.bin \
|
|
$@.BOOT.bin; \
|
|
mcopy -i $@.boot $@.BOOT.bin ::BOOT.bin;)
|
|
|
|
./gen_at91_sdcard_img.sh \
|
|
$@.img \
|
|
$@.boot \
|
|
$(KDIR)/root.ext4 \
|
|
$(AT91_SD_BOOT_PARTSIZE) \
|
|
$(CONFIG_TARGET_ROOTFS_PARTSIZE)
|
|
|
|
gzip -nc9 $@.img > $@
|
|
|
|
rm -f $@.img $@.boot $@.BOOT.bin
|
|
endef
|
|
|
|
define Device/evaluation-sdimage
|
|
IMAGES += sdcard.img.gz
|
|
IMAGE/sdcard.img.gz := at91-sdcard
|
|
endef
|
|
|
|
define Device/default-nand
|
|
BLOCKSIZE := 128k
|
|
PAGESIZE := 2048
|
|
SUBPAGESIZE := 2048
|
|
MKUBIFS_OPTS := -m $$(PAGESIZE) -e 124KiB -c 2048
|
|
endef
|
|
|
|
define Device/at91-sama5d3_xplained
|
|
$(Device/evaluation-dtb)
|
|
DEVICE_TITLE := Microchip(Atmel AT91) SAMA5D3 Xplained
|
|
KERNEL_SIZE := 6144k
|
|
$(Device/evaluation-sdimage)
|
|
endef
|
|
TARGET_DEVICES += at91-sama5d3_xplained
|
|
|
|
define Device/at91-sama5d2_xplained
|
|
$(Device/evaluation-dtb)
|
|
DEVICE_TITLE := Microchip(Atmel AT91) SAMA5D2 Xplained
|
|
KERNEL_SIZE := 6144k
|
|
$(Device/evaluation-sdimage)
|
|
endef
|
|
TARGET_DEVICES += at91-sama5d2_xplained
|
|
|
|
define Device/at91-sama5d4_xplained
|
|
$(Device/evaluation-dtb)
|
|
DEVICE_TITLE := Microchip(Atmel AT91) SAMA5D4 Xplained
|
|
KERNEL_SIZE := 6144k
|
|
BLOCKSIZE := 256k
|
|
PAGESIZE := 4096
|
|
SUBPAGESIZE := 2048
|
|
MKUBIFS_OPTS := -m $$(PAGESIZE) -e 248KiB -c 2082 -x lzo
|
|
$(Device/evaluation-sdimage)
|
|
endef
|
|
TARGET_DEVICES += at91-sama5d4_xplained
|
|
|
|
define Device/wb50n
|
|
$(Device/evaluation-fit)
|
|
DEVICE_TITLE := Laird WB50N
|
|
DEVICE_PACKAGES := \
|
|
kmod-mmc-at91 kmod-ath6kl-sdio ath6k-firmware \
|
|
kmod-usb-storage kmod-fs-vfat kmod-fs-msdos \
|
|
kmod-leds-gpio
|
|
BLOCKSIZE := 128k
|
|
PAGESIZE := 2048
|
|
SUBPAGESIZE := 2048
|
|
MKUBIFS_OPTS := -m $$(PAGESIZE) -e 124KiB -c 955
|
|
endef
|
|
TARGET_DEVICES += wb50n
|