summaryrefslogtreecommitdiff
path: root/rabbitmq_home.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'rabbitmq_home.bzl')
-rw-r--r--rabbitmq_home.bzl62
1 files changed, 26 insertions, 36 deletions
diff --git a/rabbitmq_home.bzl b/rabbitmq_home.bzl
index 6342d75f40..eca1ff1fb9 100644
--- a/rabbitmq_home.bzl
+++ b/rabbitmq_home.bzl
@@ -1,4 +1,5 @@
load("@bazel-erlang//:bazel_erlang_lib.bzl", "ErlangLibInfo", "flat_deps", "path_join")
+load("@bazel-erlang//:ct.bzl", "additional_file_dest_relative_path")
RabbitmqHomeInfo = provider(
doc = "An assembled RABBITMQ_HOME dir",
@@ -19,7 +20,7 @@ def _copy_script(ctx, script):
)
return dest
-def _link_escript(ctx, escript):
+def link_escript(ctx, escript):
e = ctx.attr._rabbitmqctl_escript.files_to_run.executable
s = ctx.actions.declare_file(path_join(ctx.label.name, "escript", escript))
ctx.actions.symlink(
@@ -28,19 +29,6 @@ def _link_escript(ctx, escript):
)
return s
-def _priv_file_dest_relative_path(plugin_label, f):
- if plugin_label.workspace_root != "":
- if plugin_label.package != "":
- rel_base = path_join(plugin_label.workspace_root, plugin_label.package)
- else:
- rel_base = plugin_label.workspace_root
- else:
- rel_base = plugin_label.package
- if rel_base != "":
- return f.path.replace(rel_base + "/", "")
- else:
- return f.path
-
def _plugins_dir_links(ctx, plugin):
lib_info = plugin[ErlangLibInfo]
plugin_path = path_join(
@@ -72,7 +60,7 @@ def _plugins_dir_links(ctx, plugin):
links.append(o)
for f in lib_info.priv:
- p = _priv_file_dest_relative_path(plugin.label, f)
+ p = additional_file_dest_relative_path(plugin.label, f)
o = ctx.actions.declare_file(path_join(plugin_path, p))
ctx.actions.symlink(
output = o,
@@ -82,7 +70,7 @@ def _plugins_dir_links(ctx, plugin):
return links
-def _unique_versions(plugins):
+def unique_versions(plugins):
erlang_versions = []
for plugin in plugins:
erlang_version = plugin[ErlangLibInfo].erlang_version
@@ -90,13 +78,13 @@ def _unique_versions(plugins):
erlang_versions.append(erlang_version)
return erlang_versions
-def _flatten(list_of_lists):
+def flatten(list_of_lists):
return [item for sublist in list_of_lists for item in sublist]
def _impl(ctx):
plugins = flat_deps(ctx.attr.plugins)
- erlang_versions = _unique_versions(plugins)
+ erlang_versions = unique_versions(plugins)
if len(erlang_versions) > 1:
fail("plugins do not have a unified erlang version", erlang_versions)
@@ -110,9 +98,9 @@ def _impl(ctx):
"rabbitmq-upgrade",
"rabbitmqctl",
]
- escripts = [_link_escript(ctx, escript) for escript in rabbitmq_ctl_copies]
+ escripts = [link_escript(ctx, escript) for escript in rabbitmq_ctl_copies]
- plugins = _flatten([_plugins_dir_links(ctx, plugin) for plugin in plugins])
+ plugins = flatten([_plugins_dir_links(ctx, plugin) for plugin in plugins])
rabbitmqctl = None
for script in scripts:
@@ -130,24 +118,26 @@ def _impl(ctx):
),
]
+RABBITMQ_HOME_ATTRS = {
+ "_scripts": attr.label_list(
+ default = [
+ "//deps/rabbit:scripts/rabbitmq-defaults",
+ "//deps/rabbit:scripts/rabbitmq-diagnostics",
+ "//deps/rabbit:scripts/rabbitmq-env",
+ "//deps/rabbit:scripts/rabbitmq-plugins",
+ "//deps/rabbit:scripts/rabbitmq-queues",
+ "//deps/rabbit:scripts/rabbitmq-server",
+ "//deps/rabbit:scripts/rabbitmqctl",
+ ],
+ allow_files = True,
+ ),
+ "_rabbitmqctl_escript": attr.label(default = "//deps/rabbitmq_cli:rabbitmqctl"),
+ "plugins": attr.label_list(providers = [ErlangLibInfo]),
+}
+
rabbitmq_home = rule(
implementation = _impl,
- attrs = {
- "_scripts": attr.label_list(
- default = [
- "//deps/rabbit:scripts/rabbitmq-defaults",
- "//deps/rabbit:scripts/rabbitmq-diagnostics",
- "//deps/rabbit:scripts/rabbitmq-env",
- "//deps/rabbit:scripts/rabbitmq-plugins",
- "//deps/rabbit:scripts/rabbitmq-queues",
- "//deps/rabbit:scripts/rabbitmq-server",
- "//deps/rabbit:scripts/rabbitmqctl",
- ],
- allow_files = True,
- ),
- "_rabbitmqctl_escript": attr.label(default = "//deps/rabbitmq_cli:rabbitmqctl"),
- "plugins": attr.label_list(),
- },
+ attrs = RABBITMQ_HOME_ATTRS,
)
def _dirname(p):