From 64fcc581ada50176727a46407e99a27f2f30f32e Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Wed, 19 Feb 2020 17:08:28 +0800 Subject: [PATCH] build: Use flock to serialize ar steps as workaround Use flock to serialize ar steps to avoid parallel build break sometimes. Change-Id: I3a916b3b27422cdb6d718f7d554361565457fa08 Signed-off-by: Xiang Xiao --- .gitignore | 1 + Application.mk | 4 ++-- Make.defs | 6 +++++- Makefile | 5 +++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 722303bd5ca..668630512c9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.arlock .depend Make.dep *.o diff --git a/Application.mk b/Application.mk index 25af1926e42..641e89b85e2 100644 --- a/Application.mk +++ b/Application.mk @@ -130,9 +130,9 @@ $(CXXOBJS): %$(SUFFIX)$(OBJEXT): %$(CXXEXT) .built: $(OBJS) ifeq ($(WINTOOL),y) - $(call ARCHIVE, "${shell cygpath -w $(BIN)}", $(OBJS)) + $(call ARLOCK, "${shell cygpath -w $(BIN)}", $(OBJS)) else - $(call ARCHIVE, $(BIN), $(OBJS)) + $(call ARLOCK, $(BIN), $(OBJS)) endif $(Q) touch $@ diff --git a/Make.defs b/Make.defs index 77b0c82751b..89a649b39c0 100644 --- a/Make.defs +++ b/Make.defs @@ -52,7 +52,7 @@ CLEANDIRS := $(dir $(wildcard $(APPDIR)$(DELIM)*$(DELIM)Makefile)) CONFIGURED_APPS := define Add_Application - include $(1)Make.defs + include $(1)Make.defs endef $(foreach BDIR, $(BUILDIRS), $(eval $(call Add_Application,$(BDIR)))) @@ -99,6 +99,10 @@ define REGISTER endef endif +define ARLOCK + $(Q) flock .arlock $(call ARCHIVE, $1, $(2)) +endef + # Tools ifeq ($(DIRLINK),) diff --git a/Makefile b/Makefile index e0ad31f1cfb..dfb9da882df 100644 --- a/Makefile +++ b/Makefile @@ -117,9 +117,9 @@ $(SYMTABOBJ): %$(OBJEXT): %.c $(BIN): $(SYMTABOBJ) ifeq ($(WINTOOL),y) - $(call ARCHIVE, "${shell cygpath -w $(BIN)}", $^) + $(call ARLOCK, "${shell cygpath -w $(BIN)}", $^) else - $(call ARCHIVE, $(BIN), $^) + $(call ARLOCK, $(BIN), $^) endif endif # !CONFIG_BUILD_LOADABLE @@ -198,6 +198,7 @@ else fi; \ ) endif + $(call DELFILE, .arlock) $(call DELFILE, .depend) $(call DELFILE, $(SYMTABSRC)) $(call DELFILE, $(SYMTABOBJ))