summaryrefslogtreecommitdiff
path: root/BUILD.bazel
diff options
context:
space:
mode:
authorPhilip Kuryloski <kuryloskip@vmware.com>2021-03-29 11:01:43 +0200
committerGitHub <noreply@github.com>2021-03-29 11:01:43 +0200
commit388654c5422409ccb7f26bf9e267d9aff4a52ba0 (patch)
treeaff7b9db6cc3120fd851fd5a87b220b59717c3d2 /BUILD.bazel
parente98b343095c163da7732eda1aaad9a9f20054664 (diff)
downloadrabbitmq-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.bazel124
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"],
+)