at91: fix image building with CONFIG_TARGET_MULTI_PROFILE
authorJo-Philipp Wich <jo@mein.io>
Tue, 13 Feb 2018 15:12:08 +0000 (16:12 +0100)
committerJo-Philipp Wich <jo@mein.io>
Wed, 14 Feb 2018 14:47:16 +0000 (15:47 +0100)
commitb9aca834e812efc9d0bb2701eab8c78f2efb0367
tree884935d7147a43bc06878771f7b225f3a625280a
parent7762c07c88980cff85ec20c12f18cd172260e9d9
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>
include/image-commands.mk
target/linux/at91/image/Makefile
target/linux/at91/image/sama5.mk