diff --git a/BAZEL.md b/BAZEL.md index 6e0cd551538c..868b02be7a49 100644 --- a/BAZEL.md +++ b/BAZEL.md @@ -71,15 +71,23 @@ Note: This takes quite some time on a single machine. `bazel test //deps/rabbit:lazy_queue_SUITE` -## Add/update an external dependency from hex.pm +## Add/update an external dependency + +### from hex.pm 1. `bazel run gazelle-update-repos -- -args hex.pm/accept@0.3.5` to generate/update `bazel/BUILD.accept` 1. `git checkout WORKSPACE` to reset the workspace file 1. Add/update the entry in MODULE.bazel -## Add/update an external dependency from github +### from github + +1. `bazel run gazelle-update-repos -- -args --testonly github.com/extend/ct_helper@master` +1. `git checkout WORKSPACE` to reset the workspace file +1. Add/update the entry in MODULE.bazel + +## Update BUILD files -`bazel run gazelle-update-repos -- -args --testonly github.com/extend/ct_helper` +`bazel run gazelle` ## Additional Useful Commands diff --git a/BUILD.bazel b/BUILD.bazel index ffab183c1118..78b347631414 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -4,17 +4,25 @@ load( "string_flag", ) load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix") +load("@bazel_gazelle//:def.bzl", "gazelle") +load("@rules_erlang//gazelle:def.bzl", "GAZELLE_ERLANG_RUNTIME_DEPS") +load("@rules_erlang//:erlang_bytecode2.bzl", "erlc_opts") load("@rules_erlang//:dialyze.bzl", "DEFAULT_PLT_APPS", "plt") load("@rules_erlang//:shell.bzl", "shell") load("@rules_erlang//:erl_eval.bzl", "erl_eval") -load("@bazel_gazelle//:def.bzl", "gazelle") -load("@rules_erlang//gazelle:def.bzl", "GAZELLE_ERLANG_RUNTIME_DEPS") +load("@rules_erlang//gazelle:moduleindex.bzl", "moduleindex") load("//bazel/elixir:iex_eval.bzl", "iex_eval") load(":rabbitmq_home.bzl", "rabbitmq_home") load(":rabbitmq_run.bzl", "rabbitmq_run", "rabbitmq_run_command") load(":rabbitmqctl.bzl", "rabbitmqctl") load(":dist.bzl", "package_generic_unix", "source_archive") -load(":rabbitmq.bzl", "all_plugins") +load( + ":rabbitmq.bzl", + "RABBITMQ_ERLC_OPTS", + "RABBITMQ_TEST_ERLC_OPTS", + "all_plugins", + "without", +) exports_files([ "scripts/bazel/rabbitmq-run.sh", @@ -22,11 +30,62 @@ exports_files([ "release-notes", ]) -# gazelle:prefix github.com/rabbitmq/rabbitmq-server +# gazelle:exclude .github +# gazelle:exclude .elixir_ls +# gazelle:exclude bazel +# gazelle:exclude bazel-out +# gazelle:exclude deps/*/priv +# gazelle:exclude deps/accept +# gazelle:exclude deps/aten +# gazelle:exclude deps/base64url +# gazelle:exclude deps/cowboy +# gazelle:exclude deps/cowlib +# gazelle:exclude deps/credentials_obfuscation +# gazelle:exclude deps/csv +# gazelle:exclude deps/cuttlefish +# gazelle:exclude deps/eetcd +# gazelle:exclude deps/elvis_mk +# gazelle:exclude deps/enough +# gazelle:exclude deps/gen_batch_server +# gazelle:exclude deps/getopt +# gazelle:exclude deps/gun +# gazelle:exclude deps/jose +# gazelle:exclude deps/json +# gazelle:exclude deps/observer_cli +# gazelle:exclude deps/osiris +# gazelle:exclude deps/prometheus +# gazelle:exclude deps/quantile_estimator +# gazelle:exclude deps/ra +# gazelle:exclude deps/rabbitmq_cli +# gazelle:exclude deps/ranch +# gazelle:exclude deps/recon +# gazelle:exclude deps/redbug +# gazelle:exclude deps/seshat +# gazelle:exclude deps/stdout_formatter +# gazelle:exclude deps/syslog +# gazelle:exclude deps/sysmon_handler +# gazelle:exclude deps/systemd +# gazelle:exclude deps/thoas +# gazelle:exclude packaging +# gazelle:exclude PACKAGES +# gazelle:exclude logs +# gazelle:erlang_apps_dirs deps +# gazelle:erlang_skip_rules test_erlang_app +# gazelle:erlang_skip_rules ct_test +# gazelle:erlang_generate_beam_files_macro +# gazelle:erlang_generate_fewer_bytecode_rules +# gazelle:erlang_app_dep_exclude rabbitmq_cli +# gazelle:map_kind erlang_app rabbitmq_app //:rabbitmq.bzl +# gazelle:map_kind assert_suites2 assert_suites //:rabbitmq.bzl + +# gazelle:erlang_module_source_lib Elixir.RabbitMQ.CLI.CommandBehaviour:rabbitmq_cli gazelle( name = "gazelle", data = GAZELLE_ERLANG_RUNTIME_DEPS, + extra_args = [ + "--verbose", + ], gazelle = "@rules_erlang//gazelle:gazelle_erlang_binary", ) @@ -63,7 +122,10 @@ string_flag( plt( name = "base_plt", - apps = DEFAULT_PLT_APPS + ["compiler", "crypto"], + apps = DEFAULT_PLT_APPS + [ + "compiler", + "crypto", + ], # keep visibility = ["//visibility:public"], ) @@ -194,6 +256,22 @@ source_archive( plugins = PLUGINS, ) +moduleindex( + name = "moduleindex", + testonly = True, + apps = PLUGINS + [ + "@ct_helper//:erlang_app", + "@emqtt//:erlang_app", + "@inet_tcp_proxy_dist//:erlang_app", + "@meck//:erlang_app", + "@proper//:erlang_app", + "//deps/rabbitmq_ct_client_helpers:erlang_app", + "//deps/rabbitmq_ct_helpers:erlang_app", + "//deps/trust_store_http:erlang_app", + ], + tags = ["manual"], +) + alias( name = "test-logs", actual = "//bazel/util:test-logs", @@ -213,3 +291,27 @@ alias( name = "remote-test-node-data", actual = "//bazel/util:remote-test-node-data", ) + +erlc_opts( + name = "erlc_opts", + values = select({ + "@rules_erlang//:debug_build": without("+deterministic", RABBITMQ_ERLC_OPTS), + "//conditions:default": RABBITMQ_ERLC_OPTS, + }) + select({ + ":test_build": [ + "-DTEST=1", + "+nowarn_export_all", + ], + "//conditions:default": [], + }), # keep + visibility = [":__subpackages__"], +) + +erlc_opts( + name = "test_erlc_opts", + values = select({ + "@rules_erlang//:debug_build": without("+deterministic", RABBITMQ_TEST_ERLC_OPTS), + "//conditions:default": RABBITMQ_TEST_ERLC_OPTS, + }), # keep + visibility = [":__subpackages__"], +) diff --git a/bazel/BUILD.eetcd b/bazel/BUILD.eetcd index 7713d9bb6d60..ee7441a4ca94 100644 --- a/bazel/BUILD.eetcd +++ b/bazel/BUILD.eetcd @@ -11,7 +11,7 @@ erlc_opts( "+debug_info", "+deterministic", ], - }), # keep + }), visibility = [":__subpackages__"], ) @@ -87,9 +87,10 @@ erlang_bytecode( "ebin/kv_pb.beam", "ebin/router_pb.beam", ], - hdrs = ["include/eetcd.hrl"], + hdrs = [ + "include/eetcd.hrl", + ], app_name = "eetcd", - beam = [], erlc_opts = "//:erlc_opts", ) @@ -138,14 +139,13 @@ filegroup( ], ) -filegroup( - name = "private_hdrs", - srcs = [], -) +filegroup(name = "private_hdrs") filegroup( name = "public_hdrs", - srcs = ["include/eetcd.hrl"], + srcs = [ + "include/eetcd.hrl", + ], ) filegroup( @@ -161,7 +161,9 @@ filegroup( filegroup( name = "licenses", - srcs = ["LICENSE"], + srcs = [ + "LICENSE", + ], ) filegroup( diff --git a/deps/amqp10_client/BUILD.bazel b/deps/amqp10_client/BUILD.bazel index c2447899ba65..11cef462942b 100644 --- a/deps/amqp10_client/BUILD.bazel +++ b/deps/amqp10_client/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,6 +10,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "amqp10_client" @@ -36,76 +44,85 @@ APP_EXTRA_KEYS = """%% Hex.pm package informations. ]} """ -EXTRA_APPS = [ - "public_key", - "ssl", - "inets", - "crypto", -] +all_beam_files(name = "all_beam_files") -BUILD_DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/amqp10_common:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app ssl +# gazelle:erlang_app_extra_app inets +# gazelle:erlang_app_extra_app crypto +# gazelle:erlang_app_extra_app public_key rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = APP_EXTRA_KEYS, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - extra_apps = EXTRA_APPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = [ + "crypto", + "inets", + "ssl", + "public_key", + ], + license_files = [":license_files"], + priv = [":priv"], + deps = ["//deps/amqp10_common:erlang_app"], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( - plt = ":base_plt", + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + plt = ":deps_plt", + target = ":erlang_app", ) broker_for_integration_suites( extra_plugins = ["//deps/rabbitmq_amqp1_0:erlang_app"], ) +TEST_DEPS = [ + "//deps/amqp10_common:erlang_app", +] + rabbitmq_suite( name = "msg_SUITE", - deps = DEPS, + deps = TEST_DEPS, ) rabbitmq_integration_suite( name = "system_SUITE", size = "medium", - additional_hdrs = [ - "src/amqp10_client.hrl", - ], - additional_srcs = [ - "test/activemq_ct_helpers.erl", - "test/mock_server.erl", + additional_beam = [ + "test/activemq_ct_helpers.beam", + "test/mock_server.beam", ], data = [ "@activemq//:exec_dir", ], - erlc_opts = [ - "-I", - "deps/amqp10_client", - ], test_env = { "ACTIVEMQ": "$TEST_SRCDIR/$TEST_WORKSPACE/external/activemq/bin/activemq", }, - deps = DEPS, + deps = TEST_DEPS, ) assert_suites() @@ -115,3 +132,12 @@ alias( actual = ":erlang_app", visibility = ["//visibility:public"], ) + +eunit( + name = "eunit", + compiled_suites = [ + ":test_activemq_ct_helpers_beam", + ":test_mock_server_beam", + ], + target = ":test_erlang_app", +) diff --git a/deps/amqp10_client/app.bzl b/deps/amqp10_client/app.bzl new file mode 100644 index 000000000000..a3c309d3a178 --- /dev/null +++ b/deps/amqp10_client/app.bzl @@ -0,0 +1,102 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "amqp10_client", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/amqp10_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "amqp10_client", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp10_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "msg_SUITE_beam_files", + testonly = True, + srcs = ["test/msg_SUITE.erl"], + outs = ["test/msg_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp10_common:erlang_app"], + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + hdrs = ["src/amqp10_client.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp10_common:erlang_app"], + ) + erlang_bytecode( + name = "test_activemq_ct_helpers_beam", + testonly = True, + srcs = ["test/activemq_ct_helpers.erl"], + outs = ["test/activemq_ct_helpers.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_mock_server_beam", + testonly = True, + srcs = ["test/mock_server.erl"], + outs = ["test/mock_server.beam"], + hdrs = ["src/amqp10_client.hrl"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/amqp10_client/test/mock_server.erl b/deps/amqp10_client/test/mock_server.erl index 410e0cf18cd5..55908cce6e01 100644 --- a/deps/amqp10_client/test/mock_server.erl +++ b/deps/amqp10_client/test/mock_server.erl @@ -16,7 +16,7 @@ recv_amqp_header_step/1 ]). --include_lib("src/amqp10_client.hrl"). +-include("amqp10_client.hrl"). start(Port) -> {ok, LSock} = gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]), diff --git a/deps/amqp10_client/test/system_SUITE.erl b/deps/amqp10_client/test/system_SUITE.erl index 596384c96a99..c7b1e2810c06 100644 --- a/deps/amqp10_client/test/system_SUITE.erl +++ b/deps/amqp10_client/test/system_SUITE.erl @@ -12,7 +12,7 @@ -include_lib("amqp10_common/include/amqp10_framing.hrl"). --include_lib("src/amqp10_client.hrl"). +-include("amqp10_client.hrl"). -compile(export_all). diff --git a/deps/amqp10_common/BUILD.bazel b/deps/amqp10_common/BUILD.bazel index 4b3dcacb72ca..09436c8c644f 100644 --- a/deps/amqp10_common/BUILD.bazel +++ b/deps/amqp10_common/BUILD.bazel @@ -1,5 +1,6 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") -load("@rules_erlang//:dialyze.bzl", "dialyze") +load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( "//:rabbitmq.bzl", "RABBITMQ_DIALYZER_OPTS", @@ -7,6 +8,13 @@ load( "rabbitmq_app", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) py_binary( name = "codegen", @@ -62,19 +70,42 @@ APP_EXTRA_KEYS = """%% Hex.pm package informations. ]} """ +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = "Modules shared by rabbitmq-amqp1.0 and rabbitmq-amqp1.0-client", app_extra_keys = APP_EXTRA_KEYS, app_name = "amqp10_common", - extra_hdrs = ["include/amqp10_framing.hrl"], - extra_srcs = ["src/amqp10_framing0.erl"], + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) -dialyze( +plt( + name = "deps_plt", + for_target = ":erlang_app", plt = "//:base_plt", +) + +dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + plt = ":deps_plt", + target = ":erlang_app", ) rabbitmq_suite( @@ -92,3 +123,8 @@ alias( actual = ":erlang_app", visibility = ["//visibility:public"], ) + +eunit( + name = "eunit", + target = ":test_erlang_app", +) diff --git a/deps/amqp10_common/app.bzl b/deps/amqp10_common/app.bzl new file mode 100644 index 000000000000..cda6d14e7cb3 --- /dev/null +++ b/deps/amqp10_common/app.bzl @@ -0,0 +1,108 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = [ + "src/amqp10_framing0.erl", + ] + native.glob( + ["src/**/*.erl"], + exclude = [ + "src/amqp10_framing0.erl", # keep + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "amqp10_common", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = [ + "src/amqp10_framing0.erl", + ] + native.glob( + ["src/**/*.erl"], + exclude = [ + "src/amqp10_framing0.erl", # keep + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "amqp10_common", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = [ + "src/amqp10_framing0.erl", + ] + native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ], exclude = [ + "src/amqp10_framing0.erl", # keep + ]), + ) + filegroup( + name = "public_hdrs", + srcs = [ + "include/amqp10_framing.hrl", + ] + native.glob( + ["include/**/*.hrl"], + exclude = [ + "include/amqp10_framing.hrl", # keep + ], + ), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "binary_generator_SUITE_beam_files", + testonly = True, + srcs = ["test/binary_generator_SUITE.erl"], + outs = ["test/binary_generator_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "binary_parser_SUITE_beam_files", + testonly = True, + srcs = ["test/binary_parser_SUITE.erl"], + outs = ["test/binary_parser_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/amqp_client/BUILD.bazel b/deps/amqp_client/BUILD.bazel index cb63cf8a5a3d..70666200306b 100644 --- a/deps/amqp_client/BUILD.bazel +++ b/deps/amqp_client/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load("//:rabbitmq_home.bzl", "rabbitmq_home") @@ -10,6 +11,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_ENV = """[ {prefer_ipv6, false}, @@ -37,17 +45,22 @@ APP_EXTRA_KEYS = """%% Hex.pm package informations. ]} """ -EXTRA_APPS = [ - "xmerl", - "ssl", - "public_key", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +# gazelle:erlang_app_extra_app xmerl +# gazelle:erlang_app_extra_app ssl +# gazelle:erlang_app_extra_app public_key rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = "RabbitMQ AMQP Client", app_env = APP_ENV, app_extra_keys = APP_EXTRA_KEYS, @@ -56,23 +69,37 @@ rabbitmq_app( app_registered = [ "amqp_sup", ], - extra_apps = EXTRA_APPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = [ + "xmerl", + "public_key", + "ssl", + ], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit_common:erlang_app", + "@credentials_obfuscation//:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) rabbitmq_home( @@ -90,7 +117,7 @@ rabbitmq_run( rabbitmq_integration_suite( name = "system_SUITE", size = "large", - runtime_deps = [ + deps = [ "@meck//:erlang_app", ], ) @@ -98,10 +125,8 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "unit_SUITE", size = "small", - runtime_deps = [ - "//deps/rabbit:erlang_app", - ], deps = [ + "//deps/rabbit:erlang_app", "//deps/rabbit_common:erlang_app", ], ) @@ -113,3 +138,8 @@ alias( actual = ":erlang_app", visibility = ["//visibility:public"], ) + +eunit( + name = "eunit", + target = ":test_erlang_app", +) diff --git a/deps/amqp_client/Makefile b/deps/amqp_client/Makefile index 07f4c758a2fd..5a2a733e5959 100644 --- a/deps/amqp_client/Makefile +++ b/deps/amqp_client/Makefile @@ -40,7 +40,7 @@ endef PACKAGES_DIR ?= $(abspath PACKAGES) LOCAL_DEPS = xmerl -DEPS = rabbit_common +DEPS = rabbit_common credentials_obfuscation TEST_DEPS = rabbitmq_ct_helpers rabbit meck DEP_EARLY_PLUGINS = rabbit_common/mk/rabbitmq-early-test.mk diff --git a/deps/amqp_client/app.bzl b/deps/amqp_client/app.bzl new file mode 100644 index 000000000000..6731a8eddeb7 --- /dev/null +++ b/deps/amqp_client/app.bzl @@ -0,0 +1,128 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":behaviours", ":other_beam"], + ) + erlang_bytecode( + name = "behaviours", + srcs = [ + "src/amqp_gen_connection.erl", + "src/amqp_gen_consumer.erl", + ], + hdrs = [":public_and_private_hdrs"], + app_name = "amqp_client", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/amqp_gen_connection.erl", + "src/amqp_gen_consumer.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "amqp_client", + beam = [":behaviours"], + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_behaviours", ":test_other_beam"], + ) + erlang_bytecode( + name = "test_behaviours", + testonly = True, + srcs = [ + "src/amqp_gen_connection.erl", + "src/amqp_gen_consumer.erl", + ], + hdrs = [":public_and_private_hdrs"], + app_name = "amqp_client", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/amqp_gen_connection.erl", + "src/amqp_gen_consumer.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "amqp_client", + beam = [":test_behaviours"], + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + hdrs = ["include/amqp_client.hrl", "include/amqp_client_internal.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + hdrs = ["include/amqp_client.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) diff --git a/deps/rabbit/BUILD.bazel b/deps/rabbit/BUILD.bazel index 90610d340540..59c4c37ae58e 100644 --- a/deps/rabbit/BUILD.bazel +++ b/deps/rabbit/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load("//:rabbitmq_home.bzl", "rabbitmq_home") @@ -9,9 +10,15 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "rabbitmq_test_helper", "without", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) load(":bats.bzl", "bats") exports_files(glob([ @@ -142,27 +149,6 @@ _APP_ENV = """[ ] """ -DEPS = [ - "//deps/amqp10_common:erlang_app", - "//deps/rabbit_common:erlang_app", - "@cuttlefish//:erlang_app", - "@ra//:erlang_app", - "@ranch//:erlang_app", - "@stdout_formatter//:erlang_app", - "@syslog//:erlang_app", -] - -RUNTIME_DEPS = [ - "//deps/rabbit/apps/rabbitmq_prelaunch:erlang_app", - "@observer_cli//:erlang_app", - "@osiris//:erlang_app", - "@recon//:erlang_app", - "@redbug//:erlang_app", - "@seshat//:erlang_app", - "@sysmon_handler//:erlang_app", - "@systemd//:erlang_app", -] - APP_MODULE = "rabbit" APP_REGISTERED = [ @@ -173,51 +159,96 @@ APP_REGISTERED = [ "rabbit_router", ] -EXTRA_APPS = [ - "sasl", - "rabbitmq_prelaunch", - "os_mon", - "inets", - "compiler", - "public_key", - "crypto", - "ssl", - "syntax_tools", - "xmerl", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_apps_dirs apps + +# gazelle:erlang_app_extra_app sasl +# gazelle:erlang_app_extra_app os_mon +# gazelle:erlang_app_extra_app inets +# gazelle:erlang_app_extra_app compiler +# gazelle:erlang_app_extra_app crypto +# gazelle:erlang_app_extra_app public_key +# gazelle:erlang_app_extra_app ssl +# gazelle:erlang_app_extra_app syntax_tools +# gazelle:erlang_app_extra_app xmerl + +# gazelle:erlang_app_dep cuttlefish +# gazelle:erlang_app_dep syslog +# gazelle:erlang_app_dep observer_cli +# gazelle:erlang_app_dep redbug +# gazelle:erlang_app_dep sysmon_handler +# gazelle:erlang_app_dep systemd rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = "RabbitMQ", app_env = _APP_ENV, app_module = APP_MODULE, app_name = "rabbit", app_registered = APP_REGISTERED, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = [ + "compiler", + "inets", + "os_mon", + "public_key", + "sasl", + "ssl", + "syntax_tools", + "xmerl", + "crypto", + ], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp10_common:erlang_app", + "//deps/rabbit/apps/rabbitmq_prelaunch:erlang_app", + "//deps/rabbit_common:erlang_app", + "@cuttlefish//:erlang_app", + "@observer_cli//:erlang_app", + "@osiris//:erlang_app", + "@ra//:erlang_app", + "@ranch//:erlang_app", + "@recon//:erlang_app", + "@redbug//:erlang_app", + "@seshat//:erlang_app", + "@stdout_formatter//:erlang_app", + "@syslog//:erlang_app", + "@sysmon_handler//:erlang_app", + "@systemd//:erlang_app", + ], ) -xref() - -plt_apps = [ - "mnesia", - "runtime_tools", -] + EXTRA_APPS - -plt_apps.remove("rabbitmq_prelaunch") +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = plt_apps, - plt = "//:base_plt", - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + apps = [ + "mnesia", # keep + ], + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", # A few `lg` functions are unknown dialyzer_opts = without("-Wunknown", RABBITMQ_DIALYZER_OPTS), - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) bats( @@ -246,42 +277,6 @@ rabbitmq_run( home = ":broker-for-tests-home", ) -rabbitmq_test_helper( - name = "quorum_queue_utils", - srcs = [ - "test/quorum_queue_utils.erl", - ], -) - -rabbitmq_test_helper( - name = "rabbit_ha_test_consumer", - srcs = [ - "test/rabbit_ha_test_consumer.erl", - ], - deps = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - ], -) - -rabbitmq_test_helper( - name = "rabbit_ha_test_producer", - srcs = [ - "test/rabbit_ha_test_producer.erl", - ], - deps = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - ], -) - -rabbitmq_test_helper( - name = "test_util", - srcs = [ - "test/test_util.erl", - ], -) - rabbitmq_suite( name = "amqqueue_backward_compatibility_SUITE", size = "small", @@ -295,17 +290,17 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "channel_interceptor_SUITE", size = "medium", - additional_srcs = [ - "test/dummy_interceptor.erl", - "test/failing_dummy_interceptor.erl", + additional_beam = [ + "test/dummy_interceptor.beam", + "test/failing_dummy_interceptor.beam", ], ) rabbitmq_integration_suite( name = "channel_operation_timeout_SUITE", size = "medium", - additional_srcs = [ - "test/channel_operation_timeout_test_queue.erl", + additional_beam = [ + "test/channel_operation_timeout_test_queue.beam", ], ) @@ -356,7 +351,7 @@ rabbitmq_integration_suite( name = "consumer_timeout_SUITE", size = "medium", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], ) @@ -369,7 +364,7 @@ rabbitmq_integration_suite( name = "dead_lettering_SUITE", size = "large", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], flaky = True, shard_count = 7, @@ -405,7 +400,7 @@ rabbitmq_integration_suite( name = "dynamic_qq_SUITE", size = "large", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], flaky = True, deps = [ @@ -490,7 +485,7 @@ rabbitmq_integration_suite( name = "maintenance_mode_SUITE", size = "medium", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], ) @@ -498,8 +493,8 @@ rabbitmq_integration_suite( name = "many_node_ha_SUITE", size = "medium", additional_beam = [ - ":rabbit_ha_test_consumer", - ":rabbit_ha_test_producer", + ":test_rabbit_ha_test_consumer_beam", + ":test_rabbit_ha_test_producer_beam", ], ) @@ -524,8 +519,8 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "mirrored_supervisor_SUITE", size = "small", - additional_srcs = [ - "test/mirrored_supervisor_SUITE_gs.erl", + additional_beam = [ + "test/mirrored_supervisor_SUITE_gs.beam", ], ) @@ -619,7 +614,7 @@ rabbitmq_integration_suite( name = "publisher_confirms_parallel_SUITE", size = "medium", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], ) @@ -638,7 +633,7 @@ rabbitmq_integration_suite( name = "queue_parallel_SUITE", size = "large", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], flaky = True, shard_count = 6, @@ -653,7 +648,7 @@ rabbitmq_integration_suite( name = "quorum_queue_SUITE", size = "large", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], flaky = True, shard_count = 6, @@ -672,49 +667,38 @@ rabbitmq_integration_suite( size = "medium", ) +rabbitmq_suite( + name = "rabbit_cuttlefish_SUITE", +) + rabbitmq_suite( name = "rabbit_fifo_int_SUITE", size = "medium", - runtime_deps = [ + deps = [ + "//deps/rabbit_common:erlang_app", "@aten//:erlang_app", "@gen_batch_server//:erlang_app", "@meck//:erlang_app", "@ra//:erlang_app", ], - deps = [ - "//deps/rabbit_common:erlang_app", - ], ) rabbitmq_suite( name = "rabbit_fifo_prop_SUITE", size = "large", additional_beam = [ - ":test_util", - ], - additional_hdrs = [ - "src/rabbit_fifo.hrl", - ], - erlc_opts = [ - "-I", - "deps/rabbit", # allow rabbit_fifo.hrl to be included at src/rabbit_fifo.hrl - ], - runtime_deps = [ - "@ra//:erlang_app", + ":test_test_util_beam", ], deps = [ "//deps/rabbit_common:erlang_app", "@proper//:erlang_app", + "@ra//:erlang_app", ], ) rabbitmq_suite( name = "rabbit_fifo_dlx_SUITE", size = "small", - additional_hdrs = [ - "src/rabbit_fifo.hrl", - "src/rabbit_fifo_dlx.hrl", - ], deps = [ "//deps/rabbit_common:erlang_app", ], @@ -724,19 +708,13 @@ rabbitmq_integration_suite( name = "rabbit_fifo_dlx_integration_SUITE", size = "medium", additional_beam = [ - ":test_util", - ":quorum_queue_utils", + ":test_test_util_beam", + ":test_quorum_queue_utils_beam", ":quorum_queue_SUITE_beam_files", ], - additional_hdrs = [ - "src/rabbit_fifo.hrl", - "src/rabbit_fifo_dlx.hrl", - ], - runtime_deps = [ - "@ra//:erlang_app", - ], deps = [ "@proper//:erlang_app", + "@ra//:erlang_app", ], ) @@ -744,18 +722,13 @@ rabbitmq_suite( name = "rabbit_fifo_SUITE", size = "medium", additional_beam = [ - ":test_util", + ":test_test_util_beam", ":rabbit_fifo_v0_SUITE_beam_files", ], - additional_hdrs = [ - "src/rabbit_fifo.hrl", - ], - runtime_deps = [ - "@meck//:erlang_app", - "@ra//:erlang_app", - ], deps = [ "//deps/rabbit_common:erlang_app", + "@meck//:erlang_app", + "@ra//:erlang_app", ], ) @@ -763,21 +736,12 @@ rabbitmq_suite( name = "rabbit_fifo_v0_SUITE", size = "medium", additional_beam = [ - ":test_util", - ], - additional_hdrs = [ - "src/rabbit_fifo_v0.hrl", - ], - erlc_opts = [ - "-I", - "deps/rabbit", # allow rabbit_fifo.hrl to be included at src/rabbit_fifo.hrl - ], - runtime_deps = [ - "@meck//:erlang_app", - "@ra//:erlang_app", + ":test_test_util_beam", ], deps = [ "//deps/rabbit_common:erlang_app", + "@meck//:erlang_app", + "@ra//:erlang_app", ], ) @@ -811,7 +775,7 @@ rabbitmq_integration_suite( name = "rabbit_stream_queue_SUITE", size = "large", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], flaky = True, shard_count = 12, @@ -845,8 +809,8 @@ rabbitmq_integration_suite( name = "simple_ha_SUITE", size = "large", additional_beam = [ - ":rabbit_ha_test_consumer", - ":rabbit_ha_test_producer", + ":test_rabbit_ha_test_consumer_beam", + ":test_rabbit_ha_test_producer_beam", ], shard_count = 4, ) @@ -855,7 +819,7 @@ rabbitmq_integration_suite( name = "single_active_consumer_SUITE", size = "medium", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], ) @@ -879,9 +843,9 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "unit_access_control_authn_authz_context_propagation_SUITE", size = "medium", - additional_srcs = [ - "test/rabbit_auth_backend_context_propagation_mock.erl", - "test/rabbit_foo_protocol_connection_info.erl", + additional_beam = [ + "test/rabbit_auth_backend_context_propagation_mock.beam", + "test/rabbit_foo_protocol_connection_info.beam", ], ) @@ -896,8 +860,8 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "unit_access_control_SUITE", size = "medium", - additional_srcs = [ - "test/rabbit_dummy_protocol_connection_info.erl", + additional_beam = [ + "test/rabbit_dummy_protocol_connection_info.beam", ], ) @@ -922,7 +886,7 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "unit_cluster_formation_locking_mocks_SUITE", size = "small", - runtime_deps = [ + deps = [ "@meck//:erlang_app", ], ) @@ -930,7 +894,7 @@ rabbitmq_suite( rabbitmq_suite( name = "unit_collections_SUITE", size = "small", - runtime_deps = [ + deps = [ "//deps/rabbit_common:erlang_app", ], ) @@ -938,7 +902,7 @@ rabbitmq_suite( rabbitmq_suite( name = "unit_config_value_encryption_SUITE", size = "medium", - runtime_deps = [ + deps = [ "//deps/rabbit/apps/rabbitmq_prelaunch:test_erlang_app", "//deps/rabbit_common:test_erlang_app", "@credentials_obfuscation//:erlang_app", @@ -973,7 +937,7 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "unit_gm_SUITE", size = "small", - runtime_deps = [ + deps = [ "//deps/rabbitmq_ct_helpers:erlang_app", "@meck//:erlang_app", ], @@ -1028,16 +992,16 @@ rabbitmq_suite( rabbitmq_integration_suite( name = "unit_stats_and_metrics_SUITE", size = "medium", - additional_srcs = [ - "test/dummy_event_receiver.erl", + additional_beam = [ + "test/dummy_event_receiver.beam", ], ) rabbitmq_suite( name = "unit_supervisor2_SUITE", size = "small", - additional_srcs = [ - "test/dummy_supervisor2.erl", + additional_beam = [ + "test/dummy_supervisor2.beam", ], ) @@ -1054,8 +1018,8 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "vhost_SUITE", size = "medium", - additional_srcs = [ - "test/test_rabbit_event_handler.erl", + additional_beam = [ + "test/test_rabbit_event_handler.beam", ], flaky = True, ) @@ -1076,25 +1040,17 @@ rabbitmq_suite( ], ) -rabbitmq_suite( - name = "rabbit_cuttlefish_SUITE", - size = "small", - deps = [ - "@cuttlefish//:erlang_app", - ], -) - rabbitmq_integration_suite( name = "direct_exchange_routing_v2_SUITE", size = "medium", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], ) rabbitmq_integration_suite( name = "rabbit_direct_reply_to_prop_SUITE", - size = "small", + size = "medium", deps = [ "@proper//:erlang_app", ], @@ -1102,14 +1058,14 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "unicode_SUITE", - size = "small", + size = "medium", ) rabbitmq_integration_suite( name = "exchanges_SUITE", - size = "small", + size = "medium", additional_beam = [ - ":quorum_queue_utils", + ":test_quorum_queue_utils_beam", ], ) @@ -1120,37 +1076,37 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "rabbit_db_queue_SUITE", - size = "small", + size = "medium", ) rabbitmq_integration_suite( name = "rabbit_db_maintenance_SUITE", - size = "small", + size = "medium", ) rabbitmq_integration_suite( name = "rabbit_db_topic_exchange_SUITE", - size = "small", + size = "medium", ) rabbitmq_integration_suite( name = "rabbit_db_exchange_SUITE", - size = "small", + size = "medium", ) rabbitmq_integration_suite( name = "rabbit_db_binding_SUITE", - size = "small", + size = "medium", ) rabbitmq_integration_suite( name = "rabbit_db_msup_SUITE", - size = "small", + size = "medium", ) rabbitmq_integration_suite( name = "rabbit_db_policy_SUITE", - size = "small", + size = "medium", ) assert_suites() @@ -1223,3 +1179,31 @@ rm -dr web-manpages-tmp """, visibility = ["//visibility:public"], ) + +alias( + name = "rabbit", + actual = ":erlang_app", + visibility = ["//visibility:public"], +) + +eunit( + name = "eunit", + compiled_suites = [ + ":test_channel_operation_timeout_test_queue_beam", + ":test_dummy_event_receiver_beam", + ":test_dummy_interceptor_beam", + ":test_dummy_runtime_parameters_beam", + ":test_dummy_supervisor2_beam", + ":test_failing_dummy_interceptor_beam", + ":test_mirrored_supervisor_SUITE_gs_beam", + ":test_quorum_queue_utils_beam", + ":test_rabbit_auth_backend_context_propagation_mock_beam", + ":test_rabbit_dummy_protocol_connection_info_beam", + ":test_rabbit_foo_protocol_connection_info_beam", + ":test_rabbit_ha_test_consumer_beam", + ":test_rabbit_ha_test_producer_beam", + ":test_test_util_beam", + ":test_test_rabbit_event_handler_beam", + ], + target = ":test_erlang_app", +) diff --git a/deps/rabbit/app.bzl b/deps/rabbit/app.bzl new file mode 100644 index 000000000000..80efffd73d27 --- /dev/null +++ b/deps/rabbit/app.bzl @@ -0,0 +1,1209 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":behaviours", ":other_beam"], + ) + erlang_bytecode( + name = "behaviours", + srcs = [ + "src/gm.erl", + "src/rabbit_backing_queue.erl", + "src/rabbit_credential_validator.erl", + "src/rabbit_exchange_type.erl", + "src/rabbit_mirror_queue_mode.erl", + "src/rabbit_policy_merge_strategy.erl", + "src/rabbit_queue_master_locator.erl", + "src/rabbit_queue_type.erl", + "src/rabbit_tracking.erl", + ], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbit", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/gm.erl", + "src/rabbit_backing_queue.erl", + "src/rabbit_credential_validator.erl", + "src/rabbit_exchange_type.erl", + "src/rabbit_mirror_queue_mode.erl", + "src/rabbit_policy_merge_strategy.erl", + "src/rabbit_queue_master_locator.erl", + "src/rabbit_queue_type.erl", + "src/rabbit_tracking.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbit", + beam = [":behaviours"], + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp10_common:erlang_app", + "//deps/rabbit_common:erlang_app", + "@ra//:erlang_app", + "@ranch//:erlang_app", + "@stdout_formatter//:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_behaviours", ":test_other_beam"], + ) + erlang_bytecode( + name = "test_behaviours", + testonly = True, + srcs = [ + "src/gm.erl", + "src/rabbit_backing_queue.erl", + "src/rabbit_credential_validator.erl", + "src/rabbit_exchange_type.erl", + "src/rabbit_mirror_queue_mode.erl", + "src/rabbit_policy_merge_strategy.erl", + "src/rabbit_queue_master_locator.erl", + "src/rabbit_queue_type.erl", + "src/rabbit_tracking.erl", + ], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbit", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/gm.erl", + "src/rabbit_backing_queue.erl", + "src/rabbit_credential_validator.erl", + "src/rabbit_exchange_type.erl", + "src/rabbit_mirror_queue_mode.erl", + "src/rabbit_policy_merge_strategy.erl", + "src/rabbit_queue_master_locator.erl", + "src/rabbit_queue_type.erl", + "src/rabbit_tracking.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbit", + beam = [":test_behaviours"], + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp10_common:erlang_app", + "//deps/rabbit_common:erlang_app", + "@ra//:erlang_app", + "@ranch//:erlang_app", + "@stdout_formatter//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "amqqueue_backward_compatibility_SUITE_beam_files", + testonly = True, + srcs = ["test/amqqueue_backward_compatibility_SUITE.erl"], + outs = ["test/amqqueue_backward_compatibility_SUITE.beam"], + hdrs = ["include/amqqueue.hrl", "include/amqqueue_v2.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "backing_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/backing_queue_SUITE.erl"], + outs = ["test/backing_queue_SUITE.beam"], + hdrs = ["include/amqqueue.hrl", "include/amqqueue_v2.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "channel_interceptor_SUITE_beam_files", + testonly = True, + srcs = ["test/channel_interceptor_SUITE.erl"], + outs = ["test/channel_interceptor_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "channel_operation_timeout_SUITE_beam_files", + testonly = True, + srcs = ["test/channel_operation_timeout_SUITE.erl"], + outs = ["test/channel_operation_timeout_SUITE.beam"], + hdrs = ["include/amqqueue.hrl", "include/amqqueue_v2.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "classic_queue_prop_SUITE_beam_files", + testonly = True, + srcs = ["test/classic_queue_prop_SUITE.erl"], + outs = ["test/classic_queue_prop_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "cluster_SUITE_beam_files", + testonly = True, + srcs = ["test/cluster_SUITE.erl"], + outs = ["test/cluster_SUITE.beam"], + hdrs = ["include/amqqueue.hrl", "include/amqqueue_v2.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "cluster_rename_SUITE_beam_files", + testonly = True, + srcs = ["test/cluster_rename_SUITE.erl"], + outs = ["test/cluster_rename_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "clustering_management_SUITE_beam_files", + testonly = True, + srcs = ["test/clustering_management_SUITE.erl"], + outs = ["test/clustering_management_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "confirms_rejects_SUITE_beam_files", + testonly = True, + srcs = ["test/confirms_rejects_SUITE.erl"], + outs = ["test/confirms_rejects_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "consumer_timeout_SUITE_beam_files", + testonly = True, + srcs = ["test/consumer_timeout_SUITE.erl"], + outs = ["test/consumer_timeout_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "crashing_queues_SUITE_beam_files", + testonly = True, + srcs = ["test/crashing_queues_SUITE.erl"], + outs = ["test/crashing_queues_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "dead_lettering_SUITE_beam_files", + testonly = True, + srcs = ["test/dead_lettering_SUITE.erl"], + outs = ["test/dead_lettering_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "definition_import_SUITE_beam_files", + testonly = True, + srcs = ["test/definition_import_SUITE.erl"], + outs = ["test/definition_import_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "direct_exchange_routing_v2_SUITE_beam_files", + testonly = True, + srcs = ["test/direct_exchange_routing_v2_SUITE.erl"], + outs = ["test/direct_exchange_routing_v2_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "disconnect_detected_during_alarm_SUITE_beam_files", + testonly = True, + srcs = ["test/disconnect_detected_during_alarm_SUITE.erl"], + outs = ["test/disconnect_detected_during_alarm_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "disk_monitor_SUITE_beam_files", + testonly = True, + srcs = ["test/disk_monitor_SUITE.erl"], + outs = ["test/disk_monitor_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "dynamic_ha_SUITE_beam_files", + testonly = True, + srcs = ["test/dynamic_ha_SUITE.erl"], + outs = ["test/dynamic_ha_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "dynamic_qq_SUITE_beam_files", + testonly = True, + srcs = ["test/dynamic_qq_SUITE.erl"], + outs = ["test/dynamic_qq_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "eager_sync_SUITE_beam_files", + testonly = True, + srcs = ["test/eager_sync_SUITE.erl"], + outs = ["test/eager_sync_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "feature_flags_SUITE_beam_files", + testonly = True, + srcs = ["test/feature_flags_SUITE.erl"], + outs = ["test/feature_flags_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "feature_flags_v2_SUITE_beam_files", + testonly = True, + srcs = ["test/feature_flags_v2_SUITE.erl"], + outs = ["test/feature_flags_v2_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "feature_flags_with_unpriveleged_user_SUITE_beam_files", + testonly = True, + srcs = ["test/feature_flags_with_unpriveleged_user_SUITE.erl"], + outs = ["test/feature_flags_with_unpriveleged_user_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "lazy_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/lazy_queue_SUITE.erl"], + outs = ["test/lazy_queue_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "list_consumers_sanity_check_SUITE_beam_files", + testonly = True, + srcs = ["test/list_consumers_sanity_check_SUITE.erl"], + outs = ["test/list_consumers_sanity_check_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "list_queues_online_and_offline_SUITE_beam_files", + testonly = True, + srcs = ["test/list_queues_online_and_offline_SUITE.erl"], + outs = ["test/list_queues_online_and_offline_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "logging_SUITE_beam_files", + testonly = True, + srcs = ["test/logging_SUITE.erl"], + outs = ["test/logging_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "lqueue_SUITE_beam_files", + testonly = True, + srcs = ["test/lqueue_SUITE.erl"], + outs = ["test/lqueue_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["@proper//:erlang_app"], + ) + erlang_bytecode( + name = "maintenance_mode_SUITE_beam_files", + testonly = True, + srcs = ["test/maintenance_mode_SUITE.erl"], + outs = ["test/maintenance_mode_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "many_node_ha_SUITE_beam_files", + testonly = True, + srcs = ["test/many_node_ha_SUITE.erl"], + outs = ["test/many_node_ha_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "message_size_limit_SUITE_beam_files", + testonly = True, + srcs = ["test/message_size_limit_SUITE.erl"], + outs = ["test/message_size_limit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "metrics_SUITE_beam_files", + testonly = True, + srcs = ["test/metrics_SUITE.erl"], + outs = ["test/metrics_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "mirrored_supervisor_SUITE_beam_files", + testonly = True, + srcs = ["test/mirrored_supervisor_SUITE.erl"], + outs = ["test/mirrored_supervisor_SUITE.beam"], + beam = ["ebin/mirrored_supervisor.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "msg_store_SUITE_beam_files", + testonly = True, + srcs = ["test/msg_store_SUITE.erl"], + outs = ["test/msg_store_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "peer_discovery_classic_config_SUITE_beam_files", + testonly = True, + srcs = ["test/peer_discovery_classic_config_SUITE.erl"], + outs = ["test/peer_discovery_classic_config_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "peer_discovery_dns_SUITE_beam_files", + testonly = True, + srcs = ["test/peer_discovery_dns_SUITE.erl"], + outs = ["test/peer_discovery_dns_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "per_user_connection_channel_limit_SUITE_beam_files", + testonly = True, + srcs = ["test/per_user_connection_channel_limit_SUITE.erl"], + outs = ["test/per_user_connection_channel_limit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "per_user_connection_channel_limit_partitions_SUITE_beam_files", + testonly = True, + srcs = ["test/per_user_connection_channel_limit_partitions_SUITE.erl"], + outs = ["test/per_user_connection_channel_limit_partitions_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "per_user_connection_channel_tracking_SUITE_beam_files", + testonly = True, + srcs = ["test/per_user_connection_channel_tracking_SUITE.erl"], + outs = ["test/per_user_connection_channel_tracking_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "per_user_connection_tracking_SUITE_beam_files", + testonly = True, + srcs = ["test/per_user_connection_tracking_SUITE.erl"], + outs = ["test/per_user_connection_tracking_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "per_vhost_connection_limit_SUITE_beam_files", + testonly = True, + srcs = ["test/per_vhost_connection_limit_SUITE.erl"], + outs = ["test/per_vhost_connection_limit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "per_vhost_connection_limit_partitions_SUITE_beam_files", + testonly = True, + srcs = ["test/per_vhost_connection_limit_partitions_SUITE.erl"], + outs = ["test/per_vhost_connection_limit_partitions_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "per_vhost_msg_store_SUITE_beam_files", + testonly = True, + srcs = ["test/per_vhost_msg_store_SUITE.erl"], + outs = ["test/per_vhost_msg_store_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "per_vhost_queue_limit_SUITE_beam_files", + testonly = True, + srcs = ["test/per_vhost_queue_limit_SUITE.erl"], + outs = ["test/per_vhost_queue_limit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "policy_SUITE_beam_files", + testonly = True, + srcs = ["test/policy_SUITE.erl"], + outs = ["test/policy_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "priority_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/priority_queue_SUITE.erl"], + outs = ["test/priority_queue_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "priority_queue_recovery_SUITE_beam_files", + testonly = True, + srcs = ["test/priority_queue_recovery_SUITE.erl"], + outs = ["test/priority_queue_recovery_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "product_info_SUITE_beam_files", + testonly = True, + srcs = ["test/product_info_SUITE.erl"], + outs = ["test/product_info_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "proxy_protocol_SUITE_beam_files", + testonly = True, + srcs = ["test/proxy_protocol_SUITE.erl"], + outs = ["test/proxy_protocol_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "publisher_confirms_parallel_SUITE_beam_files", + testonly = True, + srcs = ["test/publisher_confirms_parallel_SUITE.erl"], + outs = ["test/publisher_confirms_parallel_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "queue_length_limits_SUITE_beam_files", + testonly = True, + srcs = ["test/queue_length_limits_SUITE.erl"], + outs = ["test/queue_length_limits_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "queue_master_location_SUITE_beam_files", + testonly = True, + srcs = ["test/queue_master_location_SUITE.erl"], + outs = ["test/queue_master_location_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "queue_parallel_SUITE_beam_files", + testonly = True, + srcs = ["test/queue_parallel_SUITE.erl"], + outs = ["test/queue_parallel_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "queue_type_SUITE_beam_files", + testonly = True, + srcs = ["test/queue_type_SUITE.erl"], + outs = ["test/queue_type_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "quorum_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/quorum_queue_SUITE.erl"], + outs = ["test/quorum_queue_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_confirms_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_confirms_SUITE.erl"], + outs = ["test/rabbit_confirms_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_core_metrics_gc_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_core_metrics_gc_SUITE.erl"], + outs = ["test/rabbit_core_metrics_gc_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_direct_reply_to_prop_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_direct_reply_to_prop_SUITE.erl"], + outs = ["test/rabbit_direct_reply_to_prop_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["@proper//:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_fifo_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_fifo_SUITE.erl"], + outs = ["test/rabbit_fifo_SUITE.beam"], + hdrs = ["src/rabbit_fifo.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_fifo_dlx_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_fifo_dlx_SUITE.erl"], + outs = ["test/rabbit_fifo_dlx_SUITE.beam"], + hdrs = ["src/rabbit_fifo.hrl", "src/rabbit_fifo_dlx.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_fifo_dlx_integration_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_fifo_dlx_integration_SUITE.erl"], + outs = ["test/rabbit_fifo_dlx_integration_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_fifo_int_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_fifo_int_SUITE.erl"], + outs = ["test/rabbit_fifo_int_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_fifo_prop_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_fifo_prop_SUITE.erl"], + outs = ["test/rabbit_fifo_prop_SUITE.beam"], + hdrs = ["src/rabbit_fifo.hrl", "src/rabbit_fifo_dlx.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_fifo_v0_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_fifo_v0_SUITE.erl"], + outs = ["test/rabbit_fifo_v0_SUITE.beam"], + hdrs = ["src/rabbit_fifo_v0.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_msg_record_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_msg_record_SUITE.erl"], + outs = ["test/rabbit_msg_record_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp10_common:erlang_app", "//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_stream_coordinator_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_stream_coordinator_SUITE.erl"], + outs = ["test/rabbit_stream_coordinator_SUITE.beam"], + hdrs = ["src/rabbit_stream_coordinator.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_stream_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_stream_queue_SUITE.erl"], + outs = ["test/rabbit_stream_queue_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_stream_sac_coordinator_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_stream_sac_coordinator_SUITE.erl"], + outs = ["test/rabbit_stream_sac_coordinator_SUITE.beam"], + hdrs = ["src/rabbit_stream_sac_coordinator.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit:erlang_app"], + ) + erlang_bytecode( + name = "rabbitmq_queues_cli_integration_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbitmq_queues_cli_integration_SUITE.erl"], + outs = ["test/rabbitmq_queues_cli_integration_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbitmqctl_integration_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbitmqctl_integration_SUITE.erl"], + outs = ["test/rabbitmqctl_integration_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbitmqctl_shutdown_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbitmqctl_shutdown_SUITE.erl"], + outs = ["test/rabbitmqctl_shutdown_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "signal_handling_SUITE_beam_files", + testonly = True, + srcs = ["test/signal_handling_SUITE.erl"], + outs = ["test/signal_handling_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "simple_ha_SUITE_beam_files", + testonly = True, + srcs = ["test/simple_ha_SUITE.erl"], + outs = ["test/simple_ha_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "single_active_consumer_SUITE_beam_files", + testonly = True, + srcs = ["test/single_active_consumer_SUITE.erl"], + outs = ["test/single_active_consumer_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "sync_detection_SUITE_beam_files", + testonly = True, + srcs = ["test/sync_detection_SUITE.erl"], + outs = ["test/sync_detection_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "term_to_binary_compat_prop_SUITE_beam_files", + testonly = True, + srcs = ["test/term_to_binary_compat_prop_SUITE.erl"], + outs = ["test/term_to_binary_compat_prop_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "test_channel_operation_timeout_test_queue_beam", + testonly = True, + srcs = ["test/channel_operation_timeout_test_queue.erl"], + outs = ["test/channel_operation_timeout_test_queue.beam"], + beam = ["ebin/rabbit_backing_queue.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_dummy_event_receiver_beam", + testonly = True, + srcs = ["test/dummy_event_receiver.erl"], + outs = ["test/dummy_event_receiver.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_dummy_interceptor_beam", + testonly = True, + srcs = ["test/dummy_interceptor.erl"], + outs = ["test/dummy_interceptor.beam"], + beam = ["ebin/rabbit_channel_interceptor.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_dummy_runtime_parameters_beam", + testonly = True, + srcs = ["test/dummy_runtime_parameters.erl"], + outs = ["test/dummy_runtime_parameters.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_dummy_supervisor2_beam", + testonly = True, + srcs = ["test/dummy_supervisor2.erl"], + outs = ["test/dummy_supervisor2.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_failing_dummy_interceptor_beam", + testonly = True, + srcs = ["test/failing_dummy_interceptor.erl"], + outs = ["test/failing_dummy_interceptor.beam"], + beam = ["ebin/rabbit_channel_interceptor.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_mirrored_supervisor_SUITE_gs_beam", + testonly = True, + srcs = ["test/mirrored_supervisor_SUITE_gs.erl"], + outs = ["test/mirrored_supervisor_SUITE_gs.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_quorum_queue_utils_beam", + testonly = True, + srcs = ["test/quorum_queue_utils.erl"], + outs = ["test/quorum_queue_utils.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbit_auth_backend_context_propagation_mock_beam", + testonly = True, + srcs = ["test/rabbit_auth_backend_context_propagation_mock.erl"], + outs = ["test/rabbit_auth_backend_context_propagation_mock.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_rabbit_dummy_protocol_connection_info_beam", + testonly = True, + srcs = ["test/rabbit_dummy_protocol_connection_info.erl"], + outs = ["test/rabbit_dummy_protocol_connection_info.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbit_foo_protocol_connection_info_beam", + testonly = True, + srcs = ["test/rabbit_foo_protocol_connection_info.erl"], + outs = ["test/rabbit_foo_protocol_connection_info.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbit_ha_test_consumer_beam", + testonly = True, + srcs = ["test/rabbit_ha_test_consumer.erl"], + outs = ["test/rabbit_ha_test_consumer.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "test_rabbit_ha_test_producer_beam", + testonly = True, + srcs = ["test/rabbit_ha_test_producer.erl"], + outs = ["test/rabbit_ha_test_producer.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "test_test_util_beam", + testonly = True, + srcs = ["test/test_util.erl"], + outs = ["test/test_util.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "topic_permission_SUITE_beam_files", + testonly = True, + srcs = ["test/topic_permission_SUITE.erl"], + outs = ["test/topic_permission_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "unit_access_control_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_access_control_SUITE.erl"], + outs = ["test/unit_access_control_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_access_control_authn_authz_context_propagation_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_access_control_authn_authz_context_propagation_SUITE.erl"], + outs = ["test/unit_access_control_authn_authz_context_propagation_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_access_control_credential_validation_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_access_control_credential_validation_SUITE.erl"], + outs = ["test/unit_access_control_credential_validation_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["@proper//:erlang_app"], + ) + erlang_bytecode( + name = "unit_amqp091_content_framing_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_amqp091_content_framing_SUITE.erl"], + outs = ["test/unit_amqp091_content_framing_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "unit_amqp091_server_properties_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_amqp091_server_properties_SUITE.erl"], + outs = ["test/unit_amqp091_server_properties_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_app_management_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_app_management_SUITE.erl"], + outs = ["test/unit_app_management_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_classic_mirrored_queue_sync_throttling_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_classic_mirrored_queue_sync_throttling_SUITE.erl"], + outs = ["test/unit_classic_mirrored_queue_sync_throttling_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "unit_classic_mirrored_queue_throughput_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_classic_mirrored_queue_throughput_SUITE.erl"], + outs = ["test/unit_classic_mirrored_queue_throughput_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_cluster_formation_locking_mocks_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_cluster_formation_locking_mocks_SUITE.erl"], + outs = ["test/unit_cluster_formation_locking_mocks_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_collections_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_collections_SUITE.erl"], + outs = ["test/unit_collections_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_config_value_encryption_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_config_value_encryption_SUITE.erl"], + outs = ["test/unit_config_value_encryption_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_connection_tracking_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_connection_tracking_SUITE.erl"], + outs = ["test/unit_connection_tracking_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_credit_flow_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_credit_flow_SUITE.erl"], + outs = ["test/unit_credit_flow_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_disk_monitor_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_disk_monitor_SUITE.erl"], + outs = ["test/unit_disk_monitor_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_file_handle_cache_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_file_handle_cache_SUITE.erl"], + outs = ["test/unit_file_handle_cache_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_gen_server2_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_gen_server2_SUITE.erl"], + outs = ["test/unit_gen_server2_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_gm_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_gm_SUITE.erl"], + outs = ["test/unit_gm_SUITE.beam"], + hdrs = ["include/gm_specs.hrl"], + beam = ["ebin/gm.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_log_management_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_log_management_SUITE.erl"], + outs = ["test/unit_log_management_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_operator_policy_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_operator_policy_SUITE.erl"], + outs = ["test/unit_operator_policy_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "unit_pg_local_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_pg_local_SUITE.erl"], + outs = ["test/unit_pg_local_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_plugin_directories_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_plugin_directories_SUITE.erl"], + outs = ["test/unit_plugin_directories_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "unit_plugin_versioning_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_plugin_versioning_SUITE.erl"], + outs = ["test/unit_plugin_versioning_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_policy_validators_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_policy_validators_SUITE.erl"], + outs = ["test/unit_policy_validators_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_priority_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_priority_queue_SUITE.erl"], + outs = ["test/unit_priority_queue_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_queue_consumers_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_queue_consumers_SUITE.erl"], + outs = ["test/unit_queue_consumers_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_stats_and_metrics_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_stats_and_metrics_SUITE.erl"], + outs = ["test/unit_stats_and_metrics_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_supervisor2_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_supervisor2_SUITE.erl"], + outs = ["test/unit_supervisor2_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_vm_memory_monitor_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_vm_memory_monitor_SUITE.erl"], + outs = ["test/unit_vm_memory_monitor_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "upgrade_preparation_SUITE_beam_files", + testonly = True, + srcs = ["test/upgrade_preparation_SUITE.erl"], + outs = ["test/upgrade_preparation_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "vhost_SUITE_beam_files", + testonly = True, + srcs = ["test/vhost_SUITE.erl"], + outs = ["test/vhost_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_cuttlefish_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_cuttlefish_SUITE.erl"], + outs = ["test/rabbit_cuttlefish_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unicode_SUITE_beam_files", + testonly = True, + srcs = ["test/unicode_SUITE.erl"], + outs = ["test/unicode_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "bindings_SUITE_beam_files", + testonly = True, + srcs = ["test/bindings_SUITE.erl"], + outs = ["test/bindings_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "exchanges_SUITE_beam_files", + testonly = True, + srcs = ["test/exchanges_SUITE.erl"], + outs = ["test/exchanges_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_db_binding_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_db_binding_SUITE.erl"], + outs = ["test/rabbit_db_binding_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_db_exchange_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_db_exchange_SUITE.erl"], + outs = ["test/rabbit_db_exchange_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_db_maintenance_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_db_maintenance_SUITE.erl"], + outs = ["test/rabbit_db_maintenance_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_db_msup_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_db_msup_SUITE.erl"], + outs = ["test/rabbit_db_msup_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_db_policy_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_db_policy_SUITE.erl"], + outs = ["test/rabbit_db_policy_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_db_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_db_queue_SUITE.erl"], + outs = ["test/rabbit_db_queue_SUITE.beam"], + hdrs = ["include/amqqueue.hrl", "include/amqqueue_v2.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_db_topic_exchange_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_db_topic_exchange_SUITE.erl"], + outs = ["test/rabbit_db_topic_exchange_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_test_rabbit_event_handler_beam", + testonly = True, + srcs = ["test/test_rabbit_event_handler.erl"], + outs = ["test/test_rabbit_event_handler.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "per_node_limit_SUITE_beam_files", + testonly = True, + srcs = ["test/per_node_limit_SUITE.erl"], + outs = ["test/per_node_limit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) diff --git a/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel b/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel index 3109c5f3da4c..f9cd5eda7280 100644 --- a/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel +++ b/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel @@ -1,12 +1,21 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( "//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_DIALYZER_OPTS", + "assert_suites", "rabbitmq_app", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_prelaunch" @@ -14,56 +23,83 @@ APP_DESCRIPTION = "RabbitMQ prelaunch setup" APP_MODULE = "rabbit_prelaunch_app" -RUNTIME_DEPS = [ - "@cuttlefish//:erlang_app", - "@thoas//:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep thoas rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_module = APP_MODULE, app_name = APP_NAME, app_version = APP_VERSION, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit_common:erlang_app", + "@cuttlefish//:erlang_app", + "@thoas//:erlang_app", + ], ) xref( + name = "xref", additional_libs = [ - "@systemd//:erlang_app", - "@osiris//:erlang_app", + "@systemd//:erlang_app", # keep + "@osiris//:erlang_app", # keep ], + target = ":erlang_app", ) plt( - name = "base_plt", + name = "deps_plt", apps = [ - "runtime_tools", - "eunit", + "runtime_tools", # keep + "eunit", # keep ], + for_target = ":erlang_app", + ignore_warnings = True, plt = "//:base_plt", - deps = DEPS + RUNTIME_DEPS + [ - "@systemd//:erlang_app", - "@osiris//:erlang_app", + deps = [ + "@osiris//:erlang_app", # keep + "@systemd//:erlang_app", # keep ], - ignore_warnings = True, ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) -suites = [ - rabbitmq_suite( - name = "rabbit_logger_std_h_SUITE", - ), - rabbitmq_suite( - name = "rabbit_prelaunch_file_SUITE", - size = "small", - ), -] +eunit( + name = "eunit", + target = ":test_erlang_app", +) + +rabbitmq_suite( + name = "rabbit_logger_std_h_SUITE", +) + +rabbitmq_suite( + name = "rabbit_prelaunch_file_SUITE", + size = "small", +) + +assert_suites() + +alias( + name = "rabbitmq_prelaunch", + actual = ":erlang_app", + visibility = ["//visibility:public"], +) diff --git a/deps/rabbit/apps/rabbitmq_prelaunch/app.bzl b/deps/rabbit/apps/rabbitmq_prelaunch/app.bzl new file mode 100644 index 000000000000..ba79aa173fb5 --- /dev/null +++ b/deps/rabbit/apps/rabbitmq_prelaunch/app.bzl @@ -0,0 +1,84 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_prelaunch", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_prelaunch", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "rabbit_logger_std_h_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_logger_std_h_SUITE.erl"], + outs = ["test/rabbit_logger_std_h_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_prelaunch_file_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_prelaunch_file_SUITE.erl"], + outs = ["test/rabbit_prelaunch_file_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbit/test/dummy_runtime_parameters.erl b/deps/rabbit/test/dummy_runtime_parameters.erl index fb54f6af5e22..b3b5e92e0963 100644 --- a/deps/rabbit/test/dummy_runtime_parameters.erl +++ b/deps/rabbit/test/dummy_runtime_parameters.erl @@ -9,7 +9,7 @@ -behaviour(rabbit_runtime_parameter). -behaviour(rabbit_policy_validator). --include("rabbit.hrl"). +-include_lib("rabbit_common/include/rabbit.hrl"). -export([validate/5, notify/5, notify_clear/4]). -export([register/0, unregister/0]). diff --git a/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel b/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel index 8b81edc72e4a..a9a6d5efc0ca 100644 --- a/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel +++ b/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel @@ -1,15 +1,115 @@ -load("@rules_erlang//:erlang_app.bzl", "erlang_app") -load("//:rabbitmq.bzl", "BROKER_VERSION_REQUIREMENTS_ANY") +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load( + "//:rabbitmq.bzl", + "BROKER_VERSION_REQUIREMENTS_ANY", + "rabbitmq_app", +) + +# gazelle:erlang_generate_beam_files_macro false +# gazelle:erlang_always_generate_test_beam_files +# gazelle:erlang_skip_rules assert_suites2,xref,plt,dialyze + +# gazelle:erlang_app_dep rabbit_common +# gazelle:erlang_app_dep rabbit + +erlang_bytecode( + name = "other_beam", + srcs = [ + "src/my_plugin.erl", + ], + hdrs = [":public_and_private_hdrs"], + app_name = "my_plugin", + dest = "ebin", + erlc_opts = "//:erlc_opts", +) -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", -] +erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = [ + "src/my_plugin.erl", + ], + hdrs = [":public_and_private_hdrs"], + app_name = "my_plugin", + dest = "test", + erlc_opts = "//:test_erlc_opts", +) -erlang_app( +filegroup( + name = "beam_files", + srcs = [":other_beam"], +) + +filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], +) + +filegroup( + name = "srcs", + srcs = [ + "src/my_plugin.erl", + ], +) + +filegroup( + name = "private_hdrs", + srcs = glob(["src/**/*.hrl"]), +) + +filegroup( + name = "public_hdrs", + srcs = glob(["include/**/*.hrl"]), +) + +filegroup( + name = "priv", + srcs = glob(["priv/**/*"]), +) + +filegroup(name = "licenses") + +filegroup( + name = "public_and_private_hdrs", + srcs = [ + ":private_hdrs", + ":public_hdrs", + ], +) + +filegroup( + name = "all_srcs", + srcs = [ + ":public_and_private_hdrs", + ":srcs", + ], +) + +rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = "Plugin to test feature flags", app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_name = "my_plugin", app_version = "1.0.0", - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], +) + +alias( + name = "my_plugin", + actual = ":erlang_app", + visibility = ["//visibility:public"], +) + +filegroup( + name = "license_files", + srcs = glob(["LICENSE*"]), ) diff --git a/deps/rabbit/test/rabbit_fifo_SUITE.erl b/deps/rabbit/test/rabbit_fifo_SUITE.erl index 12eaa04138cb..e04e5639d292 100644 --- a/deps/rabbit/test/rabbit_fifo_SUITE.erl +++ b/deps/rabbit/test/rabbit_fifo_SUITE.erl @@ -13,7 +13,7 @@ -include_lib("eunit/include/eunit.hrl"). -include_lib("rabbit_common/include/rabbit.hrl"). -include_lib("rabbit_common/include/rabbit_framing.hrl"). --include_lib("rabbit/src/rabbit_fifo.hrl"). +-include("rabbit_fifo.hrl"). %%%=================================================================== %%% Common Test callbacks diff --git a/deps/rabbit/test/rabbit_fifo_dlx_SUITE.erl b/deps/rabbit/test/rabbit_fifo_dlx_SUITE.erl index 47c84bb45dfb..b9ea9f4d8846 100644 --- a/deps/rabbit/test/rabbit_fifo_dlx_SUITE.erl +++ b/deps/rabbit/test/rabbit_fifo_dlx_SUITE.erl @@ -10,8 +10,8 @@ -compile(export_all). -include_lib("eunit/include/eunit.hrl"). --include_lib("rabbit/src/rabbit_fifo.hrl"). --include_lib("rabbit/src/rabbit_fifo_dlx.hrl"). +-include("rabbit_fifo.hrl"). +-include("rabbit_fifo_dlx.hrl"). -include_lib("rabbit_common/include/rabbit.hrl"). %%%=================================================================== diff --git a/deps/rabbit/test/rabbit_fifo_prop_SUITE.erl b/deps/rabbit/test/rabbit_fifo_prop_SUITE.erl index 858ca426fbca..5971a496da6f 100644 --- a/deps/rabbit/test/rabbit_fifo_prop_SUITE.erl +++ b/deps/rabbit/test/rabbit_fifo_prop_SUITE.erl @@ -9,8 +9,8 @@ -include_lib("proper/include/proper.hrl"). -include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). --include_lib("rabbit/src/rabbit_fifo.hrl"). --include_lib("rabbit/src/rabbit_fifo_dlx.hrl"). +-include("rabbit_fifo.hrl"). +-include("rabbit_fifo_dlx.hrl"). -include_lib("rabbit_common/include/rabbit.hrl"). -define(record_info(T,R),lists:zip(record_info(fields,T),tl(tuple_to_list(R)))). diff --git a/deps/rabbit/test/rabbit_fifo_v0_SUITE.erl b/deps/rabbit/test/rabbit_fifo_v0_SUITE.erl index 291971ba1ab4..aca3e5f52fd4 100644 --- a/deps/rabbit/test/rabbit_fifo_v0_SUITE.erl +++ b/deps/rabbit/test/rabbit_fifo_v0_SUITE.erl @@ -11,7 +11,7 @@ -include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). -include_lib("rabbit_common/include/rabbit.hrl"). --include("src/rabbit_fifo_v0.hrl"). +-include("rabbit_fifo_v0.hrl"). %%%=================================================================== %%% Common Test callbacks diff --git a/deps/rabbit/test/rabbit_stream_coordinator_SUITE.erl b/deps/rabbit/test/rabbit_stream_coordinator_SUITE.erl index b965ad167b63..84f64b9dc7d5 100644 --- a/deps/rabbit/test/rabbit_stream_coordinator_SUITE.erl +++ b/deps/rabbit/test/rabbit_stream_coordinator_SUITE.erl @@ -8,7 +8,7 @@ -include_lib("eunit/include/eunit.hrl"). -include_lib("rabbit_common/include/rabbit.hrl"). --include_lib("rabbit/src/rabbit_stream_coordinator.hrl"). +-include("rabbit_stream_coordinator.hrl"). -define(STATE, rabbit_stream_coordinator). diff --git a/deps/rabbit/test/rabbit_stream_sac_coordinator_SUITE.erl b/deps/rabbit/test/rabbit_stream_sac_coordinator_SUITE.erl index 5dd546b2deb9..83b6824bbf72 100644 --- a/deps/rabbit/test/rabbit_stream_sac_coordinator_SUITE.erl +++ b/deps/rabbit/test/rabbit_stream_sac_coordinator_SUITE.erl @@ -19,7 +19,7 @@ -compile(export_all). -include_lib("eunit/include/eunit.hrl"). --include_lib("rabbit/src/rabbit_stream_sac_coordinator.hrl"). +-include("rabbit_stream_sac_coordinator.hrl"). %%%=================================================================== %%% Common Test callbacks diff --git a/deps/rabbit_common/BUILD.bazel b/deps/rabbit_common/BUILD.bazel index 836ef81b9860..687aedc6a81c 100644 --- a/deps/rabbit_common/BUILD.bazel +++ b/deps/rabbit_common/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -7,6 +8,13 @@ load( "rabbitmq_app", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) py_binary( name = "codegen", @@ -52,15 +60,6 @@ genrule( tools = [":codegen"], ) -RUNTIME_DEPS = [ - "@thoas//:erlang_app", - "@recon//:erlang_app", - "@credentials_obfuscation//:erlang_app", - "@ranch//:erlang_app", -] - -APP_NAME = "rabbit_common" - APP_EXTRA_KEYS = """ %% Hex.pm package informations. {licenses, ["MPL-2.0"]}, @@ -82,47 +81,77 @@ APP_EXTRA_KEYS = """ ]} """ -EXTRA_APPS = [ - "compiler", - "crypto", - "public_key", - "sasl", - "ssl", - "syntax_tools", - "tools", - "xmerl", - "runtime_tools", - "os_mon", -] +# gazelle:erlang_app_extra_app compiler +# gazelle:erlang_app_extra_app crypto +# gazelle:erlang_app_extra_app public_key +# gazelle:erlang_app_extra_app sasl +# gazelle:erlang_app_extra_app ssl +# gazelle:erlang_app_extra_app syntax_tools +# gazelle:erlang_app_extra_app tools +# gazelle:erlang_app_extra_app xmerl +# gazelle:erlang_app_extra_app runtime_tools +# gazelle:erlang_app_extra_app os_mon + +# gazelle:erlang_app_dep_exclude ranch + +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = "Modules shared by rabbitmq-server and rabbitmq-erlang-client", app_extra_keys = APP_EXTRA_KEYS, - app_name = APP_NAME, - extra_apps = EXTRA_APPS, - extra_hdrs = [ - "include/rabbit_framing.hrl", + app_name = "rabbit_common", + beam_files = [":beam_files"], + extra_apps = [ + "compiler", + "crypto", + "public_key", + "sasl", + "ssl", + "syntax_tools", + "tools", + "xmerl", + "os_mon", + "runtime_tools", ], - extra_srcs = [ - "src/rabbit_framing_amqp_0_8.erl", - "src/rabbit_framing_amqp_0_9_1.erl", + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "@credentials_obfuscation//:erlang_app", + "@ranch//:erlang_app", # keep + "@recon//:erlang_app", + "@thoas//:erlang_app", ], - runtime_deps = RUNTIME_DEPS, ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS + ["mnesia"], - plt = "//:base_plt", - deps = RUNTIME_DEPS, + name = "deps_plt", + apps = [ + "mnesia", # keep + ], + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) rabbitmq_suite( @@ -136,8 +165,8 @@ rabbitmq_suite( rabbitmq_suite( name = "supervisor2_SUITE", size = "small", - additional_srcs = [ - "test/test_event_handler.erl", + additional_beam = [ + "test/test_event_handler.beam", ], ) @@ -154,8 +183,8 @@ rabbitmq_suite( rabbitmq_suite( name = "unit_SUITE", size = "medium", - additional_srcs = [ - "test/gen_server2_test_server.erl", + additional_beam = [ + "test/gen_server2_test_server.beam", ], deps = [ "@credentials_obfuscation//:erlang_app", @@ -175,3 +204,12 @@ alias( actual = ":erlang_app", visibility = ["//visibility:public"], ) + +eunit( + name = "eunit", + compiled_suites = [ + ":test_gen_server2_test_server_beam", + ":test_test_event_handler_beam", + ], + target = ":test_erlang_app", +) diff --git a/deps/rabbit_common/app.bzl b/deps/rabbit_common/app.bzl new file mode 100644 index 000000000000..445061286217 --- /dev/null +++ b/deps/rabbit_common/app.bzl @@ -0,0 +1,203 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":behaviours", ":other_beam"], + ) + erlang_bytecode( + name = "behaviours", + srcs = [ + "src/gen_server2.erl", + "src/rabbit_authn_backend.erl", + "src/rabbit_authz_backend.erl", + "src/rabbit_password_hashing.erl", + "src/rabbit_registry_class.erl", + ], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbit_common", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + erlang_bytecode( + name = "other_beam", + srcs = [ + "src/rabbit_framing_amqp_0_8.erl", + "src/rabbit_framing_amqp_0_9_1.erl", + ] + native.glob( + ["src/**/*.erl"], + exclude = [ + "src/gen_server2.erl", + "src/rabbit_authn_backend.erl", + "src/rabbit_authz_backend.erl", + "src/rabbit_framing_amqp_0_8.erl", # keep + "src/rabbit_framing_amqp_0_9_1.erl", # keep + "src/rabbit_password_hashing.erl", + "src/rabbit_registry_class.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbit_common", + beam = [":behaviours"], + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_behaviours", ":test_other_beam"], + ) + erlang_bytecode( + name = "test_behaviours", + testonly = True, + srcs = [ + "src/gen_server2.erl", + "src/rabbit_authn_backend.erl", + "src/rabbit_authz_backend.erl", + "src/rabbit_password_hashing.erl", + "src/rabbit_registry_class.erl", + ], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbit_common", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = [ + "src/rabbit_framing_amqp_0_8.erl", + "src/rabbit_framing_amqp_0_9_1.erl", + ] + native.glob( + ["src/**/*.erl"], + exclude = [ + "src/gen_server2.erl", + "src/rabbit_authn_backend.erl", + "src/rabbit_authz_backend.erl", + "src/rabbit_framing_amqp_0_8.erl", # keep + "src/rabbit_framing_amqp_0_9_1.erl", # keep + "src/rabbit_password_hashing.erl", + "src/rabbit_registry_class.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbit_common", + beam = [":test_behaviours"], + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = [ + "src/rabbit_framing_amqp_0_8.erl", + "src/rabbit_framing_amqp_0_9_1.erl", + ] + native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ], exclude = [ + "src/rabbit_framing_amqp_0_8.erl", # keep + "src/rabbit_framing_amqp_0_9_1.erl", # keep + ]), + ) + filegroup( + name = "public_hdrs", + srcs = [ + "include/rabbit_framing.hrl", + ] + native.glob( + ["include/**/*.hrl"], + exclude = [ + "include/rabbit_framing.hrl", # keep + ], + ), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "rabbit_env_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_env_SUITE.erl"], + outs = ["test/rabbit_env_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "supervisor2_SUITE_beam_files", + testonly = True, + srcs = ["test/supervisor2_SUITE.erl"], + outs = ["test/supervisor2_SUITE.beam"], + hdrs = ["include/rabbit.hrl", "include/resource.hrl"], + beam = ["ebin/supervisor2.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_gen_server2_test_server_beam", + testonly = True, + srcs = ["test/gen_server2_test_server.erl"], + outs = ["test/gen_server2_test_server.beam"], + beam = ["ebin/gen_server2.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_test_event_handler_beam", + testonly = True, + srcs = ["test/test_event_handler.erl"], + outs = ["test/test_event_handler.beam"], + hdrs = ["include/rabbit.hrl", "include/resource.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + hdrs = ["include/rabbit.hrl", "include/rabbit_memory.hrl", "include/resource.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["@proper//:erlang_app"], + ) + erlang_bytecode( + name = "unit_priority_queue_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_priority_queue_SUITE.erl"], + outs = ["test/unit_priority_queue_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "worker_pool_SUITE_beam_files", + testonly = True, + srcs = ["test/worker_pool_SUITE.erl"], + outs = ["test/worker_pool_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_password_hashing_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_password_hashing_SUITE.erl"], + outs = ["test/unit_password_hashing_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_amqp1_0/BUILD.bazel b/deps/rabbitmq_amqp1_0/BUILD.bazel index 6b963239810b..811c39018eff 100644 --- a/deps/rabbitmq_amqp1_0/BUILD.bazel +++ b/deps/rabbitmq_amqp1_0/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,7 +10,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "without", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) APP_ENV = """[ @@ -22,49 +29,64 @@ APP_NAME = "rabbitmq_amqp1_0" APP_DESCRIPTION = "AMQP 1.0 support for RabbitMQ" -BUILD_DEPS = [ - "//deps/rabbitmq_cli:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/amqp_client:erlang_app", - "//deps/amqp10_common:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp10_common:erlang_app", + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) xref( - additional_libs = BUILD_DEPS, + name = "xref", + additional_libs = [ + "//deps/rabbitmq_cli:erlang_app", # keep + ], + target = ":erlang_app", ) plt( - name = "base_plt", + name = "deps_plt", apps = [ - "ssl", + "ssl", # keep ], - libs = ["//deps/rabbitmq_cli:elixir"], - plt = "//:base_plt", - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS + RUNTIME_DEPS, + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", size = "medium", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_amqp1_0/app.bzl b/deps/rabbitmq_amqp1_0/app.bzl new file mode 100644 index 000000000000..cb0bcea0e4a8 --- /dev/null +++ b/deps/rabbitmq_amqp1_0/app.bzl @@ -0,0 +1,128 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_amqp1_0", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp10_common:erlang_app", + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_amqp1_0", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp10_common:erlang_app", + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "amqp10_client_SUITE_beam_files", + testonly = True, + srcs = ["test/amqp10_client_SUITE.erl"], + outs = ["test/amqp10_client_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "command_SUITE_beam_files", + testonly = True, + srcs = ["test/command_SUITE.erl"], + outs = ["test/command_SUITE.beam"], + hdrs = ["include/rabbit_amqp1_0.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp10_common:erlang_app", "//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "proxy_protocol_SUITE_beam_files", + testonly = True, + srcs = ["test/proxy_protocol_SUITE.erl"], + outs = ["test/proxy_protocol_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + hdrs = ["include/rabbit_amqp1_0.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp10_common:erlang_app"], + ) diff --git a/deps/rabbitmq_auth_backend_cache/BUILD.bazel b/deps/rabbitmq_auth_backend_cache/BUILD.bazel index 2aef3a9ee8f2..2e3fd636b44e 100644 --- a/deps/rabbitmq_auth_backend_cache/BUILD.bazel +++ b/deps/rabbitmq_auth_backend_cache/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -10,6 +11,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_ENV = """[ {cache_ttl, 15000}, @@ -25,36 +33,56 @@ APP_DESCRIPTION = "RabbitMQ Authentication Backend cache" APP_MODULE = "rabbit_auth_backend_cache_app" -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep rabbit rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() @@ -69,7 +97,7 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "rabbit_auth_cache_SUITE", - runtime_deps = [ + deps = [ "//deps/rabbitmq_ct_helpers:erlang_app", ], ) diff --git a/deps/rabbitmq_auth_backend_cache/app.bzl b/deps/rabbitmq_auth_backend_cache/app.bzl new file mode 100644 index 000000000000..b17eaa27db5c --- /dev/null +++ b/deps/rabbitmq_auth_backend_cache/app.bzl @@ -0,0 +1,121 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":behaviours", ":other_beam"], + ) + erlang_bytecode( + name = "behaviours", + srcs = ["src/rabbit_auth_cache.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_cache", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_auth_cache.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_cache", + beam = [":behaviours"], + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_behaviours", ":test_other_beam"], + ) + erlang_bytecode( + name = "test_behaviours", + testonly = True, + srcs = ["src/rabbit_auth_cache.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_cache", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_auth_cache.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_cache", + beam = [":test_behaviours"], + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_auth_backend_cache_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_auth_backend_cache_SUITE.erl"], + outs = ["test/rabbit_auth_backend_cache_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_auth_cache_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_auth_cache_SUITE.erl"], + outs = ["test/rabbit_auth_cache_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_auth_backend_http/BUILD.bazel b/deps/rabbitmq_auth_backend_http/BUILD.bazel index fb3b8e2f576f..c7c101585f97 100644 --- a/deps/rabbitmq_auth_backend_http/BUILD.bazel +++ b/deps/rabbitmq_auth_backend_http/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -10,6 +11,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_ENV = """[ {http_method, get}, @@ -25,43 +33,61 @@ APP_DESCRIPTION = "RabbitMQ HTTP Authentication Backend" APP_MODULE = "rabbit_auth_backend_http_app" -EXTRA_APPS = [ - "inets", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", - "//deps/amqp_client:erlang_app", -] +# gazelle:erlang_app_extra_app inets + +# gazelle:erlang_app_dep rabbit rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = ["inets"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + compiled_suites = [":test_auth_http_mock_beam"], + target = ":test_erlang_app", ) broker_for_integration_suites() @@ -69,14 +95,12 @@ broker_for_integration_suites() rabbitmq_suite( name = "auth_SUITE", size = "small", - additional_srcs = [ - "test/auth_http_mock.erl", - ], - runtime_deps = [ - "@cowboy//:erlang_app", + additional_beam = [ + "test/auth_http_mock.beam", ], deps = [ "//deps/rabbit_common:erlang_app", + "@cowboy//:erlang_app", ], ) diff --git a/deps/rabbitmq_auth_backend_http/app.bzl b/deps/rabbitmq_auth_backend_http/app.bzl new file mode 100644 index 000000000000..36c5aeec7fcc --- /dev/null +++ b/deps/rabbitmq_auth_backend_http/app.bzl @@ -0,0 +1,100 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_http", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_http", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "auth_SUITE_beam_files", + testonly = True, + srcs = ["test/auth_SUITE.erl"], + outs = ["test/auth_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_auth_http_mock_beam", + testonly = True, + srcs = ["test/auth_http_mock.erl"], + outs = ["test/auth_http_mock.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_auth_backend_ldap/BUILD.bazel b/deps/rabbitmq_auth_backend_ldap/BUILD.bazel index d73887c039f5..8c95304f1282 100644 --- a/deps/rabbitmq_auth_backend_ldap/BUILD.bazel +++ b/deps/rabbitmq_auth_backend_ldap/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -10,6 +11,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_ENV = """[ {servers, undefined}, @@ -41,43 +49,62 @@ APP_DESCRIPTION = "RabbitMQ LDAP Authentication Backend" APP_MODULE = "rabbit_auth_backend_ldap_app" -EXTRA_APPS = [ - "eldap", - "public_key", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app eldap +# gazelle:erlang_app_extra_app public_key rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = [ + "eldap", + "public_key", + ], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + compiled_suites = [":test_rabbit_ldap_seed_beam"], + target = ":test_erlang_app", ) broker_for_integration_suites() @@ -89,8 +116,8 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "system_SUITE", size = "medium", - additional_srcs = [ - "test/rabbit_ldap_seed.erl", + additional_beam = [ + "test/rabbit_ldap_seed.beam", ], data = [ "example/global.ldif", diff --git a/deps/rabbitmq_auth_backend_ldap/app.bzl b/deps/rabbitmq_auth_backend_ldap/app.bzl new file mode 100644 index 000000000000..b4c3c2af0303 --- /dev/null +++ b/deps/rabbitmq_auth_backend_ldap/app.bzl @@ -0,0 +1,99 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_ldap", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_ldap", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "test_rabbit_ldap_seed_beam", + testonly = True, + srcs = ["test/rabbit_ldap_seed.erl"], + outs = ["test/rabbit_ldap_seed.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_auth_backend_oauth2/BUILD.bazel b/deps/rabbitmq_auth_backend_oauth2/BUILD.bazel index 357c873314fb..7b40b13517c6 100644 --- a/deps/rabbitmq_auth_backend_oauth2/BUILD.bazel +++ b/deps/rabbitmq_auth_backend_oauth2/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -8,73 +9,88 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "rabbitmq_test_helper", - "without", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) -APP_NAME = "rabbitmq_auth_backend_oauth2" +all_beam_files(name = "all_beam_files") -APP_DESCRIPTION = "OAuth 2 and JWT-based AuthN and AuthZ backend" +all_test_beam_files(name = "all_test_beam_files") -EXTRA_APPS = [ - "inets", - "public_key", -] +all_srcs(name = "all_srcs") -BUILD_DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_cli:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") -DEPS = [ - "@jose//:erlang_app", -] +# gazelle:erlang_app_extra_app inets +# gazelle:erlang_app_extra_app public_key -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", - "@base64url//:erlang_app", - "@cowlib//:erlang_app", -] +# gazelle:erlang_app_dep rabbit +# gazelle:erlang_app_dep_exclude rabbit_common rabbitmq_app( - app_description = APP_DESCRIPTION, - app_name = APP_NAME, - build_deps = BUILD_DEPS, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], + app_description = "OAuth 2 and JWT-based AuthN and AuthZ backend", + app_name = "rabbitmq_auth_backend_oauth2", + beam_files = [":beam_files"], + extra_apps = [ + "inets", + "public_key", + ], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "@base64url//:erlang_app", + "@cowlib//:erlang_app", + "@jose//:erlang_app", + ], ) xref( + name = "xref", additional_libs = [ - "//deps/rabbitmq_cli:erlang_app", + "//deps/rabbitmq_cli:erlang_app", # keep ], + target = ":erlang_app", ) plt( - name = "base_plt", - apps = EXTRA_APPS, - libs = ["//deps/rabbitmq_cli:elixir"], - plt = "//:base_plt", - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) -broker_for_integration_suites( - extra_plugins = [ - "//deps/rabbitmq_mqtt:erlang_app", +eunit( + name = "eunit", + compiled_suites = [ + ":test_jwks_http_app_beam", + ":test_jwks_http_handler_beam", + ":test_jwks_http_sup_beam", + ":test_rabbit_auth_backend_oauth2_test_util_beam", ], + target = ":test_erlang_app", ) -rabbitmq_test_helper( - name = "rabbit_auth_backend_oauth2_test_util", - srcs = [ - "test/rabbit_auth_backend_oauth2_test_util.erl", +broker_for_integration_suites( + extra_plugins = [ + "//deps/rabbitmq_mqtt:erlang_app", ], ) @@ -90,14 +106,12 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "jwks_SUITE", additional_beam = [ - ":rabbit_auth_backend_oauth2_test_util", - ], - additional_srcs = [ - "test/jwks_http_app.erl", - "test/jwks_http_handler.erl", - "test/jwks_http_sup.erl", + "test/rabbit_auth_backend_oauth2_test_util.beam", + "test/jwks_http_app.beam", + "test/jwks_http_handler.beam", + "test/jwks_http_sup.beam", ], - runtime_deps = [ + deps = [ "@cowboy//:erlang_app", ], ) @@ -114,7 +128,7 @@ rabbitmq_integration_suite( name = "system_SUITE", size = "medium", additional_beam = [ - ":rabbit_auth_backend_oauth2_test_util", + "test/rabbit_auth_backend_oauth2_test_util.beam", ], runtime_deps = [ "@emqtt//:erlang_app", @@ -125,7 +139,7 @@ rabbitmq_integration_suite( name = "unit_SUITE", size = "medium", additional_beam = [ - ":rabbit_auth_backend_oauth2_test_util", + "test/rabbit_auth_backend_oauth2_test_util.beam", ], ) diff --git a/deps/rabbitmq_auth_backend_oauth2/app.bzl b/deps/rabbitmq_auth_backend_oauth2/app.bzl new file mode 100644 index 000000000000..ba455c559298 --- /dev/null +++ b/deps/rabbitmq_auth_backend_oauth2/app.bzl @@ -0,0 +1,162 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_oauth2", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + "@jose//:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_backend_oauth2", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + "@jose//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "add_uaa_key_command_SUITE_beam_files", + testonly = True, + srcs = ["test/add_uaa_key_command_SUITE.erl"], + outs = ["test/add_uaa_key_command_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "jwks_SUITE_beam_files", + testonly = True, + srcs = ["test/jwks_SUITE.erl"], + outs = ["test/jwks_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "scope_SUITE_beam_files", + testonly = True, + srcs = ["test/scope_SUITE.erl"], + outs = ["test/scope_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "test_jwks_http_app_beam", + testonly = True, + srcs = ["test/jwks_http_app.erl"], + outs = ["test/jwks_http_app.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_jwks_http_handler_beam", + testonly = True, + srcs = ["test/jwks_http_handler.erl"], + outs = ["test/jwks_http_handler.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["@cowboy//:erlang_app"], + ) + erlang_bytecode( + name = "test_jwks_http_sup_beam", + testonly = True, + srcs = ["test/jwks_http_sup.erl"], + outs = ["test/jwks_http_sup.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbit_auth_backend_oauth2_test_util_beam", + testonly = True, + srcs = ["test/rabbit_auth_backend_oauth2_test_util.erl"], + outs = ["test/rabbit_auth_backend_oauth2_test_util.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "wildcard_match_SUITE_beam_files", + testonly = True, + srcs = ["test/wildcard_match_SUITE.erl"], + outs = ["test/wildcard_match_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel b/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel index b926d5242a63..778774f9e63b 100644 --- a/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel +++ b/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel @@ -4,8 +4,15 @@ load( "//:rabbitmq.bzl", "BROKER_VERSION_REQUIREMENTS_ANY", "RABBITMQ_DIALYZER_OPTS", + "assert_suites", "rabbitmq_app", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", +) APP_NAME = "rabbitmq_auth_mechanism_ssl" @@ -17,40 +24,56 @@ APP_ENV = """[ {name_from, distinguished_name} ]""" -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files() -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") -EXTRA_APPS = [ - "public_key", -] +# gazelle:erlang_app_extra_app public_key rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = ["public_key"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +assert_suites() + +alias( + name = "rabbitmq_auth_mechanism_ssl", + actual = ":erlang_app", + visibility = ["//visibility:public"], ) diff --git a/deps/rabbitmq_auth_mechanism_ssl/app.bzl b/deps/rabbitmq_auth_mechanism_ssl/app.bzl new file mode 100644 index 000000000000..c60d927e82b1 --- /dev/null +++ b/deps/rabbitmq_auth_mechanism_ssl/app.bzl @@ -0,0 +1,72 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_mechanism_ssl", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_auth_mechanism_ssl", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + pass diff --git a/deps/rabbitmq_aws/BUILD.bazel b/deps/rabbitmq_aws/BUILD.bazel index 7763594c0357..7324f8a23a39 100644 --- a/deps/rabbitmq_aws/BUILD.bazel +++ b/deps/rabbitmq_aws/BUILD.bazel @@ -1,10 +1,18 @@ -load("@rules_erlang//:eunit.bzl", "eunit") +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") -load("//:rabbitmq.bzl", - "RABBITMQ_DIALYZER_OPTS", - "RABBITMQ_TEST_ERLC_OPTS", - "rabbitmq_app", +load( + "//:rabbitmq.bzl", + "RABBITMQ_DIALYZER_OPTS", + "assert_suites", + "rabbitmq_app", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) APP_NAME = "rabbitmq_aws" @@ -17,55 +25,95 @@ APP_REGISTERED = [ "rabbitmq_aws", ] -EXTRA_APPS = [ - "crypto", - "inets", - "public_key", - "ssl", - "xmerl", -] +all_beam_files(name = "all_beam_files") -BUILD_DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app crypto +# gazelle:erlang_app_extra_app inets +# gazelle:erlang_app_extra_app public_key +# gazelle:erlang_app_extra_app ssl +# gazelle:erlang_app_extra_app xmerl +# gazelle:erlang_app_dep_exclude rabbit_common rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_module = APP_MODULE, app_name = APP_NAME, app_registered = APP_REGISTERED, - build_deps = BUILD_DEPS, - extra_apps = EXTRA_APPS, + beam_files = [":beam_files"], + extra_apps = [ + "crypto", + "inets", + "ssl", + "xmerl", + "public_key", + ], + license_files = [":license_files"], + priv = [":priv"], ) xref( + name = "xref", additional_libs = [ - "//deps/rabbit_common:erlang_app", + "//deps/rabbit_common:erlang_app", # keep ], + target = ":erlang_app", ) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = BUILD_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", + deps = [ + "//deps/rabbit_common:erlang_app", # keep + ], ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) eunit( - erlc_opts = RABBITMQ_TEST_ERLC_OPTS + [ - "-I", - "deps/rabbitmq_aws", - "+nowarn_export_all", + name = "eunit", + compiled_suites = [ + ":test_rabbitmq_aws_all_tests_beam", + ":test_rabbitmq_aws_app_tests_beam", + ":test_rabbitmq_aws_config_tests_beam", + ":test_rabbitmq_aws_json_tests_beam", + ":test_rabbitmq_aws_sign_tests_beam", + ":test_rabbitmq_aws_sup_tests_beam", + ":test_rabbitmq_aws_tests_beam", + ":test_rabbitmq_aws_urilib_tests_beam", + ":test_rabbitmq_aws_xml_tests_beam", + ], + data = [ + "test/test_aws_config.ini", + "test/test_aws_credentials.ini", ], - runtime_deps = [ - "//deps/rabbit_common:erlang_app", - "@meck//:erlang_app", - "@thoas//:erlang_app", + target = ":test_erlang_app", + deps = [ + "//deps/rabbit_common:erlang_app", # keep + "@meck//:erlang_app", # keep + "@thoas//:erlang_app", # keep ], ) + +assert_suites() + +alias( + name = "rabbitmq_aws", + actual = ":erlang_app", + visibility = ["//visibility:public"], +) diff --git a/deps/rabbitmq_aws/app.bzl b/deps/rabbitmq_aws/app.bzl new file mode 100644 index 000000000000..a703c3ab9139 --- /dev/null +++ b/deps/rabbitmq_aws/app.bzl @@ -0,0 +1,137 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_aws", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_aws", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "test_rabbitmq_aws_all_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_all_tests.erl"], + outs = ["test/rabbitmq_aws_all_tests.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbitmq_aws_app_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_app_tests.erl"], + outs = ["test/rabbitmq_aws_app_tests.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbitmq_aws_config_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_config_tests.erl"], + outs = ["test/rabbitmq_aws_config_tests.beam"], + hdrs = ["include/rabbitmq_aws.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbitmq_aws_json_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_json_tests.erl"], + outs = ["test/rabbitmq_aws_json_tests.beam"], + hdrs = ["include/rabbitmq_aws.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbitmq_aws_sign_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_sign_tests.erl"], + outs = ["test/rabbitmq_aws_sign_tests.beam"], + hdrs = ["include/rabbitmq_aws.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbitmq_aws_sup_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_sup_tests.erl"], + outs = ["test/rabbitmq_aws_sup_tests.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbitmq_aws_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_tests.erl"], + outs = ["test/rabbitmq_aws_tests.beam"], + hdrs = ["include/rabbitmq_aws.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbitmq_aws_urilib_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_urilib_tests.erl"], + outs = ["test/rabbitmq_aws_urilib_tests.beam"], + hdrs = ["include/rabbitmq_aws.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbitmq_aws_xml_tests_beam", + testonly = True, + srcs = ["test/rabbitmq_aws_xml_tests.erl"], + outs = ["test/rabbitmq_aws_xml_tests.beam"], + hdrs = ["include/rabbitmq_aws.hrl"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_all_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_all_tests.erl similarity index 100% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_all_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_all_tests.erl diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_app_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_app_tests.erl similarity index 100% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_app_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_app_tests.erl diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_config_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_config_tests.erl similarity index 99% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_config_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_config_tests.erl index fe384b51d8e0..c8329f280c07 100644 --- a/deps/rabbitmq_aws/test/src/rabbitmq_aws_config_tests.erl +++ b/deps/rabbitmq_aws/test/rabbitmq_aws_config_tests.erl @@ -437,7 +437,7 @@ setup_test_config_env_var() -> setup_test_file_with_env_var(EnvVar, Filename) -> os:putenv(EnvVar, - filename:join([filename:absname("."), "test", "src", + filename:join([filename:absname("."), "test", Filename])). setup_test_credentials_env_var() -> diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_json_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_json_tests.erl similarity index 100% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_json_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_json_tests.erl diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_sign_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_sign_tests.erl similarity index 100% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_sign_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_sign_tests.erl diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_sup_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_sup_tests.erl similarity index 100% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_sup_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_sup_tests.erl diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_tests.erl similarity index 99% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_tests.erl index a6bf8b8c5271..d622d1359731 100644 --- a/deps/rabbitmq_aws/test/src/rabbitmq_aws_tests.erl +++ b/deps/rabbitmq_aws/test/rabbitmq_aws_tests.erl @@ -2,7 +2,7 @@ -include_lib("eunit/include/eunit.hrl"). --include("include/rabbitmq_aws.hrl"). +-include("rabbitmq_aws.hrl"). init_test_() -> {foreach, diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_urilib_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_urilib_tests.erl similarity index 100% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_urilib_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_urilib_tests.erl diff --git a/deps/rabbitmq_aws/test/src/rabbitmq_aws_xml_tests.erl b/deps/rabbitmq_aws/test/rabbitmq_aws_xml_tests.erl similarity index 100% rename from deps/rabbitmq_aws/test/src/rabbitmq_aws_xml_tests.erl rename to deps/rabbitmq_aws/test/rabbitmq_aws_xml_tests.erl diff --git a/deps/rabbitmq_aws/test/src/test_aws_config.ini b/deps/rabbitmq_aws/test/test_aws_config.ini similarity index 100% rename from deps/rabbitmq_aws/test/src/test_aws_config.ini rename to deps/rabbitmq_aws/test/test_aws_config.ini diff --git a/deps/rabbitmq_aws/test/src/test_aws_credentials.ini b/deps/rabbitmq_aws/test/test_aws_credentials.ini similarity index 100% rename from deps/rabbitmq_aws/test/src/test_aws_credentials.ini rename to deps/rabbitmq_aws/test/test_aws_credentials.ini diff --git a/deps/rabbitmq_cli/rabbitmqctl.bzl b/deps/rabbitmq_cli/rabbitmqctl.bzl index ab0b4e8e65ee..35f330f9d94d 100644 --- a/deps/rabbitmq_cli/rabbitmqctl.bzl +++ b/deps/rabbitmq_cli/rabbitmqctl.bzl @@ -242,6 +242,9 @@ def _elixir_app_to_erlang_app(ctx): ebin = ctx.actions.declare_directory(path_join(ctx.label.name, "ebin")) if ctx.attr.mode == "elixir": + if len(ctx.attr.deps) > 0: + fail("deps cannot be specified in the 'elixir' mode") + ctx.actions.run_shell( inputs = ctx.files.elixir_as_app + ctx.files.elixir_app, outputs = [ebin], @@ -268,6 +271,8 @@ done include = lib_info.include, beam = [ebin], priv = lib_info.priv, + license_files = lib_info.license_files, + srcs = lib_info.srcs, deps = lib_info.deps, ), ] @@ -297,12 +302,14 @@ done lib_info = ctx.attr.elixir_app[ElixirAppInfo] + deps = lib_info.deps + ctx.attr.deps + runfiles = ctx.runfiles([ebin]).merge_all([ erlang_runfiles, elixir_runfiles, ] + [ dep[DefaultInfo].default_runfiles - for dep in lib_info.deps + for dep in deps ]) return [ @@ -318,7 +325,7 @@ done priv = lib_info.priv, license_files = lib_info.license_files, srcs = lib_info.srcs, - deps = lib_info.deps, + deps = deps, ), ] @@ -339,6 +346,9 @@ elixir_app_to_erlang_app = rule( "app", ], ), + "deps": attr.label_list( + providers = [ErlangAppInfo], + ), }, toolchains = [ "//bazel/elixir:toolchain_type", @@ -387,4 +397,5 @@ def rabbitmqctl( elixir_app = ":" + name, mode = "app", visibility = visibility, + deps = [":elixir"], ) diff --git a/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel b/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel index ffa505f724ff..933db1f24920 100644 --- a/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel +++ b/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,49 +10,72 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_consistent_hash_exchange" APP_DESCRIPTION = "Consistent Hash Exchange Type" -BUILD_DEPS = [ - "//deps/rabbit:erlang_app", - "//deps/rabbitmq_cli:erlang_app", -] +all_beam_files(name = "all_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_test_beam_files(name = "all_test_beam_files") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) xref( - additional_libs = BUILD_DEPS, + name = "xref", + additional_libs = [ + "//deps/rabbitmq_cli:erlang_app", # keep + ], + target = ":erlang_app", ) plt( - name = "base_plt", - apps = ["mnesia"], - libs = ["//deps/rabbitmq_cli:elixir"], - plt = "//:base_plt", - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS, + name = "deps_plt", + apps = [ + "mnesia", # keep + ], + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_consistent_hash_exchange/app.bzl b/deps/rabbitmq_consistent_hash_exchange/app.bzl new file mode 100644 index 000000000000..2e3a6b52b42c --- /dev/null +++ b/deps/rabbitmq_consistent_hash_exchange/app.bzl @@ -0,0 +1,88 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_consistent_hash_exchange", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_consistent_hash_exchange", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "rabbit_exchange_type_consistent_hash_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_exchange_type_consistent_hash_SUITE.erl"], + outs = ["test/rabbit_exchange_type_consistent_hash_SUITE.beam"], + hdrs = ["include/rabbitmq_consistent_hash_exchange.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) diff --git a/deps/rabbitmq_ct_client_helpers/BUILD.bazel b/deps/rabbitmq_ct_client_helpers/BUILD.bazel index 6077bac4dcc0..2bbee7a93b7f 100644 --- a/deps/rabbitmq_ct_client_helpers/BUILD.bazel +++ b/deps/rabbitmq_ct_client_helpers/BUILD.bazel @@ -1,12 +1,73 @@ -load("@rules_erlang//:erlang_app.bzl", "erlang_app") +load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") +load("@rules_erlang//:xref2.bzl", "xref") +load( + "//:rabbitmq.bzl", + "RABBITMQ_DIALYZER_OPTS", + "assert_suites", + "rabbitmq_app", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) + +# gazelle:erlang_app_testonly + +# gazelle:erlang_always_generate_test_beam_files + +all_beam_files(name = "all_beam_files") -erlang_app( +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + +rabbitmq_app( + name = "erlang_app", testonly = True, + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_name = "rabbitmq_ct_client_helpers", - app_version = "main", + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], deps = [ "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", ], ) + +alias( + name = "rabbitmq_ct_client_helpers", + actual = ":erlang_app", + visibility = ["//visibility:public"], +) + +xref( + name = "xref", + target = ":erlang_app", +) + +plt( + name = "deps_plt", + apps = [ + "common_test", # keep + ], + for_target = ":erlang_app", + ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", +) + +dialyze( + name = "dialyze", + dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + plt = ":deps_plt", + target = ":erlang_app", +) + +assert_suites() diff --git a/deps/rabbitmq_ct_client_helpers/app.bzl b/deps/rabbitmq_ct_client_helpers/app.bzl new file mode 100644 index 000000000000..4ea8933e64c1 --- /dev/null +++ b/deps/rabbitmq_ct_client_helpers/app.bzl @@ -0,0 +1,81 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + testonly = True, + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_ct_client_helpers", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + testonly = True, + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + testonly = True, + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + testonly = True, + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + testonly = True, + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + testonly = True, + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "public_hdrs", + testonly = True, + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + testonly = True, + srcs = native.glob(["LICENSE*"]), + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_ct_client_helpers", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + pass diff --git a/deps/rabbitmq_ct_helpers/BUILD.bazel b/deps/rabbitmq_ct_helpers/BUILD.bazel index c17b45631bab..2f921ad4f2ea 100644 --- a/deps/rabbitmq_ct_helpers/BUILD.bazel +++ b/deps/rabbitmq_ct_helpers/BUILD.bazel @@ -1,16 +1,114 @@ -load("@rules_erlang//:erlang_app.bzl", "erlang_app") +load("@rules_erlang//:eunit2.bzl", "eunit") +load("@rules_erlang//:xref2.bzl", "xref") +load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") +load( + "//:rabbitmq.bzl", + "RABBITMQ_DIALYZER_OPTS", + "assert_suites", + "broker_for_integration_suites", + "rabbitmq_app", + "rabbitmq_integration_suite", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) + +all_beam_files(name = "all_beam_files") + +all_srcs(name = "all_srcs") + +all_test_beam_files(name = "all_test_beam_files") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_testonly + +# gazelle:erlang_app_dep meck +# gazelle:erlang_app_dep_exclude rabbit +# gazelle:erlang_app_dep_exclude rabbitmq_prelaunch +# gazelle:erlang_app_dep_exclude rabbitmq_management_agent -erlang_app( +rabbitmq_app( + name = "erlang_app", testonly = True, + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_name = "rabbitmq_ct_helpers", - app_version = "main", - extra_priv = [ - "tools/tls-certs/Makefile", - "tools/tls-certs/openssl.cnf.in", - ], + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], deps = [ "//deps/rabbit_common:erlang_app", - "@proper//:erlang_app", "@meck//:erlang_app", + "@proper//:erlang_app", + ], +) + +alias( + name = "rabbitmq_ct_helpers", + actual = ":erlang_app", + visibility = ["//visibility:public"], +) + +xref( + name = "xref", + additional_libs = [ + "//deps/rabbitmq_cli:elixir", # keep + "//deps/rabbitmq_cli:erlang_app", # keep + "//deps/rabbit:erlang_app", # keep + "//deps/rabbit/apps/rabbitmq_prelaunch:erlang_app", # keep + "//deps/rabbitmq_management_agent:erlang_app", # keep + "@proper//:erlang_app", # keep + ], + target = ":erlang_app", +) + +plt( + name = "deps_plt", + apps = [ + "common_test", # keep + "eunit", # keep + "inets", # keep + ], + for_target = ":erlang_app", + ignore_warnings = True, + libs = [ + "//deps/rabbitmq_cli:elixir", # keep + ], + plt = "//:base_plt", + deps = [ + "//deps/rabbit:erlang_app", # keep + "//deps/rabbit/apps/rabbitmq_prelaunch:erlang_app", # keep + "//deps/rabbitmq_cli:elixir", # keep + "//deps/rabbitmq_cli:erlang_app", # keep + "//deps/rabbitmq_management_agent:erlang_app", # keep + "@proper//:erlang_app", # keep ], ) + +dialyze( + name = "dialyze", + dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + plt = ":deps_plt", + target = ":erlang_app", + warnings_as_errors = False, +) + +eunit( + name = "eunit", + target = ":test_erlang_app", +) + +broker_for_integration_suites() + +rabbitmq_integration_suite( + name = "terraform_SUITE", + # requires SSH_KEY to create vms, skip running as part of CI + tags = ["manual"], +) + +assert_suites() diff --git a/deps/rabbitmq_ct_helpers/app.bzl b/deps/rabbitmq_ct_helpers/app.bzl new file mode 100644 index 000000000000..21723a1d62c0 --- /dev/null +++ b/deps/rabbitmq_ct_helpers/app.bzl @@ -0,0 +1,97 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + testonly = True, + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_ct_helpers", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "@proper//:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_ct_helpers", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "@proper//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + testonly = True, + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + testonly = True, + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + testonly = True, + srcs = native.glob( + ["tools/terraform/**/*"], + ) + [ + "tools/tls-certs/Makefile", + "tools/tls-certs/openssl.cnf.in", + ], # keep + ) + filegroup( + name = "srcs", + testonly = True, + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + testonly = True, + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "private_hdrs", + testonly = True, + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + testonly = True, + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "terraform_SUITE_beam_files", + testonly = True, + srcs = ["test/terraform_SUITE.erl"], + outs = ["test/terraform_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_ct_helpers/src/rabbit_ct_helpers.erl b/deps/rabbitmq_ct_helpers/src/rabbit_ct_helpers.erl index c48dde207c19..2afb59d5f228 100644 --- a/deps/rabbitmq_ct_helpers/src/rabbit_ct_helpers.erl +++ b/deps/rabbitmq_ct_helpers/src/rabbit_ct_helpers.erl @@ -897,9 +897,8 @@ exec([Cmd | Args], Options) when is_list(Cmd) orelse is_binary(Cmd) -> | proplists:delete(env, PortOptions1)], Log ++ "~n~nEnvironment variables:~n" ++ string:join( - [string:replace( - rabbit_misc:format(" ~ts=~ts", [K, V]), - "~", "~~", all) || {K, V} <- Env1], + [rabbit_misc:format(" ~ts=~ts", [K, string:replace(V, "~", "~~", all)]) + || {K, V} <- Env1], "~n") } end, diff --git a/deps/rabbitmq_event_exchange/BUILD.bazel b/deps/rabbitmq_event_exchange/BUILD.bazel index 41819a405173..6d0f269239ca 100644 --- a/deps/rabbitmq_event_exchange/BUILD.bazel +++ b/deps/rabbitmq_event_exchange/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -10,35 +11,64 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_event_exchange" APP_DESCRIPTION = "Event Exchange Type" -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_name = APP_NAME, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() @@ -53,7 +83,7 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "unit_SUITE", - runtime_deps = [ + deps = [ "//deps/rabbitmq_ct_helpers:erlang_app", ], ) diff --git a/deps/rabbitmq_event_exchange/app.bzl b/deps/rabbitmq_event_exchange/app.bzl new file mode 100644 index 000000000000..97826a982dc0 --- /dev/null +++ b/deps/rabbitmq_event_exchange/app.bzl @@ -0,0 +1,98 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_event_exchange", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_event_exchange", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_federation/BUILD.bazel b/deps/rabbitmq_federation/BUILD.bazel index ccb36cd45807..1fb2aad791c2 100644 --- a/deps/rabbitmq_federation/BUILD.bazel +++ b/deps/rabbitmq_federation/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,7 +10,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "rabbitmq_test_helper", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) APP_NAME = "rabbitmq_federation" @@ -23,66 +30,70 @@ APP_ENV = """[ {internal_exchange_check_interval, 90000} ]""" -BUILD_DEPS = [ - "//deps/rabbitmq_cli:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) xref( - additional_libs = BUILD_DEPS, + name = "xref", + additional_libs = [ + "//deps/rabbitmq_cli:erlang_app", # keep + ], + target = ":erlang_app", ) plt( - name = "base_plt", - plt = "//:base_plt", - libs = ["//deps/rabbitmq_cli:elixir"], - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) -broker_for_integration_suites() - -rabbitmq_test_helper( - name = "rabbit_federation_test_util", - srcs = [ - "test/rabbit_federation_test_util.erl", - ], - hdrs = glob([ - "include/**/*.hrl", - "src/**/*.hrl", - ]), - deps = [ - ":test_erlang_app", - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - ], +eunit( + name = "eunit", + compiled_suites = [":test_rabbit_federation_test_util_beam"], + target = ":test_erlang_app", ) +broker_for_integration_suites() + rabbitmq_integration_suite( name = "exchange_SUITE", size = "large", additional_beam = [ - ":rabbit_federation_test_util", + "test/rabbit_federation_test_util.beam", ], flaky = True, shard_count = 2, @@ -91,14 +102,14 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "federation_status_command_SUITE", additional_beam = [ - ":rabbit_federation_test_util", + "test/rabbit_federation_test_util.beam", ], ) rabbitmq_integration_suite( name = "queue_SUITE", additional_beam = [ - ":rabbit_federation_test_util", + "test/rabbit_federation_test_util.beam", ], flaky = True, shard_count = 6, @@ -107,7 +118,7 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "rabbit_federation_status_SUITE", additional_beam = [ - ":rabbit_federation_test_util", + "test/rabbit_federation_test_util.beam", ":exchange_SUITE_beam_files", ":queue_SUITE_beam_files", ], @@ -116,7 +127,7 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "restart_federation_link_command_SUITE", additional_beam = [ - ":rabbit_federation_test_util", + "test/rabbit_federation_test_util.beam", ], ) diff --git a/deps/rabbitmq_federation/app.bzl b/deps/rabbitmq_federation/app.bzl new file mode 100644 index 000000000000..661ce88ab39c --- /dev/null +++ b/deps/rabbitmq_federation/app.bzl @@ -0,0 +1,150 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_federation", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_federation", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "exchange_SUITE_beam_files", + testonly = True, + srcs = ["test/exchange_SUITE.erl"], + outs = ["test/exchange_SUITE.beam"], + hdrs = ["include/rabbit_federation.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "federation_status_command_SUITE_beam_files", + testonly = True, + srcs = ["test/federation_status_command_SUITE.erl"], + outs = ["test/federation_status_command_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "queue_SUITE_beam_files", + testonly = True, + srcs = ["test/queue_SUITE.erl"], + outs = ["test/queue_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_federation_status_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_federation_status_SUITE.erl"], + outs = ["test/rabbit_federation_status_SUITE.beam"], + hdrs = ["include/rabbit_federation.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "restart_federation_link_command_SUITE_beam_files", + testonly = True, + srcs = ["test/restart_federation_link_command_SUITE.erl"], + outs = ["test/restart_federation_link_command_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "test_rabbit_federation_test_util_beam", + testonly = True, + srcs = ["test/rabbit_federation_test_util.erl"], + outs = ["test/rabbit_federation_test_util.beam"], + hdrs = ["include/rabbit_federation.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + hdrs = ["include/rabbit_federation.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "unit_inbroker_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_inbroker_SUITE.erl"], + outs = ["test/unit_inbroker_SUITE.beam"], + hdrs = ["include/rabbit_federation.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) diff --git a/deps/rabbitmq_federation_management/BUILD.bazel b/deps/rabbitmq_federation_management/BUILD.bazel index 3503f26dc99b..54754c11aa94 100644 --- a/deps/rabbitmq_federation_management/BUILD.bazel +++ b/deps/rabbitmq_federation_management/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,6 +10,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_federation_management" @@ -16,43 +24,63 @@ APP_DESCRIPTION = "RabbitMQ Federation Management" APP_MODULE = "rabbit_federation_app" -BUILD_DEPS = [ - "//deps/rabbitmq_management_agent:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbitmq_management:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", - "//deps/rabbitmq_federation:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep amqp_client +# gazelle:erlang_app_dep rabbit_common +# gazelle:erlang_app_dep rabbit +# gazelle:erlang_app_dep rabbitmq_federation +# gazelle:erlang_app_dep_exclude rabbitmq_management_agent rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_federation:erlang_app", + "//deps/rabbitmq_management:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_federation_management/app.bzl b/deps/rabbitmq_federation_management/app.bzl new file mode 100644 index 000000000000..eb640e6c0ced --- /dev/null +++ b/deps/rabbitmq_federation_management/app.bzl @@ -0,0 +1,85 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_federation_management", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_federation_management", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "federation_mgmt_SUITE_beam_files", + testonly = True, + srcs = ["test/federation_mgmt_SUITE.erl"], + outs = ["test/federation_mgmt_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) diff --git a/deps/rabbitmq_jms_topic_exchange/BUILD.bazel b/deps/rabbitmq_jms_topic_exchange/BUILD.bazel index 8c474aa3987e..39e3ff2eca48 100644 --- a/deps/rabbitmq_jms_topic_exchange/BUILD.bazel +++ b/deps/rabbitmq_jms_topic_exchange/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,6 +10,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_jms_topic_exchange" @@ -16,45 +24,55 @@ APP_DESCRIPTION = "RabbitMQ JMS topic selector exchange plugin" APP_MODULE = "rabbit_federation_app" -BUILD_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") -EXTRA_APPS = [ - "mnesia", -] +# gazelle:erlang_app_extra_app mnesia rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_module = APP_MODULE, app_name = APP_NAME, - runtime_deps = RUNTIME_DEPS, - build_deps = BUILD_DEPS, - deps = DEPS, - extra_apps = EXTRA_APPS, + beam_files = [":beam_files"], + extra_apps = ["mnesia"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - apps = EXTRA_APPS, - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_jms_topic_exchange/app.bzl b/deps/rabbitmq_jms_topic_exchange/app.bzl new file mode 100644 index 000000000000..87cc507af27e --- /dev/null +++ b/deps/rabbitmq_jms_topic_exchange/app.bzl @@ -0,0 +1,102 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_jms_topic_exchange", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_jms_topic_exchange", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "rjms_topic_selector_SUITE_beam_files", + testonly = True, + srcs = ["test/rjms_topic_selector_SUITE.erl"], + outs = ["test/rjms_topic_selector_SUITE.beam"], + hdrs = ["include/rabbit_jms_topic_exchange.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rjms_topic_selector_unit_SUITE_beam_files", + testonly = True, + srcs = ["test/rjms_topic_selector_unit_SUITE.erl"], + outs = ["test/rjms_topic_selector_unit_SUITE.beam"], + hdrs = ["include/rabbit_jms_topic_exchange.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "sjx_evaluation_SUITE_beam_files", + testonly = True, + srcs = ["test/sjx_evaluation_SUITE.erl"], + outs = ["test/sjx_evaluation_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_management/BUILD.bazel b/deps/rabbitmq_management/BUILD.bazel index a2133adb354f..16e3c6ae78ce 100644 --- a/deps/rabbitmq_management/BUILD.bazel +++ b/deps/rabbitmq_management/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -10,7 +11,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "rabbitmq_test_helper", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) APP_NAME = "rabbitmq_management" @@ -19,13 +26,6 @@ APP_DESCRIPTION = "RabbitMQ Management Console" APP_MODULE = "rabbit_mgmt_app" -EXTRA_APPS = [ - "mnesia", - "ssl", - "crypto", - "public_key", -] - APP_ENV = """[ {http_log_dir, none}, {load_definitions, none}, @@ -38,19 +38,6 @@ APP_ENV = """[ {content_security_policy, "script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'"} ]""" -DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", - "//deps/rabbitmq_management_agent:erlang_app", -] - -RUNTIME_DEPS = [ - "//deps/rabbitmq_web_dispatch:erlang_app", - "@cowboy//:erlang_app", - "@cowlib//:erlang_app", -] - genrule( name = "rabbitmqadmin", srcs = ["bin/rabbitmqadmin"], @@ -61,52 +48,83 @@ sed 's/%%VSN%%/{}/' $< > $@ """.format(APP_VERSION), ) +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app mnesia +# gazelle:erlang_app_extra_app ssl +# gazelle:erlang_app_extra_app crypto +# gazelle:erlang_app_extra_app public_key + +# gazelle:erlang_app_dep_exclude ranch + rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - extra_apps = EXTRA_APPS, - extra_priv = [":rabbitmqadmin"], - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = [ + "crypto", + "mnesia", + "public_key", + "ssl", + ], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + "//deps/rabbitmq_web_dispatch:erlang_app", + "@cowboy//:erlang_app", + "@cowlib//:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - apps = EXTRA_APPS, - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) -broker_for_integration_suites() - -rabbitmq_test_helper( - name = "rabbit_mgmt_runtime_parameters_util", - srcs = [ - "test/rabbit_mgmt_runtime_parameters_util.erl", - ], - deps = [ - "//deps/rabbit_common:erlang_app", - ], +eunit( + name = "eunit", + compiled_suites = [":test_rabbit_mgmt_runtime_parameters_util_beam"], + target = ":test_erlang_app", ) +broker_for_integration_suites() + rabbitmq_suite( name = "cache_SUITE", size = "small", - runtime_deps = [ - "//deps/rabbitmq_ct_helpers:erlang_app", - ], deps = [ + "//deps/rabbitmq_ct_helpers:erlang_app", "@proper//:erlang_app", ], ) @@ -146,7 +164,7 @@ rabbitmq_integration_suite( name = "rabbit_mgmt_http_SUITE", size = "large", additional_beam = [ - ":rabbit_mgmt_runtime_parameters_util", + "test/rabbit_mgmt_runtime_parameters_util.beam", ], shard_count = 2, ) @@ -158,7 +176,7 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "rabbit_mgmt_rabbitmqadmin_SUITE", additional_beam = [ - ":rabbit_mgmt_runtime_parameters_util", + "test/rabbit_mgmt_runtime_parameters_util.beam", ], data = [ ":bin/rabbitmqadmin", @@ -168,10 +186,8 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "rabbit_mgmt_stats_SUITE", size = "small", - runtime_deps = [ - "//deps/rabbitmq_ct_helpers:erlang_app", - ], deps = [ + "//deps/rabbitmq_ct_helpers:erlang_app", "//deps/rabbitmq_management_agent:erlang_app", "@proper//:erlang_app", ], diff --git a/deps/rabbitmq_management/app.bzl b/deps/rabbitmq_management/app.bzl new file mode 100644 index 000000000000..95fc8c6cbcd0 --- /dev/null +++ b/deps/rabbitmq_management/app.bzl @@ -0,0 +1,221 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":behaviours", ":other_beam"], + ) + erlang_bytecode( + name = "behaviours", + srcs = ["src/rabbit_mgmt_extension.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_management", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_mgmt_extension.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_management", + beam = [":behaviours"], + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_behaviours", ":test_other_beam"], + ) + erlang_bytecode( + name = "test_behaviours", + testonly = True, + srcs = ["src/rabbit_mgmt_extension.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_management", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_mgmt_extension.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_management", + beam = [":test_behaviours"], + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = [ + "priv/www/cli/rabbitmqadmin", + ] + native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "cache_SUITE_beam_files", + testonly = True, + srcs = ["test/cache_SUITE.erl"], + outs = ["test/cache_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["@proper//:erlang_app"], + ) + erlang_bytecode( + name = "clustering_SUITE_beam_files", + testonly = True, + srcs = ["test/clustering_SUITE.erl"], + outs = ["test/clustering_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", "//deps/rabbitmq_management_agent:erlang_app"], + ) + erlang_bytecode( + name = "clustering_prop_SUITE_beam_files", + testonly = True, + srcs = ["test/clustering_prop_SUITE.erl"], + outs = ["test/clustering_prop_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", "//deps/rabbitmq_management_agent:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "listener_config_SUITE_beam_files", + testonly = True, + srcs = ["test/listener_config_SUITE.erl"], + outs = ["test/listener_config_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_mgmt_http_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_http_SUITE.erl"], + outs = ["test/rabbit_mgmt_http_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_mgmt_http_health_checks_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_http_health_checks_SUITE.erl"], + outs = ["test/rabbit_mgmt_http_health_checks_SUITE.beam"], + hdrs = ["include/rabbit_mgmt.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_mgmt_only_http_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_only_http_SUITE.erl"], + outs = ["test/rabbit_mgmt_only_http_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_mgmt_rabbitmqadmin_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_rabbitmqadmin_SUITE.erl"], + outs = ["test/rabbit_mgmt_rabbitmqadmin_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_mgmt_stats_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_stats_SUITE.erl"], + outs = ["test/rabbit_mgmt_stats_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbitmq_management_agent:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_mgmt_test_db_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_test_db_SUITE.erl"], + outs = ["test/rabbit_mgmt_test_db_SUITE.beam"], + hdrs = ["include/rabbit_mgmt.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", "//deps/rabbitmq_management_agent:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_mgmt_test_unit_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_test_unit_SUITE.erl"], + outs = ["test/rabbit_mgmt_test_unit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "stats_SUITE_beam_files", + testonly = True, + srcs = ["test/stats_SUITE.erl"], + outs = ["test/stats_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbitmq_management_agent:erlang_app", "@proper//:erlang_app"], + ) + erlang_bytecode( + name = "test_rabbit_mgmt_runtime_parameters_util_beam", + testonly = True, + srcs = ["test/rabbit_mgmt_runtime_parameters_util.erl"], + outs = ["test/rabbit_mgmt_runtime_parameters_util.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) diff --git a/deps/rabbitmq_management_agent/BUILD.bazel b/deps/rabbitmq_management_agent/BUILD.bazel index 264ba38498bd..fb1bc0b1485b 100644 --- a/deps/rabbitmq_management_agent/BUILD.bazel +++ b/deps/rabbitmq_management_agent/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -10,6 +11,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_ENV = """[ {rates_mode, basic}, @@ -26,55 +34,75 @@ APP_DESCRIPTION = "RabbitMQ Management Agent" APP_MODULE = "rabbit_mgmt_agent_app" -EXTRA_APPS = [ - "xmerl", - "mnesia", - "ranch", - "ssl", - "crypto", - "public_key", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") -BUILD_DEPS = [ - "//deps/rabbitmq_cli:erlang_app", -] +# gazelle:erlang_app_extra_app xmerl +# gazelle:erlang_app_extra_app mnesia +# gazelle:erlang_app_extra_app ssl +# gazelle:erlang_app_extra_app crypto +# gazelle:erlang_app_extra_app public_key -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", -] +# gazelle:erlang_app_dep ranch rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - extra_apps = EXTRA_APPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = [ + "crypto", + "mnesia", + "public_key", + "ssl", + "xmerl", + ], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "@ranch//:erlang_app", + ], ) xref( - additional_libs = BUILD_DEPS, + name = "xref", + additional_libs = [ + "//deps/rabbitmq_cli:erlang_app", # keep + ], + target = ":erlang_app", ) -plt_apps = list(EXTRA_APPS) - -plt_apps.remove("ranch") - plt( - name = "base_plt", - apps = plt_apps, - libs = ["//deps/rabbitmq_cli:elixir"], - plt = "//:base_plt", - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() @@ -100,10 +128,8 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "rabbit_mgmt_slide_SUITE", size = "small", - runtime_deps = [ - "//deps/rabbitmq_ct_helpers:erlang_app", - ], deps = [ + "//deps/rabbitmq_ct_helpers:erlang_app", "@proper//:erlang_app", ], ) diff --git a/deps/rabbitmq_management_agent/app.bzl b/deps/rabbitmq_management_agent/app.bzl new file mode 100644 index 000000000000..aa1994e596e1 --- /dev/null +++ b/deps/rabbitmq_management_agent/app.bzl @@ -0,0 +1,111 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_management_agent", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_management_agent", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "exometer_slide_SUITE_beam_files", + testonly = True, + srcs = ["test/exometer_slide_SUITE.erl"], + outs = ["test/exometer_slide_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["@proper//:erlang_app"], + ) + erlang_bytecode( + name = "metrics_SUITE_beam_files", + testonly = True, + srcs = ["test/metrics_SUITE.erl"], + outs = ["test/metrics_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_mgmt_gc_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_gc_SUITE.erl"], + outs = ["test/rabbit_mgmt_gc_SUITE.beam"], + hdrs = ["include/rabbit_mgmt_metrics.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_mgmt_slide_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_mgmt_slide_SUITE.erl"], + outs = ["test/rabbit_mgmt_slide_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["@proper//:erlang_app"], + ) diff --git a/deps/rabbitmq_mqtt/BUILD.bazel b/deps/rabbitmq_mqtt/BUILD.bazel index 9a56036d9084..554db4c181c1 100644 --- a/deps/rabbitmq_mqtt/BUILD.bazel +++ b/deps/rabbitmq_mqtt/BUILD.bazel @@ -1,15 +1,23 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( "//:rabbitmq.bzl", - "RABBITMQ_DIALYZER_OPTS", "BROKER_VERSION_REQUIREMENTS_ANY", + "ENABLE_FEATURE_MAYBE_EXPR", + "RABBITMQ_DIALYZER_OPTS", "assert_suites", "broker_for_integration_suites", "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "rabbitmq_test_helper", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) APP_NAME = "rabbitmq_mqtt" @@ -45,47 +53,73 @@ APP_ENV = """[ {mailbox_soft_limit, 200} ]""" -BUILD_DEPS = [ - "//deps/rabbitmq_cli:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") -DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", - "@ra//:erlang_app", - "@ranch//:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") -EXTRA_APPS = [ "ssl" ] +# gazelle:erlang_app_extra_app ssl + +# gazelle:erlang_app_dep amqp_client rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - deps = DEPS, - extra_apps = EXTRA_APPS, + beam_files = [":beam_files"], + extra_apps = ["ssl"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "@ra//:erlang_app", + "@ranch//:erlang_app", + ], ) xref( - additional_libs = BUILD_DEPS, + name = "xref", + additional_libs = [ + "//deps/rabbitmq_cli:erlang_app", # keep + ], + target = ":erlang_app", ) plt( - name = "base_plt", - plt = "//:base_plt", - apps = EXTRA_APPS, - libs = ["//deps/rabbitmq_cli:elixir"], - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + compiled_suites = [ + ":test_rabbit_auth_backend_mqtt_mock_beam", + ":test_event_recorder_beam", + ":test_util_beam", + ], + erl_extra_args = [ENABLE_FEATURE_MAYBE_EXPR], + target = ":test_erlang_app", ) broker_for_integration_suites( @@ -95,82 +129,61 @@ broker_for_integration_suites( ], ) -rabbitmq_test_helper( - name = "rabbit_auth_backend_mqtt_mock", - srcs = [ - "test/rabbit_auth_backend_mqtt_mock.erl", - ], - deps = [ - "//deps/rabbit_common:erlang_app", - ], -) - -rabbitmq_test_helper( - name = "util", - srcs = [ - "test/util.erl", - ], - deps = [ - "//deps/rabbit_common:erlang_app", - ], - hdrs = [ - "include/rabbit_mqtt.hrl" - ], -) - -rabbitmq_test_helper( - name = "event_recorder", - srcs = [ - "test/event_recorder.erl", - ], - deps = [ - "//deps/rabbit_common:erlang_app", - ], -) - rabbitmq_integration_suite( name = "auth_SUITE", additional_beam = [ - ":rabbit_auth_backend_mqtt_mock", - ":util", + "test/rabbit_auth_backend_mqtt_mock.beam", + "test/util.beam", ], runtime_deps = [ "@emqtt//:erlang_app", + "@meck//:erlang_app", ], ) rabbitmq_integration_suite( name = "cluster_SUITE", size = "large", + additional_beam = [ + ":test_util_beam", + ], + flaky = True, runtime_deps = [ "@emqtt//:erlang_app", ], - additional_beam = [ - ":util", - ], ) rabbitmq_integration_suite( name = "command_SUITE", + additional_beam = [ + ":test_util_beam", + ], runtime_deps = [ "@emqtt//:erlang_app", ], - additional_beam = [ - ":util", - ], ) rabbitmq_integration_suite( - name = "config_schema_SUITE", + name = "config_SUITE", ) +rabbitmq_integration_suite( + name = "config_schema_SUITE", +) rabbitmq_integration_suite( - name = "config_SUITE", + name = "ff_SUITE", + additional_beam = [ + ":test_util_beam", + ], + runtime_deps = [ + "@emqtt//:erlang_app", + ], ) rabbitmq_integration_suite( name = "java_SUITE", + flaky = True, ) rabbitmq_suite( @@ -193,22 +206,38 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "reader_SUITE", + additional_beam = [ + ":test_util_beam", + ":test_event_recorder_beam", + ], runtime_deps = [ "@emqtt//:erlang_app", ], - additional_beam = [ - ":event_recorder", - ":util", - ], ) rabbitmq_integration_suite( name = "retainer_SUITE", + additional_beam = [ + ":test_util_beam", + ], runtime_deps = [ "@emqtt//:erlang_app", ], +) + +rabbitmq_integration_suite( + name = "shared_SUITE", + size = "large", additional_beam = [ - ":util", + ":test_util_beam", + ":test_event_recorder_beam", + ], + shard_count = 6, + runtime_deps = [ + "//deps/rabbitmq_management_agent:erlang_app", + "@emqtt//:erlang_app", + "@gun//:erlang_app", + "@meck//:erlang_app", ], ) @@ -220,31 +249,6 @@ rabbitmq_suite( ], ) -rabbitmq_integration_suite( - name = "ff_SUITE", - runtime_deps = [ - "@emqtt//:erlang_app", - ], - additional_beam = [ - ":util", - ], -) - -rabbitmq_integration_suite( - name = "shared_SUITE", - shard_count = 6, - size = "large", - runtime_deps = [ - "@emqtt//:erlang_app", - "//deps/rabbitmq_management_agent:erlang_app", - "@gun//:erlang_app", - ], - additional_beam = [ - ":event_recorder", - ":util", - ], -) - assert_suites() alias( diff --git a/deps/rabbitmq_mqtt/app.bzl b/deps/rabbitmq_mqtt/app.bzl new file mode 100644 index 000000000000..65a02f8f0a47 --- /dev/null +++ b/deps/rabbitmq_mqtt/app.bzl @@ -0,0 +1,233 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":behaviours", ":other_beam"], + ) + erlang_bytecode( + name = "behaviours", + srcs = ["src/rabbit_mqtt_retained_msg_store.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_mqtt", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_mqtt_retained_msg_store.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_mqtt", + beam = [":behaviours"], + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit:erlang_app", "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_cli:erlang_app", "@ra//:erlang_app", "@ranch//:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_behaviours", ":test_other_beam"], + ) + erlang_bytecode( + name = "test_behaviours", + testonly = True, + srcs = ["src/rabbit_mqtt_retained_msg_store.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_mqtt", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_mqtt_retained_msg_store.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_mqtt", + beam = [":test_behaviours"], + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + "@ra//:erlang_app", + "@ranch//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "auth_SUITE_beam_files", + testonly = True, + srcs = ["test/auth_SUITE.erl"], + outs = ["test/auth_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "cluster_SUITE_beam_files", + testonly = True, + srcs = ["test/cluster_SUITE.erl"], + outs = ["test/cluster_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "command_SUITE_beam_files", + testonly = True, + srcs = ["test/command_SUITE.erl"], + outs = ["test/command_SUITE.beam"], + hdrs = ["include/rabbit_mqtt.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "java_SUITE_beam_files", + testonly = True, + srcs = ["test/java_SUITE.erl"], + outs = ["test/java_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "mqtt_machine_SUITE_beam_files", + testonly = True, + srcs = ["test/mqtt_machine_SUITE.erl"], + outs = ["test/mqtt_machine_SUITE.beam"], + hdrs = ["include/mqtt_machine.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "processor_SUITE_beam_files", + testonly = True, + srcs = ["test/processor_SUITE.erl"], + outs = ["test/processor_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "proxy_protocol_SUITE_beam_files", + testonly = True, + srcs = ["test/proxy_protocol_SUITE.erl"], + outs = ["test/proxy_protocol_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "reader_SUITE_beam_files", + testonly = True, + srcs = ["test/reader_SUITE.erl"], + outs = ["test/reader_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "retainer_SUITE_beam_files", + testonly = True, + srcs = ["test/retainer_SUITE.erl"], + outs = ["test/retainer_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_rabbit_auth_backend_mqtt_mock_beam", + testonly = True, + srcs = ["test/rabbit_auth_backend_mqtt_mock.erl"], + outs = ["test/rabbit_auth_backend_mqtt_mock.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "util_SUITE_beam_files", + testonly = True, + srcs = ["test/util_SUITE.erl"], + outs = ["test/util_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "config_SUITE_beam_files", + testonly = True, + srcs = ["test/config_SUITE.erl"], + outs = ["test/config_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "ff_SUITE_beam_files", + testonly = True, + srcs = ["test/ff_SUITE.erl"], + outs = ["test/ff_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "shared_SUITE_beam_files", + testonly = True, + srcs = ["test/shared_SUITE.erl"], + outs = ["test/shared_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "test_event_recorder_beam", + testonly = True, + srcs = ["test/event_recorder.erl"], + outs = ["test/event_recorder.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "test_util_beam", + testonly = True, + srcs = ["test/util.erl"], + outs = ["test/util.beam"], + hdrs = ["include/rabbit_mqtt.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) diff --git a/deps/rabbitmq_peer_discovery_aws/BUILD.bazel b/deps/rabbitmq_peer_discovery_aws/BUILD.bazel index 96023b5b25e8..f5bc80aececb 100644 --- a/deps/rabbitmq_peer_discovery_aws/BUILD.bazel +++ b/deps/rabbitmq_peer_discovery_aws/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,46 +10,69 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_peer_discovery_aws" APP_DESCRIPTION = "AWS-based RabbitMQ peer discovery backend" -EXTRA_APPS = [ - "inets", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_peer_discovery_common:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbitmq_aws:erlang_app", - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app inets rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_name = APP_NAME, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = ["inets"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_aws:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + compiled_suites = [":test_aws_ecs_util_beam"], + target = ":test_erlang_app", ) broker_for_integration_suites() @@ -66,8 +90,8 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "integration_SUITE", size = "large", - additional_srcs = [ - "test/aws_ecs_util.erl", + additional_beam = [ + "test/aws_ecs_util.beam", ], tags = [ "aws", @@ -81,7 +105,7 @@ rabbitmq_suite( rabbitmq_suite( name = "unit_SUITE", size = "small", - runtime_deps = [ + deps = [ "@meck//:erlang_app", ], ) diff --git a/deps/rabbitmq_peer_discovery_aws/app.bzl b/deps/rabbitmq_peer_discovery_aws/app.bzl new file mode 100644 index 000000000000..782459aad01d --- /dev/null +++ b/deps/rabbitmq_peer_discovery_aws/app.bzl @@ -0,0 +1,101 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_aws", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app", "//deps/rabbitmq_peer_discovery_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_aws", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app", "//deps/rabbitmq_peer_discovery_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "integration_SUITE_beam_files", + testonly = True, + srcs = ["test/integration_SUITE.erl"], + outs = ["test/integration_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "test_aws_ecs_util_beam", + testonly = True, + srcs = ["test/aws_ecs_util.erl"], + outs = ["test/aws_ecs_util.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_peer_discovery_common/BUILD.bazel b/deps/rabbitmq_peer_discovery_common/BUILD.bazel index 81fed8df8976..8cb0c4f97453 100644 --- a/deps/rabbitmq_peer_discovery_common/BUILD.bazel +++ b/deps/rabbitmq_peer_discovery_common/BUILD.bazel @@ -1,15 +1,21 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( "//:rabbitmq.bzl", "RABBITMQ_DIALYZER_OPTS", - "RABBITMQ_ERLC_OPTS", - "RABBITMQ_TEST_ERLC_OPTS", "assert_suites", "broker_for_integration_suites", "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_peer_discovery_common" @@ -17,40 +23,55 @@ APP_DESCRIPTION = "Modules shared by various peer discovery backends" APP_MODULE = "rabbit_peer_discovery_common_app" -EXTRA_APPS = [ - "inets", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app inets rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_module = APP_MODULE, app_name = APP_NAME, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = ["inets"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_peer_discovery_common/app.bzl b/deps/rabbitmq_peer_discovery_common/app.bzl new file mode 100644 index 000000000000..1b2fa726ca20 --- /dev/null +++ b/deps/rabbitmq_peer_discovery_common/app.bzl @@ -0,0 +1,77 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_common", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_common", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_peer_discovery_consul/BUILD.bazel b/deps/rabbitmq_peer_discovery_consul/BUILD.bazel index ca5855e90819..5a047f7d67a6 100644 --- a/deps/rabbitmq_peer_discovery_consul/BUILD.bazel +++ b/deps/rabbitmq_peer_discovery_consul/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,6 +10,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_peer_discovery_consul" @@ -16,35 +24,53 @@ APP_DESCRIPTION = "Consult-based RabbitMQ peer discovery backend" APP_MODULE = "rabbitmq_peer_discovery_consul_app" -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_peer_discovery_common:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_module = APP_MODULE, app_name = APP_NAME, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() @@ -56,7 +82,7 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "rabbitmq_peer_discovery_consul_SUITE", size = "medium", - runtime_deps = [ + deps = [ "@meck//:erlang_app", ], ) diff --git a/deps/rabbitmq_peer_discovery_consul/app.bzl b/deps/rabbitmq_peer_discovery_consul/app.bzl new file mode 100644 index 000000000000..5646dcce82d3 --- /dev/null +++ b/deps/rabbitmq_peer_discovery_consul/app.bzl @@ -0,0 +1,90 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_consul", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_consul", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbitmq_peer_discovery_consul_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbitmq_peer_discovery_consul_SUITE.erl"], + outs = ["test/rabbitmq_peer_discovery_consul_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel b/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel index 66c625df01ad..d36795154044 100644 --- a/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel +++ b/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -10,6 +11,13 @@ load( "rabbitmq_suite", "without", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_peer_discovery_etcd" @@ -17,44 +25,70 @@ APP_DESCRIPTION = "etcd-based RabbitMQ peer discovery backend" APP_MODULE = "rabbitmq_peer_discovery_etcd_app" -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_peer_discovery_common:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", - "@eetcd//:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep rabbit +# gazelle:erlang_app_dep gun +# gazelle:erlang_app_dep_exclude credentials_obfuscation rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_module = APP_MODULE, app_name = APP_NAME, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + "@eetcd//:erlang_app", + "@gun//:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = DEPS + without( - # eetcd depends on gun, which still uses erlang:get_stacktrace/0 - # and fails this rule if included - "@eetcd//:erlang_app", - RUNTIME_DEPS, - ), + name = "deps_plt", + # rather that setting for_target, which will include @gun + # (via @eetcd) and fail, we produce the equivalent plt + # without it + for_target = None, # keep ignore_warnings = True, + plt = "//:base_plt", + deps = [ + "//deps/rabbit:erlang_app", # keep + "//deps/rabbit_common:erlang_app", # keep + "//deps/rabbitmq_peer_discovery_common:erlang_app", # keep + ], ) dialyze( + name = "dialyze", dialyzer_opts = without( - "-Wunknown", # also because of `eetcd' - RABBITMQ_DIALYZER_OPTS + "-Wunknown", # also because of `eetcd' + RABBITMQ_DIALYZER_OPTS, ), - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_peer_discovery_etcd/app.bzl b/deps/rabbitmq_peer_discovery_etcd/app.bzl new file mode 100644 index 000000000000..6d8acc960782 --- /dev/null +++ b/deps/rabbitmq_peer_discovery_etcd/app.bzl @@ -0,0 +1,99 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_etcd", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_etcd", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + hdrs = ["include/rabbit_peer_discovery_etcd.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + hdrs = ["include/rabbit_peer_discovery_etcd.hrl"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_peer_discovery_k8s/BUILD.bazel b/deps/rabbitmq_peer_discovery_k8s/BUILD.bazel index b6f0899fef93..92ecfe008ade 100644 --- a/deps/rabbitmq_peer_discovery_k8s/BUILD.bazel +++ b/deps/rabbitmq_peer_discovery_k8s/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,6 +10,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_peer_discovery_k8s" @@ -16,35 +24,53 @@ APP_DESCRIPTION = "Kubernetes-based RabbitMQ peer discovery backend" APP_MODULE = "rabbitmq_peer_discovery_k8s_app" -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_peer_discovery_common:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_module = APP_MODULE, app_name = APP_NAME, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() @@ -56,7 +82,7 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "rabbitmq_peer_discovery_k8s_SUITE", size = "small", - runtime_deps = [ + deps = [ "@meck//:erlang_app", ], ) diff --git a/deps/rabbitmq_peer_discovery_k8s/app.bzl b/deps/rabbitmq_peer_discovery_k8s/app.bzl new file mode 100644 index 000000000000..8d223a07495a --- /dev/null +++ b/deps/rabbitmq_peer_discovery_k8s/app.bzl @@ -0,0 +1,90 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_k8s", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_peer_discovery_k8s", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_peer_discovery_common:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbitmq_peer_discovery_k8s_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbitmq_peer_discovery_k8s_SUITE.erl"], + outs = ["test/rabbitmq_peer_discovery_k8s_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_prometheus/BUILD.bazel b/deps/rabbitmq_prometheus/BUILD.bazel index 9a2620028a8a..0f0be2564d8c 100644 --- a/deps/rabbitmq_prometheus/BUILD.bazel +++ b/deps/rabbitmq_prometheus/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -8,6 +9,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_prometheus" @@ -17,43 +25,60 @@ APP_ENV = """[ {return_per_object_metrics, false} ]""" -BUILD_DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "@prometheus//:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", - "//deps/rabbitmq_management_agent:erlang_app", - "//deps/rabbitmq_web_dispatch:erlang_app", - "@accept//:erlang_app", - "@cowboy//:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep rabbitmq_management_agent +# gazelle:erlang_app_dep_exclude amqp_client +# gazelle:erlang_app_dep_exclude rabbit_common rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], + app_env = APP_ENV, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + "//deps/rabbitmq_web_dispatch:erlang_app", + "@accept//:erlang_app", + "@cowboy//:erlang_app", + "@prometheus//:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = BUILD_DEPS + DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_prometheus/app.bzl b/deps/rabbitmq_prometheus/app.bzl new file mode 100644 index 000000000000..06d2eddd1eeb --- /dev/null +++ b/deps/rabbitmq_prometheus/app.bzl @@ -0,0 +1,94 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_prometheus", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "@prometheus//:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_prometheus", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "@prometheus//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_prometheus_http_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_prometheus_http_SUITE.erl"], + outs = ["test/rabbit_prometheus_http_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) diff --git a/deps/rabbitmq_random_exchange/BUILD.bazel b/deps/rabbitmq_random_exchange/BUILD.bazel index 7cc9e92fbce2..c8e0ca6ede77 100644 --- a/deps/rabbitmq_random_exchange/BUILD.bazel +++ b/deps/rabbitmq_random_exchange/BUILD.bazel @@ -6,43 +6,60 @@ load( "assert_suites", "rabbitmq_app", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) + +# gazelle:erlang_always_generate_test_beam_files APP_NAME = "rabbitmq_random_exchange" APP_DESCRIPTION = "RabbitMQ Random Exchange" -BUILD_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - deps = BUILD_DEPS + DEPS, - plt = "//:base_plt", + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) alias( diff --git a/deps/rabbitmq_random_exchange/app.bzl b/deps/rabbitmq_random_exchange/app.bzl new file mode 100644 index 000000000000..e6f3151c1c08 --- /dev/null +++ b/deps/rabbitmq_random_exchange/app.bzl @@ -0,0 +1,75 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_random_exchange", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_random_exchange", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit:erlang_app", "//deps/rabbit_common:erlang_app"], + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + pass diff --git a/deps/rabbitmq_recent_history_exchange/BUILD.bazel b/deps/rabbitmq_recent_history_exchange/BUILD.bazel index 5ddd7ba9c4da..47a8e881c4f3 100644 --- a/deps/rabbitmq_recent_history_exchange/BUILD.bazel +++ b/deps/rabbitmq_recent_history_exchange/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,45 +10,67 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_recent_history_exchange" APP_DESCRIPTION = "RabbitMQ Recent History Exchange" -BUILD_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_beam_files(name = "all_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_test_beam_files(name = "all_test_beam_files") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - apps = [ "mnesia" ], - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + apps = [ + "mnesia", # keep + ], + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_recent_history_exchange/app.bzl b/deps/rabbitmq_recent_history_exchange/app.bzl new file mode 100644 index 000000000000..bdef8c105859 --- /dev/null +++ b/deps/rabbitmq_recent_history_exchange/app.bzl @@ -0,0 +1,86 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_recent_history_exchange", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_recent_history_exchange", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + hdrs = ["include/rabbit_recent_history.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) diff --git a/deps/rabbitmq_sharding/BUILD.bazel b/deps/rabbitmq_sharding/BUILD.bazel index 6728a3a2b868..ae9ae41ca761 100644 --- a/deps/rabbitmq_sharding/BUILD.bazel +++ b/deps/rabbitmq_sharding/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,35 +10,64 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_sharding" APP_DESCRIPTION = "RabbitMQ Sharding Plugin" -DEPS = [ - "//deps/rabbit:erlang_app", - "//deps/rabbit_common:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_name = APP_NAME, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_sharding/app.bzl b/deps/rabbitmq_sharding/app.bzl new file mode 100644 index 000000000000..2a2e04b61515 --- /dev/null +++ b/deps/rabbitmq_sharding/app.bzl @@ -0,0 +1,93 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_sharding", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_sharding", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "rabbit_hash_exchange_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_hash_exchange_SUITE.erl"], + outs = ["test/rabbit_hash_exchange_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_sharding_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_sharding_SUITE.erl"], + outs = ["test/rabbit_sharding_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbit:erlang_app"], + ) diff --git a/deps/rabbitmq_shovel/BUILD.bazel b/deps/rabbitmq_shovel/BUILD.bazel index 5729a685d6fc..f156c434686f 100644 --- a/deps/rabbitmq_shovel/BUILD.bazel +++ b/deps/rabbitmq_shovel/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load("//:rabbitmq_home.bzl", "rabbitmq_home") @@ -10,7 +11,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "rabbitmq_test_helper", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) APP_NAME = "rabbitmq_shovel" @@ -29,52 +36,65 @@ APP_ENV = """[ ]} ]""" -EXTRA_APPS = [ - "crypto", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -BUILD_DEPS = [ - "//deps/rabbitmq_cli:erlang_app", -] +all_srcs(name = "all_srcs") -DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") -RUNTIME_DEPS = [ - "//deps/amqp10_client:erlang_app", -] +# gazelle:erlang_app_extra_app crypto rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = ["crypto"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp10_client:erlang_app", + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) xref( - additional_libs = BUILD_DEPS, + name = "xref", + additional_libs = [ + "//deps/rabbitmq_cli:erlang_app", # keep + ], + target = ":erlang_app", ) plt( - name = "base_plt", - plt = "//:base_plt", - apps = EXTRA_APPS, - libs = ["//deps/rabbitmq_cli:elixir"], - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + compiled_suites = [":test_shovel_test_utils_beam"], + target = ":test_erlang_app", ) rabbitmq_home( @@ -91,17 +111,10 @@ rabbitmq_run( home = ":broker-for-tests-home", ) -rabbitmq_test_helper( - name = "shovel_test_utils", - srcs = [ - "test/shovel_test_utils.erl", - ], -) - rabbitmq_integration_suite( name = "amqp10_dynamic_SUITE", additional_beam = [ - ":shovel_test_utils", + "test/shovel_test_utils.beam", ], flaky = True, ) @@ -109,11 +122,9 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "amqp10_shovel_SUITE", size = "small", - runtime_deps = [ - "@meck//:erlang_app", - ], deps = [ "//deps/amqp10_common:erlang_app", + "@meck//:erlang_app", ], ) @@ -133,14 +144,14 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "delete_shovel_command_SUITE", additional_beam = [ - ":shovel_test_utils", + "test/shovel_test_utils.beam", ], ) rabbitmq_integration_suite( name = "dynamic_SUITE", additional_beam = [ - ":shovel_test_utils", + "test/shovel_test_utils.beam", ], flaky = True, ) @@ -156,7 +167,7 @@ rabbitmq_suite( rabbitmq_integration_suite( name = "shovel_status_command_SUITE", additional_beam = [ - ":shovel_test_utils", + "test/shovel_test_utils.beam", ], ) diff --git a/deps/rabbitmq_shovel/app.bzl b/deps/rabbitmq_shovel/app.bzl new file mode 100644 index 000000000000..8b5a6c2fe7ec --- /dev/null +++ b/deps/rabbitmq_shovel/app.bzl @@ -0,0 +1,188 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":behaviours", ":other_beam"], + ) + erlang_bytecode( + name = "behaviours", + srcs = ["src/rabbit_shovel_behaviour.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_shovel", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_shovel_behaviour.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_shovel", + beam = [":behaviours"], + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_behaviours", ":test_other_beam"], + ) + erlang_bytecode( + name = "test_behaviours", + testonly = True, + srcs = ["src/rabbit_shovel_behaviour.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_shovel", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_shovel_behaviour.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_shovel", + beam = [":test_behaviours"], + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "amqp10_SUITE_beam_files", + testonly = True, + srcs = ["test/amqp10_SUITE.erl"], + outs = ["test/amqp10_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "amqp10_dynamic_SUITE_beam_files", + testonly = True, + srcs = ["test/amqp10_dynamic_SUITE.erl"], + outs = ["test/amqp10_dynamic_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "amqp10_shovel_SUITE_beam_files", + testonly = True, + srcs = ["test/amqp10_shovel_SUITE.erl"], + outs = ["test/amqp10_shovel_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp10_common:erlang_app"], + ) + erlang_bytecode( + name = "config_SUITE_beam_files", + testonly = True, + srcs = ["test/config_SUITE.erl"], + outs = ["test/config_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "configuration_SUITE_beam_files", + testonly = True, + srcs = ["test/configuration_SUITE.erl"], + outs = ["test/configuration_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "delete_shovel_command_SUITE_beam_files", + testonly = True, + srcs = ["test/delete_shovel_command_SUITE.erl"], + outs = ["test/delete_shovel_command_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "dynamic_SUITE_beam_files", + testonly = True, + srcs = ["test/dynamic_SUITE.erl"], + outs = ["test/dynamic_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "parameters_SUITE_beam_files", + testonly = True, + srcs = ["test/parameters_SUITE.erl"], + outs = ["test/parameters_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + erlang_bytecode( + name = "shovel_status_command_SUITE_beam_files", + testonly = True, + srcs = ["test/shovel_status_command_SUITE.erl"], + outs = ["test/shovel_status_command_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "test_shovel_test_utils_beam", + testonly = True, + srcs = ["test/shovel_test_utils.erl"], + outs = ["test/shovel_test_utils.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_shovel_management/BUILD.bazel b/deps/rabbitmq_shovel_management/BUILD.bazel index f8c84f4e4786..dafb102efb5e 100644 --- a/deps/rabbitmq_shovel_management/BUILD.bazel +++ b/deps/rabbitmq_shovel_management/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load("//:rabbitmq_home.bzl", "rabbitmq_home") @@ -11,47 +12,73 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_shovel_management" APP_DESCRIPTION = "Management extension for the Shovel plugin" -BUILD_DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbitmq_management_agent:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_management:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", - "//deps/rabbitmq_shovel:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep rabbit +# gazelle:erlang_app_dep rabbitmq_shovel +# gazelle:erlang_app_dep_exclude cowboy +# gazelle:erlang_app_dep_exclude amqp_client +# gazelle:erlang_app_dep_exclude rabbitmq_management_agent rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_shovel:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) rabbitmq_home( @@ -74,23 +101,19 @@ rabbitmq_integration_suite( rabbitmq_suite( name = "rabbit_shovel_mgmt_SUITE", - runtime_deps = [ - "@meck//:erlang_app", - ], deps = [ "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_management_agent:erlang_app", + "@meck//:erlang_app", ], ) rabbitmq_suite( name = "rabbit_shovel_mgmt_util_SUITE", - runtime_deps = [ - "@meck//:erlang_app", - ], deps = [ "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_shovel:erlang_app", + "@meck//:erlang_app", ], ) diff --git a/deps/rabbitmq_shovel_management/app.bzl b/deps/rabbitmq_shovel_management/app.bzl new file mode 100644 index 000000000000..75a30ec25930 --- /dev/null +++ b/deps/rabbitmq_shovel_management/app.bzl @@ -0,0 +1,101 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_shovel_management", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_shovel_management", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "http_SUITE_beam_files", + testonly = True, + srcs = ["test/http_SUITE.erl"], + outs = ["test/http_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_shovel_mgmt_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_shovel_mgmt_SUITE.erl"], + outs = ["test/rabbit_shovel_mgmt_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app", "//deps/rabbitmq_management_agent:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_shovel_mgmt_util_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_shovel_mgmt_util_SUITE.erl"], + outs = ["test/rabbit_shovel_mgmt_util_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_shovel_management/src/rabbit_shovel_mgmt.erl b/deps/rabbitmq_shovel_management/src/rabbit_shovel_mgmt.erl index 35693cffb60f..e270baa45800 100644 --- a/deps/rabbitmq_shovel_management/src/rabbit_shovel_mgmt.erl +++ b/deps/rabbitmq_shovel_management/src/rabbit_shovel_mgmt.erl @@ -17,7 +17,7 @@ -include_lib("rabbitmq_management_agent/include/rabbit_mgmt_records.hrl"). -include_lib("amqp_client/include/amqp_client.hrl"). --include_lib("rabbit_shovel_mgmt.hrl"). +-include("rabbit_shovel_mgmt.hrl"). dispatcher() -> [{"/shovels", ?MODULE, []}, {"/shovels/:vhost", ?MODULE, []}, diff --git a/deps/rabbitmq_shovel_management/src/rabbit_shovel_mgmt_util.erl b/deps/rabbitmq_shovel_management/src/rabbit_shovel_mgmt_util.erl index 40c759093039..705c2e88bc79 100644 --- a/deps/rabbitmq_shovel_management/src/rabbit_shovel_mgmt_util.erl +++ b/deps/rabbitmq_shovel_management/src/rabbit_shovel_mgmt_util.erl @@ -17,7 +17,7 @@ -include_lib("rabbitmq_management_agent/include/rabbit_mgmt_records.hrl"). -include_lib("amqp_client/include/amqp_client.hrl"). --include_lib("rabbit_shovel_mgmt.hrl"). +-include("rabbit_shovel_mgmt.hrl"). %% Allow users to see things in the vhosts they are authorised. But %% static shovels do not have a vhost, so only allow admins (not diff --git a/deps/rabbitmq_stomp/BUILD.bazel b/deps/rabbitmq_stomp/BUILD.bazel index 01f32a056f19..4e0e6c1411e8 100644 --- a/deps/rabbitmq_stomp/BUILD.bazel +++ b/deps/rabbitmq_stomp/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,8 +10,16 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "rabbitmq_test_helper", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) + +# gazelle:exclude test/src APP_NAME = "rabbitmq_stomp" @@ -40,69 +49,74 @@ APP_ENV = """[ {proxy_protocol, false} ]""" -BUILD_DEPS = [ - "//deps/rabbitmq_cli:erlang_app", -] +all_beam_files(name = "all_beam_files") -DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - "@ranch//:erlang_app", -] +all_test_beam_files(name = "all_test_beam_files") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "@ranch//:erlang_app", + ], ) xref( - additional_libs = BUILD_DEPS, + name = "xref", + additional_libs = [ + "//deps/rabbitmq_cli:erlang_app", # keep + ], + target = ":erlang_app", ) plt( - name = "base_plt", - plt = "//:base_plt", - libs = ["//deps/rabbitmq_cli:elixir"], - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) -broker_for_integration_suites() - -rabbitmq_test_helper( - name = "rabbit_stomp_client", - srcs = [ - "test/src/rabbit_stomp_client.erl", - ], - hdrs = glob([ - "include/**/*.hrl", - "src/**/*.hrl", - ]), - deps = [ - ":test_erlang_app", +eunit( + name = "eunit", + compiled_suites = [ + ":test_src_rabbit_stomp_client_beam", + ":test_src_rabbit_stomp_publish_test_beam", ], + target = ":test_erlang_app", ) +broker_for_integration_suites() + rabbitmq_integration_suite( name = "command_SUITE", size = "medium", additional_beam = [ - ":rabbit_stomp_client", + "test/src/rabbit_stomp_client.beam", ], ) @@ -115,7 +129,7 @@ rabbitmq_integration_suite( name = "connections_SUITE", size = "medium", additional_beam = [ - ":rabbit_stomp_client", + "test/src/rabbit_stomp_client.beam", ], ) @@ -143,7 +157,7 @@ rabbitmq_integration_suite( name = "system_SUITE", size = "medium", additional_beam = [ - ":rabbit_stomp_client", + "test/src/rabbit_stomp_client.beam", ], ) @@ -151,7 +165,7 @@ rabbitmq_integration_suite( name = "topic_SUITE", size = "medium", additional_beam = [ - ":rabbit_stomp_client", + "test/src/rabbit_stomp_client.beam", ], ) diff --git a/deps/rabbitmq_stomp/app.bzl b/deps/rabbitmq_stomp/app.bzl new file mode 100644 index 000000000000..7d209a647a50 --- /dev/null +++ b/deps/rabbitmq_stomp/app.bzl @@ -0,0 +1,171 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_stomp", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + "@ranch//:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_stomp", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + "@ranch//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "command_SUITE_beam_files", + testonly = True, + srcs = ["test/command_SUITE.erl"], + outs = ["test/command_SUITE.beam"], + hdrs = ["include/rabbit_stomp.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "connections_SUITE_beam_files", + testonly = True, + srcs = ["test/connections_SUITE.erl"], + outs = ["test/connections_SUITE.beam"], + hdrs = ["include/rabbit_stomp_frame.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "frame_SUITE_beam_files", + testonly = True, + srcs = ["test/frame_SUITE.erl"], + outs = ["test/frame_SUITE.beam"], + hdrs = ["include/rabbit_stomp_frame.hrl", "include/rabbit_stomp_headers.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "proxy_protocol_SUITE_beam_files", + testonly = True, + srcs = ["test/proxy_protocol_SUITE.erl"], + outs = ["test/proxy_protocol_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "python_SUITE_beam_files", + testonly = True, + srcs = ["test/python_SUITE.erl"], + outs = ["test/python_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + hdrs = ["include/rabbit_stomp.hrl", "include/rabbit_stomp_frame.hrl", "include/rabbit_stomp_headers.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "test_src_rabbit_stomp_client_beam", + testonly = True, + srcs = ["test/src/rabbit_stomp_client.erl"], + outs = ["test/src/rabbit_stomp_client.beam"], + hdrs = ["include/rabbit_stomp_frame.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_src_rabbit_stomp_publish_test_beam", + testonly = True, + srcs = ["test/src/rabbit_stomp_publish_test.erl"], + outs = ["test/src/rabbit_stomp_publish_test.beam"], + hdrs = ["include/rabbit_stomp_frame.hrl"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "topic_SUITE_beam_files", + testonly = True, + srcs = ["test/topic_SUITE.erl"], + outs = ["test/topic_SUITE.beam"], + hdrs = ["include/rabbit_stomp.hrl", "include/rabbit_stomp_frame.hrl", "include/rabbit_stomp_headers.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "util_SUITE_beam_files", + testonly = True, + srcs = ["test/util_SUITE.erl"], + outs = ["test/util_SUITE.beam"], + hdrs = ["include/rabbit_stomp_frame.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) diff --git a/deps/rabbitmq_stream/BUILD.bazel b/deps/rabbitmq_stream/BUILD.bazel index 29b12210958c..2018bef39ceb 100644 --- a/deps/rabbitmq_stream/BUILD.bazel +++ b/deps/rabbitmq_stream/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -7,7 +8,13 @@ load( "broker_for_integration_suites", "rabbitmq_app", "rabbitmq_integration_suite", - "without", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) APP_NAME = "rabbitmq_stream" @@ -32,47 +39,65 @@ APP_ENV = """[ {advertised_port, undefined} ]""" -BUILD_DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_cli:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") -DEPS = [ - "//deps/rabbitmq_stream_common:erlang_app", - "//deps/rabbit:erlang_app", - "@ranch//:erlang_app", - "@osiris//:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app ssl + +# gazelle:erlang_app_dep_exclude rabbit_common rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = ["ssl"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbitmq_stream_common:erlang_app", + "@osiris//:erlang_app", + "@ranch//:erlang_app", + ], ) xref( + name = "xref", additional_libs = [ - "//deps/rabbitmq_cli:erlang_app", + "//deps/rabbitmq_cli:erlang_app", # keep ], + target = ":erlang_app", ) plt( - name = "base_plt", - plt = "//:base_plt", - apps = [ - "ssl", - ], - libs = ["//deps/rabbitmq_cli:elixir"], - deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", + deps = ["//deps/rabbitmq_cli:erlang_app"], # keep ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_stream/app.bzl b/deps/rabbitmq_stream/app.bzl new file mode 100644 index 000000000000..2b37c0d1abea --- /dev/null +++ b/deps/rabbitmq_stream/app.bzl @@ -0,0 +1,122 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_stream", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + "//deps/rabbitmq_stream_common:erlang_app", + "@ranch//:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_stream", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_cli:erlang_app", + "//deps/rabbitmq_stream_common:erlang_app", + "@ranch//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "commands_SUITE_beam_files", + testonly = True, + srcs = ["test/commands_SUITE.erl"], + outs = ["test/commands_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", "//deps/rabbitmq_stream_common:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_stream_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_stream_SUITE.erl"], + outs = ["test/rabbit_stream_SUITE.beam"], + hdrs = ["include/rabbit_stream_metrics.hrl"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit:erlang_app", "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", "//deps/rabbitmq_stream_common:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_stream_manager_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_stream_manager_SUITE.erl"], + outs = ["test/rabbit_stream_manager_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "rabbit_stream_utils_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_stream_utils_SUITE.erl"], + outs = ["test/rabbit_stream_utils_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) diff --git a/deps/rabbitmq_stream_common/BUILD.bazel b/deps/rabbitmq_stream_common/BUILD.bazel index 43daaca35c20..ec030f85a9ce 100644 --- a/deps/rabbitmq_stream_common/BUILD.bazel +++ b/deps/rabbitmq_stream_common/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -7,33 +8,62 @@ load( "rabbitmq_app", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_stream_common" APP_DESCRIPTION = "RabbitMQ Stream Common" -BUILD_DEPS = [ - "@osiris//:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_name = APP_NAME, - build_deps = BUILD_DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = BUILD_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", + deps = [ + "@osiris//:erlang_app", # keep + ], ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) rabbitmq_suite( diff --git a/deps/rabbitmq_stream_common/app.bzl b/deps/rabbitmq_stream_common/app.bzl new file mode 100644 index 000000000000..0ff7b74f0391 --- /dev/null +++ b/deps/rabbitmq_stream_common/app.bzl @@ -0,0 +1,77 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_stream_common", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_stream_common", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "rabbit_stream_core_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_stream_core_SUITE.erl"], + outs = ["test/rabbit_stream_core_SUITE.beam"], + hdrs = ["include/rabbit_stream.hrl"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_stream_management/BUILD.bazel b/deps/rabbitmq_stream_management/BUILD.bazel index aa15aa4fa455..61f7ac3df5aa 100644 --- a/deps/rabbitmq_stream_management/BUILD.bazel +++ b/deps/rabbitmq_stream_management/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load("//:rabbitmq_home.bzl", "rabbitmq_home") @@ -9,6 +10,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_stream_management" @@ -16,38 +24,59 @@ APP_DESCRIPTION = "RabbitMQ Stream Management" APP_MODULE = "rabbit_stream_management" -BUILD_DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_management_agent:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbitmq_management:erlang_app", - "//deps/rabbitmq_stream:erlang_app", - "//deps/rabbit:erlang_app", -] +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep_exclude amqp_client +# gazelle:erlang_app_dep_exclude rabbit_common +# gazelle:erlang_app_dep_exclude rabbitmq_management_agent +# gazelle:erlang_app_dep_exclude cowboy rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_stream:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) rabbitmq_home( diff --git a/deps/rabbitmq_stream_management/app.bzl b/deps/rabbitmq_stream_management/app.bzl new file mode 100644 index 000000000000..e249312e046a --- /dev/null +++ b/deps/rabbitmq_stream_management/app.bzl @@ -0,0 +1,91 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_stream_management", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + "//deps/rabbitmq_stream:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_stream_management", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + "//deps/rabbitmq_stream:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "http_SUITE_beam_files", + testonly = True, + srcs = ["test/http_SUITE.erl"], + outs = ["test/http_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) diff --git a/deps/rabbitmq_top/BUILD.bazel b/deps/rabbitmq_top/BUILD.bazel index 1ffa77a9399c..27af026d8da4 100644 --- a/deps/rabbitmq_top/BUILD.bazel +++ b/deps/rabbitmq_top/BUILD.bazel @@ -7,6 +7,15 @@ load( "assert_suites", "rabbitmq_app", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) + +# gazelle:erlang_always_generate_test_beam_files APP_NAME = "rabbitmq_top" @@ -14,42 +23,54 @@ APP_DESCRIPTION = "RabbitMQ Top" APP_MODULE = "rabbit_top_app" -BUILD_DEPS = [ - "//deps/rabbitmq_management_agent:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_management:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep_exclude rabbit +# gazelle:erlang_app_dep_exclude rabbitmq_management_agent rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit:erlang_app", # keep + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) alias( diff --git a/deps/rabbitmq_top/app.bzl b/deps/rabbitmq_top/app.bzl new file mode 100644 index 000000000000..6e0c35219357 --- /dev/null +++ b/deps/rabbitmq_top/app.bzl @@ -0,0 +1,77 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_top", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_top", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_management:erlang_app", "//deps/rabbitmq_management_agent:erlang_app"], + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + pass diff --git a/deps/rabbitmq_tracing/BUILD.bazel b/deps/rabbitmq_tracing/BUILD.bazel index 270d31444cbd..b3d9c8241c60 100644 --- a/deps/rabbitmq_tracing/BUILD.bazel +++ b/deps/rabbitmq_tracing/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( @@ -9,6 +10,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_tracing" @@ -22,43 +30,59 @@ APP_ENV = """[ {password, <<"guest">>} ]""" -BUILD_DEPS = [ - "//deps/amqp_client:erlang_app", - "//deps/rabbitmq_management_agent:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_management:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep_exclude amqp_client +# gazelle:erlang_app_dep_exclude rabbitmq_management_agent rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) broker_for_integration_suites() diff --git a/deps/rabbitmq_tracing/app.bzl b/deps/rabbitmq_tracing/app.bzl new file mode 100644 index 000000000000..89d687257375 --- /dev/null +++ b/deps/rabbitmq_tracing/app.bzl @@ -0,0 +1,89 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_tracing", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_tracing", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_management:erlang_app", + "//deps/rabbitmq_management_agent:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "rabbit_tracing_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_tracing_SUITE.erl"], + outs = ["test/rabbit_tracing_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app"], + ) diff --git a/deps/rabbitmq_trust_store/BUILD.bazel b/deps/rabbitmq_trust_store/BUILD.bazel index 693c1d53f411..700b7d47c8e8 100644 --- a/deps/rabbitmq_trust_store/BUILD.bazel +++ b/deps/rabbitmq_trust_store/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load("//:rabbitmq_home.bzl", "rabbitmq_home") @@ -9,6 +10,13 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_trust_store" @@ -21,44 +29,64 @@ APP_ENV = """[ {providers, [rabbit_trust_store_file_provider]} ]""" -EXTRA_APPS = [ - "ssl", - "crypto", - "public_key", - "inets", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app ssl +# gazelle:erlang_app_extra_app crypto +# gazelle:erlang_app_extra_app public_key +# gazelle:erlang_app_extra_app inets rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_module = APP_MODULE, app_name = APP_NAME, - extra_apps = EXTRA_APPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = [ + "crypto", + "public_key", + "ssl", + "inets", + ], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) rabbitmq_home( diff --git a/deps/rabbitmq_trust_store/app.bzl b/deps/rabbitmq_trust_store/app.bzl new file mode 100644 index 000000000000..5dc58a4739e6 --- /dev/null +++ b/deps/rabbitmq_trust_store/app.bzl @@ -0,0 +1,115 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":behaviours", ":other_beam"], + ) + erlang_bytecode( + name = "behaviours", + srcs = ["src/rabbit_trust_store_certificate_provider.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_trust_store", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_trust_store_certificate_provider.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_trust_store", + beam = [":behaviours"], + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_behaviours", ":test_other_beam"], + ) + erlang_bytecode( + name = "test_behaviours", + testonly = True, + srcs = ["src/rabbit_trust_store_certificate_provider.erl"], + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_trust_store", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob( + ["src/**/*.erl"], + exclude = [ + "src/rabbit_trust_store_certificate_provider.erl", + ], + ), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_trust_store", + beam = [":test_behaviours"], + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/rabbit_common:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) diff --git a/deps/rabbitmq_web_dispatch/BUILD.bazel b/deps/rabbitmq_web_dispatch/BUILD.bazel index 17ef5b34f01e..87c2c5319f66 100644 --- a/deps/rabbitmq_web_dispatch/BUILD.bazel +++ b/deps/rabbitmq_web_dispatch/BUILD.bazel @@ -1,3 +1,4 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load("//:rabbitmq_home.bzl", "rabbitmq_home") @@ -12,6 +13,13 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) APP_NAME = "rabbitmq_web_dispatch" @@ -19,39 +27,60 @@ APP_DESCRIPTION = "RabbitMQ Web Dispatcher" APP_MODULE = "rabbit_web_dispatch_app" -EXTRA_APPS = [ - "inets", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") -DEPS = [ - "//deps/rabbit:erlang_app", - "//deps/rabbit_common:erlang_app", - "@cowboy//:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app inets + +# gazelle:erlang_app_dep_exclude ranch rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, app_version = APP_VERSION, - extra_apps = EXTRA_APPS, - deps = DEPS, + beam_files = [":beam_files"], + extra_apps = ["inets"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "@cowboy//:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - apps = EXTRA_APPS, - plt = "//:base_plt", - deps = DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", +) + +eunit( + name = "eunit", + target = ":test_erlang_app", ) rabbitmq_home( diff --git a/deps/rabbitmq_web_dispatch/app.bzl b/deps/rabbitmq_web_dispatch/app.bzl new file mode 100644 index 000000000000..e1cfb5b7b9bf --- /dev/null +++ b/deps/rabbitmq_web_dispatch/app.bzl @@ -0,0 +1,84 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_dispatch", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["@cowboy//:erlang_app"], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_dispatch", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["@cowboy//:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "rabbit_web_dispatch_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_web_dispatch_SUITE.erl"], + outs = ["test/rabbit_web_dispatch_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "rabbit_web_dispatch_unit_SUITE_beam_files", + testonly = True, + srcs = ["test/rabbit_web_dispatch_unit_SUITE.erl"], + outs = ["test/rabbit_web_dispatch_unit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_web_mqtt/BUILD.bazel b/deps/rabbitmq_web_mqtt/BUILD.bazel index 9c059d3e1869..9206e1812792 100644 --- a/deps/rabbitmq_web_mqtt/BUILD.bazel +++ b/deps/rabbitmq_web_mqtt/BUILD.bazel @@ -1,15 +1,23 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( "//:rabbitmq.bzl", "RABBITMQ_DIALYZER_OPTS", - "RABBITMQ_TEST_ERLC_OPTS", "assert_suites", "broker_for_integration_suites", "rabbitmq_app", "rabbitmq_integration_suite", - "rabbitmq_test_helper", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) + +# gazelle:exclude test/src APP_NAME = "rabbitmq_web_mqtt" @@ -26,61 +34,68 @@ APP_ENV = """[ {proxy_protocol, false} ]""" -BUILD_DEPS = [ - "//deps/amqp_client:erlang_app", - "@ranch//:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") -DEPS = [ - "//deps/rabbit_common:erlang_app", - "@cowboy//:erlang_app", - "//deps/rabbitmq_mqtt:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +# gazelle:erlang_app_extra_app ssl -EXTRA_APPS = [ - "ssl", -] +# gazelle:erlang_app_dep_exclude ranch rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, - extra_apps = EXTRA_APPS, + beam_files = [":beam_files"], + extra_apps = ["ssl"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_mqtt:erlang_app", + "@cowboy//:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - apps = EXTRA_APPS, - deps = BUILD_DEPS + DEPS + RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) -broker_for_integration_suites( - extra_plugins = [ - "//deps/rabbitmq_management:erlang_app", +eunit( + name = "eunit", + compiled_suites = [ + ":test_src_rabbit_ws_test_util_beam", + ":test_src_rfc6455_client_beam", ], + target = ":test_erlang_app", ) -rabbitmq_test_helper( - name = "test_utils", - srcs = glob(["test/src/*.erl"]), -) +broker_for_integration_suites() rabbitmq_integration_suite( name = "config_schema_SUITE", @@ -88,21 +103,17 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "proxy_protocol_SUITE", - additional_beam = [":test_utils"], - erlc_opts = [ - "-I", - "deps/rabbitmq_web_mqtt/test", + additional_beam = [ + "test/src/rabbit_ws_test_util.beam", + "test/src/rfc6455_client.beam", ], ) rabbitmq_integration_suite( name = "system_SUITE", - additional_beam = [":test_utils"], - runtime_deps = [ - "@emqtt//:erlang_app", - "@gun//:erlang_app", - "@cowlib//:erlang_app", - "//deps/rabbitmq_management_agent:erlang_app", + additional_beam = [ + "test/src/rabbit_ws_test_util.beam", + "test/src/rfc6455_client.beam", ], ) diff --git a/deps/rabbitmq_web_mqtt/app.bzl b/deps/rabbitmq_web_mqtt/app.bzl new file mode 100644 index 000000000000..3372fab10b73 --- /dev/null +++ b/deps/rabbitmq_web_mqtt/app.bzl @@ -0,0 +1,115 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_mqtt", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_mqtt:erlang_app", + "@cowboy//:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_mqtt", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_mqtt:erlang_app", + "@cowboy//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "proxy_protocol_SUITE_beam_files", + testonly = True, + srcs = ["test/proxy_protocol_SUITE.erl"], + outs = ["test/proxy_protocol_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "system_SUITE_beam_files", + testonly = True, + srcs = ["test/system_SUITE.erl"], + outs = ["test/system_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + + erlang_bytecode( + name = "test_src_rabbit_ws_test_util_beam", + testonly = True, + srcs = ["test/src/rabbit_ws_test_util.erl"], + outs = ["test/src/rabbit_ws_test_util.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_src_rfc6455_client_beam", + testonly = True, + srcs = ["test/src/rfc6455_client.erl"], + outs = ["test/src/rfc6455_client.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_web_mqtt_examples/BUILD.bazel b/deps/rabbitmq_web_mqtt_examples/BUILD.bazel index 2a2a60e377cf..da65b03b3459 100644 --- a/deps/rabbitmq_web_mqtt_examples/BUILD.bazel +++ b/deps/rabbitmq_web_mqtt_examples/BUILD.bazel @@ -6,6 +6,15 @@ load( "assert_suites", "rabbitmq_app", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) + +# gazelle:erlang_always_generate_test_beam_files APP_NAME = "rabbitmq_web_mqtt_examples" @@ -17,33 +26,54 @@ APP_ENV = """[ {listener, [{port, 15670}]} ]""" -RUNTIME_DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", - "//deps/rabbitmq_web_dispatch:erlang_app", - "//deps/rabbitmq_web_mqtt:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") + +all_srcs(name = "all_srcs") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep rabbit_common +# gazelle:erlang_app_dep rabbit +# gazelle:erlang_app_dep rabbitmq_web_mqtt rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_module = APP_MODULE, app_name = APP_NAME, - runtime_deps = RUNTIME_DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_web_dispatch:erlang_app", + "//deps/rabbitmq_web_mqtt:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) alias( diff --git a/deps/rabbitmq_web_mqtt_examples/app.bzl b/deps/rabbitmq_web_mqtt_examples/app.bzl new file mode 100644 index 000000000000..a4356fb683e3 --- /dev/null +++ b/deps/rabbitmq_web_mqtt_examples/app.bzl @@ -0,0 +1,70 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_mqtt_examples", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_mqtt_examples", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + pass diff --git a/deps/rabbitmq_web_stomp/BUILD.bazel b/deps/rabbitmq_web_stomp/BUILD.bazel index 8ee588c77301..ed01db749c57 100644 --- a/deps/rabbitmq_web_stomp/BUILD.bazel +++ b/deps/rabbitmq_web_stomp/BUILD.bazel @@ -1,18 +1,26 @@ +load("@rules_erlang//:eunit2.bzl", "eunit") load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( "//:rabbitmq.bzl", "BROKER_VERSION_REQUIREMENTS_ANY", "RABBITMQ_DIALYZER_OPTS", - "RABBITMQ_TEST_ERLC_OPTS", "assert_suites", "broker_for_integration_suites", "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", - "rabbitmq_test_helper", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", ) +# gazelle:exclude test/src + APP_NAME = "rabbitmq_web_stomp" APP_DESCRIPTION = "RabbitMQ STOMP-over-WebSockets support" @@ -30,57 +38,76 @@ APP_ENV = """[ {use_http_auth, false} ]""" -BUILD_DEPS = [ - "//deps/amqp_client:erlang_app", - "@ranch//:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files(name = "all_test_beam_files") -DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbitmq_stomp:erlang_app", - "@cowboy//:erlang_app", -] +all_srcs(name = "all_srcs") -RUNTIME_DEPS = [ - "//deps/rabbit:erlang_app", -] +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_dep_exclude amqp_client +# gazelle:erlang_app_dep_exclude cowlib +# gazelle:erlang_app_dep_exclude ranch rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY, app_module = APP_MODULE, app_name = APP_NAME, - build_deps = BUILD_DEPS, - runtime_deps = RUNTIME_DEPS, - deps = DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_stomp:erlang_app", + "@cowboy//:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = BUILD_DEPS + DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + libs = ["//deps/rabbitmq_cli:elixir"], # keep + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) -broker_for_integration_suites() - -rabbitmq_test_helper( - name = "test_util", - srcs = glob(["test/src/*.erl"]), +eunit( + name = "eunit", + compiled_suites = [ + ":test_src_rabbit_ws_test_util_beam", + ":test_src_rfc6455_client_beam", + ":test_src_stomp_beam", + ], + target = ":test_erlang_app", ) +broker_for_integration_suites() + rabbitmq_integration_suite( name = "amqp_stomp_SUITE", additional_beam = [ - ":test_util", + "test/src/rabbit_ws_test_util.beam", + "test/src/rfc6455_client.beam", + "test/src/stomp.beam", ], ) @@ -91,21 +118,27 @@ rabbitmq_integration_suite( rabbitmq_integration_suite( name = "cowboy_websocket_SUITE", additional_beam = [ - ":test_util", + "test/src/rabbit_ws_test_util.beam", + "test/src/rfc6455_client.beam", + "test/src/stomp.beam", ], ) rabbitmq_integration_suite( name = "proxy_protocol_SUITE", additional_beam = [ - ":test_util", + "test/src/rabbit_ws_test_util.beam", + "test/src/rfc6455_client.beam", + "test/src/stomp.beam", ], ) rabbitmq_integration_suite( name = "raw_websocket_SUITE", additional_beam = [ - ":test_util", + "test/src/rabbit_ws_test_util.beam", + "test/src/rfc6455_client.beam", + "test/src/stomp.beam", ], ) diff --git a/deps/rabbitmq_web_stomp/app.bzl b/deps/rabbitmq_web_stomp/app.bzl new file mode 100644 index 000000000000..dacf54d543ba --- /dev/null +++ b/deps/rabbitmq_web_stomp/app.bzl @@ -0,0 +1,147 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_stomp", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_stomp:erlang_app", + "@cowboy//:erlang_app", + "@ranch//:erlang_app", + ], + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_stomp", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = [ + "//deps/amqp_client:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_stomp:erlang_app", + "@cowboy//:erlang_app", + "@ranch//:erlang_app", + ], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + erlang_bytecode( + name = "amqp_stomp_SUITE_beam_files", + testonly = True, + srcs = ["test/amqp_stomp_SUITE.erl"], + outs = ["test/amqp_stomp_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + deps = ["//deps/amqp_client:erlang_app"], + ) + erlang_bytecode( + name = "config_schema_SUITE_beam_files", + testonly = True, + srcs = ["test/config_schema_SUITE.erl"], + outs = ["test/config_schema_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "cowboy_websocket_SUITE_beam_files", + testonly = True, + srcs = ["test/cowboy_websocket_SUITE.erl"], + outs = ["test/cowboy_websocket_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "proxy_protocol_SUITE_beam_files", + testonly = True, + srcs = ["test/proxy_protocol_SUITE.erl"], + outs = ["test/proxy_protocol_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "raw_websocket_SUITE_beam_files", + testonly = True, + srcs = ["test/raw_websocket_SUITE.erl"], + outs = ["test/raw_websocket_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_src_rabbit_ws_test_util_beam", + testonly = True, + srcs = ["test/src/rabbit_ws_test_util.erl"], + outs = ["test/src/rabbit_ws_test_util.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_src_rfc6455_client_beam", + testonly = True, + srcs = ["test/src/rfc6455_client.erl"], + outs = ["test/src/rfc6455_client.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "test_src_stomp_beam", + testonly = True, + srcs = ["test/src/stomp.erl"], + outs = ["test/src/stomp.beam"], + erlc_opts = "//:test_erlc_opts", + ) + erlang_bytecode( + name = "unit_SUITE_beam_files", + testonly = True, + srcs = ["test/unit_SUITE.erl"], + outs = ["test/unit_SUITE.beam"], + erlc_opts = "//:test_erlc_opts", + ) diff --git a/deps/rabbitmq_web_stomp_examples/BUILD.bazel b/deps/rabbitmq_web_stomp_examples/BUILD.bazel index 3fd841ef452e..7b9e8ce9ffb3 100644 --- a/deps/rabbitmq_web_stomp_examples/BUILD.bazel +++ b/deps/rabbitmq_web_stomp_examples/BUILD.bazel @@ -6,6 +6,12 @@ load( "assert_suites", "rabbitmq_app", ) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", +) APP_NAME = "rabbitmq_web_stomp_examples" @@ -17,33 +23,52 @@ APP_ENV = """[ {listener, [{port, 15670}]} ]""" -RUNTIME_DEPS = [ - "//deps/rabbit_common:erlang_app", - "//deps/rabbit:erlang_app", - "//deps/rabbitmq_web_dispatch:erlang_app", - "//deps/rabbitmq_web_stomp:erlang_app", -] +all_beam_files(name = "all_beam_files") + +all_test_beam_files() + +all_srcs(name = "all_srcs") + +# gazelle:erlang_app_dep rabbit_common +# gazelle:erlang_app_dep rabbit +# gazelle:erlang_app_dep rabbitmq_web_stomp rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = APP_DESCRIPTION, app_env = APP_ENV, app_module = APP_MODULE, app_name = APP_NAME, - runtime_deps = RUNTIME_DEPS, + beam_files = [":beam_files"], + license_files = [":license_files"], + priv = [":priv"], + deps = [ + "//deps/rabbit:erlang_app", + "//deps/rabbit_common:erlang_app", + "//deps/rabbitmq_web_dispatch:erlang_app", + "//deps/rabbitmq_web_stomp:erlang_app", + ], ) -xref() +xref( + name = "xref", + target = ":erlang_app", +) plt( - name = "base_plt", - plt = "//:base_plt", - deps = RUNTIME_DEPS, + name = "deps_plt", + for_target = ":erlang_app", ignore_warnings = True, + plt = "//:base_plt", ) dialyze( + name = "dialyze", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = ":base_plt", + plt = ":deps_plt", + target = ":erlang_app", ) alias( diff --git a/deps/rabbitmq_web_stomp_examples/app.bzl b/deps/rabbitmq_web_stomp_examples/app.bzl new file mode 100644 index 000000000000..56d217e3625b --- /dev/null +++ b/deps/rabbitmq_web_stomp_examples/app.bzl @@ -0,0 +1,70 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_stomp_examples", + dest = "ebin", + erlc_opts = "//:erlc_opts", + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "rabbitmq_web_stomp_examples", + dest = "test", + erlc_opts = "//:test_erlc_opts", + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + pass diff --git a/deps/trust_store_http/BUILD.bazel b/deps/trust_store_http/BUILD.bazel index ccc8d82b33b5..25b784b68995 100644 --- a/deps/trust_store_http/BUILD.bazel +++ b/deps/trust_store_http/BUILD.bazel @@ -1,14 +1,43 @@ -load("@rules_erlang//:erlang_app.bzl", "erlang_app") -load("@rules_erlang//:ct.bzl", "assert_suites2") +load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") +load("@rules_erlang//:xref2.bzl", "xref") +load( + "//:rabbitmq.bzl", + "RABBITMQ_DIALYZER_OPTS", + "assert_suites", + "rabbitmq_app", +) +load( + ":app.bzl", + "all_beam_files", + "all_srcs", + "all_test_beam_files", + "test_suite_beam_files", +) + +# gazelle:erlang_always_generate_test_beam_files + +all_beam_files(name = "all_beam_files") + +all_srcs(name = "all_srcs") + +all_test_beam_files(name = "all_test_beam_files") + +test_suite_beam_files(name = "test_suite_beam_files") + +# gazelle:erlang_app_extra_app ssl -erlang_app( +rabbitmq_app( + name = "erlang_app", + srcs = [":all_srcs"], + hdrs = [":public_hdrs"], app_description = "Trust store HTTP server", app_module = "trust_store_http_app", app_name = "trust_store_http", app_version = "1.0.0", - extra_apps = [ - "ssl", - ], + beam_files = [":beam_files"], + extra_apps = ["ssl"], + license_files = [":license_files"], + priv = [":priv"], deps = [ "@cowboy//:erlang_app", "@thoas//:erlang_app", @@ -21,4 +50,24 @@ alias( visibility = ["//visibility:public"], ) -assert_suites2() +xref( + name = "xref", + target = ":erlang_app", +) + +plt( + name = "deps_plt", + for_target = ":erlang_app", + ignore_warnings = True, + plt = "//:base_plt", +) + +dialyze( + name = "dialyze", + dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + plt = ":deps_plt", + target = ":erlang_app", + warnings_as_errors = False, +) + +assert_suites() diff --git a/deps/trust_store_http/app.bzl b/deps/trust_store_http/app.bzl new file mode 100644 index 000000000000..35394cdef5c4 --- /dev/null +++ b/deps/trust_store_http/app.bzl @@ -0,0 +1,71 @@ +load("@rules_erlang//:erlang_bytecode2.bzl", "erlang_bytecode") +load("@rules_erlang//:filegroup.bzl", "filegroup") + +def all_beam_files(name = "all_beam_files"): + filegroup( + name = "beam_files", + srcs = [":other_beam"], + ) + erlang_bytecode( + name = "other_beam", + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "trust_store_http", + dest = "ebin", + erlc_opts = "//:erlc_opts", + deps = ["@cowboy//:erlang_app"], + ) + +def all_srcs(name = "all_srcs"): + filegroup( + name = "all_srcs", + srcs = [":public_and_private_hdrs", ":srcs"], + ) + filegroup( + name = "public_and_private_hdrs", + srcs = [":private_hdrs", ":public_hdrs"], + ) + + filegroup( + name = "srcs", + srcs = native.glob([ + "src/**/*.app.src", + "src/**/*.erl", + ]), + ) + filegroup( + name = "priv", + srcs = native.glob(["priv/**/*"]), + ) + filegroup( + name = "private_hdrs", + srcs = native.glob(["src/**/*.hrl"]), + ) + filegroup( + name = "public_hdrs", + srcs = native.glob(["include/**/*.hrl"]), + ) + filegroup( + name = "license_files", + srcs = native.glob(["LICENSE*"]), + ) + +def all_test_beam_files(name = "all_test_beam_files"): + filegroup( + name = "test_beam_files", + testonly = True, + srcs = [":test_other_beam"], + ) + erlang_bytecode( + name = "test_other_beam", + testonly = True, + srcs = native.glob(["src/**/*.erl"]), + hdrs = [":public_and_private_hdrs"], + app_name = "trust_store_http", + dest = "test", + erlc_opts = "//:test_erlc_opts", + deps = ["@cowboy//:erlang_app"], + ) + +def test_suite_beam_files(name = "test_suite_beam_files"): + pass diff --git a/dist.bzl b/dist.bzl index 335e0303b88f..9bed69d84ace 100644 --- a/dist.bzl +++ b/dist.bzl @@ -113,14 +113,13 @@ def escript_dir(**kwargs): **kwargs ) -def _extract_version(p): - return "erl -eval '{ok, [{application, _, AppInfo}]} = file:consult(\"" + p + "\"), Version = proplists:get_value(vsn, AppInfo), io:fwrite(Version), halt().' -noshell" - -def _app_file(plugin_lib_info): - for f in plugin_lib_info.beam: +def _extract_version(lib_info): + for f in lib_info.beam: if f.basename.endswith(".app"): - return f - fail(".app file not found in {}".format(plugin_lib_info)) + return "erl -eval '{ok, [{application, _, AppInfo}]} = file:consult(\"" + f.path + "\"), Version = proplists:get_value(vsn, AppInfo), io:fwrite(Version), halt().' -noshell" + if len(lib_info.beam) == 1 and lib_info.beam[0].is_directory: + return "erl -eval '{ok, [{application, _, AppInfo}]} = file:consult(\"" + lib_info.beam[0].path + "/" + lib_info.app_name + ".app\"), Version = proplists:get_value(vsn, AppInfo), io:fwrite(Version), halt().' -noshell" + fail("could not find .app file in", lib_info.beam) def _versioned_plugins_dir_impl(ctx): plugins = flat_deps(ctx.attr.plugins) @@ -139,9 +138,11 @@ def _versioned_plugins_dir_impl(ctx): for plugin in plugins: lib_info = plugin[ErlangAppInfo] - app_file = _app_file(lib_info) - extract_version = _extract_version(app_file.path) - commands.append("PLUGIN_VERSION=$({erlang_home}/bin/{extract_version})".format(erlang_home = erlang_home, extract_version = extract_version)) + version = _extract_version(lib_info) + commands.append("PLUGIN_VERSION=$({erlang_home}/bin/{version})".format( + erlang_home = erlang_home, + version = version, + )) commands.append( "mkdir -p {plugins_dir}/{lib_name}-$PLUGIN_VERSION/include".format( diff --git a/moduleindex.yaml b/moduleindex.yaml index fed4c8207caa..8d9b7c854d9b 100755 --- a/moduleindex.yaml +++ b/moduleindex.yaml @@ -3,6 +3,48 @@ accept: - accept_header - accept_neg - accept_parser +amqp_client: +- amqp_auth_mechanisms +- amqp_channel +- amqp_channel_sup +- amqp_channel_sup_sup +- amqp_channels_manager +- amqp_client +- amqp_connection +- amqp_connection_sup +- amqp_connection_type_sup +- amqp_direct_connection +- amqp_direct_consumer +- amqp_gen_connection +- amqp_gen_consumer +- amqp_main_reader +- amqp_network_connection +- amqp_rpc_client +- amqp_rpc_server +- amqp_selective_consumer +- amqp_ssl +- amqp_sup +- amqp_uri +- amqp_util +- rabbit_routing_util +- uri_parser +amqp10_client: +- amqp10_client +- amqp10_client_app +- amqp10_client_connection +- amqp10_client_connection_sup +- amqp10_client_connections_sup +- amqp10_client_frame_reader +- amqp10_client_session +- amqp10_client_sessions_sup +- amqp10_client_sup +- amqp10_client_types +- amqp10_msg +amqp10_common: +- amqp10_binary_generator +- amqp10_binary_parser +- amqp10_framing +- amqp10_framing0 aten: - aten - aten_app @@ -284,6 +326,8 @@ meck: - meck_proc - meck_ret_spec - meck_util +my_plugin: +- my_plugin observer_cli: - observer_cli - observer_cli_application @@ -415,6 +459,700 @@ ra: - ra_system - ra_system_sup - ra_systems_sup +rabbit: +- amqqueue +- background_gc +- code_server_cache +- gatherer +- gm +- internal_user +- lqueue +- mirrored_supervisor +- mirrored_supervisor_sups +- pg_local +- pid_recomposition +- rabbit +- rabbit_access_control +- rabbit_alarm +- rabbit_amqqueue +- rabbit_amqqueue_process +- rabbit_amqqueue_sup +- rabbit_amqqueue_sup_sup +- rabbit_auth_backend_internal +- rabbit_auth_mechanism_amqplain +- rabbit_auth_mechanism_cr_demo +- rabbit_auth_mechanism_plain +- rabbit_autoheal +- rabbit_backing_queue +- rabbit_basic +- rabbit_binding +- rabbit_boot_steps +- rabbit_channel +- rabbit_channel_interceptor +- rabbit_channel_sup +- rabbit_channel_sup_sup +- rabbit_channel_tracking +- rabbit_channel_tracking_handler +- rabbit_classic_queue +- rabbit_classic_queue_index_v2 +- rabbit_classic_queue_store_v2 +- rabbit_client_sup +- rabbit_config +- rabbit_confirms +- rabbit_connection_helper_sup +- rabbit_connection_sup +- rabbit_connection_tracking +- rabbit_connection_tracking_handler +- rabbit_control_pbe +- rabbit_core_ff +- rabbit_core_metrics_gc +- rabbit_credential_validation +- rabbit_credential_validator +- rabbit_credential_validator_accept_everything +- rabbit_credential_validator_min_password_length +- rabbit_credential_validator_password_regexp +- rabbit_cuttlefish +- rabbit_db +- rabbit_db_binding +- rabbit_db_cluster +- rabbit_db_exchange +- rabbit_db_maintenance +- rabbit_db_msup +- rabbit_db_policy +- rabbit_db_queue +- rabbit_db_rtparams +- rabbit_db_topic_exchange +- rabbit_db_user +- rabbit_db_vhost +- rabbit_db_vhost_defaults +- rabbit_dead_letter +- rabbit_definitions +- rabbit_definitions_hashing +- rabbit_definitions_import_https +- rabbit_definitions_import_local_filesystem +- rabbit_diagnostics +- rabbit_direct +- rabbit_direct_reply_to +- rabbit_disk_monitor +- rabbit_epmd_monitor +- rabbit_event_consumer +- rabbit_exchange +- rabbit_exchange_decorator +- rabbit_exchange_parameters +- rabbit_exchange_type +- rabbit_exchange_type_direct +- rabbit_exchange_type_fanout +- rabbit_exchange_type_headers +- rabbit_exchange_type_invalid +- rabbit_exchange_type_topic +- rabbit_feature_flags +- rabbit_ff_controller +- rabbit_ff_extra +- rabbit_ff_registry +- rabbit_ff_registry_factory +- rabbit_fhc_helpers +- rabbit_fifo +- rabbit_fifo_client +- rabbit_fifo_dlx +- rabbit_fifo_dlx_client +- rabbit_fifo_dlx_sup +- rabbit_fifo_dlx_worker +- rabbit_fifo_index +- rabbit_fifo_v0 +- rabbit_fifo_v1 +- rabbit_file +- rabbit_global_counters +- rabbit_guid +- rabbit_health_check +- rabbit_limiter +- rabbit_log_channel +- rabbit_log_connection +- rabbit_log_mirroring +- rabbit_log_prelaunch +- rabbit_log_queue +- rabbit_log_tail +- rabbit_logger_exchange_h +- rabbit_looking_glass +- rabbit_maintenance +- rabbit_memory_monitor +- rabbit_metrics +- rabbit_mirror_queue_coordinator +- rabbit_mirror_queue_master +- rabbit_mirror_queue_misc +- rabbit_mirror_queue_mode +- rabbit_mirror_queue_mode_all +- rabbit_mirror_queue_mode_exactly +- rabbit_mirror_queue_mode_nodes +- rabbit_mirror_queue_slave +- rabbit_mirror_queue_sync +- rabbit_mnesia +- rabbit_mnesia_rename +- rabbit_msg_file +- rabbit_msg_record +- rabbit_msg_store +- rabbit_msg_store_ets_index +- rabbit_msg_store_gc +- rabbit_networking +- rabbit_networking_store +- rabbit_node_monitor +- rabbit_nodes +- rabbit_observer_cli +- rabbit_observer_cli_classic_queues +- rabbit_osiris_metrics +- rabbit_parameter_validation +- rabbit_peer_discovery +- rabbit_peer_discovery_classic_config +- rabbit_peer_discovery_dns +- rabbit_plugins +- rabbit_policies +- rabbit_policy +- rabbit_policy_merge_strategy +- rabbit_prelaunch_cluster +- rabbit_prelaunch_enabled_plugins_file +- rabbit_prelaunch_feature_flags +- rabbit_prelaunch_logging +- rabbit_prequeue +- rabbit_priority_queue +- rabbit_process +- rabbit_queue_consumers +- rabbit_queue_decorator +- rabbit_queue_index +- rabbit_queue_location +- rabbit_queue_location_client_local +- rabbit_queue_location_min_masters +- rabbit_queue_location_random +- rabbit_queue_location_validator +- rabbit_queue_master_location_misc +- rabbit_queue_master_locator +- rabbit_queue_type +- rabbit_queue_type_util +- rabbit_quorum_memory_manager +- rabbit_quorum_queue +- rabbit_ra_registry +- rabbit_ra_systems +- rabbit_reader +- rabbit_recovery_terms +- rabbit_release_series +- rabbit_restartable_sup +- rabbit_router +- rabbit_runtime_parameters +- rabbit_ssl +- rabbit_stream_coordinator +- rabbit_stream_queue +- rabbit_stream_sac_coordinator +- rabbit_sup +- rabbit_sysmon_handler +- rabbit_sysmon_minder +- rabbit_table +- rabbit_time_travel_dbg +- rabbit_trace +- rabbit_tracking +- rabbit_tracking_store +- rabbit_upgrade_preparation +- rabbit_variable_queue +- rabbit_version +- rabbit_vhost +- rabbit_vhost_limit +- rabbit_vhost_msg_store +- rabbit_vhost_process +- rabbit_vhost_sup +- rabbit_vhost_sup_sup +- rabbit_vhost_sup_wrapper +- rabbit_vm +- supervised_lifecycle +- tcp_listener +- tcp_listener_sup +- term_to_binary_compat +- vhost +rabbit_common: +- app_utils +- code_version +- credit_flow +- delegate +- delegate_sup +- file_handle_cache +- file_handle_cache_stats +- gen_server2 +- mirrored_supervisor_locks +- mnesia_sync +- pmon +- priority_queue +- rabbit_amqp_connection +- rabbit_amqqueue_common +- rabbit_auth_backend_dummy +- rabbit_auth_mechanism +- rabbit_authn_backend +- rabbit_authz_backend +- rabbit_basic_common +- rabbit_binary_generator +- rabbit_binary_parser +- rabbit_cert_info +- rabbit_channel_common +- rabbit_command_assembler +- rabbit_control_misc +- rabbit_core_metrics +- rabbit_data_coercion +- rabbit_date_time +- rabbit_env +- rabbit_error_logger_handler +- rabbit_event +- rabbit_framing +- rabbit_framing_amqp_0_8 +- rabbit_framing_amqp_0_9_1 +- rabbit_heartbeat +- rabbit_http_util +- rabbit_json +- rabbit_log +- rabbit_misc +- rabbit_msg_store_index +- rabbit_net +- rabbit_nodes_common +- rabbit_numerical +- rabbit_password +- rabbit_password_hashing +- rabbit_password_hashing_md5 +- rabbit_password_hashing_sha256 +- rabbit_password_hashing_sha512 +- rabbit_pbe +- rabbit_peer_discovery_backend +- rabbit_policy_validator +- rabbit_queue_collector +- rabbit_registry +- rabbit_registry_class +- rabbit_resource_monitor_misc +- rabbit_runtime +- rabbit_runtime_parameter +- rabbit_semver +- rabbit_semver_parser +- rabbit_ssl_options +- rabbit_types +- rabbit_writer +- supervisor2 +- vm_memory_monitor +- worker_pool +- worker_pool_sup +- worker_pool_worker +rabbitmq_amqp1_0: +- Elixir.RabbitMQ.CLI.Ctl.Commands.ListAmqp10ConnectionsCommand +- rabbit_amqp1_0 +- rabbit_amqp1_0_channel +- rabbit_amqp1_0_incoming_link +- rabbit_amqp1_0_link_util +- rabbit_amqp1_0_message +- rabbit_amqp1_0_outgoing_link +- rabbit_amqp1_0_reader +- rabbit_amqp1_0_session +- rabbit_amqp1_0_session_process +- rabbit_amqp1_0_session_sup +- rabbit_amqp1_0_session_sup_sup +- rabbit_amqp1_0_util +- rabbit_amqp1_0_writer +rabbitmq_auth_backend_cache: +- rabbit_auth_backend_cache +- rabbit_auth_backend_cache_app +- rabbit_auth_cache +- rabbit_auth_cache_dict +- rabbit_auth_cache_ets +- rabbit_auth_cache_ets_segmented +- rabbit_auth_cache_ets_segmented_stateless +rabbitmq_auth_backend_http: +- rabbit_auth_backend_http +- rabbit_auth_backend_http_app +rabbitmq_auth_backend_ldap: +- rabbit_auth_backend_ldap +- rabbit_auth_backend_ldap_app +- rabbit_auth_backend_ldap_util +- rabbit_log_ldap +rabbitmq_auth_backend_oauth2: +- Elixir.RabbitMQ.CLI.Ctl.Commands.AddUaaKeyCommand +- rabbit_auth_backend_oauth2 +- rabbit_auth_backend_oauth2_app +- rabbit_oauth2_scope +- uaa_jwks +- uaa_jwt +- uaa_jwt_jwk +- uaa_jwt_jwt +- wildcard +rabbitmq_auth_mechanism_ssl: +- rabbit_auth_mechanism_ssl +- rabbit_auth_mechanism_ssl_app +rabbitmq_aws: +- rabbitmq_aws +- rabbitmq_aws_app +- rabbitmq_aws_config +- rabbitmq_aws_json +- rabbitmq_aws_sign +- rabbitmq_aws_sup +- rabbitmq_aws_urilib +- rabbitmq_aws_xml +rabbitmq_consistent_hash_exchange: +- Elixir.RabbitMQ.CLI.Diagnostics.Commands.ConsistentHashExchangeRingStateCommand +- rabbit_db_ch_exchange +- rabbit_exchange_type_consistent_hash +rabbitmq_ct_client_helpers: +- rabbit_ct_client_helpers +rabbitmq_ct_helpers: +- cth_log_redirect_any_domains +- rabbit_control_helper +- rabbit_ct_broker_helpers +- rabbit_ct_config_schema +- rabbit_ct_helpers +- rabbit_ct_proper_helpers +- rabbit_ct_vm_helpers +- rabbit_mgmt_test_util +rabbitmq_event_exchange: +- rabbit_event_exchange_decorator +- rabbit_exchange_type_event +rabbitmq_federation: +- Elixir.RabbitMQ.CLI.Ctl.Commands.FederationStatusCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.RestartFederationLinkCommand +- rabbit_federation_app +- rabbit_federation_db +- rabbit_federation_event +- rabbit_federation_exchange +- rabbit_federation_exchange_link +- rabbit_federation_exchange_link_sup_sup +- rabbit_federation_link_sup +- rabbit_federation_link_util +- rabbit_federation_parameters +- rabbit_federation_pg +- rabbit_federation_queue +- rabbit_federation_queue_link +- rabbit_federation_queue_link_sup_sup +- rabbit_federation_status +- rabbit_federation_sup +- rabbit_federation_upstream +- rabbit_federation_upstream_exchange +- rabbit_federation_util +- rabbit_log_federation +rabbitmq_federation_management: +- rabbit_federation_mgmt +rabbitmq_jms_topic_exchange: +- rabbit_db_jms_exchange +- rabbit_jms_topic_exchange +- sjx_evaluator +rabbitmq_management: +- rabbit_mgmt_app +- rabbit_mgmt_cors +- rabbit_mgmt_csp +- rabbit_mgmt_db +- rabbit_mgmt_db_cache +- rabbit_mgmt_db_cache_sup +- rabbit_mgmt_dispatcher +- rabbit_mgmt_extension +- rabbit_mgmt_features +- rabbit_mgmt_headers +- rabbit_mgmt_hsts +- rabbit_mgmt_load_definitions +- rabbit_mgmt_login +- rabbit_mgmt_oauth_bootstrap +- rabbit_mgmt_reset_handler +- rabbit_mgmt_stats +- rabbit_mgmt_sup +- rabbit_mgmt_sup_sup +- rabbit_mgmt_util +- rabbit_mgmt_wm_aliveness_test +- rabbit_mgmt_wm_auth +- rabbit_mgmt_wm_auth_attempts +- rabbit_mgmt_wm_binding +- rabbit_mgmt_wm_bindings +- rabbit_mgmt_wm_channel +- rabbit_mgmt_wm_channels +- rabbit_mgmt_wm_channels_vhost +- rabbit_mgmt_wm_cluster_name +- rabbit_mgmt_wm_connection +- rabbit_mgmt_wm_connection_channels +- rabbit_mgmt_wm_connection_user_name +- rabbit_mgmt_wm_connections +- rabbit_mgmt_wm_connections_vhost +- rabbit_mgmt_wm_consumers +- rabbit_mgmt_wm_definitions +- rabbit_mgmt_wm_environment +- rabbit_mgmt_wm_exchange +- rabbit_mgmt_wm_exchange_publish +- rabbit_mgmt_wm_exchanges +- rabbit_mgmt_wm_extensions +- rabbit_mgmt_wm_feature_flag_enable +- rabbit_mgmt_wm_feature_flags +- rabbit_mgmt_wm_global_parameter +- rabbit_mgmt_wm_global_parameters +- rabbit_mgmt_wm_hash_password +- rabbit_mgmt_wm_health_check_alarms +- rabbit_mgmt_wm_health_check_certificate_expiration +- rabbit_mgmt_wm_health_check_local_alarms +- rabbit_mgmt_wm_health_check_node_is_mirror_sync_critical +- rabbit_mgmt_wm_health_check_node_is_quorum_critical +- rabbit_mgmt_wm_health_check_port_listener +- rabbit_mgmt_wm_health_check_protocol_listener +- rabbit_mgmt_wm_health_check_virtual_hosts +- rabbit_mgmt_wm_healthchecks +- rabbit_mgmt_wm_limit +- rabbit_mgmt_wm_limits +- rabbit_mgmt_wm_login +- rabbit_mgmt_wm_node +- rabbit_mgmt_wm_node_memory +- rabbit_mgmt_wm_node_memory_ets +- rabbit_mgmt_wm_nodes +- rabbit_mgmt_wm_operator_policies +- rabbit_mgmt_wm_operator_policy +- rabbit_mgmt_wm_overview +- rabbit_mgmt_wm_parameter +- rabbit_mgmt_wm_parameters +- rabbit_mgmt_wm_permission +- rabbit_mgmt_wm_permissions +- rabbit_mgmt_wm_permissions_user +- rabbit_mgmt_wm_permissions_vhost +- rabbit_mgmt_wm_policies +- rabbit_mgmt_wm_policy +- rabbit_mgmt_wm_queue +- rabbit_mgmt_wm_queue_actions +- rabbit_mgmt_wm_queue_get +- rabbit_mgmt_wm_queue_purge +- rabbit_mgmt_wm_queues +- rabbit_mgmt_wm_rebalance_queues +- rabbit_mgmt_wm_redirect +- rabbit_mgmt_wm_reset +- rabbit_mgmt_wm_static +- rabbit_mgmt_wm_topic_permission +- rabbit_mgmt_wm_topic_permissions +- rabbit_mgmt_wm_topic_permissions_user +- rabbit_mgmt_wm_topic_permissions_vhost +- rabbit_mgmt_wm_user +- rabbit_mgmt_wm_user_limit +- rabbit_mgmt_wm_user_limits +- rabbit_mgmt_wm_users +- rabbit_mgmt_wm_users_bulk_delete +- rabbit_mgmt_wm_vhost +- rabbit_mgmt_wm_vhost_restart +- rabbit_mgmt_wm_vhosts +- rabbit_mgmt_wm_whoami +rabbitmq_management_agent: +- Elixir.RabbitMQ.CLI.Ctl.Commands.ResetStatsDbCommand +- exometer_slide +- rabbit_mgmt_agent_app +- rabbit_mgmt_agent_config +- rabbit_mgmt_agent_sup +- rabbit_mgmt_agent_sup_sup +- rabbit_mgmt_data +- rabbit_mgmt_data_compat +- rabbit_mgmt_db_handler +- rabbit_mgmt_external_stats +- rabbit_mgmt_ff +- rabbit_mgmt_format +- rabbit_mgmt_gc +- rabbit_mgmt_metrics_collector +- rabbit_mgmt_metrics_gc +- rabbit_mgmt_storage +rabbitmq_mqtt: +- Elixir.RabbitMQ.CLI.Ctl.Commands.DecommissionMqttNodeCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.ListMqttConnectionsCommand +- mqtt_machine +- mqtt_machine_v0 +- mqtt_node +- rabbit_mqtt +- rabbit_mqtt_collector +- rabbit_mqtt_confirms +- rabbit_mqtt_ff +- rabbit_mqtt_internal_event_handler +- rabbit_mqtt_keepalive +- rabbit_mqtt_packet +- rabbit_mqtt_processor +- rabbit_mqtt_qos0_queue +- rabbit_mqtt_reader +- rabbit_mqtt_retained_msg_store +- rabbit_mqtt_retained_msg_store_dets +- rabbit_mqtt_retained_msg_store_ets +- rabbit_mqtt_retained_msg_store_noop +- rabbit_mqtt_retainer +- rabbit_mqtt_retainer_sup +- rabbit_mqtt_sup +- rabbit_mqtt_util +rabbitmq_peer_discovery_aws: +- rabbit_peer_discovery_aws +- rabbitmq_peer_discovery_aws +rabbitmq_peer_discovery_common: +- rabbit_peer_discovery_cleanup +- rabbit_peer_discovery_common_app +- rabbit_peer_discovery_common_sup +- rabbit_peer_discovery_config +- rabbit_peer_discovery_httpc +- rabbit_peer_discovery_util +rabbitmq_peer_discovery_consul: +- rabbit_peer_discovery_consul +- rabbitmq_peer_discovery_consul +- rabbitmq_peer_discovery_consul_app +- rabbitmq_peer_discovery_consul_health_check_helper +- rabbitmq_peer_discovery_consul_sup +rabbitmq_peer_discovery_etcd: +- rabbit_peer_discovery_etcd +- rabbitmq_peer_discovery_etcd +- rabbitmq_peer_discovery_etcd_app +- rabbitmq_peer_discovery_etcd_sup +- rabbitmq_peer_discovery_etcd_v3_client +rabbitmq_peer_discovery_k8s: +- rabbit_peer_discovery_k8s +- rabbitmq_peer_discovery_k8s +- rabbitmq_peer_discovery_k8s_app +- rabbitmq_peer_discovery_k8s_node_monitor +- rabbitmq_peer_discovery_k8s_sup +rabbitmq_prelaunch: +- rabbit_boot_state +- rabbit_boot_state_sup +- rabbit_boot_state_systemd +- rabbit_boot_state_xterm_titlebar +- rabbit_logger_fmt_helpers +- rabbit_logger_json_fmt +- rabbit_logger_std_h +- rabbit_logger_text_fmt +- rabbit_prelaunch +- rabbit_prelaunch_app +- rabbit_prelaunch_conf +- rabbit_prelaunch_dist +- rabbit_prelaunch_early_logging +- rabbit_prelaunch_erlang_compat +- rabbit_prelaunch_errors +- rabbit_prelaunch_file +- rabbit_prelaunch_sighandler +- rabbit_prelaunch_sup +rabbitmq_prometheus: +- prometheus_process_collector +- prometheus_rabbitmq_alarm_metrics_collector +- prometheus_rabbitmq_core_metrics_collector +- prometheus_rabbitmq_global_metrics_collector +- rabbit_prometheus_app +- rabbit_prometheus_dispatcher +- rabbit_prometheus_handler +rabbitmq_random_exchange: +- rabbit_exchange_type_random +rabbitmq_recent_history_exchange: +- rabbit_db_rh_exchange +- rabbit_exchange_type_recent_history +rabbitmq_sharding: +- rabbit_sharding_exchange_decorator +- rabbit_sharding_exchange_type_modulus_hash +- rabbit_sharding_interceptor +- rabbit_sharding_policy_validator +- rabbit_sharding_shard +- rabbit_sharding_util +rabbitmq_shovel: +- Elixir.RabbitMQ.CLI.Ctl.Commands.DeleteShovelCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.RestartShovelCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.ShovelStatusCommand +- rabbit_amqp091_shovel +- rabbit_amqp10_shovel +- rabbit_log_shovel +- rabbit_shovel +- rabbit_shovel_behaviour +- rabbit_shovel_config +- rabbit_shovel_dyn_worker_sup +- rabbit_shovel_dyn_worker_sup_sup +- rabbit_shovel_locks +- rabbit_shovel_parameters +- rabbit_shovel_status +- rabbit_shovel_sup +- rabbit_shovel_util +- rabbit_shovel_worker +- rabbit_shovel_worker_sup +rabbitmq_shovel_management: +- rabbit_shovel_mgmt +- rabbit_shovel_mgmt_util +rabbitmq_stomp: +- Elixir.RabbitMQ.CLI.Ctl.Commands.ListStompConnectionsCommand +- rabbit_stomp +- rabbit_stomp_client_sup +- rabbit_stomp_connection_info +- rabbit_stomp_frame +- rabbit_stomp_internal_event_handler +- rabbit_stomp_processor +- rabbit_stomp_reader +- rabbit_stomp_sup +- rabbit_stomp_util +rabbitmq_stream: +- Elixir.RabbitMQ.CLI.Ctl.Commands.AddSuperStreamCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.DeleteSuperStreamCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.ListStreamConnectionsCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.ListStreamConsumerGroupsCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.ListStreamConsumersCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.ListStreamGroupConsumersCommand +- Elixir.RabbitMQ.CLI.Ctl.Commands.ListStreamPublishersCommand +- rabbit_stream +- rabbit_stream_connection_sup +- rabbit_stream_manager +- rabbit_stream_metrics +- rabbit_stream_metrics_gc +- rabbit_stream_reader +- rabbit_stream_sup +- rabbit_stream_utils +rabbitmq_stream_common: +- rabbit_stream_core +rabbitmq_stream_management: +- rabbit_stream_connection_consumers_mgmt +- rabbit_stream_connection_mgmt +- rabbit_stream_connection_publishers_mgmt +- rabbit_stream_connections_mgmt +- rabbit_stream_connections_vhost_mgmt +- rabbit_stream_consumers_mgmt +- rabbit_stream_management_utils +- rabbit_stream_mgmt_db +- rabbit_stream_publishers_mgmt +rabbitmq_top: +- rabbit_top_app +- rabbit_top_extension +- rabbit_top_sup +- rabbit_top_util +- rabbit_top_wm_ets_tables +- rabbit_top_wm_process +- rabbit_top_wm_processes +- rabbit_top_worker +rabbitmq_tracing: +- rabbit_tracing_app +- rabbit_tracing_consumer +- rabbit_tracing_consumer_sup +- rabbit_tracing_files +- rabbit_tracing_mgmt +- rabbit_tracing_sup +- rabbit_tracing_traces +- rabbit_tracing_util +- rabbit_tracing_wm_file +- rabbit_tracing_wm_files +- rabbit_tracing_wm_trace +- rabbit_tracing_wm_traces +rabbitmq_trust_store: +- rabbit_trust_store +- rabbit_trust_store_app +- rabbit_trust_store_certificate_provider +- rabbit_trust_store_file_provider +- rabbit_trust_store_http_provider +- rabbit_trust_store_sup +rabbitmq_web_dispatch: +- rabbit_cowboy_middleware +- rabbit_cowboy_redirect +- rabbit_cowboy_stream_h +- rabbit_web_dispatch +- rabbit_web_dispatch_app +- rabbit_web_dispatch_listing_handler +- rabbit_web_dispatch_registry +- rabbit_web_dispatch_sup +- rabbit_web_dispatch_util +- webmachine_log +- webmachine_log_handler +rabbitmq_web_mqtt: +- rabbit_web_mqtt_app +- rabbit_web_mqtt_handler +- rabbit_web_mqtt_stream_handler +rabbitmq_web_mqtt_examples: +- rabbit_web_mqtt_examples_app +rabbitmq_web_stomp: +- rabbit_web_stomp_app +- rabbit_web_stomp_connection_sup +- rabbit_web_stomp_handler +- rabbit_web_stomp_internal_event_handler +- rabbit_web_stomp_listener +- rabbit_web_stomp_middleware +- rabbit_web_stomp_stream_handler +- rabbit_web_stomp_sup +rabbitmq_web_stomp_examples: +- rabbit_web_stomp_examples_app ranch: - ranch - ranch_acceptor @@ -476,3 +1214,9 @@ thoas: - thoas - thoas_decode - thoas_encode +trust_store_http: +- trust_store_http +- trust_store_http_app +- trust_store_http_sup +- trust_store_invalid_handler +- trust_store_list_handler diff --git a/rabbitmq.bzl b/rabbitmq.bzl index d378bf25d564..7cf267843432 100644 --- a/rabbitmq.bzl +++ b/rabbitmq.bzl @@ -1,7 +1,3 @@ -load( - "@rules_erlang//:erlang_bytecode.bzl", - "erlang_bytecode", -) load( "@rules_erlang//:erlang_app.bzl", "DEFAULT_ERLC_OPTS", @@ -12,8 +8,7 @@ load( load( "@rules_erlang//:ct.bzl", "assert_suites2", - "ct_suite", - "ct_suite_variant", + "ct_test", ) load("//:rabbitmq_home.bzl", "rabbitmq_home") load("//:rabbitmq_run.bzl", "rabbitmq_run") @@ -109,6 +104,7 @@ def with_test_versions(deps): return r def rabbitmq_app( + name = "erlang_app", app_name = "", app_version = APP_VERSION, app_description = "", @@ -117,13 +113,22 @@ def rabbitmq_app( app_env = "", app_extra_keys = "", extra_apps = [], - extra_hdrs = [], - extra_srcs = [], - extra_priv = [], - build_deps = [], + beam_files = [":beam_files"], + hdrs = None, + srcs = [":all_srcs"], + priv = [":priv"], + license_files = [":license_files"], deps = [], - runtime_deps = []): + testonly = False): + if name != "erlang_app": + fail("name attr exists for compatibility only, and must be set to '\"erlang_app\"'") + if beam_files != [":beam_files"]: + fail("beam_files attr exists for compatibility only, and must be set to '[\":beam_files\"]'") + if hdrs != [":public_hdrs"]: + fail("hdrs attr exists for compatibility only, and must be set to '[\":public_hdrs\"]'") + erlang_app( + name = "erlang_app", app_name = app_name, app_version = app_version, app_description = app_description, @@ -132,22 +137,17 @@ def rabbitmq_app( app_env = app_env, app_extra_keys = app_extra_keys, extra_apps = extra_apps, - extra_hdrs = extra_hdrs, - extra_srcs = extra_srcs, - extra_priv = extra_priv, - erlc_opts = select({ - "@rules_erlang//:debug_build": without("-Werror", without("+deterministic", RABBITMQ_ERLC_OPTS)), - "//conditions:default": RABBITMQ_ERLC_OPTS, - }) + select({ - Label("//:test_build"): ["-DTEST=1", "+nowarn_export_all"], - "//conditions:default": [], - }), - build_deps = build_deps, + beam_files = beam_files, + hdrs = [":public_hdrs"], + srcs = srcs, + priv = priv, + license_files = license_files, deps = deps, - runtime_deps = runtime_deps, + testonly = testonly, ) test_erlang_app( + name = "test_erlang_app", app_name = app_name, app_version = app_version, app_description = app_description, @@ -156,29 +156,40 @@ def rabbitmq_app( app_env = app_env, app_extra_keys = app_extra_keys, extra_apps = extra_apps, - extra_hdrs = extra_hdrs, - extra_srcs = extra_srcs, - extra_priv = extra_priv, - erlc_opts = select({ - "@rules_erlang//:debug_build": without("+deterministic", RABBITMQ_TEST_ERLC_OPTS), - "//conditions:default": RABBITMQ_TEST_ERLC_OPTS, - }), - build_deps = with_test_versions(build_deps), + beam_files = [":test_beam_files"], + hdrs = [":public_and_private_hdrs"], + srcs = srcs, + priv = priv, + license_files = license_files, deps = with_test_versions(deps), - runtime_deps = with_test_versions(runtime_deps), ) -def rabbitmq_suite(erlc_opts = [], test_env = {}, **kwargs): - ct_suite( - erlc_opts = RABBITMQ_TEST_ERLC_OPTS + erlc_opts, +def rabbitmq_suite( + name = None, + suite_name = None, + data = [], + additional_beam = [], + test_env = {}, + deps = [], + runtime_deps = [], + **kwargs): + # suite_name exists in the underying ct_test macro, but we don't + # want to use the arg in rabbitmq-server, for the sake of clarity + if suite_name != None: + fail("rabbitmq_suite cannot be called with a suite_name attr") + ct_test( + name = name, + compiled_suites = [":{}_beam_files".format(name)] + additional_beam, ct_run_extra_args = [ENABLE_FEATURE_MAYBE_EXPR], + data = native.glob(["test/{}_data/**/*".format(name)]) + data, test_env = dict({ "RABBITMQ_CT_SKIP_AS_ERROR": "true", "LANG": "C.UTF-8", }.items() + test_env.items()), + deps = [":test_erlang_app"] + deps + runtime_deps, **kwargs ) - return kwargs["name"] + return name def broker_for_integration_suites(extra_plugins = []): rabbitmq_home( @@ -196,49 +207,41 @@ def broker_for_integration_suites(extra_plugins = []): testonly = True, ) -def rabbitmq_test_helper( - erlc_opts = RABBITMQ_TEST_ERLC_OPTS, - **kwargs): - erlang_bytecode( - testonly = True, - dest = "test", - erlc_opts = erlc_opts, - **kwargs - ) - def rabbitmq_integration_suite( name = None, + suite_name = None, tags = [], data = [], erlc_opts = [], - additional_hdrs = [], - additional_srcs = [], + additional_beam = [], test_env = {}, tools = [], deps = [], runtime_deps = [], **kwargs): - package = native.package_name() - - extra_deps = [ + # suite_name exists in the underying ct_test macro, but we don't + # want to use the arg in rabbitmq-server, for the sake of clarity + if suite_name != None: + fail("rabbitmq_integration_suite cannot be called with a suite_name attr") + assumed_deps = [ + ":test_erlang_app", "//deps/rabbit_common:erlang_app", "//deps/rabbitmq_ct_helpers:erlang_app", + "//deps/rabbitmq_cli:elixir", + "//deps/rabbitmq_cli:erlang_app", + "//deps/rabbitmq_ct_client_helpers:erlang_app", ] + package = native.package_name() if package != "deps/amqp_client": - extra_deps.append("//deps/amqp_client:erlang_app") + assumed_deps.append("//deps/amqp_client:erlang_app") - ct_suite( + ct_test( name = name, suite_name = name, + compiled_suites = [":{}_beam_files".format(name)] + additional_beam, tags = tags + [STARTS_BACKGROUND_BROKER_TAG], - erlc_opts = select({ - "@rules_erlang//:debug_build": without("+deterministic", RABBITMQ_TEST_ERLC_OPTS + erlc_opts), - "//conditions:default": RABBITMQ_TEST_ERLC_OPTS + erlc_opts, - }), - additional_hdrs = additional_hdrs, - additional_srcs = additional_srcs, ct_run_extra_args = [ENABLE_FEATURE_MAYBE_EXPR], - data = data, + data = native.glob(["test/{}_data/**/*".format(name)]) + data, test_env = dict({ "SKIP_MAKE_TEST_DIST": "true", "RABBITMQ_CT_SKIP_AS_ERROR": "true", @@ -251,21 +254,17 @@ def rabbitmq_integration_suite( tools = [ ":rabbitmq-for-tests-run", ] + tools, - runtime_deps = [ - "//deps/rabbitmq_cli:elixir", - "//deps/rabbitmq_cli:erlang_app", - "//deps/rabbitmq_ct_client_helpers:erlang_app", - ] + runtime_deps, - deps = extra_deps + deps, + deps = assumed_deps + deps + runtime_deps, **kwargs ) - ct_suite_variant( + ct_test( name = name + "-mixed", suite_name = name, + compiled_suites = [":{}_beam_files".format(name)] + additional_beam, tags = tags + [STARTS_BACKGROUND_BROKER_TAG, MIXED_VERSION_CLUSTER_TAG], ct_run_extra_args = [ENABLE_FEATURE_MAYBE_EXPR], - data = data, + data = native.glob(["test/{}_data/**/*".format(name)]) + data, test_env = dict({ "SKIP_MAKE_TEST_DIST": "true", # The feature flags listed below are required. This means they must be enabled in mixed-version testing @@ -289,12 +288,7 @@ def rabbitmq_integration_suite( ":rabbitmq-for-tests-run", "@rabbitmq-server-generic-unix-3.11//:rabbitmq-run", ] + tools, - runtime_deps = [ - "//deps/rabbitmq_cli:elixir", - "//deps/rabbitmq_cli:erlang_app", - "//deps/rabbitmq_ct_client_helpers:erlang_app", - ] + runtime_deps, - deps = extra_deps + deps, + deps = assumed_deps + deps + runtime_deps, **kwargs ) diff --git a/rabbitmq_home.bzl b/rabbitmq_home.bzl index 28112aa63b2a..8d6c10dc5228 100644 --- a/rabbitmq_home.bzl +++ b/rabbitmq_home.bzl @@ -55,7 +55,7 @@ def _plugins_dir_links(ctx, plugin): if f.is_directory: if f.basename != "ebin": fail("{} contains a directory in 'beam' that is not an ebin dir".format(lib_info.lib_name)) - o = ctx.actions.declare_file(path_join(plugin_path, "ebin")) + o = ctx.actions.declare_directory(path_join(plugin_path, "ebin")) else: o = ctx.actions.declare_file(path_join(plugin_path, "ebin", f.basename)) ctx.actions.symlink(