mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
kbuild: fix parallel build race caused by u-boot.cfg regeneration
Multiple people have reported intermittent build failure in parallel building. Kever Yang reported this issue some time ago [1], but I could not get enough clue at that time. This time, Richard Purdie provided a full build log [2], which was very helpful for me to root-cause it. The cause of the problem is commit0d982c5853
("Makefile: add dependencies to regenerate u-boot.cfg when lost"). That commit added the 'cfg' as the prerequisite of the 'all' target, so the parallel build tries to run it simultaneously, then regenerates a symlink while building objects. When u-boot.cfg is accidentally lost, let's rebuild it before descending into any subdirectories. Also, what is annoying is u-boot.cfg is currently regenerated every time since it depends on FORCE. We can get rid of all the prerequisites of u-boot.cfg because u-boot.cfg is rebuilt anyway as the byproduct of auto.conf when a user updates the .config file. [1] https://lists.denx.de/pipermail/u-boot/2018-June/330341.html [2] https://autobuilder.yoctoproject.org/typhoon/#/builders/65/builds/160/steps/7/logs/step1b Fixes:0d982c5853
("Makefile: add dependencies to regenerate u-boot.cfg when lost") Reported-by: Kever Yang <kever.yang@rock-chips.com> Reported-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
c4448bdc4f
commit
0b588deffe
1 changed files with 3 additions and 3 deletions
6
Makefile
6
Makefile
|
@ -534,7 +534,7 @@ include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
|
|||
@# Otherwise, 'make silentoldconfig' would be invoked twice.
|
||||
$(Q)touch include/config/auto.conf
|
||||
|
||||
u-boot.cfg spl/u-boot.cfg tpl/u-boot.cfg: include/config.h FORCE
|
||||
u-boot.cfg spl/u-boot.cfg tpl/u-boot.cfg:
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf $(@)
|
||||
|
||||
-include include/autoconf.mk
|
||||
|
@ -910,7 +910,7 @@ quiet_cmd_cfgcheck = CFGCHK $2
|
|||
cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
|
||||
$(srctree)/scripts/config_whitelist.txt $(srctree)
|
||||
|
||||
all: $(ALL-y) cfg
|
||||
all: $(ALL-y)
|
||||
ifeq ($(CONFIG_DM_I2C_COMPAT)$(CONFIG_SANDBOX),y)
|
||||
@echo >&2 "===================== WARNING ======================"
|
||||
@echo >&2 "This board uses CONFIG_DM_I2C_COMPAT. Please remove"
|
||||
|
@ -1555,7 +1555,7 @@ ifneq ($(KBUILD_SRC),)
|
|||
endif
|
||||
|
||||
# prepare2 creates a makefile if using a separate output directory
|
||||
prepare2: prepare3 outputmakefile
|
||||
prepare2: prepare3 outputmakefile cfg
|
||||
|
||||
prepare1: prepare2 $(version_h) $(timestamp_h) \
|
||||
include/config/auto.conf
|
||||
|
|
Loading…
Reference in a new issue