aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYousong Zhou <yszhou4tech@gmail.com>2019-09-10 13:40:43 +0000
committerYousong Zhou <yszhou4tech@gmail.com>2019-09-15 14:58:43 +0000
commita75801c89c63f30de698b4c990d286aa25865033 (patch)
tree7dab5330779ea96db84a5feaaa58b63c161a47da
parent1cf2495d4881621681d623aa3a8898039f00abad (diff)
downloadupstream-a75801c89c63f30de698b4c990d286aa25865033.tar.gz
upstream-a75801c89c63f30de698b4c990d286aa25865033.tar.bz2
upstream-a75801c89c63f30de698b4c990d286aa25865033.zip
build: install-dtb: fix race condition when copying dtb
Currently for at91 target, Build/install-dtb can be triggered concurrently for multiple different TARGET_FILESYSTEMS, cp command can fail when the target file is already open exclusively by other cp process [ -f /builder/shared-workdir/build/build_dir/target-arm_arm926ej-s_musl_eabi/linux-at91_sam9x/at91sam9263ek-uImage -a -f /builder/shared-workdir/build/build_dir/target-arm_arm926ej-s_musl_eabi/linux-at91_sam9x/root.ubifs+fs=-m_2048_-e_126KiB_-c_2048+pkg=68b329da ] [ -f /builder/shared-workdir/build/build_dir/target-arm_arm926ej-s_musl_eabi/linux-at91_sam9x/at91sam9263ek-uImage -a -f /builder/shared-workdir/build/build_dir/target-arm_arm926ej-s_musl_eabi/linux-at91_sam9x/root.ext4+pkg=68b329da ] cp -fpR /builder/shared-workdir/build/build_dir/target-arm_arm926ej-s_musl_eabi/linux-at91_sam9x/linux-4.14.141/arch/arm/boot/dts/at91sam9263ek.dtb /builder/shared-workdir/build/bin/targets/at91/sam9x/openwrt-at91-sam9x-at91sam9263ek.dtb; cp -fpR /builder/shared-workdir/build/build_dir/target-arm_arm926ej-s_musl_eabi/linux-at91_sam9x/linux-4.14.141/arch/arm/boot/dts/at91sam9263ek.dtb /builder/shared-workdir/build/bin/targets/at91/sam9x/openwrt-at91-sam9x-at91sam9263ek.dtb; cp: cannot create regular file '/builder/shared-workdir/build/bin/targets/at91/sam9x/openwrt-at91-sam9x-at91sam9263ek.dtb': File exists Makefile:87: recipe for target '/builder/shared-workdir/build/build_dir/target-arm_arm926ej-s_musl_eabi/linux-at91_sam9x/tmp/openwrt-at91-sam9x-at91sam9263ek-ubifs-dtb' failed make[4]: *** [/builder/shared-workdir/build/build_dir/target-arm_arm926ej-s_musl_eabi/linux-at91_sam9x/tmp/openwrt-at91-sam9x-at91sam9263ek-ubifs-dtb] Error 1 Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
-rw-r--r--include/image-commands.mk11
1 files changed, 7 insertions, 4 deletions
diff --git a/include/image-commands.mk b/include/image-commands.mk
index 89c17aec5b..1d0aed1918 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -136,10 +136,13 @@ define Build/append-dtb
endef
define Build/install-dtb
- $(foreach dts,$(DEVICE_DTS), \
- $(CP) \
- $(DTS_DIR)/$(dts).dtb \
- $(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb; \
+ $(call locked, \
+ $(foreach dts,$(DEVICE_DTS), \
+ $(CP) \
+ $(DTS_DIR)/$(dts).dtb \
+ $(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb; \
+ ), \
+ install-dtb-$(IMG_PREFIX) \
)
endef