rabbitmq-server/BUILD.bazel

259 lines
6.1 KiB
Python
Raw Normal View History

load("@rules_pkg//:pkg.bzl", "pkg_tar")
load("@rules_erlang//:dialyze.bzl", "plt")
load("@rules_erlang//:shell.bzl", "shell")
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")
2021-12-18 00:06:52 +08:00
load(":rabbitmq.bzl", "APP_VERSION", "all_plugins")
load(":dist.bzl", "collect_licenses", "versioned_rabbitmq_home")
exports_files([
"scripts/bazel/rabbitmq-run.sh",
"scripts/bazel/rabbitmq-run.bat",
])
config_setting(
name = "debug_build",
values = {
"compilation_mode": "dbg",
},
)
# 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_git_platform",
constraint_values = [
"@platforms//os:linux",
"@platforms//cpu:x86_64",
"@bazel_tools//tools/cpp:clang",
],
exec_properties = {
"OSFamily": "Linux",
# linux-erlang-git-master
"container-image": "docker://pivotalrabbitmq/rabbitmq-server-buildenv@sha256:5d4fa38f723186668a497a8ee57e22010187e9347add5d4a7cc199dc13f1493f",
},
)
plt(
name = "base_plt",
visibility = ["//visibility:public"],
)
rabbitmq_home(
name = "broker-home",
2021-12-18 00:06:52 +08:00
plugins = all_plugins(rabbitmq_workspace = ""),
)
rabbitmq_run(
name = "rabbitmq-run",
home = ":broker-home",
visibility = ["//visibility:public"],
)
# Allow us to `bazel run broker`
# for the equivalent of `make run-broker`
rabbitmq_run_command(
name = "broker",
rabbitmq_run = ":rabbitmq-run",
subcommand = "run-broker",
)
# `bazel run rabbitmqctl`
rabbitmqctl(
name = "rabbitmqctl",
home = ":broker-home",
visibility = ["//visibility:public"],
)
2021-06-02 21:07:46 +08:00
rabbitmqctl(
name = "rabbitmq-diagnostics",
home = ":broker-home",
)
rabbitmqctl(
name = "rabbitmq-plugins",
home = ":broker-home",
)
shell(
name = "repl",
2021-12-18 00:06:52 +08:00
deps = all_plugins(rabbitmq_workspace = ""),
)
collect_licenses(
name = "licenses",
srcs = glob(
["LICENSE*"],
exclude = [
"LICENSE.md",
"LICENSE.txt",
],
),
2021-12-18 00:06:52 +08:00
deps = all_plugins(rabbitmq_workspace = ""),
)
versioned_rabbitmq_home(
name = "dist-home",
2021-12-18 00:06:52 +08:00
plugins = all_plugins(rabbitmq_workspace = ""),
)
pkg_tar(
name = "license-files",
srcs = [
":licenses",
"//deps/rabbit:INSTALL",
],
visibility = ["//visibility:public"],
)
pkg_tar(
name = "scripts",
srcs = [
"scripts/bash_autocomplete.sh",
"scripts/rabbitmq-script-wrapper",
"scripts/rabbitmqctl-autocomplete.sh",
"scripts/zsh_autocomplete.sh",
],
package_dir = "scripts",
visibility = ["//visibility:public"],
)
pkg_tar(
name = "release-notes",
srcs = glob([
"release-notes/*.md",
"release-notes/*.txt",
]),
package_dir = "release-notes",
visibility = ["//visibility:public"],
)
pkg_tar(
name = "package-generic-unix",
srcs = [
":dist-home",
],
extension = "tar.xz",
package_dir = "rabbitmq_server-{}".format(APP_VERSION),
strip_prefix = "dist-home",
visibility = ["//visibility:public"],
deps = [
":license-files",
":release-notes",
":scripts",
"//deps/rabbit:manpages-dir",
],
)
genrule(
name = "test-logs",
outs = ["open-test-logs.sh"],
cmd = """set -euo pipefail
cat << 'EOF' > $@
set -euo pipefail
if [ $$# -eq 0 ]; then
echo "Usage: bazel run test-logs TEST_LABEL [shard_index]"
exit 1
fi
RELATIVE=$${1#//}
PACKAGE=$${RELATIVE%%:*}
SUITE=$${RELATIVE##*:}
OUTPUT_DIR=test.outputs
if [ $$# -gt 1 ]; then
OUTPUT_DIR=shard_$$2_of_*/test.outputs
fi
open bazel-testlogs/$$PACKAGE/$$SUITE/$$OUTPUT_DIR/index.html
EOF
""",
executable = True,
)
genrule(
name = "remote-test-logs",
outs = ["open-remote-test-logs.sh"],
cmd = """set -euo pipefail
cat << 'EOF' > $@
set -euo pipefail
if [ $$# -eq 0 ]; then
echo "Usage: bazel run remote-test-logs TEST_LABEL [shard_index]"
exit 1
fi
RELATIVE=$${1#//}
PACKAGE=$${RELATIVE%%:*}
SUITE=$${RELATIVE##*:}
OUTPUT_DIR=test.outputs
if [ $$# -gt 1 ]; then
OUTPUT_DIR=shard_$$2_of_*/test.outputs
fi
TESTLOGS=$$(echo $$(bazel info output_path)/k8-*/testlogs)
cd $$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR && unzip outputs.zip
open $$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR/index.html
EOF
""",
executable = True,
)
genrule(
name = "test-node-logs",
outs = ["open-test-node-logs.sh"],
cmd = """set -euo pipefail
cat << 'EOF' > $@
set -euo pipefail
if [ $$# -eq 0 ]; then
echo "Usage: bazel run test-node-logs TEST_LABEL [shard_index]"
exit 1
fi
RELATIVE=$${1#//}
PACKAGE=$${RELATIVE%%:*}
SUITE=$${RELATIVE##*:}
OUTPUT_DIR=test.outputs
if [ $$# -gt 1 ]; then
OUTPUT_DIR=shard_$$2_of_*/test.outputs
fi
open bazel-testlogs/$$PACKAGE/$$SUITE/$$OUTPUT_DIR/ct_run.*/deps.*/run.*/log_private
EOF
""",
executable = True,
)
# NOTE: this rule may not work properly if --remote_download_minimal has been used,
# which is currently the default for remote runs
genrule(
name = "remote-test-node-logs",
outs = ["open-remote-test-node-logs.sh"],
cmd = """set -euo pipefail
cat << 'EOF' > $@
set -euo pipefail
if [ $$# -eq 0 ]; then
echo "Usage: bazel run remote-test-node-logs TEST_LABEL [shard_index]"
exit 1
fi
RELATIVE=$${1#//}
PACKAGE=$${RELATIVE%%:*}
SUITE=$${RELATIVE##*:}
OUTPUT_DIR=test.outputs
if [ $$# -gt 1 ]; then
OUTPUT_DIR=shard_$$2_of_*/test.outputs
fi
TESTLOGS=$$(echo $$(bazel info output_path)/k8-*/testlogs)
cd $$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR && unzip outputs.zip
open $$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR/index.html
open $$TESTLOGS/$$PACKAGE/$$SUITE/$$OUTPUT_DIR/ct_run.*/deps.*/run.*/log_private
EOF
""",
executable = True,
)