diff --git a/deps/rabbit/BUILD.bazel b/deps/rabbit/BUILD.bazel index 7b783934c2d1..a30250e6e2f2 100644 --- a/deps/rabbit/BUILD.bazel +++ b/deps/rabbit/BUILD.bazel @@ -10,6 +10,7 @@ load( "rabbitmq_integration_suite", "rabbitmq_suite", "rabbitmq_test_helper", + "without", ) load(":bats.bzl", "bats") @@ -213,7 +214,8 @@ plt( ) dialyze( - dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + # A few `lg` functions are unknown + dialyzer_opts = without("-Wunknown", RABBITMQ_DIALYZER_OPTS), plt = ":base_plt", ) @@ -518,7 +520,7 @@ rabbitmq_integration_suite( size = "small", additional_srcs = [ "test/mirrored_supervisor_SUITE_gs.erl", - ] + ], ) rabbitmq_suite( diff --git a/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel b/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel index e4078c3462bf..b7df0a338f03 100644 --- a/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel +++ b/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel @@ -2,8 +2,8 @@ load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( "//:rabbitmq.bzl", - "RABBITMQ_DIALYZER_OPTS", "APP_VERSION", + "RABBITMQ_DIALYZER_OPTS", "rabbitmq_app", "rabbitmq_suite", ) @@ -41,7 +41,10 @@ xref( plt( name = "base_plt", - apps = ["runtime_tools", "eunit"], + apps = [ + "runtime_tools", + "eunit", + ], plt = "//:base_plt", deps = DEPS + RUNTIME_DEPS + [ "@systemd//:erlang_app", @@ -50,8 +53,8 @@ plt( ) dialyze( - plt = ":base_plt", dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + plt = ":base_plt", ) suites = [ diff --git a/deps/rabbit/src/rabbit_access_control.erl b/deps/rabbit/src/rabbit_access_control.erl index c7aa589eb235..d4941fc96c3b 100644 --- a/deps/rabbit/src/rabbit_access_control.erl +++ b/deps/rabbit/src/rabbit_access_control.erl @@ -16,12 +16,6 @@ %%---------------------------------------------------------------------------- --export_type([permission_atom/0]). - --type permission_atom() :: 'configure' | 'write' | 'read'. - -%%---------------------------------------------------------------------------- - -spec check_user_pass_login (rabbit_types:username(), rabbit_types:password()) -> {'ok', rabbit_types:user()} | @@ -179,7 +173,7 @@ create_vhost_access_authz_data(PeerAddr, Context) -> maps:merge(PeerAddr, Context). -spec check_resource_access - (rabbit_types:user(), rabbit_types:r(atom()), permission_atom(), rabbit_types:authz_context()) -> + (rabbit_types:user(), rabbit_types:r(atom()), rabbit_types:permission_atom(), rabbit_types:authz_context()) -> 'ok' | rabbit_types:channel_exit(). check_resource_access(User, R = #resource{kind = exchange, name = <<"">>}, diff --git a/deps/rabbit/src/rabbit_channel.erl b/deps/rabbit/src/rabbit_channel.erl index 4bc82378d5a2..869610f9ae35 100644 --- a/deps/rabbit/src/rabbit_channel.erl +++ b/deps/rabbit/src/rabbit_channel.erl @@ -225,7 +225,7 @@ -export_type([channel_number/0]). --type channel_number() :: non_neg_integer(). +-type channel_number() :: rabbit_types:channel_number(). -export_type([channel/0]). diff --git a/deps/rabbit/src/rabbit_exchange.erl b/deps/rabbit/src/rabbit_exchange.erl index db7058cd68c8..0c64a7125eb4 100644 --- a/deps/rabbit/src/rabbit_exchange.erl +++ b/deps/rabbit/src/rabbit_exchange.erl @@ -22,8 +22,8 @@ %%---------------------------------------------------------------------------- -export_type([name/0, type/0]). --type name() :: rabbit_types:r('exchange'). --type type() :: atom(). +-type name() :: rabbit_types:exchange_name(). +-type type() :: rabbit_types:exchange_type(). -type fun_name() :: atom(). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_guid.erl b/deps/rabbit/src/rabbit_guid.erl index 3e8fe2c59bb7..e7e8aed6633f 100644 --- a/deps/rabbit/src/rabbit_guid.erl +++ b/deps/rabbit/src/rabbit_guid.erl @@ -25,7 +25,7 @@ -export_type([guid/0]). --type guid() :: binary(). +-type guid() :: rabbit_types:guid(). %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/rabbit_router.erl b/deps/rabbit/src/rabbit_router.erl index b894cfa3a10e..4e0051b178d1 100644 --- a/deps/rabbit/src/rabbit_router.erl +++ b/deps/rabbit/src/rabbit_router.erl @@ -15,7 +15,7 @@ -export_type([routing_key/0, match_result/0]). --type routing_key() :: binary(). +-type routing_key() :: rabbit_types:routing_key(). -type match_result() :: [rabbit_types:binding_destination()]. %%---------------------------------------------------------------------------- diff --git a/deps/rabbit/src/vhost.erl b/deps/rabbit/src/vhost.erl index c8dcc2d540d8..72ea83ddeced 100644 --- a/deps/rabbit/src/vhost.erl +++ b/deps/rabbit/src/vhost.erl @@ -34,7 +34,7 @@ -define(record_version, vhost_v2). --type(name() :: binary()). +-type(name() :: rabbit_types:vhost()). -type(limits() :: list()). diff --git a/deps/rabbit_common/BUILD.bazel b/deps/rabbit_common/BUILD.bazel index dbb21084cfda..1cc5b8732db6 100644 --- a/deps/rabbit_common/BUILD.bazel +++ b/deps/rabbit_common/BUILD.bazel @@ -2,6 +2,7 @@ load("@rules_erlang//:xref2.bzl", "xref") load("@rules_erlang//:dialyze.bzl", "dialyze", "plt") load( "//:rabbitmq.bzl", + "RABBITMQ_DIALYZER_OPTS", "assert_suites", "rabbitmq_app", "rabbitmq_suite", @@ -55,6 +56,7 @@ RUNTIME_DEPS = [ "@thoas//:erlang_app", "@recon//:erlang_app", "@credentials_obfuscation//:erlang_app", + "@ranch//:erlang_app", ] APP_NAME = "rabbit_common" @@ -89,6 +91,8 @@ EXTRA_APPS = [ "syntax_tools", "tools", "xmerl", + "runtime_tools", + "os_mon", ] rabbitmq_app( @@ -106,23 +110,17 @@ rabbitmq_app( runtime_deps = RUNTIME_DEPS, ) -xref( - additional_libs = [ - "@ranch//:erlang_app", - ], -) +xref() plt( name = "base_plt", - apps = [ - "mnesia", - "crypto", - "ssl", - ] + EXTRA_APPS, + apps = EXTRA_APPS + ["mnesia"], plt = "//:base_plt", + deps = RUNTIME_DEPS, ) dialyze( + dialyzer_opts = RABBITMQ_DIALYZER_OPTS, plt = ":base_plt", ) diff --git a/deps/rabbit_common/src/rabbit_authz_backend.erl b/deps/rabbit_common/src/rabbit_authz_backend.erl index 1a935d567b95..60456c518bbe 100644 --- a/deps/rabbit_common/src/rabbit_authz_backend.erl +++ b/deps/rabbit_common/src/rabbit_authz_backend.erl @@ -50,7 +50,7 @@ %% Something went wrong. Log and die. -callback check_resource_access(rabbit_types:auth_user(), rabbit_types:r(atom()), - rabbit_access_control:permission_atom(), + rabbit_types:permission_atom(), rabbit_types:authz_context()) -> boolean() | {'error', any()}. @@ -63,7 +63,7 @@ %% Something went wrong. Log and die. -callback check_topic_access(rabbit_types:auth_user(), rabbit_types:r(atom()), - rabbit_access_control:permission_atom(), + rabbit_types:permission_atom(), rabbit_types:topic_access_context()) -> boolean() | {'error', any()}. diff --git a/deps/rabbit_common/src/rabbit_binary_generator.erl b/deps/rabbit_common/src/rabbit_binary_generator.erl index 406241ecb2ac..fb94f9967481 100644 --- a/deps/rabbit_common/src/rabbit_binary_generator.erl +++ b/deps/rabbit_common/src/rabbit_binary_generator.erl @@ -22,11 +22,11 @@ -type frame() :: [binary()]. -spec build_simple_method_frame - (rabbit_channel:channel_number(), rabbit_framing:amqp_method_record(), + (rabbit_types:channel_number(), rabbit_framing:amqp_method_record(), rabbit_types:protocol()) -> frame(). -spec build_simple_content_frames - (rabbit_channel:channel_number(), rabbit_types:content(), + (rabbit_types:channel_number(), rabbit_types:content(), non_neg_integer(), rabbit_types:protocol()) -> [frame()]. -spec build_heartbeat_frame() -> frame(). @@ -39,9 +39,9 @@ (rabbit_types:content()) -> rabbit_types:unencoded_content(). -spec map_exception - (rabbit_channel:channel_number(), rabbit_types:amqp_error() | any(), + (rabbit_types:channel_number(), rabbit_types:amqp_error() | any(), rabbit_types:protocol()) -> - {rabbit_channel:channel_number(), + {rabbit_types:channel_number(), rabbit_framing:amqp_method_record()}. %%---------------------------------------------------------------------------- diff --git a/deps/rabbit_common/src/rabbit_core_metrics.erl b/deps/rabbit_common/src/rabbit_core_metrics.erl index 00b5359fce87..8ce229954bab 100644 --- a/deps/rabbit_common/src/rabbit_core_metrics.erl +++ b/deps/rabbit_common/src/rabbit_core_metrics.erl @@ -59,9 +59,9 @@ %%---------------------------------------------------------------------------- -type(channel_stats_id() :: pid() | {pid(), - {rabbit_amqqueue:name(), rabbit_exchange:name()}} | - {pid(), rabbit_amqqueue:name()} | - {pid(), rabbit_exchange:name()}). + {rabbit_types:rabbit_amqqueue_name(), rabbit_types:exchange_name()}} | + {pid(), rabbit_types:rabbit_amqqueue_name()} | + {pid(), rabbit_types:exchange_name()}). -type(channel_stats_type() :: queue_exchange_stats | queue_stats | exchange_stats | reductions). @@ -80,17 +80,17 @@ -spec channel_stats(pid(), rabbit_types:infos()) -> ok. -spec channel_stats(channel_stats_type(), channel_stats_id(), rabbit_types:infos() | integer()) -> ok. --spec channel_queue_down({pid(), rabbit_amqqueue:name()}) -> ok. --spec channel_queue_exchange_down({pid(), {rabbit_amqqueue:name(), - rabbit_exchange:name()}}) -> ok. --spec channel_exchange_down({pid(), rabbit_exchange:name()}) -> ok. +-spec channel_queue_down({pid(), rabbit_types:rabbit_amqqueue_name()}) -> ok. +-spec channel_queue_exchange_down({pid(), {rabbit_types:rabbit_amqqueue_name(), + rabbit_types:exchange_name()}}) -> ok. +-spec channel_exchange_down({pid(), rabbit_types:exchange_name()}) -> ok. -spec consumer_created(pid(), binary(), boolean(), boolean(), - rabbit_amqqueue:name(), integer(), boolean(), activity_status(), list()) -> ok. + rabbit_types:rabbit_amqqueue_name(), integer(), boolean(), activity_status(), list()) -> ok. -spec consumer_updated(pid(), binary(), boolean(), boolean(), - rabbit_amqqueue:name(), integer(), boolean(), activity_status(), list()) -> ok. --spec consumer_deleted(pid(), binary(), rabbit_amqqueue:name()) -> ok. --spec queue_stats(rabbit_amqqueue:name(), rabbit_types:infos()) -> ok. --spec queue_stats(rabbit_amqqueue:name(), integer(), integer(), integer(), + rabbit_types:rabbit_amqqueue_name(), integer(), boolean(), activity_status(), list()) -> ok. +-spec consumer_deleted(pid(), binary(), rabbit_types:rabbit_amqqueue_name()) -> ok. +-spec queue_stats(rabbit_types:rabbit_amqqueue_name(), rabbit_types:infos()) -> ok. +-spec queue_stats(rabbit_types:rabbit_amqqueue_name(), integer(), integer(), integer(), integer()) -> ok. -spec node_stats(atom(), rabbit_types:infos()) -> ok. -spec node_node_stats({node(), node()}, rabbit_types:infos()) -> ok. diff --git a/deps/rabbit/src/rabbit_framing.erl b/deps/rabbit_common/src/rabbit_framing.erl similarity index 100% rename from deps/rabbit/src/rabbit_framing.erl rename to deps/rabbit_common/src/rabbit_framing.erl diff --git a/deps/rabbit_common/src/rabbit_misc.erl b/deps/rabbit_common/src/rabbit_misc.erl index cad0383e21d6..30d346b38876 100644 --- a/deps/rabbit_common/src/rabbit_misc.erl +++ b/deps/rabbit_common/src/rabbit_misc.erl @@ -1319,10 +1319,18 @@ is_regular_file(Name) -> _ -> false end. +%% not exported by supervisor +-type supervisor_child_id() :: term(). +-type supervisor_sup_ref() :: (Name :: atom()) + | {Name :: atom(), Node :: node()} + | {'global', Name :: atom()} + | {'via', Module :: module(), Name :: any()} + | pid(). + %% this used to be in supervisor2 -spec find_child(Supervisor, Name) -> [pid()] when - Supervisor :: supervisor:sup_ref(), - Name :: supervisor:child_id(). + Supervisor :: supervisor_sup_ref(), + Name :: supervisor_child_id(). find_child(Supervisor, Name) -> [Pid || {Name1, Pid, _Type, _Modules} <- supervisor:which_children(Supervisor), Name1 =:= Name]. diff --git a/deps/rabbit_common/src/rabbit_net.erl b/deps/rabbit_common/src/rabbit_net.erl index ac681eccc96f..433dc20cf751 100644 --- a/deps/rabbit_common/src/rabbit_net.erl +++ b/deps/rabbit_common/src/rabbit_net.erl @@ -32,10 +32,11 @@ {raw, non_neg_integer(), non_neg_integer(), binary()}]. -type hostname() :: inet:hostname(). -type ip_port() :: inet:port_number(). +-type rabbit_proxy_socket() :: {'rabbit_proxy_socket', ranch_transport:socket(), ranch_proxy_header:proxy_info()}. % -type host_or_ip() :: binary() | inet:ip_address(). -spec is_ssl(socket()) -> boolean(). -spec ssl_info(socket()) -> 'nossl' | ok_val_or_error([{atom(), any()}]). --spec proxy_ssl_info(socket(), ranch_proxy:proxy_socket()) -> 'nossl' | ok_val_or_error([{atom(), any()}]). +-spec proxy_ssl_info(socket(), rabbit_proxy_socket() | 'undefined') -> 'nossl' | ok_val_or_error([{atom(), any()}]). -spec controlling_process(socket(), pid()) -> ok_or_any_error(). -spec getstat(socket(), [stat_option()]) -> ok_val_or_error([{stat_option(), integer()}]). @@ -65,7 +66,7 @@ -spec peername(socket()) -> ok_val_or_error({inet:ip_address(), ip_port()}). -spec peercert(socket()) -> - 'nossl' | ok_val_or_error(rabbit_ssl:certificate()). + 'nossl' | ok_val_or_error(rabbit_cert_info:certificate()). -spec connection_string(socket(), 'inbound' | 'outbound') -> ok_val_or_error(string()). % -spec socket_ends(socket() | ranch_proxy:proxy_socket() | ranch_proxy_ssl:ssl_socket(), diff --git a/deps/rabbit_common/src/rabbit_types.erl b/deps/rabbit_common/src/rabbit_types.erl index cdbb2655a963..72d6cc62288d 100644 --- a/deps/rabbit_common/src/rabbit_types.erl +++ b/deps/rabbit_common/src/rabbit_types.erl @@ -24,12 +24,14 @@ proc_type_and_name/0, timestamp/0, tracked_connection_id/0, tracked_connection/0, tracked_channel_id/0, tracked_channel/0, node_type/0, topic_access_context/0, - authz_data/0, authz_context/0]). + authz_data/0, authz_context/0, + permission_atom/0, rabbit_amqqueue_name/0, binding_key/0, channel_number/0, + exchange_name/0, exchange_type/0, guid/0, routing_key/0]). -type(maybe(T) :: T | 'none'). -type(timestamp() :: {non_neg_integer(), non_neg_integer(), non_neg_integer()}). --type(vhost() :: vhost:name()). +-type(vhost() :: binary()). -type(ctag() :: binary()). %% TODO: make this more precise by tying specific class_ids to @@ -55,10 +57,13 @@ properties_bin :: binary(), payload_fragments_rev :: [binary()]}). -type(content() :: undecoded_content() | decoded_content()). --type(msg_id() :: rabbit_guid:guid()). + +-type(guid() :: binary()). +-type(msg_id() :: guid()). +-type(routing_key() :: binary()). -type(basic_message() :: - #basic_message{exchange_name :: rabbit_exchange:name(), - routing_keys :: [rabbit_router:routing_key()], + #basic_message{exchange_name :: exchange_name(), + routing_keys :: [routing_key()], content :: content(), id :: msg_id(), is_persistent :: boolean()}). @@ -97,22 +102,29 @@ host :: rabbit_net:hostname(), port :: rabbit_net:ip_port()}). --type(binding_source() :: rabbit_exchange:name()). --type(binding_destination() :: rabbit_amqqueue:name() | rabbit_exchange:name()). +-type rabbit_amqqueue_name() :: rabbit_types:r('queue'). + +-type(binding_source() :: exchange_name()). +-type(binding_destination() :: rabbit_amqqueue_name() | exchange_name()). + +-type binding_key() :: binary(). -type(binding() :: - #binding{source :: rabbit_exchange:name(), + #binding{source :: exchange_name(), destination :: binding_destination(), - key :: rabbit_binding:key(), + key :: binding_key(), args :: rabbit_framing:amqp_table()}). -type(exchange() :: - #exchange{name :: rabbit_exchange:name(), - type :: rabbit_exchange:type(), + #exchange{name :: exchange_name(), + type :: exchange_type(), durable :: boolean(), auto_delete :: boolean(), arguments :: rabbit_framing:amqp_table()}). +-type exchange_name() :: r('exchange'). +-type exchange_type() :: atom(). + -type(connection_name() :: binary()). %% used e.g. by rabbit_networking @@ -128,8 +140,8 @@ name :: connection_name(), pid :: connection(), protocol :: protocol_name(), - peer_host :: rabbit_networking:hostname(), - peer_port :: rabbit_networking:ip_port(), + peer_host :: rabbit_net:hostname(), + peer_port :: rabbit_net:ip_port(), username :: username(), connected_at :: integer()}). @@ -137,6 +149,8 @@ -type(channel() :: pid()). +-type(channel_number() :: non_neg_integer()). + %% used e.g. by rabbit_channel_tracking -type(tracked_channel_id() :: {node(), channel_name()}). @@ -189,8 +203,10 @@ -type(proc_name() :: term()). -type(proc_type_and_name() :: {atom(), proc_name()}). --type(topic_access_context() :: #{routing_key => rabbit_router:routing_key(), +-type(topic_access_context() :: #{routing_key => routing_key(), variable_map => map(), _ => _}). -type(authz_context() :: map()). + +-type(permission_atom() :: 'configure' | 'write' | 'read'). diff --git a/deps/rabbit_common/src/rabbit_writer.erl b/deps/rabbit_common/src/rabbit_writer.erl index a284d203b1b5..44b7b02e352d 100644 --- a/deps/rabbit_common/src/rabbit_writer.erl +++ b/deps/rabbit_common/src/rabbit_writer.erl @@ -69,32 +69,32 @@ %%--------------------------------------------------------------------------- -spec start - (rabbit_net:socket(), rabbit_channel:channel_number(), + (rabbit_net:socket(), rabbit_types:channel_number(), non_neg_integer(), rabbit_types:protocol(), pid(), rabbit_types:proc_name()) -> rabbit_types:ok(pid()). -spec start_link - (rabbit_net:socket(), rabbit_channel:channel_number(), + (rabbit_net:socket(), rabbit_types:channel_number(), non_neg_integer(), rabbit_types:protocol(), pid(), rabbit_types:proc_name()) -> rabbit_types:ok(pid()). -spec start - (rabbit_net:socket(), rabbit_channel:channel_number(), + (rabbit_net:socket(), rabbit_types:channel_number(), non_neg_integer(), rabbit_types:protocol(), pid(), rabbit_types:proc_name(), boolean()) -> rabbit_types:ok(pid()). -spec start_link - (rabbit_net:socket(), rabbit_channel:channel_number(), + (rabbit_net:socket(), rabbit_types:channel_number(), non_neg_integer(), rabbit_types:protocol(), pid(), rabbit_types:proc_name(), boolean()) -> rabbit_types:ok(pid()). -spec start - (rabbit_net:socket(), rabbit_channel:channel_number(), + (rabbit_net:socket(), rabbit_types:channel_number(), non_neg_integer(), rabbit_types:protocol(), pid(), rabbit_types:proc_name(), boolean(), undefined|non_neg_integer()) -> rabbit_types:ok(pid()). -spec start_link - (rabbit_net:socket(), rabbit_channel:channel_number(), + (rabbit_net:socket(), rabbit_types:channel_number(), non_neg_integer(), rabbit_types:protocol(), pid(), rabbit_types:proc_name(), boolean(), undefined|non_neg_integer()) -> rabbit_types:ok(pid()). @@ -123,11 +123,11 @@ 'ok'. -spec flush(pid()) -> 'ok'. -spec internal_send_command - (rabbit_net:socket(), rabbit_channel:channel_number(), + (rabbit_net:socket(), rabbit_types:channel_number(), rabbit_framing:amqp_method_record(), rabbit_types:protocol()) -> 'ok'. -spec internal_send_command - (rabbit_net:socket(), rabbit_channel:channel_number(), + (rabbit_net:socket(), rabbit_types:channel_number(), rabbit_framing:amqp_method_record(), rabbit_types:content(), non_neg_integer(), rabbit_types:protocol()) -> 'ok'. diff --git a/deps/rabbitmq_amqp1_0/BUILD.bazel b/deps/rabbitmq_amqp1_0/BUILD.bazel index 24e910428934..acab0966f56b 100644 --- a/deps/rabbitmq_amqp1_0/BUILD.bazel +++ b/deps/rabbitmq_amqp1_0/BUILD.bazel @@ -52,11 +52,11 @@ xref( plt( name = "base_plt", - plt = "//:base_plt", apps = [ "ssl", ], libs = ["//deps/rabbitmq_cli:elixir"], + plt = "//:base_plt", deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS + RUNTIME_DEPS, ) diff --git a/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel b/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel index 3862f022bba8..f8b39dc75457 100644 --- a/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel +++ b/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel @@ -25,12 +25,17 @@ RUNTIME_DEPS = [ "//deps/rabbit:erlang_app", ] +EXTRA_APPS = [ + "public_key", +] + rabbitmq_app( 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, ) @@ -39,7 +44,9 @@ xref() plt( name = "base_plt", - deps = DEPS, + apps = EXTRA_APPS, + plt = "//:base_plt", + deps = DEPS + RUNTIME_DEPS, ) dialyze( diff --git a/deps/rabbitmq_aws/BUILD.bazel b/deps/rabbitmq_aws/BUILD.bazel index e981203736f7..38fb627d09a9 100644 --- a/deps/rabbitmq_aws/BUILD.bazel +++ b/deps/rabbitmq_aws/BUILD.bazel @@ -46,8 +46,8 @@ xref( plt( name = "base_plt", - plt = "//:base_plt", apps = EXTRA_APPS, + plt = "//:base_plt", deps = BUILD_DEPS, ) diff --git a/deps/rabbitmq_cli/BUILD.bazel b/deps/rabbitmq_cli/BUILD.bazel index 32f7006b0185..2f081cb9a16f 100644 --- a/deps/rabbitmq_cli/BUILD.bazel +++ b/deps/rabbitmq_cli/BUILD.bazel @@ -5,7 +5,7 @@ load(":rabbitmqctl_check_formatted.bzl", "rabbitmqctl_check_formatted_test") load(":rabbitmqctl_test.bzl", "rabbitmqctl_test") load("//:rabbitmq_home.bzl", "rabbitmq_home") load("//:rabbitmq_run.bzl", "rabbitmq_run") -load("//:rabbitmq.bzl", "RABBITMQ_DIALYZER_OPTS", "STARTS_BACKGROUND_BROKER_TAG") +load("//:rabbitmq.bzl", "RABBITMQ_DIALYZER_OPTS", "STARTS_BACKGROUND_BROKER_TAG", "without") # Note: All the various rabbitmq-* scripts are just copies of rabbitmqctl rabbitmqctl( @@ -74,6 +74,14 @@ test_suite( plt( name = "deps_plt", + apps = [ + "kernel", + "stdlib", + "erts", + "mnesia", + "public_key", + "runtime_tools", + ], libs = [":elixir"], deps = [ ":elixir", @@ -83,7 +91,11 @@ plt( ) dialyze( - dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + dialyzer_opts = without( + # Some Elixir.CSV, Elixir.JSON and Elixir.Logger functions are unknown + "-Wunknown", + RABBITMQ_DIALYZER_OPTS, + ), libs = [":elixir"], plt = ":deps_plt", ) diff --git a/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel b/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel index 7ff0e89b0d32..24a9ee08d762 100644 --- a/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel +++ b/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel @@ -42,9 +42,9 @@ xref( plt( name = "base_plt", - plt = "//:base_plt", apps = ["mnesia"], libs = ["//deps/rabbitmq_cli:elixir"], + plt = "//:base_plt", deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS, ) diff --git a/deps/rabbitmq_mqtt/BUILD.bazel b/deps/rabbitmq_mqtt/BUILD.bazel index 4c7b246da1c6..db88f5d2511c 100644 --- a/deps/rabbitmq_mqtt/BUILD.bazel +++ b/deps/rabbitmq_mqtt/BUILD.bazel @@ -57,6 +57,8 @@ DEPS = [ "@ranch//:erlang_app", ] +EXTRA_APPS = [ "ssl" ] + rabbitmq_app( app_description = APP_DESCRIPTION, app_env = APP_ENV, @@ -65,6 +67,7 @@ rabbitmq_app( app_name = APP_NAME, build_deps = BUILD_DEPS, deps = DEPS, + extra_apps = EXTRA_APPS, ) xref( @@ -73,6 +76,8 @@ xref( plt( name = "base_plt", + plt = "//:base_plt", + apps = EXTRA_APPS, libs = ["//deps/rabbitmq_cli:elixir"], deps = ["//deps/rabbitmq_cli:elixir"] + BUILD_DEPS + DEPS, ) diff --git a/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel b/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel index 339b7ed52fb2..202378ddbb8f 100644 --- a/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel +++ b/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel @@ -8,6 +8,7 @@ load( "rabbitmq_app", "rabbitmq_integration_suite", "rabbitmq_suite", + "without", ) APP_NAME = "rabbitmq_peer_discovery_etcd" @@ -24,7 +25,6 @@ DEPS = [ RUNTIME_DEPS = [ "//deps/rabbit:erlang_app", "@eetcd//:erlang_app", - "@gun//:erlang_app", ] rabbitmq_app( @@ -40,11 +40,18 @@ xref() plt( name = "base_plt", plt = "//:base_plt", - deps = DEPS, + deps = DEPS + without( + # eetcd uses subdirectories in `src/`, and this confuses dialyzer. + "@eetcd//:erlang_app", + RUNTIME_DEPS, + ), ) dialyze( - dialyzer_opts = RABBITMQ_DIALYZER_OPTS, + dialyzer_opts = without( + "-Wunknown", # also because of `eetcd' + RABBITMQ_DIALYZER_OPTS + ), plt = ":base_plt", ) diff --git a/deps/rabbitmq_stream_common/BUILD.bazel b/deps/rabbitmq_stream_common/BUILD.bazel index 8e61aa4b2ac2..4a562f26cb6e 100644 --- a/deps/rabbitmq_stream_common/BUILD.bazel +++ b/deps/rabbitmq_stream_common/BUILD.bazel @@ -1,5 +1,5 @@ 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", @@ -12,16 +12,27 @@ APP_NAME = "rabbitmq_stream_common" APP_DESCRIPTION = "RabbitMQ Stream Common" +BUILD_DEPS = [ + "@osiris//:erlang_app", +] + rabbitmq_app( app_description = APP_DESCRIPTION, app_name = APP_NAME, + build_deps = BUILD_DEPS, ) xref() +plt( + name = "base_plt", + plt = "//:base_plt", + deps = BUILD_DEPS, +) + dialyze( dialyzer_opts = RABBITMQ_DIALYZER_OPTS, - plt = "//:base_plt", + plt = ":base_plt", ) rabbitmq_suite( diff --git a/deps/rabbitmq_web_mqtt/BUILD.bazel b/deps/rabbitmq_web_mqtt/BUILD.bazel index 6ac2d1251a5b..89c3e960057b 100644 --- a/deps/rabbitmq_web_mqtt/BUILD.bazel +++ b/deps/rabbitmq_web_mqtt/BUILD.bazel @@ -41,6 +41,10 @@ RUNTIME_DEPS = [ "//deps/rabbit:erlang_app", ] +EXTRA_APPS = [ + "ssl", +] + rabbitmq_app( app_description = APP_DESCRIPTION, app_env = APP_ENV, @@ -49,6 +53,7 @@ rabbitmq_app( build_deps = BUILD_DEPS, runtime_deps = RUNTIME_DEPS, deps = DEPS, + extra_apps = EXTRA_APPS, ) xref() @@ -56,6 +61,7 @@ xref() plt( name = "base_plt", plt = "//:base_plt", + apps = EXTRA_APPS, deps = BUILD_DEPS + DEPS + RUNTIME_DEPS, ) diff --git a/rabbitmq.bzl b/rabbitmq.bzl index d6c96804462d..9ff6d6741abf 100644 --- a/rabbitmq.bzl +++ b/rabbitmq.bzl @@ -41,6 +41,7 @@ RABBITMQ_TEST_ERLC_OPTS = DEFAULT_TEST_ERLC_OPTS + [ RABBITMQ_DIALYZER_OPTS = [ "-Werror_handling", "-Wunmatched_returns", + "-Wunknown", ] APP_VERSION = "3.12.0"