Skip to content

Commit

Permalink
Use gazelle generated bazel files
Browse files Browse the repository at this point in the history
Bazel build files are now maintained primarily with `bazel run
gazelle`. This will analyze and merge changes into the build files as
necessitated by certain code changes (e.g. the introduction of new
modules).

In some cases there hints to gazelle in the build files, such as `#
gazelle:erlang...` or `# keep` comments. xref checks on plugins that
depend on the cli are a good example.
  • Loading branch information
HoloRin committed Apr 17, 2023
1 parent e507469 commit 8de8f59
Show file tree
Hide file tree
Showing 127 changed files with 9,952 additions and 1,419 deletions.
14 changes: 11 additions & 3 deletions BAZEL.md
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected]` 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

Expand Down
112 changes: 107 additions & 5 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -4,29 +4,88 @@ 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",
"scripts/bazel/rabbitmq-run.bat",
"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",
)

Expand Down Expand Up @@ -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"],
)

Expand Down Expand Up @@ -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",
Expand All @@ -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__"],
)
20 changes: 11 additions & 9 deletions bazel/BUILD.eetcd
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ erlc_opts(
"+debug_info",
"+deterministic",
],
}), # keep
}),
visibility = [":__subpackages__"],
)

Expand Down Expand Up @@ -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",
)

Expand Down Expand Up @@ -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(
Expand All @@ -161,7 +161,9 @@ filegroup(

filegroup(
name = "licenses",
srcs = ["LICENSE"],
srcs = [
"LICENSE",
],
)

filegroup(
Expand Down
92 changes: 59 additions & 33 deletions deps/amqp10_client/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
load("@rules_erlang//:eunit2.bzl", "eunit")
load("@rules_erlang//:xref2.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
Expand All @@ -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"

Expand Down Expand Up @@ -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()
Expand All @@ -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",
)
Loading

0 comments on commit 8de8f59

Please sign in to comment.