summaryrefslogtreecommitdiff
path: root/rabbitmq-components.mk
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <jean-sebastien@rabbitmq.com>2015-09-24 11:47:26 +0200
committerJean-Sébastien Pédron <jean-sebastien.pedron@dumbbell.fr>2015-10-20 11:10:48 +0200
commit997a6d6c9cc3a05941014b26217c11d75f040032 (patch)
tree53bcf1459bca76d8a4755598f6e071643005df9e /rabbitmq-components.mk
parentdcfbd47319d1fa54d41a2d9ec67b09a5c7dff13e (diff)
downloadrabbitmq-server-git-997a6d6c9cc3a05941014b26217c11d75f040032.tar.gz
Use rabbitmq-components.mk to fetch RabbitMQ components
Diffstat (limited to 'rabbitmq-components.mk')
-rw-r--r--rabbitmq-components.mk71
1 files changed, 71 insertions, 0 deletions
diff --git a/rabbitmq-components.mk b/rabbitmq-components.mk
new file mode 100644
index 0000000000..a8712e7abc
--- /dev/null
+++ b/rabbitmq-components.mk
@@ -0,0 +1,71 @@
+# For RabbitMQ repositories, we want to checkout branches which match
+# the parent project. For instance, if the parent project is on a
+# release tag, dependencies must be on the same release tag. If the
+# parent project is on a topic branch, dependencies must be on the same
+# topic branch or fallback to `stable` or `master` whichever was the
+# base of the topic branch.
+
+RABBITMQ_REPO_BASE ?= https://github.com/rabbitmq
+
+dep_amqp_client = git_rmq rabbitmq-erlang-client $(current_rmq_ref) $(base_rmq_ref)
+dep_java_client = git_rmq rabbitmq-java-client $(current_rmq_ref) $(base_rmq_ref)
+dep_rabbit = git_rmq rabbitmq-server $(current_rmq_ref) $(base_rmq_ref)
+dep_rabbit_common = git_rmq rabbitmq-common $(current_rmq_ref) $(base_rmq_ref)
+dep_rabbitmq_codegen = git_rmq rabbitmq-codegen $(current_rmq_ref) $(base_rmq_ref)
+dep_rabbitmq_shovel = git_rmq rabbitmq-shovel $(current_rmq_ref) $(base_rmq_ref)
+
+ifeq ($(origin current_rmq_ref),undefined)
+ifneq ($(wildcard .git),)
+current_rmq_ref := $(shell \
+ git describe --tags --exact-match 2>/dev/null || \
+ git symbolic-ref -q --short HEAD)
+else
+current_rmq_ref := master
+endif
+endif
+export current_rmq_ref
+
+ifeq ($(origin base_rmq_ref),undefined)
+ifneq ($(wildcard .git),)
+base_rmq_ref := $(shell \
+ (git rev-parse --verify -q stable >/dev/null && \
+ git merge-base --is-ancestor $$(git merge-base master HEAD) stable && \
+ echo stable) || \
+ echo master)
+else
+base_rmq_ref := master
+endif
+endif
+export base_rmq_ref
+
+dep_rmq_repo = $(if $(dep_$(1)), \
+ $(RABBITMQ_REPO_BASE)/$(word 2,$(dep_$(1))).git, \
+ $(pkg_$(1)_repo))
+dep_rmq_commits = $(if $(dep_$(1)), \
+ $(wordlist 3,$(words $(dep_$(1))),$(dep_$(1))), \
+ $(pkg_$(1)_commit))
+
+define dep_fetch_git_rmq
+ git clone -q -n -- \
+ $(call dep_rmq_repo,$(1)) $(DEPS_DIR)/$(call dep_name,$(1)); \
+ cd $(DEPS_DIR)/$(call dep_name,$(1)) && ( \
+ $(foreach ref,$(call dep_rmq_commits,$(1)), \
+ git checkout -q $(ref) >/dev/null 2>&1 || \
+ ) \
+ (echo "error: no valid pathspec among: $(call dep_rmq_commits,$(1))" \
+ 1>&2 && false) )
+endef
+
+deps:: check-rabbitmq-components.mk
+list-deps: check-rabbitmq-components.mk
+
+ifneq ($(PROJECT),rabbit_common)
+check-rabbitmq-components.mk:
+ $(verbose) cmp -s rabbitmq-components.mk \
+ $(DEPS_DIR)/rabbit_common/mk/rabbitmq-components.mk || \
+ (echo "error: rabbitmq-components.mk must be updated!" 1>&2; \
+ false)
+else
+check-rabbitmq-components.mk:
+ @:
+endif