diff options
author | Philip Kuryloski <kuryloskip@vmware.com> | 2021-03-29 11:01:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-29 11:01:43 +0200 |
commit | 388654c5422409ccb7f26bf9e267d9aff4a52ba0 (patch) | |
tree | aff7b9db6cc3120fd851fd5a87b220b59717c3d2 /BUILD.bazel | |
parent | e98b343095c163da7732eda1aaad9a9f20054664 (diff) | |
download | rabbitmq-server-git-388654c5422409ccb7f26bf9e267d9aff4a52ba0.tar.gz |
Add a partial Bazel build (#2938)
Adds WORKSPACE.bazel, BUILD.bazel & *.bzl files for partial build & test with Bazel. Introduces a build-time dependency on https://github.com/rabbitmq/bazel-erlang
Diffstat (limited to 'BUILD.bazel')
-rw-r--r-- | BUILD.bazel | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/BUILD.bazel b/BUILD.bazel new file mode 100644 index 0000000000..b3f3e2e1b2 --- /dev/null +++ b/BUILD.bazel @@ -0,0 +1,124 @@ +load("elixir_home.bzl", "elixir_home") +load(":rabbitmq_home.bzl", "rabbitmq_home") +load(":rabbitmq_run.bzl", "rabbitmq_run", "rabbitmq_run_command") +load(":rabbitmqctl.bzl", "rabbitmqctl") +load(":rabbitmq.bzl", "management_plugins", "required_plugins") + +exports_files([ + "scripts/bazel/rabbitmq-run.sh", +]) + +# This allows us to +# `bazel build //my/target \ +# --//:elixir_home=/path/to/elixir/installation` +elixir_home( + name = "elixir_home", + build_setting_default = "~/.kiex/elixirs/elixir-1.10.4", + visibility = ["//visibility:public"], +) + +platform( + name = "erlang_22_platform", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:x86_64", + "@bazel_tools//tools/cpp:clang", + ], + exec_properties = { + "OSFamily": "Linux", + "container-image": "docker://pivotalrabbitmq/rabbitmq-server-buildenv:linux-erlang-22.3", + }, +) + +platform( + name = "erlang_23_platform", + constraint_values = [ + "@platforms//os:linux", + "@platforms//cpu:x86_64", + "@bazel_tools//tools/cpp:clang", + ], + exec_properties = { + "OSFamily": "Linux", + "container-image": "docker://pivotalrabbitmq/rabbitmq-server-buildenv:linux-erlang-23.2", + }, +) + +rabbitmq_home( + name = "broker-home", + plugins = required_plugins(rabbitmq_workspace = "@"), +) + +rabbitmq_home( + name = "broker-management-home", + plugins = required_plugins(rabbitmq_workspace = "@") + management_plugins(rabbitmq_workspace = "@"), +) + +rabbitmq_home( + name = "broker-for-tests-home", + testonly = True, + plugins = [ + "//deps/rabbit:test_bazel_erlang_lib", # <- compiled with test erlc_opts + "@rabbitmq_ct_client_helpers//:bazel_erlang_lib", + "@inet_tcp_proxy//:bazel_erlang_lib", + "@meck//:bazel_erlang_lib", + ], +) + +rabbitmq_home( + name = "broker-for-cli-tests-home", + plugins = required_plugins(rabbitmq_workspace = "@") + [ + "//deps/rabbitmq_federation:bazel_erlang_lib", + "//deps/rabbitmq_stomp:bazel_erlang_lib", + "//deps/amqp_client:bazel_erlang_lib", + ], +) + +rabbitmq_run( + name = "rabbitmq-run", + home = ":broker-home", + visibility = ["//visibility:public"], +) + +rabbitmq_run( + name = "rabbitmq-management-run", + home = ":broker-management-home", + visibility = ["//visibility:public"], +) + +rabbitmq_run( + name = "rabbitmq-for-tests-run", + testonly = True, + home = ":broker-for-tests-home", + visibility = ["//visibility:public"], +) + +rabbitmq_run( + name = "rabbitmq-for-cli-tests-run", + testonly = True, + home = ":broker-for-cli-tests-home", + visibility = ["//visibility:public"], +) + +# Allow us to `bazel run broker` +# for the equivalent of `make run-broker` +# (though it as of yet includes no plugins) +rabbitmq_run_command( + name = "broker", + rabbitmq_run = ":rabbitmq-run", + subcommand = "run-broker", +) + +# `bazel run broker-management` for the broker with just the +# management plugin +rabbitmq_run_command( + name = "broker-management", + rabbitmq_run = ":rabbitmq-management-run", + subcommand = "run-broker", +) + +# `bazel run rabbitmqctl` +rabbitmqctl( + name = "rabbitmqctl", + home = ":broker-home", + visibility = ["//visibility:public"], +) |