summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Kuryloski <kuryloskip@vmware.com>2021-09-09 13:50:22 +0200
committerPhilip Kuryloski <kuryloskip@vmware.com>2021-09-09 13:50:22 +0200
commit8cc9806f07095ea8d0edadd18db5959407eb8993 (patch)
tree7bab0b89c6563707c4d0b8a7a122f3aa7370caac
parentd01b01663b05aae6d120e35b2c0e39c9b19635f2 (diff)
downloadrabbitmq-server-git-8cc9806f07095ea8d0edadd18db5959407eb8993.tar.gz
Synchronize mixed versions approach with v3.8.x
-rw-r--r--BUILD.package_generic_unix19
-rw-r--r--rabbitmq_home.bzl17
-rw-r--r--rabbitmq_package_generic_unix.bzl15
-rw-r--r--rabbitmq_run.bzl1
-rw-r--r--scripts/bazel/rabbitmq-run.sh14
5 files changed, 40 insertions, 26 deletions
diff --git a/BUILD.package_generic_unix b/BUILD.package_generic_unix
index e9230dca67..4cc8056e7a 100644
--- a/BUILD.package_generic_unix
+++ b/BUILD.package_generic_unix
@@ -4,12 +4,18 @@ load("@//:rabbitmqctl.bzl", "rabbitmqctl")
rabbitmq_package_generic_unix(
name = "broker-home",
- sbin = glob(["sbin/*"]),
- escript = glob(["escript/*"]),
- plugins = [
- "//plugins:standard_plugins",
- "//plugins:inet_tcp_proxy_ez",
- ],
+ additional_files =
+ glob(
+ [
+ "sbin/*",
+ "escript/*",
+ ],
+ exclude = ["sbin/rabbitmqctl"],
+ ) + [
+ "//plugins:standard_plugins",
+ "//plugins:inet_tcp_proxy_ez",
+ ],
+ rabbitmqctl = "sbin/rabbitmqctl",
)
rabbitmq_run(
@@ -27,7 +33,6 @@ rabbitmq_run_command(
rabbitmqctl(
name = "rabbitmqctl",
home = ":broker-home",
- # visibility = ["//visibility:public"],
)
rabbitmqctl(
diff --git a/rabbitmq_home.bzl b/rabbitmq_home.bzl
index 5d34441450..a91e487c3d 100644
--- a/rabbitmq_home.bzl
+++ b/rabbitmq_home.bzl
@@ -3,9 +3,7 @@ load("@bazel-erlang//:bazel_erlang_lib.bzl", "ErlangLibInfo", "flat_deps", "path
RabbitmqHomeInfo = provider(
doc = "An assembled RABBITMQ_HOME dir",
fields = {
- "sbin": "Files making up the sbin dir",
- "escript": "Files making up the escript dir",
- "plugins": "Files making up the plugins dir",
+ "rabbitmqctl": "rabbitmqctl script from the sbin directory",
},
)
@@ -112,11 +110,16 @@ def _impl(ctx):
plugins = _flatten([_plugins_dir_links(ctx, plugin) for plugin in plugins])
+ rabbitmqctl = None
+ for script in scripts:
+ if script.basename == "rabbitmqctl":
+ rabbitmqctl = script
+ if rabbitmqctl == None:
+ fail("could not find rabbitmqct among", scripts)
+
return [
RabbitmqHomeInfo(
- sbin = scripts,
- escript = escripts,
- plugins = plugins,
+ rabbitmqctl = rabbitmqctl,
),
DefaultInfo(
files = depset(scripts + escripts + plugins),
@@ -147,7 +150,7 @@ def _dirname(p):
return p.rpartition("/")[0]
def rabbitmq_home_short_path(rabbitmq_home):
- short_path = rabbitmq_home[RabbitmqHomeInfo].sbin[0].short_path
+ short_path = rabbitmq_home[RabbitmqHomeInfo].rabbitmqctl.short_path
if rabbitmq_home.label.workspace_root != "":
short_path = path_join(rabbitmq_home.label.workspace_root, short_path)
return _dirname(_dirname(short_path))
diff --git a/rabbitmq_package_generic_unix.bzl b/rabbitmq_package_generic_unix.bzl
index 392c18c8ba..b589a06529 100644
--- a/rabbitmq_package_generic_unix.bzl
+++ b/rabbitmq_package_generic_unix.bzl
@@ -1,26 +1,19 @@
load("@//:rabbitmq_home.bzl", "RabbitmqHomeInfo")
def _impl(ctx):
- scripts = ctx.files.sbin
- escripts = ctx.files.escript
- plugins = ctx.files.plugins
-
return [
RabbitmqHomeInfo(
- sbin = scripts,
- escript = escripts,
- plugins = plugins,
+ rabbitmqctl = ctx.file.rabbitmqctl,
),
DefaultInfo(
- files = depset(scripts + escripts + plugins),
+ files = depset(ctx.files.rabbitmqctl + ctx.files.additional_files),
),
]
rabbitmq_package_generic_unix = rule(
implementation = _impl,
attrs = {
- "sbin": attr.label_list(allow_files = True),
- "escript": attr.label_list(allow_files = True),
- "plugins": attr.label_list(allow_files = True),
+ "rabbitmqctl": attr.label(allow_single_file = True),
+ "additional_files": attr.label_list(allow_files = True),
},
)
diff --git a/rabbitmq_run.bzl b/rabbitmq_run.bzl
index cdac97a043..e690451e13 100644
--- a/rabbitmq_run.bzl
+++ b/rabbitmq_run.bzl
@@ -6,6 +6,7 @@ load(":rabbitmq_home.bzl", "RabbitmqHomeInfo", "rabbitmq_home_short_path")
def _impl(ctx):
rabbitmq_home_path = rabbitmq_home_short_path(ctx.attr.home)
+ # the rabbitmq-run.sh template only allows a single erl_libs currently
erl_libs = [path_join(rabbitmq_home_path, "plugins")]
ctx.actions.expand_template(
diff --git a/scripts/bazel/rabbitmq-run.sh b/scripts/bazel/rabbitmq-run.sh
index 70777264e9..f9494bd696 100644
--- a/scripts/bazel/rabbitmq-run.sh
+++ b/scripts/bazel/rabbitmq-run.sh
@@ -1,6 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail
+rmq_realpath() {
+ local path=$1
+
+ if [ -d "$path" ]; then
+ cd "$path" && pwd
+ elif [ -f "$path" ]; then
+ cd "$(dirname "$path")" && echo $(pwd)/$(basename "$path")
+ else
+ echo "$path"
+ fi
+}
+
if [ -z ${TEST_SRCDIR+x} ]; then
BASE_DIR=$PWD
else
@@ -41,7 +53,7 @@ if [ ! -z ${EXTRA_PLUGINS_DIR+x} ]; then
fi
TEST_TMPDIR=${TEST_TMPDIR:=${TMPDIR}/rabbitmq-test-instances}
-RABBITMQ_SCRIPTS_DIR=${BASE_DIR}/{RABBITMQ_HOME}/sbin
+RABBITMQ_SCRIPTS_DIR="$(rmq_realpath ${BASE_DIR}/{RABBITMQ_HOME}/sbin)"
RABBITMQ_PLUGINS=${RABBITMQ_SCRIPTS_DIR}/rabbitmq-plugins
RABBITMQ_SERVER=${RABBITMQ_SCRIPTS_DIR}/rabbitmq-server
RABBITMQCTL=${RABBITMQ_SCRIPTS_DIR}/rabbitmqctl