Makefile.inc: Avoid race condition when using 'make -j<N>'
When building coreboot from scratch with 'make -j4', I sometimes see this error: CREATE build/mainboard/emulation/qemu-riscv/cbfs-file.wblRgZ.out (from /.../coreboot/.config) HOSTCC cbfstool/cbfstool (link) make[1]: execvp: build/util/kconfig/conf: Permission denied make[1]: *** [/.../coreboot/util/kconfig/Makefile:92: savedefconfig] Error 127 It happens, I think, because the rule generated by cbfs-files-processor-defconfig runs 'make savedefconfig', which builds build/util/kconfig/conf, and something also builds it, at the same time. Fix this case, by making this rule depend on $(objutil)/kconfig/conf. The same fix is also precautiously applied to the rule for $(KCONFIG_AUTOHEADER) in Makefile. Change-Id: Ie93eda567f88ca08c97df7e70cdff5b07442747d Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> Reviewed-on: https://review.coreboot.org/c/29984 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
parent
1672b6c22c
commit
d2c02420e2
2
Makefile
2
Makefile
|
@ -176,7 +176,7 @@ real-all: real-target
|
|||
.SECONDEXPANSION:
|
||||
.DELETE_ON_ERROR:
|
||||
|
||||
$(KCONFIG_AUTOHEADER): $(KCONFIG_CONFIG)
|
||||
$(KCONFIG_AUTOHEADER): $(KCONFIG_CONFIG) $(objutil)/kconfig/conf
|
||||
+$(MAKE) oldconfig
|
||||
|
||||
# Add a new class of source/object files to the build system
|
||||
|
|
|
@ -287,7 +287,7 @@ cbfs-files-processor-vsa= \
|
|||
# arg1: input
|
||||
# arg2: output
|
||||
cbfs-files-processor-defconfig= \
|
||||
$(eval $(2): $(1) $(obj)/build.h; \
|
||||
$(eval $(2): $(1) $(obj)/build.h $(objutil)/kconfig/conf; \
|
||||
+printf " CREATE $(2) (from $(1))\n"; \
|
||||
printf "\# This image was built using coreboot " > $(2).tmp && \
|
||||
grep "\<COREBOOT_VERSION\>" $(obj)/build.h |cut -d\" -f2 >> $(2).tmp && \
|
||||
|
|
Loading…
Reference in New Issue