diff options
Diffstat (limited to 'rabbitmq_home.bzl')
-rw-r--r-- | rabbitmq_home.bzl | 62 |
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): |