Updates for rules_erlang 2.5.0

rabbitmq_cli uses some private rules_erlang apis that have changed in
the upcoming release

Additionally:
- Avoid including both standard and test versions of amqp_client in
integration test suites
- Eliminate most of the compilation order hints (explicit first_srcs)
in the bazel build
- Fix an include statement - in bazel, an app is not available to
itself as a library at compilation time
This commit is contained in:
Philip Kuryloski 2022-04-05 12:02:42 +02:00
parent 3ef09778f3
commit a22234f6eb
15 changed files with 57 additions and 141 deletions

View File

@ -3,23 +3,10 @@ load("@rules_erlang//:erlang_app_info.bzl", "erlang_app_info")
load("@rules_erlang//:erlang_app.bzl", "DEFAULT_ERLC_OPTS")
load("@rules_erlang//:erlc.bzl", "erlc")
FIRST_SRCS = [
"src/ranch_transport.erl",
]
erlc(
name = "first_beam_files",
hdrs = glob(["include/**/*.hrl", "src/**/*.hrl"]),
srcs = glob(FIRST_SRCS),
erlc_opts = DEFAULT_ERLC_OPTS,
dest = "ebin",
)
erlc(
name = "beam_files",
hdrs = glob(["include/**/*.hrl", "src/**/*.hrl"]),
srcs = glob(["src/**/*.erl"], exclude = FIRST_SRCS),
beam = [":first_beam_files"],
srcs = glob(["src/**/*.erl"]),
erlc_opts = DEFAULT_ERLC_OPTS,
dest = "ebin",
)
@ -35,7 +22,7 @@ app_file(
name = "app_file",
app_name = "ranch",
app_version = "2.1.0",
modules = [":first_beam_files", ":beam_files"],
modules = [":beam_files"],
)
erlang_app_info(
@ -43,6 +30,6 @@ erlang_app_info(
app_name = "ranch",
app = ":app_file",
hdrs = glob(["include/**/*.hrl"]),
beam = [":first_beam_files", ":beam_files", ":appup"],
beam = [":beam_files", ":appup"],
visibility = ["//visibility:public"],
)

View File

@ -59,7 +59,7 @@ rules_pkg_dependencies()
git_repository(
name = "rules_erlang",
commit = "04e49d17027b461864eab8dcc80ea6c298bfc331",
commit = "a31781efbb39a7206ce0ae5ffbf64c588430d9f8",
remote = "https://github.com/rabbitmq/rules_erlang.git",
)

View File

@ -16,6 +16,26 @@ APP_DESCRIPTION = "AMQP 1.0 client from the RabbitMQ Project"
APP_MODULE = "amqp10_client_app"
APP_EXTRA_KEYS = """%% Hex.pm package informations.
{licenses, ["MPL-2.0"]},
{links, [
{"Website", "https://www.rabbitmq.com/"},
{"GitHub", "https://github.com/rabbitmq/rabbitmq-server/deps/amqp10_client"}
]},
{build_tools, ["make", "rebar3"]},
{files, [
"erlang.mk",
"git-revisions.txt",
"include",
"LICENSE*",
"Makefile",
"rabbitmq-components.mk",
"README",
"README.md",
"src"
]}
"""
EXTRA_APPS = [
"ssl",
"inets",
@ -32,6 +52,7 @@ DEPS = [
rabbitmq_app(
app_description = APP_DESCRIPTION,
app_extra_keys = APP_EXTRA_KEYS,
app_module = APP_MODULE,
app_name = APP_NAME,
build_deps = BUILD_DEPS,

View File

@ -33,10 +33,6 @@ rabbitmq_app(
"amqp_sup",
],
extra_apps = EXTRA_APPS,
first_srcs = [
"src/amqp_gen_connection.erl",
"src/amqp_gen_consumer.erl",
],
deps = DEPS,
)

View File

@ -194,14 +194,6 @@ EXTRA_APPS = [
"xmerl",
]
FIRST_SRCS = [
"src/rabbit_tracking.erl",
"src/rabbit_queue_type.erl",
"src/rabbit_credential_validator.erl",
"src/rabbit_policy_merge_strategy.erl",
"src/rabbit_queue_master_locator.erl",
]
rabbitmq_app(
app_description = "RabbitMQ",
app_env = _APP_ENV,
@ -209,7 +201,6 @@ rabbitmq_app(
app_name = "rabbit",
app_registered = APP_REGISTERED,
extra_apps = EXTRA_APPS,
first_srcs = FIRST_SRCS,
runtime_deps = RUNTIME_DEPS,
deps = DEPS,
)

View File

@ -89,33 +89,13 @@ app_file(
deps = DEPS + RUNTIME_DEPS,
)
FIRST_SRCS = [
"src/gen_server2.erl",
"src/rabbit_authn_backend.erl",
"src/rabbit_authz_backend.erl",
"src/rabbit_registry_class.erl",
]
erlc(
name = "first_beam_files",
srcs = glob(FIRST_SRCS),
hdrs = HDRS,
dest = "ebin",
erlc_opts = RABBITMQ_ERLC_OPTS,
deps = DEPS,
)
erlc(
name = "beam_files",
srcs = glob(
["src/*.erl"],
exclude = FIRST_SRCS,
) + [
srcs = glob(["src/*.erl"]) + [
"src/rabbit_framing_amqp_0_8.erl",
"src/rabbit_framing_amqp_0_9_1.erl",
],
hdrs = HDRS,
beam = [":first_beam_files"],
dest = "ebin",
erlc_opts = RABBITMQ_ERLC_OPTS,
deps = DEPS,
@ -126,36 +106,19 @@ erlang_app_info(
hdrs = HDRS,
app = ":app_file",
app_name = APP_NAME,
beam = [
":first_beam_files",
":beam_files",
],
beam = [":beam_files"],
visibility = ["//visibility:public"],
deps = DEPS + RUNTIME_DEPS,
)
erlc(
name = "first_test_beam_files",
testonly = True,
srcs = glob(FIRST_SRCS),
hdrs = HDRS,
dest = "src",
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = DEPS,
)
erlc(
name = "test_beam_files",
testonly = True,
srcs = glob(
["src/*.erl"],
exclude = FIRST_SRCS,
) + [
srcs = glob(["src/*.erl"]) + [
"src/rabbit_framing_amqp_0_8.erl",
"src/rabbit_framing_amqp_0_9_1.erl",
],
hdrs = HDRS,
beam = [":first_test_beam_files"],
dest = "src",
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = DEPS,
@ -167,10 +130,7 @@ erlang_app_info(
hdrs = HDRS,
app = ":app_file",
app_name = APP_NAME,
beam = [
":first_test_beam_files",
":test_beam_files",
],
beam = [":test_beam_files"],
visibility = ["//:__subpackages__"],
deps = DEPS + RUNTIME_DEPS,
)

View File

@ -32,16 +32,11 @@ RUNTIME_DEPS = [
"//deps/rabbit:erlang_app",
]
FIRST_SRCS = [
"src/rabbit_auth_cache.erl",
]
rabbitmq_app(
app_description = APP_DESCRIPTION,
app_env = APP_ENV,
app_module = APP_MODULE,
app_name = APP_NAME,
first_srcs = FIRST_SRCS,
runtime_deps = RUNTIME_DEPS,
deps = DEPS,
)

View File

@ -1,4 +1,8 @@
load("@rules_erlang//:erlang_home.bzl", "ErlangHomeProvider", "ErlangVersionProvider")
load(
"@rules_erlang//:erlang_home.bzl",
"ErlangHomeProvider",
"ErlangVersionProvider",
)
load(
"@rules_erlang//:erlang_app_info.bzl",
"ErlangAppInfo",
@ -11,23 +15,26 @@ load(
"windows_path",
)
load(
"@rules_erlang//private:ct.bzl",
"ERL_LIBS_DIR",
"code_paths",
"@rules_erlang//private:util.bzl",
"erl_libs_contents",
)
load("//:elixir_home.bzl", "ElixirHomeProvider")
load(
"//:elixir_home.bzl",
"ElixirHomeProvider",
)
def _impl(ctx):
erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version
erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path
elixir_home = ctx.attr._elixir_home[ElixirHomeProvider].path
erl_libs_files = erl_libs_contents(ctx, headers = True)
erl_libs_dir = ctx.label.name + "_deps"
erl_libs_files = erl_libs_contents(ctx, headers = True, dir = erl_libs_dir)
package_dir = path_join(ctx.label.workspace_root, ctx.label.package)
erl_libs_path = path_join(package_dir, ERL_LIBS_DIR)
erl_libs_path = path_join(package_dir, erl_libs_dir)
if not ctx.attr.is_windows:
output = ctx.actions.declare_file(ctx.label.name)

View File

@ -38,10 +38,6 @@ APP_ENV = """[
{content_security_policy, "script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'"}
]"""
FIRST_SRCS = [
"src/rabbit_mgmt_extension.erl",
]
DEPS = [
"//deps/amqp_client:erlang_app",
"//deps/rabbit_common:erlang_app",
@ -72,7 +68,6 @@ rabbitmq_app(
app_name = APP_NAME,
extra_apps = EXTRA_APPS,
extra_priv = [":rabbitmqadmin"],
first_srcs = FIRST_SRCS,
runtime_deps = RUNTIME_DEPS,
deps = DEPS,
)

View File

@ -41,10 +41,6 @@ APP_ENV = """[
{sparkplug, false}
]"""
FIRST_SRCS = [
"src/rabbit_mqtt_retained_msg_store.erl",
]
BUILD_DEPS = [
"//deps/rabbitmq_cli:rabbitmqctl",
]
@ -66,7 +62,6 @@ rabbitmq_app(
app_module = APP_MODULE,
app_name = APP_NAME,
build_deps = BUILD_DEPS,
first_srcs = FIRST_SRCS,
runtime_deps = RUNTIME_DEPS,
deps = DEPS,
)

View File

@ -54,9 +54,6 @@ rabbitmq_app(
app_name = APP_NAME,
build_deps = BUILD_DEPS,
extra_apps = EXTRA_APPS,
first_srcs = [
"src/rabbit_shovel_behaviour.erl",
],
runtime_deps = RUNTIME_DEPS,
deps = DEPS,
)

View File

@ -18,7 +18,7 @@
-behaviour(gen_server).
-include_lib("rabbitmq_stream/include/rabbit_stream_metrics.hrl").
-include("rabbit_stream_metrics.hrl").
-record(state, {timer, interval}).

View File

@ -41,9 +41,6 @@ rabbitmq_app(
app_module = APP_MODULE,
app_name = APP_NAME,
extra_apps = EXTRA_APPS,
first_srcs = [
"src/rabbit_trust_store_certificate_provider.erl",
],
runtime_deps = RUNTIME_DEPS,
deps = DEPS,
)

View File

@ -100,9 +100,9 @@ def rabbitmq_app(
app_description = "",
app_module = "",
app_registered = [],
app_env = "[]",
app_env = "",
app_extra_keys = "",
extra_apps = [],
first_srcs = [],
extra_priv = [],
build_deps = [],
deps = [],
@ -114,13 +114,13 @@ def rabbitmq_app(
app_module = app_module,
app_registered = app_registered,
app_env = app_env,
app_extra = app_extra_keys,
extra_apps = extra_apps,
extra_priv = extra_priv,
erlc_opts = select({
"//:debug_build": without("+deterministic", RABBITMQ_ERLC_OPTS),
"//conditions:default": RABBITMQ_ERLC_OPTS,
}),
first_srcs = first_srcs,
build_deps = build_deps,
deps = deps,
runtime_deps = runtime_deps,
@ -133,13 +133,13 @@ def rabbitmq_app(
app_module = app_module,
app_registered = app_registered,
app_env = app_env,
app_extra = app_extra_keys,
extra_apps = extra_apps,
extra_priv = extra_priv,
erlc_opts = select({
"//:debug_build": without("+deterministic", RABBITMQ_TEST_ERLC_OPTS),
"//conditions:default": RABBITMQ_TEST_ERLC_OPTS,
}),
first_srcs = first_srcs,
build_deps = with_test_versions(build_deps),
deps = with_test_versions(deps),
runtime_deps = with_test_versions(runtime_deps),
@ -184,6 +184,13 @@ def rabbitmq_integration_suite(
deps = [],
runtime_deps = [],
**kwargs):
extra_deps = [
"//deps/rabbit_common:erlang_app",
"//deps/rabbitmq_ct_helpers:erlang_app",
]
if package != "deps/amqp_client":
extra_deps.append("//deps/amqp_client:erlang_app")
ct_suite(
name = name,
suite_name = name,
@ -211,11 +218,7 @@ def rabbitmq_integration_suite(
"//deps/rabbitmq_cli:rabbitmqctl",
"//deps/rabbitmq_ct_client_helpers:erlang_app",
] + runtime_deps,
deps = [
"//deps/amqp_client:erlang_app",
"//deps/rabbit_common:erlang_app",
"//deps/rabbitmq_ct_helpers:erlang_app",
] + deps,
deps = extra_deps + deps,
**kwargs
)
@ -242,11 +245,7 @@ def rabbitmq_integration_suite(
"//deps/rabbitmq_cli:rabbitmqctl",
"//deps/rabbitmq_ct_client_helpers:erlang_app",
] + runtime_deps,
deps = [
"//deps/amqp_client:erlang_app",
"//deps/rabbit_common:erlang_app",
"//deps/rabbitmq_ct_helpers:erlang_app",
] + deps,
deps = extra_deps + deps,
**kwargs
)

View File

@ -35,11 +35,6 @@ def rabbitmq_external_deps(rabbitmq_workspace = "@rabbitmq-server"):
hex_pm_erlang_app(
name = "cowboy",
first_srcs = [
"src/cowboy_stream.erl",
"src/cowboy_middleware.erl",
"src/cowboy_sub_protocol.erl",
],
version = "2.8.0",
sha256 = "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a",
deps = [
@ -114,9 +109,6 @@ erlang_app(
name = "gun",
version = "1.3.3",
sha256 = "3106ce167f9c9723f849e4fb54ea4a4d814e3996ae243a1c828b256e749041e0",
first_srcs = [
"src/gun_content_handler.erl",
],
runtime_deps = [
"@cowlib//:erlang_app",
],
@ -143,9 +135,6 @@ erlang_app(
version = "2b1d66b5f4fbe33cb198149a8cb23895a2c877ea",
first_srcs = [
"src/jose_block_encryptor.erl",
"src/jwk/jose_jwk_use_enc.erl",
"src/jwk/jose_jwk_use_sig.erl",
"src/jwk/jose_jwk_oct.erl",
],
sha256 = "7816f39d00655f2605cfac180755e97e268dba86c2f71037998ff63792ca727b",
)
@ -176,12 +165,6 @@ erlang_app(
hex_pm_erlang_app(
name = "prometheus",
version = "4.8.2",
first_srcs = [
"src/prometheus_collector.erl",
"src/prometheus_format.erl",
"src/prometheus_instrumenter.erl",
"src/prometheus_metric.erl",
],
deps = [
"@quantile_estimator//:erlang_app",
],
@ -190,10 +173,6 @@ erlang_app(
github_erlang_app(
name = "proper",
first_srcs = [
"src/vararg.erl",
"src/proper_target.erl",
],
org = "manopapad",
)
@ -255,9 +234,6 @@ erlang_app(
sha256 = "01c31c31d4d28e564da0660bdb69725ba37173fca5b3228829b8f3f416f9e486",
ref = "4.0.0",
version = "4.0.0",
first_srcs = [
"src/syslog_logger.erl",
],
)
hex_pm_erlang_app(