rabbitmq-dist.mk: Fix concurrent runs of `make {,test-}dist` and `make install-cli`
The fix depends on the presence of lockf(1) or flock(1).
This commit is contained in:
parent
5840834fa8
commit
12d48ff717
|
|
@ -11,12 +11,15 @@
|
|||
/doc/
|
||||
/ebin/
|
||||
/escript/
|
||||
/escript.lock
|
||||
/git-revisions.txt
|
||||
/logs/
|
||||
/plugins/
|
||||
/plugins.lock
|
||||
/rebar.config
|
||||
/rebar.lock
|
||||
/sbin/
|
||||
/sbin.lock
|
||||
/test/ct.cover.spec
|
||||
/xrefr
|
||||
|
||||
|
|
|
|||
|
|
@ -199,40 +199,130 @@ $(mix_task_archive_deps):
|
|||
|
||||
MAYBE_APPS_LIST = $(if $(shell test -f $(ERLANG_MK_TMP)/apps.log && echo OK), \
|
||||
$(ERLANG_MK_TMP)/apps.log)
|
||||
DIST_LOCK = $(DIST_DIR).lock
|
||||
|
||||
dist:: $(ERLANG_MK_RECURSIVE_DEPS_LIST) all
|
||||
$(gen_verbose) $(MAKE) do-dist \
|
||||
DIST_PLUGINS_LIST="$(ERLANG_MK_RECURSIVE_DEPS_LIST) $(MAYBE_APPS_LIST)"
|
||||
dist:: $(ERLANG_MK_RECURSIVE_DEPS_LIST) all install-cli
|
||||
$(gen_verbose) \
|
||||
if command -v flock >/dev/null; then \
|
||||
flock $(DIST_LOCK) \
|
||||
sh -c '$(MAKE) do-dist \
|
||||
DIST_PLUGINS_LIST="$(ERLANG_MK_RECURSIVE_DEPS_LIST) \
|
||||
$(MAYBE_APPS_LIST)"'; \
|
||||
elif command -v lockf >/dev/null; then \
|
||||
lockf $(DIST_LOCK) \
|
||||
sh -c '$(MAKE) do-dist \
|
||||
DIST_PLUGINS_LIST="$(ERLANG_MK_RECURSIVE_DEPS_LIST) \
|
||||
$(MAYBE_APPS_LIST)"'; \
|
||||
else \
|
||||
$(MAKE) do-dist \
|
||||
DIST_PLUGINS_LIST="$(ERLANG_MK_RECURSIVE_DEPS_LIST) \
|
||||
$(MAYBE_APPS_LIST)"; \
|
||||
fi
|
||||
|
||||
test-dist:: export TEST_DIR=NON-EXISTENT
|
||||
test-dist:: $(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) test-build
|
||||
$(gen_verbose) $(MAKE) do-dist \
|
||||
DIST_PLUGINS_LIST="$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) $(MAYBE_APPS_LIST)"
|
||||
$(gen_verbose) \
|
||||
if command -v flock >/dev/null; then \
|
||||
flock $(DIST_LOCK) \
|
||||
sh -c '$(MAKE) do-dist \
|
||||
DIST_PLUGINS_LIST="$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) \
|
||||
$(MAYBE_APPS_LIST)"'; \
|
||||
elif command -v lockf >/dev/null; then \
|
||||
lockf $(DIST_LOCK) \
|
||||
sh -c '$(MAKE) do-dist \
|
||||
DIST_PLUGINS_LIST="$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) \
|
||||
$(MAYBE_APPS_LIST)"'; \
|
||||
else \
|
||||
$(MAKE) do-dist \
|
||||
DIST_PLUGINS_LIST="$(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) \
|
||||
$(MAYBE_APPS_LIST)"; \
|
||||
fi
|
||||
|
||||
DIST_EZS = $(ERLANGMK_DIST_EZS) $(MIX_DIST_EZS)
|
||||
|
||||
do-dist:: $(DIST_EZS) cli-scripts cli-escripts
|
||||
do-dist:: $(DIST_EZS)
|
||||
$(verbose) unwanted='$(filter-out $(DIST_EZS) $(EXTRA_DIST_EZS), \
|
||||
$(wildcard $(DIST_DIR)/*.ez))'; \
|
||||
test -z "$$unwanted" || (echo " RM $$unwanted" && rm -f $$unwanted)
|
||||
|
||||
test-build:: cli-scripts cli-escripts
|
||||
test-build:: install-cli
|
||||
|
||||
CLI_SCRIPTS_LOCK = $(CLI_SCRIPTS_DIR).lock
|
||||
CLI_ESCRIPTS_LOCK = $(CLI_ESCRIPTS_DIR).lock
|
||||
|
||||
install-cli: install-cli-scripts install-cli-escripts
|
||||
@:
|
||||
|
||||
ifeq ($(PROJECT),rabbit)
|
||||
cli-scripts:
|
||||
$(gen_verbose) rm -rf "$(CLI_SCRIPTS_DIR)"
|
||||
$(verbose) cp -a scripts $(CLI_SCRIPTS_DIR)
|
||||
install-cli-scripts:
|
||||
$(gen_verbose) \
|
||||
if command -v flock >/dev/null; then \
|
||||
flock $(CLI_SCRIPTS_LOCK) \
|
||||
sh -c 'mkdir -p "$(CLI_SCRIPTS_DIR)" && \
|
||||
for file in scripts/*; do \
|
||||
cmp -s "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")" || \
|
||||
cp -a "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")"; \
|
||||
done'; \
|
||||
elif command -v lockf >/dev/null; then \
|
||||
lockf $(CLI_SCRIPTS_LOCK) \
|
||||
sh -c 'mkdir -p "$(CLI_SCRIPTS_DIR)" && \
|
||||
for file in scripts/*; do \
|
||||
cmp -s "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")" || \
|
||||
cp -a "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")"; \
|
||||
done'; \
|
||||
else \
|
||||
mkdir -p "$(CLI_SCRIPTS_DIR)" && \
|
||||
for file in scripts/*; do \
|
||||
cmp -s "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")" || \
|
||||
cp -a "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")"; \
|
||||
done; \
|
||||
fi
|
||||
else
|
||||
cli-scripts:
|
||||
$(gen_verbose) rm -rf "$(CLI_SCRIPTS_DIR)"
|
||||
$(verbose) cp -a $(DEPS_DIR)/rabbit/scripts $(CLI_SCRIPTS_DIR)
|
||||
install-cli-scripts:
|
||||
$(gen_verbose) \
|
||||
if command -v flock >/dev/null; then \
|
||||
flock $(CLI_SCRIPTS_LOCK) \
|
||||
sh -c 'mkdir -p "$(CLI_SCRIPTS_DIR)" && \
|
||||
for file in "$(DEPS_DIR)/rabbit/scripts"/*; do \
|
||||
cmp -s "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")" || \
|
||||
cp -a "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")"; \
|
||||
done'; \
|
||||
elif command -v lockf >/dev/null; then \
|
||||
lockf $(CLI_SCRIPTS_LOCK) \
|
||||
sh -c 'mkdir -p "$(CLI_SCRIPTS_DIR)" && \
|
||||
for file in "$(DEPS_DIR)/rabbit/scripts"/*; do \
|
||||
cmp -s "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")" || \
|
||||
cp -a "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")"; \
|
||||
done'; \
|
||||
else \
|
||||
mkdir -p "$(CLI_SCRIPTS_DIR)" && \
|
||||
for file in "$(DEPS_DIR)/rabbit/scripts"/*; do \
|
||||
cmp -s "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")" || \
|
||||
cp -a "$$file" "$(CLI_SCRIPTS_DIR)/$$(basename "$$file")"; \
|
||||
done; \
|
||||
fi
|
||||
endif
|
||||
|
||||
cli-escripts:
|
||||
$(gen_verbose) rm -rf "$(CLI_ESCRIPTS_DIR)"
|
||||
$(verbose) $(MAKE) -C $(DEPS_DIR)/rabbitmq_cli install \
|
||||
PREFIX="$(abspath $(CLI_ESCRIPTS_DIR))" \
|
||||
DESTDIR=
|
||||
install-cli-escripts:
|
||||
$(gen_verbose) \
|
||||
if command -v flock >/dev/null; then \
|
||||
flock $(CLI_ESCRIPTS_LOCK) \
|
||||
sh -c 'mkdir -p "$(CLI_ESCRIPTS_DIR)" && \
|
||||
$(MAKE) -C "$(DEPS_DIR)/rabbitmq_cli" install \
|
||||
PREFIX="$(abspath $(CLI_ESCRIPTS_DIR))" \
|
||||
DESTDIR='; \
|
||||
elif command -v lockf >/dev/null; then \
|
||||
lockf $(CLI_ESCRIPTS_LOCK) \
|
||||
sh -c 'mkdir -p "$(CLI_ESCRIPTS_DIR)" && \
|
||||
$(MAKE) -C "$(DEPS_DIR)/rabbitmq_cli" install \
|
||||
PREFIX="$(abspath $(CLI_ESCRIPTS_DIR))" \
|
||||
DESTDIR='; \
|
||||
else \
|
||||
mkdir -p "$(CLI_ESCRIPTS_DIR)" && \
|
||||
$(MAKE) -C "$(DEPS_DIR)/rabbitmq_cli" install \
|
||||
PREFIX="$(abspath $(CLI_ESCRIPTS_DIR))" \
|
||||
DESTDIR= ; \
|
||||
fi
|
||||
|
||||
clean-dist::
|
||||
$(gen_verbose) rm -rf \
|
||||
|
|
|
|||
Loading…
Reference in New Issue