summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRin Kuryloski <kuryloskip@vmware.com>2023-05-01 10:32:59 +0200
committerRin Kuryloski <kuryloskip@vmware.com>2023-05-15 13:54:14 +0200
commiteb94a58bc9f4db7a226af26d6f57fdfa24076ed8 (patch)
tree7cc1ae03a0b3883dd9454085a5d770e1e9515008
parent1ee8454129b7769fda6dfc1a528e886b290aa258 (diff)
downloadrabbitmq-server-git-eb94a58bc9f4db7a226af26d6f57fdfa24076ed8.tar.gz
Add a workflow to compare the bazel/erlang.mk output
To catch any drift between the builds
-rw-r--r--.github/workflows/check-build-system-equivalence.yaml125
-rw-r--r--BUILD.bazel11
-rw-r--r--MODULE.bazel4
-rw-r--r--bazel/BUILD.ranch53
-rw-r--r--deps/amqp10_client/BUILD.bazel2
-rw-r--r--deps/amqp10_client/Makefile2
-rw-r--r--deps/amqp10_common/BUILD.bazel4
-rw-r--r--deps/rabbit/BUILD.bazel6
-rw-r--r--deps/rabbit/app.bzl5
-rw-r--r--deps/rabbit_common/Makefile2
-rw-r--r--deps/rabbitmq_auth_backend_http/BUILD.bazel4
-rw-r--r--deps/rabbitmq_auth_backend_ldap/Makefile2
-rw-r--r--deps/rabbitmq_auth_backend_oauth2/Makefile1
-rw-r--r--deps/rabbitmq_auth_mechanism_ssl/Makefile1
-rw-r--r--deps/rabbitmq_aws/Makefile2
-rw-r--r--deps/rabbitmq_federation_management/Makefile2
-rw-r--r--deps/rabbitmq_jms_topic_exchange/Makefile1
-rw-r--r--deps/rabbitmq_management/BUILD.bazel3
-rw-r--r--deps/rabbitmq_mqtt/Makefile1
-rw-r--r--deps/rabbitmq_prometheus/BUILD.bazel1
-rw-r--r--deps/rabbitmq_prometheus/Makefile3
-rw-r--r--deps/rabbitmq_stream/Makefile3
-rw-r--r--deps/rabbitmq_trust_store/Makefile2
-rw-r--r--deps/rabbitmq_web_mqtt/Makefile1
-rw-r--r--dist.bzl8
-rw-r--r--rabbitmq.bzl2
-rw-r--r--rabbitmq_home.bzl14
-rwxr-xr-xtools/compare_dist.sh44
-rwxr-xr-xtools/erlang_app_equal68
29 files changed, 315 insertions, 62 deletions
diff --git a/.github/workflows/check-build-system-equivalence.yaml b/.github/workflows/check-build-system-equivalence.yaml
new file mode 100644
index 0000000000..12f999a539
--- /dev/null
+++ b/.github/workflows/check-build-system-equivalence.yaml
@@ -0,0 +1,125 @@
+name: Check Bazel/Erlang.mk Equivalence
+on:
+ schedule:
+ - cron: '0 2 * * *'
+ workflow_dispatch:
+env:
+ erlang_version: 25.3
+ elixir_version: 1.14
+ VERSION: 3.13.0
+ PLUGINS: amqp10_common amqp10_client rabbitmq_amqp1_0 rabbitmq_auth_backend_cache rabbitmq_auth_backend_http rabbitmq_auth_backend_ldap rabbitmq_auth_backend_oauth2 rabbitmq_auth_mechanism_ssl rabbitmq_consistent_hash_exchange rabbitmq_event_exchange rabbitmq_federation rabbitmq_jms_topic_exchange rabbitmq_mqtt rabbitmq_random_exchange rabbitmq_recent_history_exchange rabbitmq_sharding rabbitmq_shovel rabbitmq_stomp rabbitmq_stream rabbitmq_trust_store rabbitmq_web_dispatch rabbitmq_management_agent rabbitmq_management rabbitmq_prometheus rabbitmq_federation_management rabbitmq_shovel_management rabbitmq_stream_management rabbitmq_top rabbitmq_tracing rabbitmq_web_mqtt rabbitmq_web_mqtt_examples rabbitmq_web_stomp rabbitmq_web_stomp_examples rabbitmq_aws rabbitmq_peer_discovery_common rabbitmq_peer_discovery_aws rabbitmq_peer_discovery_k8s rabbitmq_peer_discovery_consul rabbitmq_peer_discovery_etcd
+jobs:
+ build-with-bazel:
+ name: bazel build package-generic-unix.tar.xz
+ runs-on: ubuntu-latest
+ timeout-minutes: 15
+ steps:
+ - name: CHECKOUT REPOSITORY
+ uses: actions/checkout@v3
+ - name: CONFIGURE ERLANG
+ uses: erlef/setup-beam@v1.15.3
+ with:
+ otp-version: ${{ env.erlang_version }}
+ elixir-version: ${{ env.elixir_version }}
+ - name: CONFIGURE BAZEL
+ run: |
+ cat << EOF >> user.bazelrc
+ build --disk_cache=
+ build --color=yes
+ EOF
+ - name: BUILD package-generic-unix.tar.xz
+ run: |
+ bazelisk build //:package-generic-unix
+ - name: RESOLVE ARCHIVES_DIR
+ run: |
+ echo "archives_dir=$(readlink -f bazel-bin)" >> $GITHUB_ENV
+ - name: UPLOAD package-generic-unix.tar.xz
+ uses: actions/upload-artifact@v3.1.2
+ with:
+ name: bazel-package-generic-unix.tar.xz
+ path: ${{ env.archives_dir }}/package-generic-unix.tar.xz
+ if-no-files-found: error
+
+ build-with-make:
+ name: make package-generic-unix.tar.xz
+ runs-on: ubuntu-latest
+ timeout-minutes: 15
+ steps:
+ - name: CHECKOUT REPOSITORY
+ uses: actions/checkout@v3
+ with:
+ path: rabbitmq
+ - name: CONFIGURE ERLANG
+ uses: erlef/setup-beam@v1.15.3
+ with:
+ otp-version: ${{ env.erlang_version }}
+ elixir-version: ${{ env.elixir_version }}
+ - name: BUILD package-generic-unix.tar.xz
+ env:
+ MAKE: make
+ run: |
+ $MAKE -C rabbitmq \
+ source-dist \
+ PACKAGES_DIR="$PWD/PACKAGES" \
+ PLUGINS="$PLUGINS" \
+ PROJECT_VERSION="$VERSION"
+ $MAKE -C rabbitmq/packaging \
+ package-generic-unix \
+ PACKAGES_DIR="$PWD/PACKAGES" \
+ VERSION="$VERSION"
+ - name: UPLOAD package-generic-unix.tar.xz
+ uses: actions/upload-artifact@v3.1.2
+ with:
+ name: make-package-generic-unix.tar.xz
+ path: PACKAGES/rabbitmq-server-generic-unix-*.tar.xz
+ if-no-files-found: error
+
+ compare:
+ needs:
+ - build-with-bazel
+ - build-with-make
+ name: Compare package-generic-unix.tar.xz
+ runs-on: ubuntu-latest
+ timeout-minutes: 10
+ steps:
+ - name: CHECKOUT REPOSITORY
+ uses: actions/checkout@v3
+ with:
+ path: rabbitmq-server
+ - name: CONFIGURE ERLANG
+ uses: erlef/setup-beam@v1.15.3
+ with:
+ otp-version: ${{ env.erlang_version }}
+ elixir-version: ${{ env.elixir_version }}
+ - name: DOWNLOAD bazel-package-generic-unix.tar.xz
+ uses: actions/download-artifact@v3
+ with:
+ name: bazel-package-generic-unix.tar.xz
+ - name: DOWNLOAD make-package-generic-unix.tar.xz
+ uses: actions/download-artifact@v3
+ with:
+ name: make-package-generic-unix.tar.xz
+ - name: EXPAND & COMPARE
+ run: |
+ mkdir bazel
+ pushd bazel
+ tar -xf ${{ github.workspace }}/package-generic-unix.tar.xz
+ find . | sort > ${{ github.workspace }}/bazel.manifest
+ popd
+
+ mkdir make
+ pushd make
+ tar -xf ${{ github.workspace }}/rabbitmq-server-generic-unix-*.tar.xz
+ # delete an empty directory
+ rm -d rabbitmq_server-*/plugins/rabbitmq_random_exchange-*/include
+ find . | sort > ${{ github.workspace }}/make.manifest
+ popd
+
+ tree -L 2 bazel
+ tree -L 2 make
+
+ sleep 1
+
+ set -x
+
+ ./rabbitmq-server/tools/compare_dist.sh make bazel
diff --git a/BUILD.bazel b/BUILD.bazel
index be3f54eede..6eb33f026d 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -69,8 +69,11 @@ exports_files([
# gazelle:exclude deps/*/deps
# gazelle:exclude deps/*/.erlang.mk
# gazelle:exclude deps/rabbitmq_cli/_build
+# gazelle:exclude extra_deps
# gazelle:exclude packaging
# gazelle:exclude PACKAGES
+# gazelle:exclude plugins
+# gazelle:exclude release-notes
# gazelle:exclude logs
# gazelle:erlang_apps_dirs deps
# gazelle:erlang_skip_rules test_erlang_app
@@ -217,13 +220,7 @@ iex_eval(
filegroup(
name = "root-licenses",
- srcs = glob(
- ["LICENSE*"],
- exclude = [
- "LICENSE.md",
- "LICENSE.txt",
- ],
- ),
+ srcs = glob(["LICENSE*"]),
visibility = ["//visibility:public"],
)
diff --git a/MODULE.bazel b/MODULE.bazel
index cb8554377c..e9f23dccb7 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -207,8 +207,8 @@ erlang_package.hex_package(
erlang_package.hex_package(
name = "gen_batch_server",
build_file = "@rabbitmq-server//bazel:BUILD.gen_batch_server",
- sha256 = "94a49a528486298b009d2a1b452132c0a0d68b3e89d17d3764cb1ec879b7557a",
- version = "0.8.7",
+ sha256 = "c3e6a1a2a0fb62aee631a98cfa0fd8903e9562422cbf72043953e2fb1d203017",
+ version = "0.8.8",
)
erlang_package.hex_package(
diff --git a/bazel/BUILD.ranch b/bazel/BUILD.ranch
index 0a84bc5f6c..55380fc576 100644
--- a/bazel/BUILD.ranch
+++ b/bazel/BUILD.ranch
@@ -17,10 +17,12 @@ erlc_opts(
erlang_bytecode(
name = "behaviours",
- srcs = ["src/ranch_transport.erl"],
- outs = ["ebin/ranch_transport.beam"],
- hdrs = [],
+ srcs = [
+ "src/ranch_transport.erl",
+ ],
+ hdrs = [":public_and_private_hdrs"],
app_name = "ranch",
+ dest = "ebin",
erlc_opts = "//:erlc_opts",
)
@@ -44,27 +46,10 @@ erlang_bytecode(
"src/ranch_sup.erl",
"src/ranch_tcp.erl",
],
- outs = [
- "ebin/ranch.beam",
- "ebin/ranch_acceptor.beam",
- "ebin/ranch_acceptors_sup.beam",
- "ebin/ranch_app.beam",
- "ebin/ranch_conns_sup.beam",
- "ebin/ranch_conns_sup_sup.beam",
- "ebin/ranch_crc32c.beam",
- "ebin/ranch_embedded_sup.beam",
- "ebin/ranch_listener_sup.beam",
- "ebin/ranch_protocol.beam",
- "ebin/ranch_proxy_header.beam",
- "ebin/ranch_server.beam",
- "ebin/ranch_server_proxy.beam",
- "ebin/ranch_ssl.beam",
- "ebin/ranch_sup.beam",
- "ebin/ranch_tcp.beam",
- ],
- hdrs = [],
+ hdrs = [":public_and_private_hdrs"],
app_name = "ranch",
beam = [":behaviours"],
+ dest = "ebin",
erlc_opts = "//:erlc_opts",
)
@@ -99,19 +84,15 @@ filegroup(
],
)
-filegroup(
- name = "private_hdrs",
- srcs = [],
-)
+filegroup(name = "private_hdrs")
-filegroup(
- name = "public_hdrs",
- srcs = [],
-)
+filegroup(name = "public_hdrs")
filegroup(
name = "priv",
- srcs = [],
+ srcs = [
+ "ebin/ranch.appup", # keep
+ ],
)
filegroup(
@@ -138,9 +119,12 @@ filegroup(
erlang_app(
name = "erlang_app",
srcs = [":all_srcs"],
+ hdrs = [":public_hdrs"],
app_name = "ranch",
beam_files = [":beam_files"],
extra_apps = ["ssl"],
+ license_files = [":license_files"],
+ priv = [":priv"],
)
alias(
@@ -148,3 +132,10 @@ alias(
actual = ":erlang_app",
visibility = ["//visibility:public"],
)
+
+filegroup(
+ name = "license_files",
+ srcs = [
+ "LICENSE",
+ ],
+)
diff --git a/deps/amqp10_client/BUILD.bazel b/deps/amqp10_client/BUILD.bazel
index 11cef46294..31e961fff0 100644
--- a/deps/amqp10_client/BUILD.bazel
+++ b/deps/amqp10_client/BUILD.bazel
@@ -28,7 +28,7 @@ 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"}
+ {"GitHub", "https://github.com/rabbitmq/rabbitmq-server/tree/main/deps/amqp10_client"}
]},
{build_tools, ["make", "rebar3"]},
{files, [
diff --git a/deps/amqp10_client/Makefile b/deps/amqp10_client/Makefile
index 560d96b415..694e6e076b 100644
--- a/deps/amqp10_client/Makefile
+++ b/deps/amqp10_client/Makefile
@@ -31,7 +31,7 @@ PACKAGES_DIR ?= $(abspath PACKAGES)
BUILD_DEPS = rabbit_common elvis_mk
DEPS = amqp10_common
TEST_DEPS = rabbit rabbitmq_amqp1_0 rabbitmq_ct_helpers
-LOCAL_DEPS = ssl inets crypto
+LOCAL_DEPS = ssl inets crypto public_key
DEP_EARLY_PLUGINS = rabbit_common/mk/rabbitmq-early-test.mk
DEP_PLUGINS = rabbit_common/mk/rabbitmq-macros.mk \
diff --git a/deps/amqp10_common/BUILD.bazel b/deps/amqp10_common/BUILD.bazel
index 09436c8c64..898c539c16 100644
--- a/deps/amqp10_common/BUILD.bazel
+++ b/deps/amqp10_common/BUILD.bazel
@@ -54,7 +54,7 @@ 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_common"}
+ {"GitHub", "https://github.com/rabbitmq/rabbitmq-server/tree/main/deps/amqp10_common"}
]},
{build_tools, ["make", "rebar3"]},
{files, [
@@ -66,7 +66,7 @@ APP_EXTRA_KEYS = """%% Hex.pm package informations.
"rabbitmq-components.mk",
"README",
"README.md",
- "mk"
+ "src"
]}
"""
diff --git a/deps/rabbit/BUILD.bazel b/deps/rabbit/BUILD.bazel
index 000e00d7d7..1607890a6b 100644
--- a/deps/rabbit/BUILD.bazel
+++ b/deps/rabbit/BUILD.bazel
@@ -1140,7 +1140,7 @@ genrule(
outs = ["manpages.tar"],
cmd = """set -euo pipefail
-DESTDIR=manpages-tmp/share/man
+DESTDIR=share/man
mkdir -p $${DESTDIR}
for mp in $(SRCS); do
section=$${mp##*.}
@@ -1148,8 +1148,8 @@ for mp in $(SRCS); do
gzip < $$mp \\
> $${DESTDIR}/man$$section/$$(basename $$mp).gz
done
-tar --strip-components 1 -cf $@ manpages-tmp/*
-rm -dr manpages-tmp
+tar -cf $@ share
+rm -dr share
""",
visibility = ["//visibility:public"],
)
diff --git a/deps/rabbit/app.bzl b/deps/rabbit/app.bzl
index 950cdd31e8..a6b0ff517d 100644
--- a/deps/rabbit/app.bzl
+++ b/deps/rabbit/app.bzl
@@ -501,10 +501,7 @@ def all_srcs(name = "all_srcs"):
filegroup(
name = "priv",
- srcs = [
- "priv/schema/.gitignore",
- "priv/schema/rabbit.schema",
- ],
+ srcs = ["priv/schema/rabbit.schema"], #keep
)
filegroup(
name = "private_hdrs",
diff --git a/deps/rabbit_common/Makefile b/deps/rabbit_common/Makefile
index 7e9802c744..79151b35dc 100644
--- a/deps/rabbit_common/Makefile
+++ b/deps/rabbit_common/Makefile
@@ -28,7 +28,7 @@ endef
LOCAL_DEPS = compiler crypto public_key sasl ssl syntax_tools tools xmerl
DEPS = thoas recon credentials_obfuscation
-dep_credentials_obfuscation = hex 3.2.0
+dep_credentials_obfuscation = hex 3.4.0
# Variables and recipes in development.*.mk are meant to be used from
# any Git clone. They are excluded from the files published to Hex.pm.
diff --git a/deps/rabbitmq_auth_backend_http/BUILD.bazel b/deps/rabbitmq_auth_backend_http/BUILD.bazel
index c7c101585f..f7fb0a4ede 100644
--- a/deps/rabbitmq_auth_backend_http/BUILD.bazel
+++ b/deps/rabbitmq_auth_backend_http/BUILD.bazel
@@ -20,7 +20,9 @@ load(
)
APP_ENV = """[
- {http_method, get},
+ {http_method, get},
+ {request_timeout, 15000},
+ {connection_timeout, 15000},
{user_path, "http://localhost:8000/auth/user"},
{vhost_path, "http://localhost:8000/auth/vhost"},
{resource_path, "http://localhost:8000/auth/resource"},
diff --git a/deps/rabbitmq_auth_backend_ldap/Makefile b/deps/rabbitmq_auth_backend_ldap/Makefile
index 6d97b82a39..2224ea369a 100644
--- a/deps/rabbitmq_auth_backend_ldap/Makefile
+++ b/deps/rabbitmq_auth_backend_ldap/Makefile
@@ -34,7 +34,7 @@ define PROJECT_APP_EXTRA_KEYS
{broker_version_requirements, []}
endef
-LOCAL_DEPS = eldap
+LOCAL_DEPS = eldap public_key
DEPS = rabbit_common rabbit
TEST_DEPS = ct_helper rabbitmq_ct_helpers rabbitmq_ct_client_helpers amqp_client
dep_ct_helper = git https://github.com/extend/ct_helper.git master
diff --git a/deps/rabbitmq_auth_backend_oauth2/Makefile b/deps/rabbitmq_auth_backend_oauth2/Makefile
index c2bd628d31..b41703c1bf 100644
--- a/deps/rabbitmq_auth_backend_oauth2/Makefile
+++ b/deps/rabbitmq_auth_backend_oauth2/Makefile
@@ -5,6 +5,7 @@ PROJECT_DESCRIPTION = OAuth 2 and JWT-based AuthN and AuthZ backend
BUILD_WITHOUT_QUIC=1
export BUILD_WITHOUT_QUIC
+LOCAL_DEPS = inets public_key
BUILD_DEPS = rabbit_common
DEPS = rabbit cowlib jose base64url
TEST_DEPS = cowboy rabbitmq_web_dispatch rabbitmq_ct_helpers rabbitmq_ct_client_helpers amqp_client rabbitmq_mqtt emqtt
diff --git a/deps/rabbitmq_auth_mechanism_ssl/Makefile b/deps/rabbitmq_auth_mechanism_ssl/Makefile
index d082725245..9b540fdaf7 100644
--- a/deps/rabbitmq_auth_mechanism_ssl/Makefile
+++ b/deps/rabbitmq_auth_mechanism_ssl/Makefile
@@ -12,6 +12,7 @@ define PROJECT_APP_EXTRA_KEYS
{broker_version_requirements, []}
endef
+LOCAL_DEPS = public_key
DEPS = rabbit_common rabbit
DEP_EARLY_PLUGINS = rabbit_common/mk/rabbitmq-early-plugin.mk
diff --git a/deps/rabbitmq_aws/Makefile b/deps/rabbitmq_aws/Makefile
index 1f55d79882..29089276c9 100644
--- a/deps/rabbitmq_aws/Makefile
+++ b/deps/rabbitmq_aws/Makefile
@@ -7,7 +7,7 @@ define PROJECT_ENV
[]
endef
-LOCAL_DEPS = crypto inets ssl xmerl
+LOCAL_DEPS = crypto inets ssl xmerl public_key
BUILD_DEPS = rabbit_common
DEP_PLUGINS = rabbit_common/mk/rabbitmq-plugin.mk
TEST_DEPS = meck
diff --git a/deps/rabbitmq_federation_management/Makefile b/deps/rabbitmq_federation_management/Makefile
index 5a97cb8318..71ecae0fa5 100644
--- a/deps/rabbitmq_federation_management/Makefile
+++ b/deps/rabbitmq_federation_management/Makefile
@@ -5,7 +5,7 @@ define PROJECT_APP_EXTRA_KEYS
{broker_version_requirements, []}
endef
-DEPS = rabbit_common rabbit rabbitmq_management rabbitmq_federation
+DEPS = amqp_client rabbit_common rabbit rabbitmq_management rabbitmq_federation
TEST_DEPS = rabbitmq_ct_helpers rabbitmq_ct_client_helpers
DEP_EARLY_PLUGINS = rabbit_common/mk/rabbitmq-early-plugin.mk
diff --git a/deps/rabbitmq_jms_topic_exchange/Makefile b/deps/rabbitmq_jms_topic_exchange/Makefile
index 7d1dd52bfe..199c42238f 100644
--- a/deps/rabbitmq_jms_topic_exchange/Makefile
+++ b/deps/rabbitmq_jms_topic_exchange/Makefile
@@ -1,6 +1,7 @@
PROJECT = rabbitmq_jms_topic_exchange
PROJECT_DESCRIPTION = RabbitMQ JMS topic selector exchange plugin
+LOCAL_DEPS = mnesia
DEPS = rabbit_common rabbit
TEST_DEPS = rabbitmq_ct_helpers rabbitmq_ct_client_helpers amqp_client
diff --git a/deps/rabbitmq_management/BUILD.bazel b/deps/rabbitmq_management/BUILD.bazel
index 16e3c6ae78..d837637ad0 100644
--- a/deps/rabbitmq_management/BUILD.bazel
+++ b/deps/rabbitmq_management/BUILD.bazel
@@ -61,7 +61,7 @@ test_suite_beam_files(name = "test_suite_beam_files")
# gazelle:erlang_app_extra_app crypto
# gazelle:erlang_app_extra_app public_key
-# gazelle:erlang_app_dep_exclude ranch
+# gazelle:erlang_app_dep ranch
rabbitmq_app(
name = "erlang_app",
@@ -89,6 +89,7 @@ rabbitmq_app(
"//deps/rabbitmq_web_dispatch:erlang_app",
"@cowboy//:erlang_app",
"@cowlib//:erlang_app",
+ "@ranch//:erlang_app",
],
)
diff --git a/deps/rabbitmq_mqtt/Makefile b/deps/rabbitmq_mqtt/Makefile
index 1fe357aa45..97e0ca551e 100644
--- a/deps/rabbitmq_mqtt/Makefile
+++ b/deps/rabbitmq_mqtt/Makefile
@@ -39,6 +39,7 @@ endef
BUILD_WITHOUT_QUIC=1
export BUILD_WITHOUT_QUIC
+LOCAL_DEPS = ssl
DEPS = ranch rabbit_common rabbit amqp_client ra
TEST_DEPS = emqtt ct_helper rabbitmq_ct_helpers rabbitmq_ct_client_helpers rabbitmq_management rabbitmq_web_mqtt
diff --git a/deps/rabbitmq_prometheus/BUILD.bazel b/deps/rabbitmq_prometheus/BUILD.bazel
index cded31e178..d92bc2070e 100644
--- a/deps/rabbitmq_prometheus/BUILD.bazel
+++ b/deps/rabbitmq_prometheus/BUILD.bazel
@@ -43,6 +43,7 @@ rabbitmq_app(
name = "erlang_app",
srcs = [":all_srcs"],
hdrs = [":public_hdrs"],
+ app_description = "Prometheus metrics for RabbitMQ",
app_env = APP_ENV,
app_module = APP_MODULE,
app_name = APP_NAME,
diff --git a/deps/rabbitmq_prometheus/Makefile b/deps/rabbitmq_prometheus/Makefile
index a2b652b12b..8380e81b9a 100644
--- a/deps/rabbitmq_prometheus/Makefile
+++ b/deps/rabbitmq_prometheus/Makefile
@@ -7,8 +7,9 @@ define PROJECT_ENV
endef
PROJECT := rabbitmq_prometheus
+PROJECT_DESCRIPTION = Prometheus metrics for RabbitMQ
PROJECT_MOD := rabbit_prometheus_app
-DEPS = accept rabbit rabbitmq_management_agent prometheus rabbitmq_web_dispatch
+DEPS = accept cowboy rabbit rabbitmq_management_agent prometheus rabbitmq_web_dispatch
BUILD_DEPS = amqp_client rabbit_common rabbitmq_management
TEST_DEPS = rabbitmq_ct_helpers rabbitmq_ct_client_helpers eunit_formatters
diff --git a/deps/rabbitmq_stream/Makefile b/deps/rabbitmq_stream/Makefile
index 97002560a3..e63a7ab947 100644
--- a/deps/rabbitmq_stream/Makefile
+++ b/deps/rabbitmq_stream/Makefile
@@ -21,7 +21,8 @@ define PROJECT_ENV
endef
-DEPS = rabbit rabbitmq_stream_common
+LOCAL_DEPS = ssl
+DEPS = rabbit rabbitmq_stream_common osiris ranch
TEST_DEPS = rabbitmq_ct_helpers rabbitmq_ct_client_helpers amqp_client
DEP_EARLY_PLUGINS = rabbit_common/mk/rabbitmq-early-plugin.mk
diff --git a/deps/rabbitmq_trust_store/Makefile b/deps/rabbitmq_trust_store/Makefile
index 1e0ddd5aca..77440b7408 100644
--- a/deps/rabbitmq_trust_store/Makefile
+++ b/deps/rabbitmq_trust_store/Makefile
@@ -10,7 +10,7 @@ define PROJECT_ENV
endef
DEPS = rabbit_common rabbit
-LOCAL_DEPS += ssl crypto public_key
+LOCAL_DEPS += ssl crypto public_key inets
## We need the Cowboy's test utilities
TEST_DEPS = rabbitmq_ct_helpers rabbitmq_ct_client_helpers amqp_client ct_helper trust_store_http
dep_ct_helper = git https://github.com/extend/ct_helper.git master
diff --git a/deps/rabbitmq_web_mqtt/Makefile b/deps/rabbitmq_web_mqtt/Makefile
index a7eaef0eeb..15819ce13a 100644
--- a/deps/rabbitmq_web_mqtt/Makefile
+++ b/deps/rabbitmq_web_mqtt/Makefile
@@ -17,6 +17,7 @@ endef
BUILD_WITHOUT_QUIC=1
export BUILD_WITHOUT_QUIC
+LOCAL_DEPS = ssl
DEPS = rabbit_common rabbit cowboy rabbitmq_mqtt
TEST_DEPS = emqtt rabbitmq_ct_helpers rabbitmq_ct_client_helpers rabbitmq_management
diff --git a/dist.bzl b/dist.bzl
index b8d5380f89..8b4f9bc945 100644
--- a/dist.bzl
+++ b/dist.bzl
@@ -77,7 +77,7 @@ def _sbin_dir_private_impl(ctx):
]
def _escript_dir_private_impl(ctx):
- escripts = [copy_escript(ctx, escript) for escript in ctx.files._scripts]
+ escripts = [copy_escript(ctx, escript) for escript in ctx.files._escripts]
return [
DefaultInfo(
@@ -136,6 +136,12 @@ def _versioned_plugins_dir_impl(ctx):
maybe_install_erlang(ctx),
]
+ commands.append(
+ "echo 'Put your EZs here and use rabbitmq-plugins to enable them.' > {plugins_dir}/README".format(
+ plugins_dir = plugins_dir.path,
+ )
+ )
+
for plugin in plugins:
lib_info = plugin[ErlangAppInfo]
version = _extract_version(lib_info)
diff --git a/rabbitmq.bzl b/rabbitmq.bzl
index d316d5cf1a..807ed33b7b 100644
--- a/rabbitmq.bzl
+++ b/rabbitmq.bzl
@@ -78,7 +78,9 @@ ALL_PLUGINS = [
"//deps/rabbitmq_trust_store:erlang_app",
"//deps/rabbitmq_web_dispatch:erlang_app",
"//deps/rabbitmq_web_mqtt:erlang_app",
+ "//deps/rabbitmq_web_mqtt_examples:erlang_app",
"//deps/rabbitmq_web_stomp:erlang_app",
+ "//deps/rabbitmq_web_stomp_examples:erlang_app",
]
LABELS_WITH_TEST_VERSIONS = [
diff --git a/rabbitmq_home.bzl b/rabbitmq_home.bzl
index 8d6c10dc52..0af142dfd6 100644
--- a/rabbitmq_home.bzl
+++ b/rabbitmq_home.bzl
@@ -87,7 +87,7 @@ def _impl(ctx):
source_scripts = ctx.files._scripts_windows
scripts = [_copy_script(ctx, script) for script in source_scripts]
- escripts = [copy_escript(ctx, escript) for escript in ctx.files._scripts]
+ escripts = [copy_escript(ctx, escript) for escript in ctx.files._escripts]
plugins = flatten([_plugins_dir_links(ctx, plugin) for plugin in plugins])
@@ -108,6 +108,18 @@ def _impl(ctx):
]
RABBITMQ_HOME_ATTRS = {
+ "_escripts": attr.label_list(
+ default = [
+ "//deps/rabbit:scripts/rabbitmq-diagnostics",
+ "//deps/rabbit:scripts/rabbitmq-plugins",
+ "//deps/rabbit:scripts/rabbitmq-queues",
+ "//deps/rabbit:scripts/rabbitmq-streams",
+ "//deps/rabbit:scripts/rabbitmq-upgrade",
+ "//deps/rabbit:scripts/rabbitmqctl",
+ "//deps/rabbit:scripts/vmware-rabbitmq",
+ ],
+ allow_files = True,
+ ),
"_scripts": attr.label_list(
default = [
"//deps/rabbit:scripts/rabbitmq-defaults",
diff --git a/tools/compare_dist.sh b/tools/compare_dist.sh
new file mode 100755
index 0000000000..7b6f2d374e
--- /dev/null
+++ b/tools/compare_dist.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+GOLDEN=$1
+SECOND=$2
+
+echo "Check both have INSTALL"
+test -f $GOLDEN/rabbitmq_server-${VERSION}/INSTALL
+test -f $SECOND/rabbitmq_server-${VERSION}/INSTALL
+
+echo "Check LICENSEs"
+diff \
+ <(grep LICENSE make.manifest) \
+ <(grep LICENSE bazel.manifest | grep -v ".md" | grep -v ".txt")
+
+echo "Check plugins"
+plugins_rel=rabbitmq_server-${VERSION}/plugins
+diff <(grep $plugins_rel make.manifest | grep -v ".ez") <(grep $plugins_rel bazel.manifest | grep -v ".ez")
+
+echo "Plugins exist with same version and deps"
+for p in ${PLUGINS}; do
+ echo "$p"
+ f="$(cd $GOLDEN && ls -d $plugins_rel/$p-*)"
+ test -f $GOLDEN/$f/ebin/$p.app || (echo "$GOLDEN/$f/ebin/$p.app does not exist"; exit 1)
+ test -d $SECOND/$f || (echo "$SECOND/$f does not exist"; exit 1)
+ test -f $SECOND/$f/ebin/$p.app || (echo "$SECOND/$f/ebin/$p.app does not exist"; exit 1)
+ ./rabbitmq-server/tools/erlang_app_equal \
+ $GOLDEN/$f/ebin/$p.app \
+ $SECOND/$f/ebin/$p.app
+done
+
+echo "Both have escript"
+escript_rel=rabbitmq_server-${VERSION}/escript
+diff <(grep $escript_rel make.manifest) <(grep $escript_rel bazel.manifest)
+
+echo "Both have sbin"
+sbin_rel=rabbitmq_server-${VERSION}/sbin
+diff <(grep $sbin_rel make.manifest) <(grep $sbin_rel bazel.manifest)
+
+echo "Both have manpages"
+manpages_rel=rabbitmq_server-${VERSION}/share/man
+diff <(grep $manpages_rel make.manifest) <(grep $manpages_rel bazel.manifest)
+
+echo "PASS"
diff --git a/tools/erlang_app_equal b/tools/erlang_app_equal
new file mode 100755
index 0000000000..ba3a4bef28
--- /dev/null
+++ b/tools/erlang_app_equal
@@ -0,0 +1,68 @@
+#!/usr/bin/env escript
+%% -*- erlang -*-
+%%! -nocookie
+
+-mode(compile).
+
+main([Left, Right]) ->
+ {ok, LeftMetadata} = file:consult(Left),
+ {ok, RightMetadata} = file:consult(Right),
+ compare(LeftMetadata, RightMetadata),
+ halt();
+main(_) ->
+ halt(1).
+
+compare(LeftMetadata, RightMetadata) ->
+ [{application, LeftApp, LeftProps}] = LeftMetadata,
+ [{application, RightApp, RightProps}] = RightMetadata,
+
+ assert_equal(LeftApp, RightApp, "application name"),
+
+ LeftId = proplists:get_value(id, LeftProps),
+ RightId = proplists:get_value(id, RightProps),
+ case LeftId of
+ RightId ->
+ ok;
+ _ ->
+ io:format(standard_error,
+ "Warning:\t 'id' does not match (~p != ~p)~n", [LeftId, RightId])
+ end,
+
+ LeftPropsMap = proplists:to_map(proplists:delete(id, LeftProps)),
+ RightPropsMap = proplists:to_map(proplists:delete(id, RightProps)),
+ assert_equal(
+ lists:sort(maps:keys(LeftPropsMap)),
+ lists:sort(maps:keys(RightPropsMap)),
+ "app property keys"
+ ),
+ [case K of
+ K when K =:= applications orelse K =:= modules ->
+ assert_equal(
+ lists:sort(maps:get(K, LeftPropsMap)),
+ lists:sort(maps:get(K, RightPropsMap)),
+ K
+ );
+ env ->
+ assert_equal(
+ proplists:to_map(maps:get(K, LeftPropsMap)),
+ proplists:to_map(maps:get(K, RightPropsMap)),
+ K
+ );
+ _ ->
+ assert_equal(
+ maps:get(K, LeftPropsMap),
+ maps:get(K, RightPropsMap),
+ K
+ )
+ end || K <- lists:sort(maps:keys(LeftPropsMap))],
+ ok.
+
+assert_equal(Expected, Actual, Context) ->
+ case Actual of
+ Expected ->
+ ok;
+ _ ->
+ io:format(standard_error,
+ "Expected:\t~p~n But got:\t~p~n For:\t~p~n", [Expected, Actual, Context]),
+ erlang:error(assertion_failed)
+ end.