summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Kuryloski <kuryloskip@vmware.com>2022-05-17 14:07:16 +0200
committerPhilip Kuryloski <kuryloskip@vmware.com>2022-06-08 14:04:53 +0200
commit327f075d57d5184187e4bd9edba9ae9835d162c9 (patch)
tree839e90f7259ef43d64129c2b534050b762a90211
parentf0b0a4f90870d8d54190580094345484ca019532 (diff)
downloadrabbitmq-server-git-327f075d57d5184187e4bd9edba9ae9835d162c9.tar.gz
Make rabbitmq-server work with rules_erlang 3
Also rework elixir dependency handling, so we no longer rely on mix to fetch the rabbitmq_cli deps Also: - Specify ra version with a commit rather than a branch - Fixup compilation options for erlang 23 - Add missing ra reference in MODULE.bazel - Add missing flag in oci.yaml - Reduce bazel rbe jobs to try to save memory - Use bazel built erlang for erlang git master tests - Use the same cache for all the workflows but windows - Avoid using `mix local.hex --force` in elixir rules - Fetching seems blocked in CI, and this should reduce hex api usage in all builds, which is always nice - Remove xref and dialyze tags since rules_erlang 3 includes them in the defaults
-rw-r--r--.bazelrc36
-rw-r--r--.github/workflows/oci.yaml59
-rw-r--r--.github/workflows/perform-bazel-execution-comparison.yaml8
-rw-r--r--.github/workflows/rabbitmq_peer_discovery_aws.yaml4
-rw-r--r--.github/workflows/test-erlang-git.yaml29
-rw-r--r--.github/workflows/test-mixed-versions.yaml20
-rw-r--r--.github/workflows/test-windows.yaml14
-rw-r--r--.github/workflows/test.yaml21
-rw-r--r--BUILD.bazel110
-rw-r--r--MODULE.bazel142
-rw-r--r--WORKSPACE.bazel60
-rw-r--r--bazel/bzlmod/BUILD.bazel0
-rw-r--r--bazel/bzlmod/extensions.bzl100
-rw-r--r--bazel/elixir/BUILD.bazel14
-rw-r--r--bazel/elixir/elixir.bzl90
-rw-r--r--bazel/elixir/elixir_as_app.bzl42
-rw-r--r--bazel/elixir/elixir_build.bzl160
-rw-r--r--bazel/elixir/elixir_toolchain.bzl65
-rw-r--r--bazel/elixir/iex_eval.bzl70
-rw-r--r--bazel/mix/BUILD.bazel0
-rw-r--r--bazel/mix/mix_app.bzl172
-rw-r--r--bazel/platforms/BUILD.bazel72
-rw-r--r--bazel/toolchains/BUILD.bazel50
-rw-r--r--deps/amqp10_client/BUILD.bazel19
-rw-r--r--deps/amqp10_common/BUILD.bazel92
-rw-r--r--deps/amqp_client/BUILD.bazel2
-rw-r--r--deps/rabbit/BUILD.bazel27
-rw-r--r--deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel2
-rw-r--r--deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel2
-rw-r--r--deps/rabbit_common/BUILD.bazel75
-rw-r--r--deps/rabbitmq_amqp1_0/BUILD.bazel2
-rw-r--r--deps/rabbitmq_auth_backend_cache/BUILD.bazel3
-rw-r--r--deps/rabbitmq_auth_backend_http/BUILD.bazel3
-rw-r--r--deps/rabbitmq_auth_backend_ldap/BUILD.bazel3
-rw-r--r--deps/rabbitmq_auth_backend_oauth2/BUILD.bazel10
-rw-r--r--deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel3
-rw-r--r--deps/rabbitmq_aws/BUILD.bazel2
-rw-r--r--deps/rabbitmq_cli/BUILD.bazel26
-rw-r--r--deps/rabbitmq_cli/elixir.bzl68
-rw-r--r--deps/rabbitmq_cli/rabbitmqctl.bzl207
-rw-r--r--deps/rabbitmq_cli/rabbitmqctl_test.bzl123
-rw-r--r--deps/rabbitmq_consistent_hash_exchange/BUILD.bazel3
-rw-r--r--deps/rabbitmq_event_exchange/BUILD.bazel3
-rw-r--r--deps/rabbitmq_federation/BUILD.bazel10
-rw-r--r--deps/rabbitmq_federation_management/BUILD.bazel3
-rw-r--r--deps/rabbitmq_jms_topic_exchange/BUILD.bazel3
-rw-r--r--deps/rabbitmq_management/BUILD.bazel9
-rw-r--r--deps/rabbitmq_management_agent/BUILD.bazel3
-rw-r--r--deps/rabbitmq_mqtt/BUILD.bazel10
-rw-r--r--deps/rabbitmq_peer_discovery_aws/BUILD.bazel3
-rw-r--r--deps/rabbitmq_peer_discovery_common/BUILD.bazel3
-rw-r--r--deps/rabbitmq_peer_discovery_consul/BUILD.bazel3
-rw-r--r--deps/rabbitmq_peer_discovery_etcd/BUILD.bazel3
-rw-r--r--deps/rabbitmq_peer_discovery_k8s/BUILD.bazel3
-rw-r--r--deps/rabbitmq_prometheus/BUILD.bazel3
-rw-r--r--deps/rabbitmq_random_exchange/BUILD.bazel3
-rw-r--r--deps/rabbitmq_recent_history_exchange/BUILD.bazel3
-rw-r--r--deps/rabbitmq_sharding/BUILD.bazel3
-rw-r--r--deps/rabbitmq_shovel/BUILD.bazel10
-rw-r--r--deps/rabbitmq_shovel_management/BUILD.bazel3
-rw-r--r--deps/rabbitmq_stomp/BUILD.bazel10
-rw-r--r--deps/rabbitmq_stream/BUILD.bazel3
-rw-r--r--deps/rabbitmq_stream_common/BUILD.bazel3
-rw-r--r--deps/rabbitmq_stream_management/BUILD.bazel3
-rw-r--r--deps/rabbitmq_top/BUILD.bazel3
-rw-r--r--deps/rabbitmq_tracing/BUILD.bazel3
-rw-r--r--deps/rabbitmq_trust_store/BUILD.bazel3
-rw-r--r--deps/rabbitmq_web_dispatch/BUILD.bazel3
-rw-r--r--deps/rabbitmq_web_mqtt/BUILD.bazel9
-rw-r--r--deps/rabbitmq_web_mqtt_examples/BUILD.bazel3
-rw-r--r--deps/rabbitmq_web_stomp/BUILD.bazel10
-rw-r--r--deps/rabbitmq_web_stomp_examples/BUILD.bazel3
-rw-r--r--dist.bzl98
-rw-r--r--elixir_home.bzl13
-rw-r--r--packaging/docker-image/Dockerfile18
-rw-r--r--packaging/docker-image/otp-versions/otp-max.yaml6
-rw-r--r--packaging/docker-image/otp-versions/otp-min.yaml12
-rw-r--r--packaging/docker-image/otp-versions/otp-rc.yaml3
-rw-r--r--rabbitmq.bzl39
-rw-r--r--rabbitmq_home.bzl12
-rw-r--r--rabbitmq_run.bzl28
-rw-r--r--rabbitmqctl.bzl4
-rw-r--r--tools/erlang_ls.bzl13
-rw-r--r--user-template.bazelrc10
-rw-r--r--workspace_helpers.bzl4
85 files changed, 1527 insertions, 880 deletions
diff --git a/.bazelrc b/.bazelrc
index 7f74e489ed..f4ab48beea 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -16,34 +16,32 @@ build:rbe --config=buildbuddy
build:rbe --remote_executor=grpcs://remote.buildbuddy.io
-build:rbe --action_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1
-
-build:rbe --@rules_erlang//:erlang_home=/usr/lib/erlang
-build:rbe --//:elixir_home=/usr/local
-
build:rbe --spawn_strategy=remote
build:rbe --test_strategy=""
-build:rbe --jobs=100
+build:rbe --jobs=50
-build:rbe-23 --config=rbe
-build:rbe-23 --crosstool_top=@rbe_23//cc:toolchain
-build:rbe-23 --extra_toolchains=@rbe_23//config:cc-toolchain
+build:rbe --crosstool_top=@rbe//cc:toolchain
+build:rbe --extra_toolchains=@rbe//config:cc-toolchain
-build:rbe-23 --host_platform=@rbe_23//config:platform
-build:rbe-23 --platforms=@rbe_23//config:platform
-build:rbe-23 --extra_execution_platforms=@rbe_23//config:platform
+build:rbe --host_platform=@rbe//config:platform
-build:rbe-23 --@rules_erlang//:erlang_version=23
+build:rbe --host_cpu=k8
+build:rbe --cpu=k8
+
+build:rbe-23 --config=rbe
+build:rbe-23 --platforms=//bazel/platforms:erlang_23_platform
+build:rbe-23 --extra_execution_platforms=//bazel/platforms:erlang_23_platform
build:rbe-24 --config=rbe
-build:rbe-24 --crosstool_top=@rbe_24//cc:toolchain
-build:rbe-24 --extra_toolchains=@rbe_24//config:cc-toolchain
+build:rbe-24 --platforms=//bazel/platforms:erlang_24_platform
+build:rbe-24 --extra_execution_platforms=//bazel/platforms:erlang_24_platform
-build:rbe-24 --host_platform=@rbe_24//config:platform
-build:rbe-24 --platforms=@rbe_24//config:platform
-build:rbe-24 --extra_execution_platforms=@rbe_24//config:platform
+build:rbe-25 --config=rbe
+build:rbe-25 --platforms=//bazel/platforms:erlang_25_platform
+build:rbe-25 --extra_execution_platforms=//bazel/platforms:erlang_25_platform
-build:rbe-24 --@rules_erlang//:erlang_version=24
+build:local --platforms=//bazel/platforms:erlang_external_platform
+build:local --extra_execution_platforms=//bazel/platforms:erlang_external_platform
# Try importing a user specific .bazelrc
# You can create your own by copying and editing the template-user.bazelrc template:
diff --git a/.github/workflows/oci.yaml b/.github/workflows/oci.yaml
index 91182c9812..fd4efd887d 100644
--- a/.github/workflows/oci.yaml
+++ b/.github/workflows/oci.yaml
@@ -5,8 +5,8 @@ on:
workflow_dispatch:
env:
GENERIC_UNIX_ARCHIVE: ${{ github.workspace }}/bazel-bin/package-generic-unix.tar.xz
- RABBITMQ_VERSION: ${{ github.sha }}
- VERSION: ${{ github.sha }}
+ RABBITMQ_VERSION: ${{ github.event.pull_request.head.sha || github.sha }}
+ VERSION: ${{ github.event.pull_request.head.sha || github.sha }}
jobs:
# This job will build one docker image per supported Erlang major version.
@@ -30,14 +30,6 @@ jobs:
image_tag_suffix:
- otp-min
- otp-max
- #! - otp-rc
- include:
- - image_tag_suffix: otp-min
- skip_otp_verify: false
- - image_tag_suffix: otp-max
- skip_otp_verify: false
- #! - image_tag_suffix: otp-rc
- #! skip_otp_verify: true
steps:
- name: Checkout
uses: actions/checkout@v3
@@ -45,28 +37,21 @@ jobs:
- name: Load version info
id: load-info
run: |
+ # TODO: de-duplicate the info these files and MODULE.bazel
FILE=packaging/docker-image/otp-versions/${{ matrix.image_tag_suffix }}.yaml
echo "::set-output name=otp::$(yq eval '.otp' $FILE)"
+ echo "::set-output name=otp_major::$(yq eval '.otp_major' $FILE)"
echo "::set-output name=otp_sha256::$(yq eval '.otp_sha256' $FILE)"
echo "::set-output name=elixir::$(yq eval '.elixir' $FILE)"
- - name: Set up Erlang & Elixir
- uses: erlef/setup-beam@v1.11
- with:
- otp-version: ${{ steps.load-info.outputs.otp }}
- elixir-version: ${{ steps.load-info.outputs.elixir }}
- version-type: strict
-
- - name: MOUNT BAZEL CACHE
- uses: actions/cache@v3.0.4
+ - name: Mount Bazel Cache
+ uses: actions/cache@v3.0.2
with:
path: "/home/runner/repo-cache/"
key: repo-cache
- - name: CONFIGURE BAZEL
+ - name: Configure Bazel
run: |
- ERLANG_HOME="$(dirname $(dirname $(which erl)))"
- ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
if [ -n "${{ secrets.BUILDBUDDY_API_KEY }}" ]; then
cat << EOF >> user.bazelrc
build:buildbuddy --remote_header=x-buildbuddy-api-key=${{ secrets.BUILDBUDDY_API_KEY }}
@@ -75,20 +60,29 @@ jobs:
cat << EOF >> user.bazelrc
build:buildbuddy --build_metadata=ROLE=CI
build:buildbuddy --build_metadata=VISIBILITY=PRIVATE
- build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-oci
build:buildbuddy --repository_cache=/home/runner/repo-cache/
build:buildbuddy --color=yes
build:buildbuddy --disk_cache=
- build --@rules_erlang//:erlang_version=${{ steps.load-info.outputs.otp }}
- build --@rules_erlang//:erlang_home=${ERLANG_HOME}
- build --//:elixir_home=${ELIXIR_HOME}
+ build:buildbuddy --remote_download_toplevel
EOF
+ - name: Check for otp & elixir version exact match
+ run: |
+ bazelisk build :otp_version --config=rbe-${{ steps.load-info.outputs.otp_major }}
+ if [ ! "$(cat bazel-bin/otp_version.txt)" == "${{ steps.load-info.outputs.otp }}" ]; then
+ exit 1
+ fi
+ bazelisk build :elixir_version --config=rbe-${{ steps.load-info.outputs.otp_major }}
+ if [ ! "$(cat bazel-bin/elixir_version.txt)" == "${{ steps.load-info.outputs.elixir }}" ]; then
+ exit 1
+ fi
+
- name: Build generic unix package
run: |
- sed -i"_orig" -E '/APP_VERSION/ s/3\.[0-9]+\.[0-9]+/${{ github.sha }}/' rabbitmq.bzl
- bazelisk build :package-generic-unix
+ sed -i"_orig" -E '/APP_VERSION/ s/3\.[0-9]+\.[0-9]+/${{ github.event.pull_request.head.sha || github.sha }}/' rabbitmq.bzl
+ bazelisk build :package-generic-unix \
+ --config=rbe-${{ steps.load-info.outputs.otp_major }}
- name: Resolve generic unix package path
run: |
@@ -108,7 +102,7 @@ jobs:
uses: actions/cache@v3.0.4
with:
path: /tmp/.buildx-cache
- key: ${{ runner.os }}-${{ matrix.image_tag_suffix }}-buildx-${{ github.sha }}
+ key: ${{ runner.os }}-${{ matrix.image_tag_suffix }}-buildx-${{ github.event.pull_request.head.sha || github.sha }}
restore-keys: |
${{ runner.os }}-${{ matrix.image_tag_suffix }}-buildx-
@@ -131,12 +125,12 @@ jobs:
- name: Expand generic-unix-package
working-directory: packaging/docker-image
run: |
- xzcat ${GENERIC_UNIX_ARCHIVE} | tar xvf -
+ xzcat ${{ steps.resolve-artifact-path.outputs.ARTIFACT_PATH }} | tar xvf -
- name: Compute image tags
id: compute-tags
run: |
- echo "::set-output name=TAG_1::${{ github.sha }}-${{ matrix.image_tag_suffix }}"
+ echo "::set-output name=TAG_1::${{ github.event.pull_request.head.sha || github.sha }}-${{ matrix.image_tag_suffix }}"
echo "::set-output name=TAG_2::${GITHUB_REF##*/}-${{ matrix.image_tag_suffix }}"
- name: Build and push
@@ -152,8 +146,7 @@ jobs:
PGP_KEYSERVER=pgpkeys.eu
OTP_VERSION=${{ steps.load-info.outputs.otp }}
OTP_SHA256=${{ steps.load-info.outputs.otp_sha256 }}
- SKIP_OTP_VERIFY=${{ matrix.skip_otp_verify }}
- RABBITMQ_BUILD=rabbitmq_server-${{ github.sha }}
+ RABBITMQ_BUILD=rabbitmq_server-${{ github.event.pull_request.head.sha || github.sha }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
diff --git a/.github/workflows/perform-bazel-execution-comparison.yaml b/.github/workflows/perform-bazel-execution-comparison.yaml
index f2bd9a6b07..700e843ca2 100644
--- a/.github/workflows/perform-bazel-execution-comparison.yaml
+++ b/.github/workflows/perform-bazel-execution-comparison.yaml
@@ -13,9 +13,9 @@ jobs:
strategy:
matrix:
erlang_version:
- - "24"
+ - "23"
include:
- - erlang_version: "24"
+ - erlang_version: "23"
cache_name: ci-bazel-cache-analysis
timeout-minutes: 120
steps:
@@ -48,9 +48,9 @@ jobs:
strategy:
matrix:
erlang_version:
- - "24"
+ - "23"
include:
- - erlang_version: "24"
+ - erlang_version: "23"
cache_name: ci-bazel-cache-analysis
timeout-minutes: 120
steps:
diff --git a/.github/workflows/rabbitmq_peer_discovery_aws.yaml b/.github/workflows/rabbitmq_peer_discovery_aws.yaml
index 56c4c562a6..28caf58308 100644
--- a/.github/workflows/rabbitmq_peer_discovery_aws.yaml
+++ b/.github/workflows/rabbitmq_peer_discovery_aws.yaml
@@ -9,8 +9,7 @@ jobs:
matrix:
include:
- image_tag_suffix: otp-max
- erlang_version: "24"
- rbe_default_branch: linux-erlang-24.1
+ erlang_version: "25"
timeout-minutes: 45
steps:
- name: CHECKOUT REPOSITORY
@@ -34,7 +33,6 @@ jobs:
build:buildbuddy --build_metadata=ROLE=CI
build:buildbuddy --build_metadata=VISIBILITY=PRIVATE
- build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-aws-${{ matrix.erlang_version }}
build:buildbuddy --repository_cache=/home/runner/repo-cache/
build:buildbuddy --color=yes
build:buildbuddy --disk_cache=
diff --git a/.github/workflows/test-erlang-git.yaml b/.github/workflows/test-erlang-git.yaml
index bb27f2984e..d59d0a79b7 100644
--- a/.github/workflows/test-erlang-git.yaml
+++ b/.github/workflows/test-erlang-git.yaml
@@ -11,19 +11,6 @@ jobs:
steps:
- name: CHECKOUT REPOSITORY
uses: actions/checkout@v3
- - name: UPDATE RBE IMAGE SHA
- env:
- IMAGE: pivotalrabbitmq/rabbitmq-server-buildenv
- TAG: linux-erlang-git-master
- run: |
- # buildbuddy caches the container image, so we must use a specific sha to ensure
- # the latest is used
- DIGEST="$(skopeo inspect --format '{{.Digest}}' docker://${IMAGE}:${TAG})"
- echo "Will use ${IMAGE}@${DIGEST}"
- sudo npm install --global --silent @bazel/buildozer
- npx buildozer \
- "dict_set exec_properties container-image:docker://${IMAGE}@${DIGEST}" \
- //:erlang_git_platform
- name: MOUNT BAZEL CACHE
uses: actions/cache@v3.0.4
with:
@@ -39,21 +26,15 @@ jobs:
cat << EOF >> user.bazelrc
build:buildbuddy --build_metadata=ROLE=CI
build:buildbuddy --build_metadata=VISIBILITY=PUBLIC
- build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-erlang-git
build:buildbuddy --repository_cache=/home/runner/repo-cache/
build:buildbuddy --color=yes
build:buildbuddy --disk_cache=
- build:rbe-git --config=rbe
- build:rbe-git --crosstool_top=@buildbuddy_toolchain//:toolchain
- build:rbe-git --extra_toolchains=@buildbuddy_toolchain//:cc_toolchain
-
- build:rbe-git --host_platform=//:erlang_git_platform
- build:rbe-git --platforms=//:erlang_git_platform
- build:rbe-git --extra_execution_platforms=//:erlang_git_platform
- build:rbe-git --@rules_erlang//:erlang_home=/usr/local/lib/erlang
- build:rbe-git --@rules_erlang//:erlang_version=25
+ build:rbe --platforms=//bazel/platforms:erlang_git_master_platform
+ build:rbe --extra_execution_platforms=//bazel/platforms:erlang_git_master_platform
EOF
+
+ bazelisk info release
#! - name: Setup tmate session
#! uses: mxschmitt/action-tmate@v3
- name: RUN TESTS
@@ -61,6 +42,6 @@ jobs:
sudo sysctl -w net.ipv4.tcp_keepalive_time=60
sudo ethtool -K eth0 tso off gso off gro off tx off rx off lro off
bazelisk test //... \
- --config=rbe-git \
+ --config=rbe \
--test_tag_filters=-mixed-version-cluster,-exclusive,-aws \
--verbose_failures
diff --git a/.github/workflows/test-mixed-versions.yaml b/.github/workflows/test-mixed-versions.yaml
index 456a60ec72..17f3037027 100644
--- a/.github/workflows/test-mixed-versions.yaml
+++ b/.github/workflows/test-mixed-versions.yaml
@@ -29,9 +29,9 @@ jobs:
strategy:
fail-fast: false
matrix:
- erlang_version:
- - "23"
+ erlang_major:
- "24"
+ #! - "25"
timeout-minutes: 120
steps:
- name: CHECKOUT REPOSITORY
@@ -51,7 +51,6 @@ jobs:
cat << EOF >> user.bazelrc
build:buildbuddy --build_metadata=ROLE=CI
build:buildbuddy --build_metadata=VISIBILITY=PUBLIC
- build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-${{ matrix.erlang_version }}
build:buildbuddy --repository_cache=/home/runner/repo-cache/
build:buildbuddy --color=yes
build:buildbuddy --disk_cache=
@@ -63,7 +62,7 @@ jobs:
sudo sysctl -w net.ipv4.tcp_keepalive_time=60
sudo ethtool -K eth0 tso off gso off gro off tx off rx off lro off
bazelisk test //... \
- --config=rbe-${{ matrix.erlang_version }} \
+ --config=rbe-${{ matrix.erlang_major }} \
--test_tag_filters=mixed-version-cluster,-exclusive,-aws \
--verbose_failures
test-exclusive-mixed-versions:
@@ -71,9 +70,11 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- erlang_version:
- - "23"
- - "24"
+ include:
+ - erlang_version: "24"
+ elixir_version: 1.12.3
+ #! - erlang_version: "25"
+ #! elixir_version: 1.13.4
timeout-minutes: 60
steps:
- name: CHECKOUT REPOSITORY
@@ -82,7 +83,7 @@ jobs:
uses: erlef/setup-beam@v1.11
with:
otp-version: ${{ matrix.erlang_version }}
- elixir-version: 1.12.3
+ elixir-version: ${{ matrix.elixir_version }}
- name: MOUNT BAZEL CACHE
uses: actions/cache@v3.0.4
with:
@@ -100,7 +101,6 @@ jobs:
cat << EOF >> user.bazelrc
build:buildbuddy --build_metadata=ROLE=CI
build:buildbuddy --build_metadata=VISIBILITY=PRIVATE
- build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-exclusive-${{ matrix.erlang_version }}
build:buildbuddy --repository_cache=/home/runner/repo-cache/
build:buildbuddy --color=yes
build:buildbuddy --disk_cache=
@@ -108,6 +108,8 @@ jobs:
build --@rules_erlang//:erlang_version=${{ matrix.erlang_version }}
build --@rules_erlang//:erlang_home=${ERLANG_HOME}
build --//:elixir_home=${ELIXIR_HOME}
+ build --platforms=//bazel/platforms:erlang_external_platform
+ build --extra_execution_platforms=//bazel/platforms:erlang_external_platform
EOF
#! - name: Setup tmate session
#! uses: mxschmitt/action-tmate@v3
diff --git a/.github/workflows/test-windows.yaml b/.github/workflows/test-windows.yaml
index c8bbae9df2..8be01227ad 100644
--- a/.github/workflows/test-windows.yaml
+++ b/.github/workflows/test-windows.yaml
@@ -10,9 +10,11 @@ jobs:
strategy:
fail-fast: false
matrix:
- erlang_version:
- #! - "23"
- - "24"
+ include:
+ - erlang_version: "24"
+ elixir_version: 1.12.3
+ - erlang_version: "25"
+ elixir_version: 1.13.4
timeout-minutes: 120
steps:
- name: CHECKOUT REPOSITORY
@@ -21,7 +23,7 @@ jobs:
uses: erlef/setup-beam@v1.11
with:
otp-version: ${{ matrix.erlang_version }}
- elixir-version: 1.12.3
+ elixir-version: ${{ matrix.elixir_version }}
#! - name: MOUNT BAZEL CACHE
#! uses: actions/cache@v1
#! with:
@@ -42,7 +44,7 @@ jobs:
build:buildbuddy --build_metadata=ROLE=CI
build:buildbuddy --build_metadata=VISIBILITY=PUBLIC
- build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-windows-${{ matrix.erlang_version }}
+ build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-windows
# build:buildbuddy --repository_cache=/home/runner/repo-cache/
build:buildbuddy --color=yes
build:buildbuddy --disk_cache=
@@ -50,6 +52,8 @@ jobs:
build --@rules_erlang//:erlang_version=${{ matrix.erlang_version }}
build --@rules_erlang//:erlang_home="${ERL_PATH/\/bin\/erl/}"
build --//:elixir_home="${IEX_PATH/\/bin\/iex/}"
+ build --platforms=//bazel/platforms:erlang_external_platform
+ build --extra_execution_platforms=//bazel/platforms:erlang_external_platform
EOF
bazelisk info release
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 687de9e79e..8f71a3bbbb 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -29,9 +29,10 @@ jobs:
strategy:
fail-fast: false
matrix:
- erlang_version:
+ erlang_major:
- "23"
- "24"
+ - "25"
timeout-minutes: 120
steps:
- name: CHECKOUT REPOSITORY
@@ -51,7 +52,6 @@ jobs:
cat << EOF >> user.bazelrc
build:buildbuddy --build_metadata=ROLE=CI
build:buildbuddy --build_metadata=VISIBILITY=PUBLIC
- build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-${{ matrix.erlang_version }}
build:buildbuddy --repository_cache=/home/runner/repo-cache/
build:buildbuddy --color=yes
build:buildbuddy --disk_cache=
@@ -65,7 +65,7 @@ jobs:
sudo sysctl -w net.ipv4.tcp_keepalive_time=60
sudo ethtool -K eth0 tso off gso off gro off tx off rx off lro off
bazelisk test //... \
- --config=rbe-${{ matrix.erlang_version }} \
+ --config=rbe-${{ matrix.erlang_major }} \
--test_tag_filters=-exclusive,-aws,-mixed-version-cluster \
--verbose_failures
test-exclusive:
@@ -74,9 +74,13 @@ jobs:
strategy:
fail-fast: false
matrix:
- erlang_version:
- - "23"
- - "24"
+ include:
+ #! - erlang_version: "23"
+ #! elixir_version: 1.10.4
+ - erlang_version: "24"
+ elixir_version: 1.12.3
+ - erlang_version: "25"
+ elixir_version: 1.13.4
timeout-minutes: 60
steps:
- name: CHECKOUT REPOSITORY
@@ -85,7 +89,7 @@ jobs:
uses: erlef/setup-beam@v1.11
with:
otp-version: ${{ matrix.erlang_version }}
- elixir-version: 1.12.3
+ elixir-version: ${{ matrix.elixir_version }}
- name: MOUNT BAZEL CACHE
uses: actions/cache@v3.0.4
with:
@@ -103,7 +107,6 @@ jobs:
cat << EOF >> user.bazelrc
build:buildbuddy --build_metadata=ROLE=CI
build:buildbuddy --build_metadata=VISIBILITY=PRIVATE
- build:buildbuddy --remote_instance_name=buildbuddy-io/buildbuddy/ci-exclusive-${{ matrix.erlang_version }}
build:buildbuddy --repository_cache=/home/runner/repo-cache/
build:buildbuddy --color=yes
build:buildbuddy --disk_cache=
@@ -111,6 +114,8 @@ jobs:
build --@rules_erlang//:erlang_version=${{ matrix.erlang_version }}
build --@rules_erlang//:erlang_home=${ERLANG_HOME}
build --//:elixir_home=${ELIXIR_HOME}
+ build --platforms=//bazel/platforms:erlang_external_platform
+ build --extra_execution_platforms=//bazel/platforms:erlang_external_platform
EOF
#! - name: Setup tmate session
#! uses: mxschmitt/action-tmate@v3
diff --git a/BUILD.bazel b/BUILD.bazel
index 810388549f..1f64d40e3a 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -1,12 +1,16 @@
-load("@rules_pkg//:pkg.bzl", "pkg_tar")
+load(
+ "@bazel_skylib//rules:common_settings.bzl",
+ "string_flag",
+)
load("@rules_erlang//:dialyze.bzl", "plt")
load("@rules_erlang//:shell.bzl", "shell")
-load("elixir_home.bzl", "elixir_home")
+load("@rules_erlang//:erl_eval.bzl", "erl_eval")
+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(":rabbitmq.bzl", "APP_VERSION", "all_plugins")
-load(":dist.bzl", "collect_licenses", "versioned_rabbitmq_home")
+load(":dist.bzl", "package_generic_unix")
+load(":rabbitmq.bzl", "all_plugins")
exports_files([
"scripts/bazel/rabbitmq-run.sh",
@@ -20,37 +24,24 @@ config_setting(
},
)
-# This allows us to
-# `bazel build //my/target \
-# --//:elixir_home=/path/to/elixir/installation`
-elixir_home(
+string_flag(
name = "elixir_home",
- build_setting_default = "~/.kiex/elixirs/elixir-1.10.4",
+ build_setting_default = "",
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"],
)
+PLUGINS = all_plugins(
+ rabbitmq_workspace = "",
+)
+
rabbitmq_home(
name = "broker-home",
- plugins = all_plugins(rabbitmq_workspace = ""),
+ plugins = PLUGINS,
)
rabbitmq_run(
@@ -86,73 +77,22 @@ rabbitmqctl(
shell(
name = "repl",
- deps = all_plugins(rabbitmq_workspace = ""),
-)
-
-collect_licenses(
- name = "licenses",
- srcs = glob(
- ["LICENSE*"],
- exclude = [
- "LICENSE.md",
- "LICENSE.txt",
- ],
- ),
- deps = all_plugins(rabbitmq_workspace = ""),
+ deps = PLUGINS,
)
-versioned_rabbitmq_home(
- name = "dist-home",
- plugins = all_plugins(rabbitmq_workspace = ""),
+erl_eval(
+ name = "otp_version",
+ outs = ["otp_version.txt"],
+ expression = """{ok, Version} = file:read_file(filename:join([code:root_dir(), "releases", erlang:system_info(otp_release), "OTP_VERSION"])), file:write_file(os:getenv("OUTS"), Version), halt().""",
)
-pkg_tar(
- name = "license-files",
- srcs = [
- ":licenses",
- "//deps/rabbit:INSTALL",
- ],
- visibility = ["//visibility:public"],
+iex_eval(
+ name = "elixir_version",
+ outs = ["elixir_version.txt"],
+ expression = """File.write!(System.get_env("OUTS"), System.version()); System.halt()""",
)
-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",
- ],
-)
+package_generic_unix(PLUGINS)
genrule(
name = "test-logs",
diff --git a/MODULE.bazel b/MODULE.bazel
index dbf61f8938..8e3dbfe376 100644
--- a/MODULE.bazel
+++ b/MODULE.bazel
@@ -3,61 +3,67 @@ module(
version = "3.10.0",
)
-bazel_dep(name = "rules_erlang", version = "2.5.2")
+bazel_dep(name = "rules_erlang", version = "3.0.1")
+
+git_override(
+ module_name = "rules_erlang",
+ remote = "https://github.com/rabbitmq/rules_erlang.git",
+ commit = "8eaf098114d25ca4f97094bbd38ac360b1b8774f", # <- internal-erlang-with-platforms branch
+)
erlang_package = use_extension(
"@rules_erlang//bzlmod:extensions.bzl",
"erlang_package",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "accept",
version = "0.3.5",
sha256 = "11b18c220bcc2eab63b5470c038ef10eb6783bcb1fcdb11aa4137defa5ac1bb8",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "aten",
version = "0.5.7",
sha256 = "8b623c8be27b59a911d16ab0af41777b504c147bc0d60a29015fab58321c04b0",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "base64url",
version = "1.0.1",
sha256 = "f9b3add4731a02a9b0410398b475b33e7566a695365237a6bdee1bb447719f5c",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "cowboy",
version = "2.8.0",
sha256 = "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "cowlib",
version = "2.9.1",
sha256 = "e4175dc240a70d996156160891e1c62238ede1729e45740bdd38064dad476170",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "credentials_obfuscation",
version = "3.1.0",
sha256 = "04884e62b1c6cdfba999d4d6b3e99bc0a59d5e439517bc5c01767255afb7b778",
)
-erlang_package.git(
+erlang_package.git_package(
repository = "extend/ct_helper",
branch = "master",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "cuttlefish",
version = "3.0.1",
sha256 = "3feff3ae4ed1f0ca6df87ac89235068fbee9242ee85d2ac17fb1b8ce0e30f1a6",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "eetcd",
version = "0.3.5",
sha256 = "af9d5158ad03a6794d412708d605be5dd1ebd0b8a1271786530d99f165bb0cff",
@@ -76,59 +82,59 @@ erlang_app(
""",
)
-erlang_package.git(
+erlang_package.git_package(
repository = "rabbitmq/emqttc",
branch = "remove-logging",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "enough",
version = "0.1.0",
sha256 = "0460c7abda5f5e0ea592b12bc6976b8a5c4b96e42f332059cd396525374bf9a1",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "gen_batch_server",
version = "0.8.7",
sha256 = "94a49a528486298b009d2a1b452132c0a0d68b3e89d17d3764cb1ec879b7557a",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "gun",
version = "1.3.3",
sha256 = "3106ce167f9c9723f849e4fb54ea4a4d814e3996ae243a1c828b256e749041e0",
)
-erlang_package.git(
+erlang_package.git_package(
name = "inet_tcp_proxy_dist",
repository = "rabbitmq/inet_tcp_proxy",
branch = "master",
)
-erlang_package.git(
+erlang_package.git_package(
name = "jose",
repository = "potatosalad/erlang-jose",
commit = "2b1d66b5f4fbe33cb198149a8cb23895a2c877ea",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "jsx",
version = "3.1.0",
sha256 = "0c5cc8fdc11b53cc25cf65ac6705ad39e54ecc56d1c22e4adb8f5a53fb9427f3",
)
-erlang_package.git(
+erlang_package.git_package(
repository = "eproxus/meck",
branch = "master",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "observer_cli",
version = "1.7.3",
sha256 = "a41b6d3e11a3444e063e09cc225f7f3e631ce14019e5fbcaebfda89b1bd788ea",
)
-erlang_package.git(
+erlang_package.git_package(
repository = "rabbitmq/osiris",
branch = "main",
patch_cmds = ["""
@@ -137,10 +143,12 @@ echo "Injecting ${VERSION} into Makefile..."
sed -i"_orig" -E '/PROJECT_VERSION/ s/[0-9]+\\.[0-9]+\\.[0-9]+/'${VERSION}'/' Makefile
echo "Injecting ${VERSION} into BUILD.bazel..."
sed -i"_orig" -E '/VERSION/ s/[0-9]+\\.[0-9]+\\.[0-9]+/'${VERSION}'/' BUILD.bazel
+
+sed -i"_orig2" -E 's/ct_sharded\\.bzl/ct.bzl/' BUILD.bazel
"""],
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "prometheus",
version = "4.8.2",
sha256 = "c3abd6521e52cec4f0d8eca603cf214dfc84d8a27aa85946639f1424b8554d98",
@@ -159,20 +167,20 @@ erlang_app(
""",
)
-erlang_package.git(
+erlang_package.git_package(
repository = "manopapad/proper",
branch = "master",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "quantile_estimator",
version = "0.2.1",
sha256 = "282a8a323ca2a845c9e6f787d166348f776c1d4a41ede63046d72d422e3da946",
)
-erlang_package.git(
+erlang_package.git_package(
repository = "rabbitmq/ra",
- branch = "main",
+ commit = "fcaad359a4e64f87357acbcc84f01e0377706ce3",
patch_cmds = ["""
VERSION=$(git rev-parse HEAD)
echo "Injecting ${VERSION} into ra.app.src..."
@@ -180,47 +188,48 @@ sed -i"_orig" "/vsn,/ s/2\\.[0-9]\\.[0-9]/${VERSION}/" src/ra.app.src
"""],
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "ranch",
version = "2.1.0",
sha256 = "244ee3fa2a6175270d8e1fc59024fd9dbc76294a321057de8f803b1479e76916",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "recon",
version = "2.5.2",
sha256 = "2c7523c8dee91dff41f6b3d63cba2bd49eb6d2fe5bf1eec0df7f87eb5e230e1c",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "redbug",
version = "2.0.7",
sha256 = "3624feb7a4b78fd9ae0e66cc3158fe7422770ad6987a1ebf8df4d3303b1c4b0c",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "seshat",
version = "0.3.2",
+ sha256 = "20d820acbeef9d07298ee863d0c9d06f8e620acba100939ebb2925e4d6b0dfc7",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "stdout_formatter",
version = "0.2.4",
sha256 = "51f1df921b0477275ea712763042155dbc74acc75d9648dbd54985c45c913b29",
)
-erlang_package.git(
+erlang_package.git_package(
repository = "schlagert/syslog",
tag = "4.0.0",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "sysmon_handler",
version = "1.3.0",
sha256 = "922cf0dd558b9fdb1326168373315b52ed6a790ba943f6dcbd9ee22a74cebdef",
)
-erlang_package.hex(
+erlang_package.hex_package(
name = "systemd",
version = "0.6.1",
sha256 = "8ec5ed610a5507071cdb7423e663e2452a747a624bb8a58582acd9491ccad233",
@@ -239,18 +248,12 @@ erlang_app(
""",
)
-erlang_package.git(
+erlang_package.git_package(
name = "trust_store_http",
repository = "rabbitmq/trust-store-http",
branch = "master",
)
-erlang_package.git(
- name = "ra",
- repository = "rabbitmq/ra",
- branch = "main",
-)
-
use_repo(
erlang_package,
"accept",
@@ -273,6 +276,7 @@ use_repo(
"osiris",
"prometheus",
"proper",
+ "ra",
"ranch",
"recon",
"redbug",
@@ -283,3 +287,61 @@ use_repo(
"systemd",
"trust_store_http",
)
+
+elixir = use_extension(
+ "//bazel/bzlmod:extensions.bzl",
+ "elixir",
+)
+
+elixir.hex_package(
+ name = "amqp",
+ version = "2.1.2",
+ sha256 = "535901c611a979221d045839e9e7a661bf33d04590b796c8fa30f487511fde04",
+ deps = [
+ "@//deps/amqp_client:erlang_app",
+ ],
+)
+
+elixir.hex_package(
+ name = "csv",
+ version = "2.4.1",
+ sha256 = "54508938ac67e27966b10ef49606e3ad5995d665d7fc2688efb3eab1307c9079",
+ deps = [
+ "@parallel_stream//:elixir_app",
+ ],
+)
+
+elixir.hex_package(
+ name = "json",
+ version = "1.4.1",
+ sha256 = "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16",
+)
+
+elixir.hex_package(
+ name = "parallel_stream",
+ version = "1.0.6",
+ sha256 = "639b2e8749e11b87b9eb42f2ad325d161c170b39b288ac8d04c4f31f8f0823eb",
+)
+
+elixir.hex_package(
+ name = "temp",
+ version = "0.4.7",
+ sha256 = "6af19e7d6a85a427478be1021574d1ae2a1e1b90882586f06bde76c63cd03e0d",
+)
+
+elixir.hex_package(
+ name = "x509",
+ version = "0.7.0",
+ sha256 = "5ff9c79e77d64a62ccffd90aaeb23e8f5b6e47844ef7bc8fed931ecf238662e0",
+)
+
+use_repo(
+ elixir,
+ "amqp",
+ "csv",
+ "hex",
+ "json",
+ "parallel_stream",
+ "temp",
+ "x509",
+)
diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel
index ec3371b501..fdc668ac6d 100644
--- a/WORKSPACE.bazel
+++ b/WORKSPACE.bazel
@@ -1,5 +1,17 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
+
+http_archive(
+ name = "bazel_skylib",
+ sha256 = "af87959afe497dc8dfd4c6cb66e1279cb98ccc84284619ebfec27d9c09a903de",
+ urls = [
+ "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.0/bazel-skylib-1.2.0.tar.gz",
+ "https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.0/bazel-skylib-1.2.0.tar.gz",
+ ],
+)
+
+load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
+
+bazel_skylib_workspace()
http_archive(
name = "rules_pkg",
@@ -32,41 +44,38 @@ buildbuddy(
llvm = True,
)
-git_repository(
- name = "rbe_23",
- commit = "d50764600e0fed0debc86f714f2c36b571e98719",
- remote = "https://github.com/rabbitmq/rbe-erlang-platform.git",
-)
+load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository")
git_repository(
- name = "rbe_24",
- commit = "38aa3c971edd4f051948ee9911fa316d9c2b62e4",
+ name = "rbe",
+ commit = "6a2899b87ee4f4dc0ef6f0012be6c3f94e6c9c2f", # linux-rbe branch
remote = "https://github.com/rabbitmq/rbe-erlang-platform.git",
)
-http_archive(
- name = "rules_pkg",
- sha256 = "038f1caa773a7e35b3663865ffb003169c6a71dc995e39bf4815792f385d837d",
- urls = [
- "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz",
- "https://github.com/bazelbuild/rules_pkg/releases/download/0.4.0/rules_pkg-0.4.0.tar.gz",
- ],
-)
-
-load("@rules_pkg//:deps.bzl", "rules_pkg_dependencies")
-
-rules_pkg_dependencies()
-
git_repository(
name = "rules_erlang",
- commit = "371d4adb83a3588e2d49403e1c6c6c7ba22e225d",
+ commit = "8eaf098114d25ca4f97094bbd38ac360b1b8774f",
remote = "https://github.com/rabbitmq/rules_erlang.git",
)
-load("@rules_erlang//:rules_erlang.bzl", "rules_erlang_dependencies")
+load(
+ "@rules_erlang//:rules_erlang.bzl",
+ "rules_erlang_dependencies",
+)
rules_erlang_dependencies()
+register_toolchains(
+ "//bazel/toolchains:erlang_toolchain_external",
+ "//bazel/toolchains:erlang_toolchain_23",
+ "//bazel/toolchains:erlang_toolchain_24",
+ "//bazel/toolchains:erlang_toolchain_25",
+ "//bazel/toolchains:erlang_toolchain_git_master",
+ "//bazel/toolchains:elixir_toolchain_external",
+ "//bazel/toolchains:elixir_toolchain_1_10",
+ "//bazel/toolchains:elixir_toolchain_1_13",
+)
+
load("//:workspace_helpers.bzl", "rabbitmq_external_deps")
rabbitmq_external_deps(rabbitmq_workspace = "@")
@@ -84,7 +93,7 @@ pkg_zip(
name = "inet_tcp_proxy_ez",
package_dir = "inet_tcp_proxy/ebin",
srcs = [
- "@rules_erlang.2.5.2.erlang_package.inet_tcp_proxy_dist//:erlang_app",
+ "@inet_tcp_proxy_dist//:erlang_app",
],
package_file_name = "inet_tcp_proxy-0.1.0.ez",
visibility = ["//visibility:public"],
@@ -102,6 +111,9 @@ http_archive(
name = "rabbitmq-server-generic-unix-3.9",
build_file = "@//:BUILD.package_generic_unix",
patch_cmds = [ADD_PLUGINS_DIR_BUILD_FILE],
+ repo_mapping = {
+ "@inet_tcp_proxy_dist": "@rules_erlang.erlang_package.inet_tcp_proxy_dist",
+ },
sha256 = "4672fad92a815b879cc78a5a9fd28445152b61745d68acd50432c15f96792171",
strip_prefix = "rabbitmq_server-3.9.13",
urls = ["https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.13/rabbitmq-server-generic-unix-3.9.13.tar.xz"],
diff --git a/bazel/bzlmod/BUILD.bazel b/bazel/bzlmod/BUILD.bazel
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/bazel/bzlmod/BUILD.bazel
diff --git a/bazel/bzlmod/extensions.bzl b/bazel/bzlmod/extensions.bzl
new file mode 100644
index 0000000000..15faf25905
--- /dev/null
+++ b/bazel/bzlmod/extensions.bzl
@@ -0,0 +1,100 @@
+load(
+ "@bazel_tools//tools/build_defs/repo:git.bzl",
+ "new_git_repository",
+)
+load(
+ "@rules_erlang//:hex_archive.bzl",
+ "hex_archive",
+)
+
+def _installation_suffix(erlang_installation):
+ wn = erlang_installation.workspace_name
+ return wn.removeprefix("rules_erlang").removeprefix(".erlang_package.")
+
+def _merge_package(props, packages):
+ for p in packages:
+ if props["name"] == p["name"]:
+ if props != p:
+ fail("package conflict: {} and {}".format(props, p))
+ return packages
+ return packages + [props]
+
+def _hex():
+ new_git_repository(
+ name = "hex",
+ remote = "https://github.com/hexpm/hex.git",
+ tag = "v1.0.1",
+ build_file_content = MIX_PACKAGE_BUILD_FILE_CONTENT.format(
+ name = "hex",
+ deps = [],
+ ),
+ )
+
+def _impl(ctx):
+ _hex()
+
+ hex_packages = []
+ for mod in ctx.modules:
+ for package in mod.tags.hex_package:
+ props = {
+ "name": package.name,
+ "version": package.version,
+ "sha256": package.sha256,
+ "deps": package.deps,
+ "build_file_content": package.build_file_content,
+ "patch_cmds": package.patch_cmds,
+ }
+ hex_packages = _merge_package(props, hex_packages)
+
+ for props in hex_packages:
+ name = props["name"]
+ deps = props.pop("deps")
+ if props["build_file_content"] == "":
+ props["build_file_content"] = MIX_PACKAGE_BUILD_FILE_CONTENT.format(
+ name = name,
+ deps = deps + ["@hex//:elixir_app"],
+ )
+ hex_archive(
+ package_name = name,
+ **props
+ )
+
+hex_package = tag_class(attrs = {
+ "name": attr.string(),
+ "version": attr.string(),
+ "sha256": attr.string(),
+ "deps": attr.string_list(),
+ "build_file_content": attr.string(),
+ "patch_cmds": attr.string_list(),
+})
+
+elixir = module_extension(
+ implementation = _impl,
+ tag_classes = {
+ "hex_package": hex_package,
+ },
+)
+
+MIX_PACKAGE_BUILD_FILE_CONTENT = """load(
+ "@rabbitmq-server//bazel/mix:mix_app.bzl",
+ "mix_app",
+)
+
+filegroup(
+ name = "srcs",
+ srcs = glob([
+ "mix.exs",
+ "lib/**/*",
+ ]),
+ visibility = ["//visibility:public"],
+)
+
+mix_app(
+ name = "elixir_app",
+ app_name = "{name}",
+ srcs = [":srcs"],
+ license_files = glob(["LICENSE*"]),
+ deps = {deps},
+ visibility = ["//visibility:public"],
+)
+"""
diff --git a/bazel/elixir/BUILD.bazel b/bazel/elixir/BUILD.bazel
new file mode 100644
index 0000000000..b362f11b13
--- /dev/null
+++ b/bazel/elixir/BUILD.bazel
@@ -0,0 +1,14 @@
+load(
+ ":elixir_as_app.bzl",
+ "elixir_as_app",
+)
+
+toolchain_type(
+ name = "toolchain_type",
+ visibility = ["//visibility:public"],
+)
+
+elixir_as_app(
+ name = "erlang_app",
+ visibility = ["//visibility:public"],
+)
diff --git a/bazel/elixir/elixir.bzl b/bazel/elixir/elixir.bzl
new file mode 100644
index 0000000000..b533c83e64
--- /dev/null
+++ b/bazel/elixir/elixir.bzl
@@ -0,0 +1,90 @@
+load(
+ ":elixir_build.bzl",
+ "elixir_build",
+ "elixir_external",
+)
+load(
+ ":elixir_toolchain.bzl",
+ "elixir_toolchain",
+)
+
+def elixir_toolchain_external():
+ elixir_constraint = Label("//bazel/platforms:elixir_external")
+
+ elixir_external(
+ name = "external_elixir_installation_ref",
+ target_compatible_with = [
+ elixir_constraint,
+ ],
+ )
+
+ elixir_toolchain(
+ name = "elixir_external",
+ elixir = ":external_elixir_installation_ref",
+ )
+
+ native.toolchain(
+ name = "elixir_toolchain_external",
+ exec_compatible_with = [
+ elixir_constraint,
+ ],
+ target_compatible_with = [
+ elixir_constraint,
+ ],
+ toolchain = ":elixir_external",
+ toolchain_type = Label("@rabbitmq-server//bazel/elixir:toolchain_type"),
+ visibility = ["//visibility:public"],
+ )
+
+ return elixir_constraint
+
+def elixir_toolchain_from_http_archive(
+ name_suffix = "",
+ version = None,
+ url = None,
+ strip_prefix = None,
+ sha256 = None,
+ elixir_constraint = None):
+ elixir_build(
+ name = "elixir_build{}".format(name_suffix),
+ url = url,
+ strip_prefix = strip_prefix,
+ sha256 = sha256,
+ target_compatible_with = [
+ elixir_constraint,
+ ],
+ )
+
+ elixir_toolchain(
+ name = "elixir{}".format(name_suffix),
+ elixir = ":elixir_build{}".format(name_suffix),
+ )
+
+ native.toolchain(
+ name = "elixir_toolchain{}".format(name_suffix),
+ exec_compatible_with = [
+ elixir_constraint,
+ ],
+ target_compatible_with = [
+ elixir_constraint,
+ ],
+ toolchain = ":elixir{}".format(name_suffix),
+ toolchain_type = Label("@rabbitmq-server//bazel/elixir:toolchain_type"),
+ visibility = ["//visibility:public"],
+ )
+
+def elixir_toolchain_from_github_release(
+ name_suffix = "_default",
+ version = None,
+ sha256 = None):
+ [major, minor, patch] = version.split(".")
+ elixir_constraint = Label("@rabbitmq-server//bazel/platforms:elixir_{}_{}".format(major, minor))
+ url = "https://github.com/elixir-lang/elixir/archive/refs/tags/v{}.tar.gz".format(version)
+ elixir_toolchain_from_http_archive(
+ name_suffix = name_suffix,
+ url = url,
+ strip_prefix = "elixir-{}".format(version),
+ sha256 = sha256,
+ elixir_constraint = elixir_constraint,
+ )
+ return elixir_constraint
diff --git a/bazel/elixir/elixir_as_app.bzl b/bazel/elixir/elixir_as_app.bzl
new file mode 100644
index 0000000000..433355ce74
--- /dev/null
+++ b/bazel/elixir/elixir_as_app.bzl
@@ -0,0 +1,42 @@
+load(
+ "@rules_erlang//:erlang_app_info.bzl",
+ "ErlangAppInfo",
+)
+load(
+ ":elixir_toolchain.bzl",
+ "elixir_dirs",
+)
+
+def _impl(ctx):
+ ebin = ctx.actions.declare_directory("ebin")
+
+ (elixir_home, elixir_runfiles) = elixir_dirs(ctx)
+
+ ctx.actions.run_shell(
+ inputs = elixir_runfiles.files,
+ outputs = [ebin],
+ command = """set -euo pipefail
+
+cp -r "{elixir_home}"/lib/elixir/ebin/* {ebin}
+""".format(
+ elixir_home = elixir_home,
+ ebin = ebin.path,
+ ),
+ )
+
+ return [
+ DefaultInfo(files = depset([ebin])),
+ ErlangAppInfo(
+ app_name = "elixir",
+ include = [],
+ beam = [ebin],
+ priv = [],
+ deps = [],
+ ),
+ ]
+
+elixir_as_app = rule(
+ implementation = _impl,
+ toolchains = [":toolchain_type"],
+ provides = [ErlangAppInfo],
+)
diff --git a/bazel/elixir/elixir_build.bzl b/bazel/elixir/elixir_build.bzl
new file mode 100644
index 0000000000..e9f47561ca
--- /dev/null
+++ b/bazel/elixir/elixir_build.bzl
@@ -0,0 +1,160 @@
+load(
+ "@bazel_skylib//rules:common_settings.bzl",
+ "BuildSettingInfo",
+)
+load(
+ "@rules_erlang//tools:erlang_toolchain.bzl",
+ "erlang_dirs",
+ "maybe_symlink_erlang",
+)
+
+ElixirInfo = provider(
+ doc = "A Home directory of a built Elixir",
+ fields = [
+ "release_dir",
+ "elixir_home",
+ "version_file",
+ ],
+)
+
+def _impl(ctx):
+ (_, _, filename) = ctx.attr.url.rpartition("/")
+ downloaded_archive = ctx.actions.declare_file(filename)
+
+ release_dir = ctx.actions.declare_directory(ctx.label.name + "_release")
+ build_dir = ctx.actions.declare_directory(ctx.label.name + "_build")
+
+ version_file = ctx.actions.declare_file(ctx.label.name + "_version")
+
+ ctx.actions.run_shell(
+ inputs = [],
+ outputs = [downloaded_archive],
+ command = """set -euo pipefail
+
+curl -L "{archive_url}" -o {archive_path}
+
+if [ -n "{sha256}" ]; then
+ echo "{sha256} {archive_path}" | sha256sum --check --strict -
+fi
+""".format(
+ archive_url = ctx.attr.url,
+ archive_path = downloaded_archive.path,
+ sha256 = ctx.attr.sha256,
+ ),
+ mnemonic = "CURL",
+ progress_message = "Downloading {}".format(ctx.attr.url),
+ )
+
+ (erlang_home, _, runfiles) = erlang_dirs(ctx)
+
+ inputs = depset(
+ direct = [downloaded_archive],
+ transitive = [runfiles.files],
+ )
+
+ strip_prefix = ctx.attr.strip_prefix
+ if strip_prefix != "":
+ strip_prefix += "\\/"
+
+ ctx.actions.run_shell(
+ inputs = inputs,
+ outputs = [release_dir, build_dir, version_file],
+ command = """set -euo pipefail
+
+{maybe_symlink_erlang}
+
+export PATH="{erlang_home}"/bin:${{PATH}}
+
+ABS_BUILD_DIR=$PWD/{build_path}
+ABS_RELEASE_DIR=$PWD/{release_path}
+ABS_VERSION_FILE=$PWD/{version_file}
+
+tar --extract \\
+ --transform 's/{strip_prefix}//' \\
+ --file {archive_path} \\
+ --directory $ABS_BUILD_DIR
+
+cd $ABS_BUILD_DIR
+
+make
+
+cp -r bin $ABS_RELEASE_DIR/
+cp -r lib $ABS_RELEASE_DIR/
+
+$ABS_RELEASE_DIR/bin/iex --version > $ABS_VERSION_FILE
+""".format(
+ maybe_symlink_erlang = maybe_symlink_erlang(ctx),
+ erlang_home = erlang_home,
+ archive_path = downloaded_archive.path,
+ strip_prefix = strip_prefix,
+ build_path = build_dir.path,
+ release_path = release_dir.path,
+ version_file = version_file.path,
+ ),
+ mnemonic = "ELIXIR",
+ progress_message = "Compiling elixir from source",
+ )
+
+ return [
+ DefaultInfo(
+ files = depset([
+ release_dir,
+ version_file,
+ ]),
+ ),
+ ctx.toolchains["@rules_erlang//tools:toolchain_type"].otpinfo,
+ ElixirInfo(
+ release_dir = release_dir,
+ elixir_home = None,
+ version_file = version_file,
+ ),
+ ]
+
+elixir_build = rule(
+ implementation = _impl,
+ attrs = {
+ "url": attr.string(mandatory = True),
+ "strip_prefix": attr.string(),
+ "sha256": attr.string(),
+ },
+ toolchains = ["@rules_erlang//tools:toolchain_type"],
+)
+
+def _elixir_external_impl(ctx):
+ elixir_home = ctx.attr._elixir_home[BuildSettingInfo].value
+
+ version_file = ctx.actions.declare_file(ctx.label.name + "_version")
+
+ ctx.actions.run_shell(
+ inputs = [],
+ outputs = [version_file],
+ command = """set -euo pipefail
+
+"{elixir_home}"/bin/iex --version > {version_file}
+""".format(
+ elixir_home = elixir_home,
+ version_file = version_file.path,
+ ),
+ mnemonic = "ELIXIR",
+ progress_message = "Validating elixir at {}".format(elixir_home),
+ )
+
+ return [
+ DefaultInfo(
+ files = depset([version_file]),
+ ),
+ ctx.toolchains["@rules_erlang//tools:toolchain_type"].otpinfo,
+ ElixirInfo(
+ release_dir = None,
+ elixir_home = elixir_home,
+ version_file = version_file,
+ ),
+ ]
+
+elixir_external = rule(
+ implementation = _elixir_external_impl,
+ attrs = {
+ "_elixir_home": attr.label(default = Label("//:elixir_home")),
+ },
+ toolchains = ["@rules_erlang//tools:toolchain_type"],
+)
diff --git a/bazel/elixir/elixir_toolchain.bzl b/bazel/elixir/elixir_toolchain.bzl
new file mode 100644
index 0000000000..444eb110d5
--- /dev/null
+++ b/bazel/elixir/elixir_toolchain.bzl
@@ -0,0 +1,65 @@
+load(
+ "@rules_erlang//private:erlang_build.bzl",
+ "OtpInfo",
+)
+load(
+ ":elixir_build.bzl",
+ "ElixirInfo",
+)
+
+def _impl(ctx):
+ toolchain_info = platform_common.ToolchainInfo(
+ otpinfo = ctx.attr.elixir[OtpInfo],
+ elixirinfo = ctx.attr.elixir[ElixirInfo],
+ )
+ return [toolchain_info]
+
+elixir_toolchain = rule(
+ implementation = _impl,
+ attrs = {
+ "elixir": attr.label(
+ mandatory = True,
+ providers = [OtpInfo, ElixirInfo],
+ ),
+ },
+ provides = [platform_common.ToolchainInfo],
+)
+
+def _build_info(ctx):
+ return ctx.toolchains[":toolchain_type"].otpinfo
+
+def erlang_dirs(ctx):
+ info = _build_info(ctx)
+ if info.release_dir != None:
+ runfiles = ctx.runfiles([
+ info.release_dir,
+ info.version_file,
+ ])
+ else:
+ runfiles = ctx.runfiles([
+ info.version_file,
+ ])
+ return (info.erlang_home, info.release_dir, runfiles)
+
+def elixir_dirs(ctx, short_path = False):
+ info = ctx.toolchains[":toolchain_type"].elixirinfo
+ if info.elixir_home != None:
+ return (info.elixir_home, ctx.runfiles([info.version_file]))
+ else:
+ p = info.release_dir.short_path if short_path else info.release_dir.path
+ return (p, ctx.runfiles([info.release_dir, info.version_file]))
+
+def maybe_symlink_erlang(ctx, short_path = False):
+ info = _build_info(ctx)
+ release_dir = info.release_dir
+ if release_dir == None:
+ return ""
+ else:
+ return """mkdir -p $(dirname "{erlang_home}")
+ln -sf $PWD/{erlang_release_dir} "{erlang_home}"
+ERTS_DIRNAME="$(basename "$(echo "{erlang_home}"/erts-*)")"
+ln -sf ../$ERTS_DIRNAME/bin/epmd "{erlang_home}"/bin/epmd
+""".format(
+ erlang_release_dir = release_dir.short_path if short_path else release_dir.path,
+ erlang_home = info.erlang_home,
+ )
diff --git a/bazel/elixir/iex_eval.bzl b/bazel/elixir/iex_eval.bzl
new file mode 100644
index 0000000000..3b652848ab
--- /dev/null
+++ b/bazel/elixir/iex_eval.bzl
@@ -0,0 +1,70 @@
+load(
+ ":elixir_toolchain.bzl",
+ "elixir_dirs",
+ "erlang_dirs",
+ "maybe_symlink_erlang",
+)
+
+def _impl(ctx):
+ outs = [
+ ctx.actions.declare_file(f)
+ for f in ctx.attr.outs
+ ]
+
+ (erlang_home, _, erlang_runfiles) = erlang_dirs(ctx)
+ (elixir_home, elixir_runfiles) = elixir_dirs(ctx)
+
+ script = """set -euo pipefail
+
+{maybe_symlink_erlang}
+
+if [[ "{elixir_home}" == /* ]]; then
+ ABS_ELIXIR_HOME="{elixir_home}"
+else
+ ABS_ELIXIR_HOME=$PWD/{elixir_home}
+fi
+
+export PATH="$ABS_ELIXIR_HOME"/bin:"{erlang_home}"/bin:${{PATH}}
+
+export SRCS="{srcs}"
+export OUTS="{outs}"
+
+${{ABS_ELIXIR_HOME}}/bin/iex --eval "$1"
+""".format(
+ maybe_symlink_erlang = maybe_symlink_erlang(ctx),
+ erlang_home = erlang_home,
+ elixir_home = elixir_home,
+ srcs = ctx.configuration.host_path_separator.join([src.path for src in ctx.files.srcs]),
+ outs = ctx.configuration.host_path_separator.join([out.path for out in outs]),
+ )
+
+ inputs = depset(
+ direct = ctx.files.srcs,
+ transitive = [
+ erlang_runfiles.files,
+ elixir_runfiles.files,
+ ],
+ )
+
+ ctx.actions.run_shell(
+ inputs = inputs,
+ outputs = outs,
+ command = script,
+ arguments = [ctx.attr.expression],
+ )
+
+ return [
+ DefaultInfo(files = depset(outs)),
+ ]
+
+iex_eval = rule(
+ implementation = _impl,
+ attrs = {
+ "srcs": attr.label_list(allow_files = True),
+ "outs": attr.string_list(),
+ "expression": attr.string(
+ mandatory = True,
+ ),
+ },
+ toolchains = [":toolchain_type"],
+)
diff --git a/bazel/mix/BUILD.bazel b/bazel/mix/BUILD.bazel
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/bazel/mix/BUILD.bazel
diff --git a/bazel/mix/mix_app.bzl b/bazel/mix/mix_app.bzl
new file mode 100644
index 0000000000..5a5dea9bb1
--- /dev/null
+++ b/bazel/mix/mix_app.bzl
@@ -0,0 +1,172 @@
+load(
+ "@rules_erlang//:erlang_app_info.bzl",
+ "ErlangAppInfo",
+ "flat_deps",
+)
+load(
+ "@rules_erlang//:util.bzl",
+ "path_join",
+)
+load(
+ "@rules_erlang//private:util.bzl",
+ "erl_libs_contents",
+)
+load(
+ "//bazel/elixir:elixir_toolchain.bzl",
+ "elixir_dirs",
+ "erlang_dirs",
+ "maybe_symlink_erlang",
+)
+
+def find_mix_exs(files):
+ mix_exs = [
+ f
+ for f in files
+ if f.basename == "mix.exs"
+ ]
+ if len(mix_exs) == 0:
+ fail("mix.exs is not among the srcs")
+ return mix_exs[0]
+
+def _mix_deps_dir_contents(ctx, deps_dir):
+ files = []
+ for (srcs, name) in ctx.attr.dep_srcs.items():
+ for src in srcs.files.to_list():
+ rp = src.path.removeprefix("external/.elixir.{}/".format(name))
+ f = ctx.actions.declare_file(path_join(deps_dir, name, rp))
+ ctx.actions.symlink(
+ output = f,
+ target_file = src,
+ )
+ files.append(f)
+ return files
+
+def _impl(ctx):
+ mix_exs = find_mix_exs(ctx.files.srcs)
+
+ ebin = ctx.actions.declare_directory("ebin")
+ home = ctx.actions.declare_directory("mix_home")
+ build_dir = ctx.actions.declare_directory("_build")
+
+ (erlang_home, _, erlang_runfiles) = erlang_dirs(ctx)
+ (elixir_home, elixir_runfiles) = elixir_dirs(ctx)
+
+ erl_libs_dir = ctx.label.name + "_apps"
+ erl_libs_files = erl_libs_contents(
+ ctx,
+ headers = True,
+ dir = erl_libs_dir,
+ )
+
+ script = """set -euo pipefail
+
+{maybe_symlink_erlang}
+
+if [[ "{elixir_home}" == /* ]]; then
+ ABS_ELIXIR_HOME="{elixir_home}"
+else
+ ABS_ELIXIR_HOME=$PWD/{elixir_home}
+fi
+ABS_EBIN_DIR=$PWD/{ebin}
+
+export PATH="$ABS_ELIXIR_HOME"/bin:"{erlang_home}"/bin:${{PATH}}
+export HOME=$PWD/{home}
+export MIX_BUILD_PATH=$PWD/{build_dir}
+export MIX_ENV=prod
+export DEPS_DIR=$(dirname ${{ABS_EBIN_DIR}})/{erl_libs_dir}
+export ERL_LIBS=${{DEPS_DIR}}
+
+cd $(dirname {mix_exs})
+
+export ERL_COMPILER_OPTIONS=deterministic
+${{ABS_ELIXIR_HOME}}/bin/mix compile --no-deps-check
+
+if [ -n "$(ls ${{MIX_BUILD_PATH}}/lib/{app_name}/consolidated)" ]; then
+ cp ${{MIX_BUILD_PATH}}/lib/{app_name}/consolidated/* ${{ABS_EBIN_DIR}}
+fi
+if [ -n "$(ls ${{MIX_BUILD_PATH}}/lib/{app_name}/ebin)" ]; then
+ cp ${{MIX_BUILD_PATH}}/lib/{app_name}/ebin/* ${{ABS_EBIN_DIR}}
+fi
+
+# remove symlinks from the _build directory since it
+# is not used, and bazel does not allow them
+find ${{MIX_BUILD_PATH}} -type l -delete
+""".format(
+ maybe_symlink_erlang = maybe_symlink_erlang(ctx),
+ package = ctx.label.package,
+ erlang_home = erlang_home,
+ elixir_home = elixir_home,
+ home = home.path,
+ build_dir = build_dir.path,
+ erl_libs_dir = erl_libs_dir,
+ mix_exs = mix_exs.path,
+ app_name = ctx.attr.app_name,
+ ebin = ebin.path,
+ )
+
+ inputs = depset(
+ direct = ctx.files.srcs,
+ transitive = [
+ erlang_runfiles.files,
+ elixir_runfiles.files,
+ depset(erl_libs_files),
+ ],
+ )
+
+ ctx.actions.run_shell(
+ inputs = inputs,
+ outputs = [ebin, home, build_dir],
+ command = script,
+ mnemonic = "MIX",
+ )
+
+ deps = flat_deps(ctx.attr.deps)
+
+ runfiles = ctx.runfiles([ebin])
+ runfiles = runfiles.merge_all(
+ [
+ erlang_runfiles,
+ elixir_runfiles,
+ ] + [
+ dep[DefaultInfo].default_runfiles
+ for dep in deps
+ ],
+ )
+
+ return [
+ DefaultInfo(
+ files = depset([ebin]),
+ runfiles = runfiles,
+ ),
+ ErlangAppInfo(
+ app_name = ctx.attr.app_name,
+ include = [],
+ beam = [ebin],
+ priv = [],
+ license_files = ctx.files.license_files,
+ deps = deps,
+ ),
+ ]
+
+mix_app = rule(
+ implementation = _impl,
+ attrs = {
+ "app_name": attr.string(
+ mandatory = True,
+ ),
+ "srcs": attr.label_list(
+ mandatory = True,
+ allow_files = True,
+ ),
+ "license_files": attr.label_list(
+ allow_files = True,
+ ),
+ "deps": attr.label_list(
+ providers = [ErlangAppInfo],
+ ),
+ },
+ toolchains = [
+ "//bazel/elixir:toolchain_type",
+ ],
+ provides = [ErlangAppInfo],
+)
diff --git a/bazel/platforms/BUILD.bazel b/bazel/platforms/BUILD.bazel
new file mode 100644
index 0000000000..c3bf69b577
--- /dev/null
+++ b/bazel/platforms/BUILD.bazel
@@ -0,0 +1,72 @@
+package(
+ default_visibility = ["//visibility:public"],
+)
+
+constraint_value(
+ name = "erlang_git_master",
+ constraint_setting = "@rules_erlang//platforms:erlang_major_version",
+)
+
+constraint_setting(
+ name = "elixir_version",
+)
+
+constraint_value(
+ name = "elixir_external",
+ constraint_setting = ":elixir_version",
+)
+
+constraint_value(
+ name = "elixir_1_10",
+ constraint_setting = ":elixir_version",
+)
+
+constraint_value(
+ name = "elixir_1_13",
+ constraint_setting = ":elixir_version",
+)
+
+platform(
+ name = "erlang_external_platform",
+ constraint_values = [
+ "@rules_erlang//platforms:erlang_external",
+ ":elixir_external",
+ ],
+ parents = ["@rbe//config:platform"],
+)
+
+platform(
+ name = "erlang_23_platform",
+ constraint_values = [
+ "@rules_erlang//platforms:erlang_23",
+ ":elixir_1_10",
+ ],
+ parents = ["@rbe//config:platform"],
+)
+
+platform(
+ name = "erlang_24_platform",
+ constraint_values = [
+ "@rules_erlang//platforms:erlang_24",
+ ":elixir_1_13",
+ ],
+ parents = ["@rbe//config:platform"],
+)
+
+platform(
+ name = "erlang_25_platform",
+ constraint_values = [
+ "@rules_erlang//platforms:erlang_25",
+ ":elixir_1_13",
+ ],
+ parents = ["@rbe//config:platform"],
+)
+
+platform(
+ name = "erlang_git_master_platform",
+ constraint_values = [
+ ":erlang_git_master",
+ ":elixir_1_13",
+ ],
+ parents = ["@rbe//config:platform"],
+)
diff --git a/bazel/toolchains/BUILD.bazel b/bazel/toolchains/BUILD.bazel
new file mode 100644
index 0000000000..49b8bf9512
--- /dev/null
+++ b/bazel/toolchains/BUILD.bazel
@@ -0,0 +1,50 @@
+load(
+ "@rules_erlang//tools:erlang.bzl",
+ "erlang_toolchain_external",
+ "erlang_toolchain_from_github_release",
+ "erlang_toolchain_from_http_archive",
+)
+load(
+ "//bazel/elixir:elixir.bzl",
+ "elixir_toolchain_external",
+ "elixir_toolchain_from_github_release",
+)
+
+erlang_toolchain_external()
+
+erlang_toolchain_from_github_release(
+ name_suffix = "_23",
+ sha256 = "35123f366ded534775a05db8ad6c06c20519ae228af1b5952132b10845621f21",
+ version = "23.3.4.14",
+)
+
+erlang_toolchain_from_github_release(
+ name_suffix = "_24",
+ sha256 = "76fcca5ba6f11eb9caac32bf053badc46b5d66f867150eef077f4f0d7944ecd7",
+ version = "24.3.4",
+)
+
+erlang_toolchain_from_github_release(
+ name_suffix = "_25",
+ sha256 = "2d7678c9bc6fcf3a1242c4d1c3864855d85e73ade792cd80adb8a9f379996711",
+ version = "25.0",
+)
+
+erlang_toolchain_from_http_archive(
+ erlang_constraint = "//bazel/platforms:erlang_git_master",
+ name_suffix = "_git_master",
+ strip_prefix = "otp-master",
+ url = "https://github.com/erlang/otp/archive/refs/heads/master.tar.gz",
+)
+
+elixir_toolchain_external()
+
+elixir_toolchain_from_github_release(
+ name_suffix = "_1_10",
+ version = "1.10.4",
+)
+
+elixir_toolchain_from_github_release(
+ name_suffix = "_1_13",
+ version = "1.13.4",
+)
diff --git a/deps/amqp10_client/BUILD.bazel b/deps/amqp10_client/BUILD.bazel
index 508be45768..323bdb9879 100644
--- a/deps/amqp10_client/BUILD.bazel
+++ b/deps/amqp10_client/BUILD.bazel
@@ -1,10 +1,9 @@
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
-load("//:rabbitmq_home.bzl", "rabbitmq_home")
-load("//:rabbitmq_run.bzl", "rabbitmq_run")
load(
"//:rabbitmq.bzl",
"assert_suites",
+ "broker_for_integration_suites",
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
@@ -60,7 +59,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -71,20 +70,10 @@ plt(
dialyze(
plt = ":base_plt",
- tags = ["dialyze"],
)
-rabbitmq_home(
- name = "broker-for-tests-home",
- plugins = [
- "//deps/rabbit:erlang_app",
- "//deps/rabbitmq_amqp1_0:erlang_app",
- ],
-)
-
-rabbitmq_run(
- name = "rabbitmq-for-tests-run",
- home = ":broker-for-tests-home",
+broker_for_integration_suites(
+ extra_plugins = ["//deps/rabbitmq_amqp1_0:erlang_app"],
)
PACKAGE = "deps/amqp10_client"
diff --git a/deps/amqp10_common/BUILD.bazel b/deps/amqp10_common/BUILD.bazel
index 4a3cdeda1d..4fe84a7947 100644
--- a/deps/amqp10_common/BUILD.bazel
+++ b/deps/amqp10_common/BUILD.bazel
@@ -1,14 +1,9 @@
-load("@rules_erlang//:app_file.bzl", "app_file")
-load("@rules_erlang//:erlang_app_info.bzl", "erlang_app_info")
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze")
load(
"//:rabbitmq.bzl",
- "APP_VERSION",
- "RABBITMQ_ERLC_OPTS",
- "RABBITMQ_TEST_ERLC_OPTS",
"assert_suites",
+ "rabbitmq_app",
"rabbitmq_suite",
)
@@ -46,73 +41,38 @@ genrule(
tools = [":codegen"],
)
-app_file(
- name = "app_file",
- app_description = "Modules shared by rabbitmq-amqp1.0 and rabbitmq-amqp1.0-client",
- app_extra = """%% Hex.pm package informations.
- {licenses, ["MPL-2.0"]},
- {links, [
- {"Website", "https://www.rabbitmq.com/"},
- {"GitHub", "https://github.com/rabbitmq/rabbitmq-server/deps/amqp10_common"}
- ]},
- {build_tools, ["make", "rebar3"]},
- {files, [
- "erlang.mk",
- "git-revisions.txt",
- "include",
- "LICENSE*",
- "Makefile",
- "rabbitmq-components.mk",
- "README",
- "README.md",
- "mk"
- ]}
-""",
- app_name = "amqp10_common",
- app_version = APP_VERSION,
- modules = [":beam_files"],
-)
+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"}
+ ]},
+ {build_tools, ["make", "rebar3"]},
+ {files, [
+ "erlang.mk",
+ "git-revisions.txt",
+ "include",
+ "LICENSE*",
+ "Makefile",
+ "rabbitmq-components.mk",
+ "README",
+ "README.md",
+ "mk"
+ ]}
+"""
-erlc(
- name = "beam_files",
- srcs = ["src/amqp10_framing0.erl"] + glob(["src/*.erl"]),
- hdrs = ["include/amqp10_framing.hrl"] + glob(["include/*.hrl"]),
- dest = "ebin",
- erlc_opts = RABBITMQ_ERLC_OPTS,
-)
-
-erlang_app_info(
- name = "erlang_app",
- hdrs = ["include/amqp10_framing.hrl"] + glob(["include/*.hrl"]),
- app = ":app_file",
- app_name = "amqp10_common",
- beam = [":beam_files"],
- visibility = ["//visibility:public"],
-)
-
-erlc(
- name = "test_beam_files",
- srcs = ["src/amqp10_framing0.erl"] + glob(["src/*.erl"]),
- hdrs = ["include/amqp10_framing.hrl"] + glob(["include/*.hrl"]),
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
-)
-
-erlang_app_info(
- name = "test_erlang_app",
- testonly = True,
- hdrs = ["include/amqp10_framing.hrl"] + glob(["include/*.hrl"]),
- app = ":app_file",
+rabbitmq_app(
+ app_description = "Modules shared by rabbitmq-amqp1.0 and rabbitmq-amqp1.0-client",
+ app_extra_keys = APP_EXTRA_KEYS,
app_name = "amqp10_common",
- beam = [":test_beam_files"],
- visibility = ["//visibility:public"],
+ extra_hdrs = ["include/amqp10_framing.hrl"],
+ extra_srcs = ["src/amqp10_framing0.erl"],
)
-xref(tags = ["xref"])
+xref()
dialyze(
plt = "//:base_plt",
- tags = ["dialyze"],
)
suites = [
diff --git a/deps/amqp_client/BUILD.bazel b/deps/amqp_client/BUILD.bazel
index 7f3316b7fa..91d6d2b327 100644
--- a/deps/amqp_client/BUILD.bazel
+++ b/deps/amqp_client/BUILD.bazel
@@ -61,7 +61,6 @@ xref(
additional_libs = [
"@ranch//:erlang_app",
],
- tags = ["xref"],
)
plt(
@@ -73,7 +72,6 @@ plt(
dialyze(
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbit/BUILD.bazel b/deps/rabbit/BUILD.bazel
index 13c71d2e0b..cb9807d362 100644
--- a/deps/rabbit/BUILD.bazel
+++ b/deps/rabbit/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load("//:rabbitmq_home.bzl", "rabbitmq_home")
@@ -6,12 +5,11 @@ load("//:rabbitmq_run.bzl", "rabbitmq_run")
load(
"//:rabbitmq.bzl",
"RABBITMQ_DIALYZER_OPTS",
- "RABBITMQ_ERLC_OPTS",
- "RABBITMQ_TEST_ERLC_OPTS",
"assert_suites",
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
+ "rabbitmq_test_helper",
)
load(":bats.bzl", "bats")
@@ -206,7 +204,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt_apps = [
"mnesia",
@@ -224,7 +222,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
@@ -254,52 +251,40 @@ rabbitmq_run(
home = ":broker-for-tests-home",
)
-erlc(
+rabbitmq_test_helper(
name = "quorum_queue_utils",
- testonly = True,
srcs = [
"test/quorum_queue_utils.erl",
],
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
)
-erlc(
+rabbitmq_test_helper(
name = "rabbit_ha_test_consumer",
- testonly = True,
srcs = [
"test/rabbit_ha_test_consumer.erl",
],
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = [
"//deps/amqp_client:erlang_app",
"//deps/rabbit_common:erlang_app",
],
)
-erlc(
+rabbitmq_test_helper(
name = "rabbit_ha_test_producer",
- testonly = True,
srcs = [
"test/rabbit_ha_test_producer.erl",
],
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = [
"//deps/amqp_client:erlang_app",
"//deps/rabbit_common:erlang_app",
],
)
-erlc(
+rabbitmq_test_helper(
name = "test_util",
- testonly = True,
srcs = [
"test/test_util.erl",
],
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
)
PACKAGE = "deps/rabbit"
diff --git a/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel b/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel
index fdc256395a..a482b63562 100644
--- a/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel
+++ b/deps/rabbit/apps/rabbitmq_prelaunch/BUILD.bazel
@@ -32,7 +32,6 @@ xref(
"@systemd//:erlang_app",
"@osiris//:erlang_app",
],
- tags = ["xref"],
)
plt(
@@ -42,7 +41,6 @@ plt(
dialyze(
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel b/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel
index 5e05264f08..8b81edc72e 100644
--- a/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel
+++ b/deps/rabbit/test/feature_flags_SUITE_data/my_plugin/BUILD.bazel
@@ -8,7 +8,7 @@ DEPS = [
erlang_app(
app_description = "Plugin to test feature flags",
- app_extra = BROKER_VERSION_REQUIREMENTS_ANY,
+ app_extra_keys = BROKER_VERSION_REQUIREMENTS_ANY,
app_name = "my_plugin",
app_version = "1.0.0",
deps = DEPS,
diff --git a/deps/rabbit_common/BUILD.bazel b/deps/rabbit_common/BUILD.bazel
index 089231b2b2..50142d5592 100644
--- a/deps/rabbit_common/BUILD.bazel
+++ b/deps/rabbit_common/BUILD.bazel
@@ -1,14 +1,9 @@
-load("@rules_erlang//:app_file.bzl", "app_file")
-load("@rules_erlang//:erlang_app_info.bzl", "erlang_app_info")
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
"//:rabbitmq.bzl",
- "APP_VERSION",
- "RABBITMQ_ERLC_OPTS",
- "RABBITMQ_TEST_ERLC_OPTS",
"assert_suites",
+ "rabbitmq_app",
"rabbitmq_suite",
)
@@ -56,8 +51,6 @@ genrule(
tools = [":codegen"],
)
-DEPS = []
-
RUNTIME_DEPS = [
"@jsx//:erlang_app",
"@recon//:erlang_app",
@@ -98,78 +91,25 @@ EXTRA_APPS = [
"xmerl",
]
-HDRS = glob(["include/*.hrl"]) + ["include/rabbit_framing.hrl"]
-
-app_file(
- name = "app_file",
+rabbitmq_app(
app_description = "Modules shared by rabbitmq-server and rabbitmq-erlang-client",
- app_extra = APP_EXTRA_KEYS,
+ app_extra_keys = APP_EXTRA_KEYS,
app_name = APP_NAME,
- app_version = APP_VERSION,
extra_apps = EXTRA_APPS,
- modules = [":beam_files"],
- deps = DEPS + RUNTIME_DEPS,
-)
-
-erlc(
- name = "beam_files",
- srcs = glob(
- ["src/*.erl"],
- ) + [
- "src/rabbit_framing_amqp_0_8.erl",
- "src/rabbit_framing_amqp_0_9_1.erl",
- ],
- hdrs = HDRS,
- dest = "ebin",
- erlc_opts = RABBITMQ_ERLC_OPTS,
- deps = DEPS,
-)
-
-erlang_app_info(
- name = "erlang_app",
- hdrs = HDRS,
- app = ":app_file",
- app_name = APP_NAME,
- beam = [
- ":beam_files",
+ extra_hdrs = [
+ "include/rabbit_framing.hrl",
],
- visibility = ["//visibility:public"],
- deps = DEPS + RUNTIME_DEPS,
-)
-
-erlc(
- name = "test_beam_files",
- testonly = True,
- srcs = glob(
- ["src/*.erl"],
- ) + [
+ extra_srcs = [
"src/rabbit_framing_amqp_0_8.erl",
"src/rabbit_framing_amqp_0_9_1.erl",
],
- hdrs = HDRS,
- dest = "src",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
- deps = DEPS,
-)
-
-erlang_app_info(
- name = "test_erlang_app",
- testonly = True,
- hdrs = HDRS,
- app = ":app_file",
- app_name = APP_NAME,
- beam = [
- ":test_beam_files",
- ],
- visibility = ["//:__subpackages__"],
- deps = DEPS + RUNTIME_DEPS,
+ runtime_deps = RUNTIME_DEPS,
)
xref(
additional_libs = [
"@ranch//:erlang_app",
],
- tags = ["xref"],
)
plt(
@@ -184,7 +124,6 @@ plt(
dialyze(
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_amqp1_0/BUILD.bazel b/deps/rabbitmq_amqp1_0/BUILD.bazel
index c0f1019025..b855aa7a57 100644
--- a/deps/rabbitmq_amqp1_0/BUILD.bazel
+++ b/deps/rabbitmq_amqp1_0/BUILD.bazel
@@ -47,7 +47,6 @@ rabbitmq_app(
xref(
size = "small",
- tags = ["xref"],
)
plt(
@@ -61,7 +60,6 @@ dialyze(
size = "medium",
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_auth_backend_cache/BUILD.bazel b/deps/rabbitmq_auth_backend_cache/BUILD.bazel
index 06a9762440..a44b1e4b55 100644
--- a/deps/rabbitmq_auth_backend_cache/BUILD.bazel
+++ b/deps/rabbitmq_auth_backend_cache/BUILD.bazel
@@ -43,7 +43,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -53,7 +53,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_auth_backend_http/BUILD.bazel b/deps/rabbitmq_auth_backend_http/BUILD.bazel
index c3ff31a62b..d46de91e40 100644
--- a/deps/rabbitmq_auth_backend_http/BUILD.bazel
+++ b/deps/rabbitmq_auth_backend_http/BUILD.bazel
@@ -49,7 +49,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -61,7 +61,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_auth_backend_ldap/BUILD.bazel b/deps/rabbitmq_auth_backend_ldap/BUILD.bazel
index e3729bfda7..e4574b8064 100644
--- a/deps/rabbitmq_auth_backend_ldap/BUILD.bazel
+++ b/deps/rabbitmq_auth_backend_ldap/BUILD.bazel
@@ -64,7 +64,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -76,7 +76,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_auth_backend_oauth2/BUILD.bazel b/deps/rabbitmq_auth_backend_oauth2/BUILD.bazel
index 2b3e2e86e7..1abc5455c5 100644
--- a/deps/rabbitmq_auth_backend_oauth2/BUILD.bazel
+++ b/deps/rabbitmq_auth_backend_oauth2/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
@@ -10,6 +9,7 @@ load(
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
+ "rabbitmq_test_helper",
"without",
)
@@ -40,7 +40,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -53,20 +53,16 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
broker_for_integration_suites()
-erlc(
+rabbitmq_test_helper(
name = "rabbit_auth_backend_oauth2_test_util",
- testonly = True,
srcs = [
"test/rabbit_auth_backend_oauth2_test_util.erl",
],
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
)
PACKAGE = "deps/rabbitmq_auth_backend_oauth2"
diff --git a/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel b/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel
index 38186fd431..00d1c84ab2 100644
--- a/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel
+++ b/deps/rabbitmq_auth_mechanism_ssl/BUILD.bazel
@@ -35,7 +35,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -45,5 +45,4 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
)
diff --git a/deps/rabbitmq_aws/BUILD.bazel b/deps/rabbitmq_aws/BUILD.bazel
index eb42eb8fab..040c068af1 100644
--- a/deps/rabbitmq_aws/BUILD.bazel
+++ b/deps/rabbitmq_aws/BUILD.bazel
@@ -41,7 +41,6 @@ xref(
"@ranch//:erlang_app",
"@recon//:erlang_app",
],
- tags = ["xref"],
)
plt(
@@ -52,7 +51,6 @@ plt(
dialyze(
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_cli/BUILD.bazel b/deps/rabbitmq_cli/BUILD.bazel
index fea45d28ff..c7dfc38aa6 100644
--- a/deps/rabbitmq_cli/BUILD.bazel
+++ b/deps/rabbitmq_cli/BUILD.bazel
@@ -1,27 +1,26 @@
load(":rabbitmqctl.bzl", "rabbitmqctl")
load(":rabbitmqctl_test.bzl", "rabbitmqctl_test")
-load(":elixir.bzl", "elixir")
load("//:rabbitmq_home.bzl", "rabbitmq_home")
load("//:rabbitmq_run.bzl", "rabbitmq_run")
load("//:rabbitmq.bzl", "STARTS_BACKGROUND_BROKER_TAG")
-# This rule simply exposes elixir as a runtime lib for tests in erlang
-elixir(
- name = "elixir_app",
- visibility = ["//visibility:public"],
-)
-
# Note: All the various rabbitmq-* scripts are just copies of rabbitmqctl
rabbitmqctl(
name = "rabbitmqctl",
- srcs = glob([
+ srcs = [
"mix.exs",
"config/config.exs",
+ ] + glob([
"lib/**/*.ex",
]),
visibility = ["//visibility:public"],
deps = [
"//deps/rabbit_common:erlang_app",
+ "@csv//:elixir_app",
+ "@hex//:elixir_app",
+ "@json//:elixir_app",
+ "@observer_cli//:erlang_app",
+ "@stdout_formatter//:erlang_app",
],
)
@@ -46,9 +45,10 @@ rabbitmq_run(
rabbitmqctl_test(
name = "rabbitmqctl_tests",
size = "large",
- srcs = glob([
+ srcs = [
"mix.exs",
"config/config.exs",
+ ] + glob([
"lib/**/*.ex",
"test/**/*.exs",
]),
@@ -60,5 +60,13 @@ rabbitmqctl_test(
"//deps/amqp_client:erlang_app",
"//deps/rabbit:erlang_app",
"//deps/rabbit_common:erlang_app",
+ "@amqp//:elixir_app",
+ "@csv//:elixir_app",
+ "@hex//:elixir_app",
+ "@json//:elixir_app",
+ "@observer_cli//:erlang_app",
+ "@stdout_formatter//:erlang_app",
+ "@temp//:elixir_app",
+ "@x509//:elixir_app",
],
)
diff --git a/deps/rabbitmq_cli/elixir.bzl b/deps/rabbitmq_cli/elixir.bzl
deleted file mode 100644
index 4ea13f7c5b..0000000000
--- a/deps/rabbitmq_cli/elixir.bzl
+++ /dev/null
@@ -1,68 +0,0 @@
-load("@rules_erlang//:erlang_home.bzl", "ErlangHomeProvider", "ErlangVersionProvider")
-load("@rules_erlang//:erlang_app_info.bzl", "ErlangAppInfo")
-load("@rules_erlang//:util.bzl", "path_join", "windows_path")
-load("//:elixir_home.bzl", "ElixirHomeProvider")
-
-def _impl(ctx):
- erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version
- erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path
- elixir_home = ctx.attr._elixir_home[ElixirHomeProvider].path
-
- ebin = ctx.actions.declare_directory(path_join(ctx.attr.name, "ebin"))
-
- if not ctx.attr.is_windows:
- ctx.actions.run(
- inputs = [],
- outputs = [ebin],
- executable = "cp",
- arguments = [
- "-R",
- "{}/lib/elixir/ebin".format(elixir_home),
- ebin.dirname,
- ],
- )
- else:
- # robocopy exits non-zero when new files are copied, so we can't
- # just ctx.actions.run robocopy
- ctx.actions.run_shell(
- inputs = [],
- outputs = [ebin],
- command = "cp -R \"{elixir_home}\"/lib/elixir/ebin {ebin}".format(
- elixir_home = elixir_home,
- ebin = ebin.dirname,
- ),
- )
-
- return [
- DefaultInfo(
- files = depset([ebin]),
- runfiles = ctx.runfiles([ebin]),
- ),
- ErlangAppInfo(
- app_name = ctx.attr.name,
- erlang_version = erlang_version,
- include = [],
- beam = [ebin],
- priv = [],
- deps = [],
- ),
- ]
-
-elixir_private = rule(
- implementation = _impl,
- attrs = {
- "is_windows": attr.bool(mandatory = True),
- "_erlang_version": attr.label(default = Label("@rules_erlang//:erlang_version")),
- "_erlang_home": attr.label(default = Label("@rules_erlang//:erlang_home")),
- "_elixir_home": attr.label(default = Label("//:elixir_home")),
- },
-)
-
-def elixir(**kwargs):
- elixir_private(
- is_windows = select({
- "@bazel_tools//src/conditions:host_windows": True,
- "//conditions:default": False,
- }),
- **kwargs
- )
diff --git a/deps/rabbitmq_cli/rabbitmqctl.bzl b/deps/rabbitmq_cli/rabbitmqctl.bzl
index f7467a3b33..242023dd4e 100644
--- a/deps/rabbitmq_cli/rabbitmqctl.bzl
+++ b/deps/rabbitmq_cli/rabbitmqctl.bzl
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlang_home.bzl", "ErlangHomeProvider", "ErlangVersionProvider")
load(
"@rules_erlang//:erlang_app_info.bzl",
"ErlangAppInfo",
@@ -6,138 +5,104 @@ load(
)
load(
"@rules_erlang//:util.bzl",
- "BEGINS_WITH_FUN",
- "QUERY_ERL_VERSION",
"path_join",
)
-load("//:elixir_home.bzl", "ElixirHomeProvider")
-
-MIX_DEPS_DIR = "deps"
+load(
+ "@rules_erlang//private:util.bzl",
+ "erl_libs_contents",
+)
+load(
+ "//bazel/mix:mix_app.bzl",
+ "find_mix_exs",
+)
+load(
+ "//bazel/elixir:elixir_toolchain.bzl",
+ "elixir_dirs",
+ "erlang_dirs",
+ "maybe_symlink_erlang",
+)
def _impl(ctx):
- erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version
- erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path
- elixir_home = ctx.attr._elixir_home[ElixirHomeProvider].path
+ mix_exs = find_mix_exs(ctx.files.srcs)
- escript = ctx.actions.declare_file(path_join("escript", "rabbitmqctl"))
+ escript = ctx.actions.declare_file(path_join("escript", ctx.label.name))
ebin = ctx.actions.declare_directory("ebin")
+ home = ctx.actions.declare_directory("mix_home")
+ build_dir = ctx.actions.declare_directory("_build")
+
+ (erlang_home, _, erlang_runfiles) = erlang_dirs(ctx)
+ (elixir_home, elixir_runfiles) = elixir_dirs(ctx)
- copy_compiled_deps_commands = []
- copy_compiled_deps_commands.append("mkdir ${{MIX_INVOCATION_DIR}}/{}".format(MIX_DEPS_DIR))
- for dep in ctx.attr.deps:
- lib_info = dep[ErlangAppInfo]
- if lib_info.erlang_version != erlang_version:
- fail("Mismatched erlang versions", erlang_version, lib_info.erlang_version)
-
- dest_dir = path_join("${MIX_INVOCATION_DIR}", MIX_DEPS_DIR, lib_info.app_name)
- copy_compiled_deps_commands.append(
- "mkdir {}".format(dest_dir),
- )
- copy_compiled_deps_commands.append(
- "mkdir {}".format(path_join(dest_dir, "include")),
- )
- copy_compiled_deps_commands.append(
- "mkdir {}".format(path_join(dest_dir, "ebin")),
- )
- for hdr in lib_info.include:
- copy_compiled_deps_commands.append(
- "cp ${{PWD}}/{source} {target}".format(
- source = hdr.path,
- target = path_join(dest_dir, "include", hdr.basename),
- ),
- )
- for beam in lib_info.beam:
- copy_compiled_deps_commands.append(
- "cp ${{PWD}}/{source} {target}".format(
- source = beam.path,
- target = path_join(dest_dir, "ebin", beam.basename),
- ),
- )
-
- mix_invocation_dir = ctx.actions.declare_directory("{}_mix".format(ctx.label.name))
-
- package_dir = ctx.label.package
- if ctx.label.workspace_root != "":
- package_dir = path_join(ctx.label.workspace_root, package_dir)
+ erl_libs_dir = ctx.label.name + "_apps"
+ erl_libs_files = erl_libs_contents(
+ ctx,
+ headers = True,
+ dir = erl_libs_dir,
+ )
+
+ package_dir = path_join(ctx.label.workspace_root, ctx.label.package)
script = """set -euo pipefail
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
-export PATH="{elixir_home}"/bin:"{erlang_home}"/bin:${{PATH}}
-
-MIX_INVOCATION_DIR="{mix_invocation_dir}"
+{maybe_symlink_erlang}
-cp -R ${{PWD}}/{package_dir}/config ${{MIX_INVOCATION_DIR}}/config
-# cp -R ${{PWD}}/{package_dir}/include ${{MIX_INVOCATION_DIR}}/include # rabbitmq_cli's include directory is empty
-cp -R ${{PWD}}/{package_dir}/lib ${{MIX_INVOCATION_DIR}}/lib
-cp ${{PWD}}/{package_dir}/mix.exs ${{MIX_INVOCATION_DIR}}/mix.exs
-
-{copy_compiled_deps_command}
-
-cd ${{MIX_INVOCATION_DIR}}
-export HOME=${{PWD}}
-
-{begins_with_fun}
-V=$("{erlang_home}"/bin/{query_erlang_version})
-if ! beginswith "{erlang_version}" "$V"; then
- echo "Erlang version mismatch (Expected {erlang_version}, found $V)"
- exit 1
+if [[ "{elixir_home}" == /* ]]; then
+ ABS_ELIXIR_HOME="{elixir_home}"
+else
+ ABS_ELIXIR_HOME=$PWD/{elixir_home}
fi
+ABS_EBIN_DIR=$PWD/{ebin}
+ABS_ESCRIPT_PATH=$PWD/{escript_path}
-export DEPS_DIR={mix_deps_dir}
+export PATH="$ABS_ELIXIR_HOME"/bin:"{erlang_home}"/bin:${{PATH}}
+export HOME=$PWD/{home}
+export MIX_BUILD_PATH=$PWD/{build_dir}
+export MIX_ENV=prod
+export DEPS_DIR=$(dirname ${{ABS_EBIN_DIR}})/{erl_libs_dir}
+export ERL_LIBS=${{DEPS_DIR}}
-# mix can error on windows regarding permissions for a symlink at this path
-# deps/rabbitmq_cli/rabbitmqctl_mix/_build/dev/lib/rabbit_common/ebin
-# so instead we'll try skip that
-mkdir -p _build/dev/lib/rabbit_common
-mkdir _build/dev/lib/rabbit_common/include
-cp ${{DEPS_DIR}}/rabbit_common/include/* \\
- _build/dev/lib/rabbit_common/include
-mkdir _build/dev/lib/rabbit_common/ebin
-cp ${{DEPS_DIR}}/rabbit_common/ebin/* \\
- _build/dev/lib/rabbit_common/ebin
+cd $(dirname {mix_exs})
export ERL_COMPILER_OPTIONS=deterministic
-"{elixir_home}"/bin/mix local.hex --force
-"{elixir_home}"/bin/mix local.rebar --force
-"{elixir_home}"/bin/mix make_all_in_src_archive
-
-cd ${{OLDPWD}}
-cp ${{MIX_INVOCATION_DIR}}/escript/rabbitmqctl {escript_path}
-
-mkdir -p {ebin_dir}
-mv ${{MIX_INVOCATION_DIR}}/_build/dev/lib/rabbitmqctl/ebin/* {ebin_dir}
-mv ${{MIX_INVOCATION_DIR}}/_build/dev/lib/rabbitmqctl/consolidated/* {ebin_dir}
-
-rm -dR ${{MIX_INVOCATION_DIR}}
-mkdir ${{MIX_INVOCATION_DIR}}
-touch ${{MIX_INVOCATION_DIR}}/placeholder
- """.format(
- begins_with_fun = BEGINS_WITH_FUN,
- query_erlang_version = QUERY_ERL_VERSION,
- erlang_version = erlang_version,
+"${{ABS_ELIXIR_HOME}}"/bin/mix compile --no-deps-check
+"${{ABS_ELIXIR_HOME}}"/bin/mix escript.build --no-deps-check
+
+mv escript/rabbitmqctl ${{ABS_ESCRIPT_PATH}}
+if [ -n "$(ls ${{MIX_BUILD_PATH}}/lib/{app_name}/consolidated)" ]; then
+ cp ${{MIX_BUILD_PATH}}/lib/{app_name}/consolidated/* ${{ABS_EBIN_DIR}}
+fi
+if [ -n "$(ls ${{MIX_BUILD_PATH}}/lib/{app_name}/ebin)" ]; then
+ cp ${{MIX_BUILD_PATH}}/lib/{app_name}/ebin/* ${{ABS_EBIN_DIR}}
+fi
+""".format(
+ maybe_symlink_erlang = maybe_symlink_erlang(ctx),
erlang_home = erlang_home,
elixir_home = elixir_home,
- mix_invocation_dir = mix_invocation_dir.path,
+ home = home.path,
+ build_dir = build_dir.path,
package_dir = package_dir,
- copy_compiled_deps_command = "\n".join(copy_compiled_deps_commands),
- mix_deps_dir = MIX_DEPS_DIR,
+ erl_libs_dir = erl_libs_dir,
+ mix_exs = mix_exs.path,
+ app_name = "rabbitmqctl",
escript_path = escript.path,
- ebin_dir = ebin.path,
+ ebin = ebin.path,
)
- inputs = []
- inputs.extend(ctx.files.srcs)
- for dep in ctx.attr.deps:
- lib_info = dep[ErlangAppInfo]
- inputs.extend(lib_info.include)
- inputs.extend(lib_info.beam)
+ inputs = depset(
+ direct = ctx.files.srcs,
+ transitive = [
+ erlang_runfiles.files,
+ elixir_runfiles.files,
+ depset(erl_libs_files),
+ ],
+ )
ctx.actions.run_shell(
inputs = inputs,
- outputs = [escript, ebin, mix_invocation_dir],
+ outputs = [escript, ebin, home, build_dir],
command = script,
mnemonic = "MIX",
)
@@ -145,8 +110,15 @@ touch ${{MIX_INVOCATION_DIR}}/placeholder
deps = flat_deps(ctx.attr.deps)
runfiles = ctx.runfiles([ebin])
- for dep in deps:
- runfiles = runfiles.merge(dep[DefaultInfo].default_runfiles)
+ runfiles = runfiles.merge_all(
+ [
+ erlang_runfiles,
+ elixir_runfiles,
+ ] + [
+ dep[DefaultInfo].default_runfiles
+ for dep in deps
+ ],
+ )
return [
DefaultInfo(
@@ -156,7 +128,6 @@ touch ${{MIX_INVOCATION_DIR}}/placeholder
),
ErlangAppInfo(
app_name = ctx.attr.name,
- erlang_version = erlang_version,
include = [],
beam = [ebin],
priv = [],
@@ -167,13 +138,21 @@ touch ${{MIX_INVOCATION_DIR}}/placeholder
rabbitmqctl_private = rule(
implementation = _impl,
attrs = {
- "is_windows": attr.bool(mandatory = True),
- "srcs": attr.label_list(allow_files = True),
- "deps": attr.label_list(providers = [ErlangAppInfo]),
- "_erlang_version": attr.label(default = Label("@rules_erlang//:erlang_version")),
- "_erlang_home": attr.label(default = Label("@rules_erlang//:erlang_home")),
- "_elixir_home": attr.label(default = Label("//:elixir_home")),
+ "is_windows": attr.bool(
+ mandatory = True,
+ ),
+ "srcs": attr.label_list(
+ mandatory = True,
+ allow_files = True,
+ ),
+ "deps": attr.label_list(
+ providers = [ErlangAppInfo],
+ ),
},
+ toolchains = [
+ "//bazel/elixir:toolchain_type",
+ ],
+ provides = [ErlangAppInfo],
executable = True,
)
diff --git a/deps/rabbitmq_cli/rabbitmqctl_test.bzl b/deps/rabbitmq_cli/rabbitmqctl_test.bzl
index da47c7905e..9165b2fe55 100644
--- a/deps/rabbitmq_cli/rabbitmqctl_test.bzl
+++ b/deps/rabbitmq_cli/rabbitmqctl_test.bzl
@@ -1,16 +1,9 @@
load(
- "@rules_erlang//:erlang_home.bzl",
- "ErlangHomeProvider",
- "ErlangVersionProvider",
-)
-load(
"@rules_erlang//:erlang_app_info.bzl",
"ErlangAppInfo",
)
load(
"@rules_erlang//:util.bzl",
- "BEGINS_WITH_FUN",
- "QUERY_ERL_VERSION",
"path_join",
"windows_path",
)
@@ -19,18 +12,22 @@ load(
"erl_libs_contents",
)
load(
- "//:elixir_home.bzl",
- "ElixirHomeProvider",
+ "//bazel/elixir:elixir_toolchain.bzl",
+ "elixir_dirs",
+ "erlang_dirs",
+ "maybe_symlink_erlang",
)
def _impl(ctx):
- erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version
- erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path
- elixir_home = ctx.attr._elixir_home[ElixirHomeProvider].path
-
- erl_libs_dir = ctx.label.name + "_deps"
-
- erl_libs_files = erl_libs_contents(ctx, headers = True, dir = erl_libs_dir)
+ (erlang_home, _, erlang_runfiles) = erlang_dirs(ctx)
+ (elixir_home, elixir_runfiles) = elixir_dirs(ctx, short_path = True)
+
+ erl_libs_dir = ctx.label.name + "_apps"
+ erl_libs_files = erl_libs_contents(
+ ctx,
+ headers = True,
+ dir = erl_libs_dir,
+ )
package_dir = path_join(ctx.label.workspace_root, ctx.label.package)
@@ -43,9 +40,19 @@ def _impl(ctx):
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
-export PATH="{elixir_home}"/bin:"{erlang_home}"/bin:${{PATH}}
+{maybe_symlink_erlang}
-INITIAL_DIR=${{PWD}}
+if [[ "{elixir_home}" == /* ]]; then
+ ABS_ELIXIR_HOME="{elixir_home}"
+else
+ ABS_ELIXIR_HOME=$PWD/{elixir_home}
+fi
+
+export PATH="$ABS_ELIXIR_HOME"/bin:"{erlang_home}"/bin:${{PATH}}
+export HOME="${{TEST_UNDECLARED_OUTPUTS_DIR}}"
+export MIX_ENV=test
+export DEPS_DIR=$PWD/{package_dir}/{erl_libs_dir}
+export ERL_LIBS=${{DEPS_DIR}}
ln -s ${{PWD}}/{package_dir}/config ${{TEST_UNDECLARED_OUTPUTS_DIR}}
# ln -s ${{PWD}}/{package_dir}/include ${{TEST_UNDECLARED_OUTPUTS_DIR}}
@@ -53,28 +60,20 @@ ln -s ${{PWD}}/{package_dir}/lib ${{TEST_UNDECLARED_OUTPUTS_DIR}}
ln -s ${{PWD}}/{package_dir}/test ${{TEST_UNDECLARED_OUTPUTS_DIR}}
ln -s ${{PWD}}/{package_dir}/mix.exs ${{TEST_UNDECLARED_OUTPUTS_DIR}}
+INITIAL_DIR=${{PWD}}
cd ${{TEST_UNDECLARED_OUTPUTS_DIR}}
-export HOME=${{PWD}}
-
-{begins_with_fun}
-V=$("{erlang_home}"/bin/{query_erlang_version})
-if ! beginswith "{erlang_version}" "$V"; then
- echo "Erlang version mismatch (Expected {erlang_version}, found $V)"
- exit 1
-fi
-
-export DEPS_DIR=$TEST_SRCDIR/$TEST_WORKSPACE/{erl_libs_path}
export ERL_COMPILER_OPTIONS=deterministic
-export MIX_ENV=test mix dialyzer
-"{elixir_home}"/bin/mix local.hex --force
-"{elixir_home}"/bin/mix local.rebar --force
-"{elixir_home}"/bin/mix make_all
+# "${{ABS_ELIXIR_HOME}}"/bin/mix deps.get dialyxir
+# "${{ABS_ELIXIR_HOME}}"/bin/mix dialyzer --no-deps-check
+"${{ABS_ELIXIR_HOME}}"/bin/mix compile --no-deps-check
# due to https://github.com/elixir-lang/elixir/issues/7699 we
# "run" the tests, but skip them all, in order to trigger
# compilation of all *_test.exs files before we actually run them
-"{elixir_home}"/bin/mix test --exclude test
+"$ABS_ELIXIR_HOME"/bin/mix test \\
+ --no-deps-check \\
+ --exclude test
export TEST_TMPDIR=${{TEST_UNDECLARED_OUTPUTS_DIR}}
@@ -88,28 +87,25 @@ cd ${{INITIAL_DIR}}
./{rabbitmq_run_cmd} start-background-broker
cd ${{TEST_UNDECLARED_OUTPUTS_DIR}}
-# The test cases will need to be able to load code from the deps
-# directly, so we set ERL_LIBS
-export ERL_LIBS=$DEPS_DIR
-
# run the actual tests
set +u
set -x
-"{elixir_home}"/bin/mix test --trace --max-failures 1 ${{TEST_FILE}}
+"$ABS_ELIXIR_HOME"/bin/mix test \\
+ --no-deps-check \\
+ --trace \\
+ --max-failures 1 \\
+ ${{TEST_FILE}}
""".format(
- begins_with_fun = BEGINS_WITH_FUN,
- query_erlang_version = QUERY_ERL_VERSION,
- erlang_version = erlang_version,
+ maybe_symlink_erlang = maybe_symlink_erlang(ctx, short_path = True),
erlang_home = erlang_home,
elixir_home = elixir_home,
package_dir = package_dir,
- erl_libs_path = erl_libs_path,
+ erl_libs_dir = erl_libs_dir,
rabbitmq_run_cmd = ctx.attr.rabbitmq_run[DefaultInfo].files_to_run.executable.short_path,
)
else:
output = ctx.actions.declare_file(ctx.label.name + ".bat")
script = """@echo off
-echo Erlang Version: {erlang_version}
:: set LANG="en_US.UTF-8"
:: set LC_ALL="en_US.UTF-8"
@@ -145,16 +141,11 @@ goto :EOF
:error
exit /b 1
""".format(
- erlang_version = erlang_version,
- erlang_home = windows_path(ctx.attr._erlang_home[ErlangHomeProvider].path),
+ erlang_home = windows_path(erlang_home),
elixir_home = windows_path(elixir_home),
package_dir = windows_path(ctx.label.package),
erl_libs_path = erl_libs_path,
rabbitmq_run_cmd = ctx.attr.rabbitmq_run[DefaultInfo].files_to_run.executable.short_path,
- test_env = "",
- filter_tests_args = "",
- dir = "",
- package = "",
)
ctx.actions.write(
@@ -166,10 +157,13 @@ exit /b 1
files = ctx.files.srcs + ctx.files.data,
transitive_files = depset(erl_libs_files),
)
- for dep in ctx.attr.deps:
- lib_info = dep[ErlangAppInfo]
- runfiles = runfiles.merge(ctx.runfiles(lib_info.include + lib_info.beam))
- runfiles = runfiles.merge(ctx.attr.rabbitmq_run[DefaultInfo].default_runfiles)
+ runfiles = runfiles.merge_all(
+ [
+ erlang_runfiles,
+ elixir_runfiles,
+ ctx.attr.rabbitmq_run[DefaultInfo].default_runfiles,
+ ],
+ )
return [DefaultInfo(
runfiles = runfiles,
@@ -179,18 +173,27 @@ exit /b 1
rabbitmqctl_private_test = rule(
implementation = _impl,
attrs = {
- "is_windows": attr.bool(mandatory = True),
- "srcs": attr.label_list(allow_files = [".ex", ".exs"]),
- "data": attr.label_list(allow_files = True),
- "deps": attr.label_list(providers = [ErlangAppInfo]),
+ "is_windows": attr.bool(
+ mandatory = True,
+ ),
+ "srcs": attr.label_list(
+ mandatory = True,
+ allow_files = [".ex", ".exs"],
+ ),
+ "data": attr.label_list(
+ allow_files = True,
+ ),
+ "deps": attr.label_list(
+ providers = [ErlangAppInfo],
+ ),
"rabbitmq_run": attr.label(
executable = True,
cfg = "target",
),
- "_erlang_version": attr.label(default = Label("@rules_erlang//:erlang_version")),
- "_erlang_home": attr.label(default = Label("@rules_erlang//:erlang_home")),
- "_elixir_home": attr.label(default = Label("//:elixir_home")),
},
+ toolchains = [
+ "//bazel/elixir:toolchain_type",
+ ],
test = True,
)
diff --git a/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel b/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel
index faa25fd21d..daa524be99 100644
--- a/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel
+++ b/deps/rabbitmq_consistent_hash_exchange/BUILD.bazel
@@ -35,7 +35,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -45,7 +45,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
)
broker_for_integration_suites()
diff --git a/deps/rabbitmq_event_exchange/BUILD.bazel b/deps/rabbitmq_event_exchange/BUILD.bazel
index 3eb776f354..2bb9b652e1 100644
--- a/deps/rabbitmq_event_exchange/BUILD.bazel
+++ b/deps/rabbitmq_event_exchange/BUILD.bazel
@@ -27,7 +27,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -37,7 +37,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_federation/BUILD.bazel b/deps/rabbitmq_federation/BUILD.bazel
index 83f6e721a2..9d6193f95c 100644
--- a/deps/rabbitmq_federation/BUILD.bazel
+++ b/deps/rabbitmq_federation/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
@@ -11,6 +10,7 @@ load(
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
+ "rabbitmq_test_helper",
)
APP_NAME = "rabbitmq_federation"
@@ -44,7 +44,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -54,15 +54,13 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
broker_for_integration_suites()
-erlc(
+rabbitmq_test_helper(
name = "rabbit_federation_test_util",
- testonly = True,
srcs = [
"test/rabbit_federation_test_util.erl",
],
@@ -70,8 +68,6 @@ erlc(
"include/**/*.hrl",
"src/**/*.hrl",
]),
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = [
":test_erlang_app",
"//deps/amqp_client:erlang_app",
diff --git a/deps/rabbitmq_federation_management/BUILD.bazel b/deps/rabbitmq_federation_management/BUILD.bazel
index 89e5dbd7d4..a1521d944d 100644
--- a/deps/rabbitmq_federation_management/BUILD.bazel
+++ b/deps/rabbitmq_federation_management/BUILD.bazel
@@ -41,7 +41,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -51,7 +51,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
)
broker_for_integration_suites()
diff --git a/deps/rabbitmq_jms_topic_exchange/BUILD.bazel b/deps/rabbitmq_jms_topic_exchange/BUILD.bazel
index f0b848e8dc..3c6da8affd 100644
--- a/deps/rabbitmq_jms_topic_exchange/BUILD.bazel
+++ b/deps/rabbitmq_jms_topic_exchange/BUILD.bazel
@@ -32,7 +32,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -42,7 +42,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_management/BUILD.bazel b/deps/rabbitmq_management/BUILD.bazel
index 3502d93cd8..af32f2a9a8 100644
--- a/deps/rabbitmq_management/BUILD.bazel
+++ b/deps/rabbitmq_management/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
@@ -11,6 +10,7 @@ load(
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
+ "rabbitmq_test_helper",
)
APP_NAME = "rabbitmq_management"
@@ -74,7 +74,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -84,19 +84,16 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
broker_for_integration_suites()
-erlc(
+rabbitmq_test_helper(
name = "rabbit_mgmt_runtime_parameters_util",
- testonly = True,
srcs = [
"test/rabbit_mgmt_runtime_parameters_util.erl",
],
- dest = "test",
deps = [
"//deps/rabbit_common:erlang_app",
],
diff --git a/deps/rabbitmq_management_agent/BUILD.bazel b/deps/rabbitmq_management_agent/BUILD.bazel
index 99bbfabc4a..52dbb4213b 100644
--- a/deps/rabbitmq_management_agent/BUILD.bazel
+++ b/deps/rabbitmq_management_agent/BUILD.bazel
@@ -55,7 +55,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt_apps = list(EXTRA_APPS)
@@ -71,7 +71,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_mqtt/BUILD.bazel b/deps/rabbitmq_mqtt/BUILD.bazel
index 6a8d7c3528..6088a85f38 100644
--- a/deps/rabbitmq_mqtt/BUILD.bazel
+++ b/deps/rabbitmq_mqtt/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
@@ -11,6 +10,7 @@ load(
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
+ "rabbitmq_test_helper",
)
APP_NAME = "rabbitmq_mqtt"
@@ -68,7 +68,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -78,20 +78,16 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
broker_for_integration_suites()
-erlc(
+rabbitmq_test_helper(
name = "rabbit_auth_backend_mqtt_mock",
- testonly = True,
srcs = [
"test/rabbit_auth_backend_mqtt_mock.erl",
],
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = [
"//deps/rabbit_common:erlang_app",
],
diff --git a/deps/rabbitmq_peer_discovery_aws/BUILD.bazel b/deps/rabbitmq_peer_discovery_aws/BUILD.bazel
index bfc2ea4560..e0a1e2ec42 100644
--- a/deps/rabbitmq_peer_discovery_aws/BUILD.bazel
+++ b/deps/rabbitmq_peer_discovery_aws/BUILD.bazel
@@ -36,7 +36,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -48,7 +48,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_peer_discovery_common/BUILD.bazel b/deps/rabbitmq_peer_discovery_common/BUILD.bazel
index bbafec6b54..a30b3c1a57 100644
--- a/deps/rabbitmq_peer_discovery_common/BUILD.bazel
+++ b/deps/rabbitmq_peer_discovery_common/BUILD.bazel
@@ -38,7 +38,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -50,7 +50,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_peer_discovery_consul/BUILD.bazel b/deps/rabbitmq_peer_discovery_consul/BUILD.bazel
index ca8059ed1e..177b7f49a3 100644
--- a/deps/rabbitmq_peer_discovery_consul/BUILD.bazel
+++ b/deps/rabbitmq_peer_discovery_consul/BUILD.bazel
@@ -33,7 +33,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -43,7 +43,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel b/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel
index 86291b7f92..cb9f0c2792 100644
--- a/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel
+++ b/deps/rabbitmq_peer_discovery_etcd/BUILD.bazel
@@ -35,7 +35,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -45,7 +45,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_peer_discovery_k8s/BUILD.bazel b/deps/rabbitmq_peer_discovery_k8s/BUILD.bazel
index 931f98c2d8..84c81e2c87 100644
--- a/deps/rabbitmq_peer_discovery_k8s/BUILD.bazel
+++ b/deps/rabbitmq_peer_discovery_k8s/BUILD.bazel
@@ -33,7 +33,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -43,7 +43,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_prometheus/BUILD.bazel b/deps/rabbitmq_prometheus/BUILD.bazel
index 3d594d47cb..4b28029da9 100644
--- a/deps/rabbitmq_prometheus/BUILD.bazel
+++ b/deps/rabbitmq_prometheus/BUILD.bazel
@@ -41,7 +41,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -51,7 +51,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_random_exchange/BUILD.bazel b/deps/rabbitmq_random_exchange/BUILD.bazel
index 325a243391..ed4ad5dda5 100644
--- a/deps/rabbitmq_random_exchange/BUILD.bazel
+++ b/deps/rabbitmq_random_exchange/BUILD.bazel
@@ -25,7 +25,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -35,5 +35,4 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
)
diff --git a/deps/rabbitmq_recent_history_exchange/BUILD.bazel b/deps/rabbitmq_recent_history_exchange/BUILD.bazel
index b1580ec003..1a3286967c 100644
--- a/deps/rabbitmq_recent_history_exchange/BUILD.bazel
+++ b/deps/rabbitmq_recent_history_exchange/BUILD.bazel
@@ -30,7 +30,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -40,7 +40,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_sharding/BUILD.bazel b/deps/rabbitmq_sharding/BUILD.bazel
index 07f81eaf8f..0f1c22308c 100644
--- a/deps/rabbitmq_sharding/BUILD.bazel
+++ b/deps/rabbitmq_sharding/BUILD.bazel
@@ -26,7 +26,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -36,7 +36,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_shovel/BUILD.bazel b/deps/rabbitmq_shovel/BUILD.bazel
index b74f094f78..3a578a8186 100644
--- a/deps/rabbitmq_shovel/BUILD.bazel
+++ b/deps/rabbitmq_shovel/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load("//:rabbitmq_home.bzl", "rabbitmq_home")
@@ -12,6 +11,7 @@ load(
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
+ "rabbitmq_test_helper",
)
APP_NAME = "rabbitmq_shovel"
@@ -60,7 +60,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -70,7 +70,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
)
rabbitmq_home(
@@ -87,14 +86,11 @@ rabbitmq_run(
home = ":broker-for-tests-home",
)
-erlc(
+rabbitmq_test_helper(
name = "shovel_test_utils",
- testonly = True,
srcs = [
"test/shovel_test_utils.erl",
],
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
)
PACKAGE = "deps/rabbitmq_shovel"
diff --git a/deps/rabbitmq_shovel_management/BUILD.bazel b/deps/rabbitmq_shovel_management/BUILD.bazel
index 855a796c79..4f692ac600 100644
--- a/deps/rabbitmq_shovel_management/BUILD.bazel
+++ b/deps/rabbitmq_shovel_management/BUILD.bazel
@@ -40,7 +40,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -50,7 +50,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
)
rabbitmq_home(
diff --git a/deps/rabbitmq_stomp/BUILD.bazel b/deps/rabbitmq_stomp/BUILD.bazel
index 938e85639e..60057f19f3 100644
--- a/deps/rabbitmq_stomp/BUILD.bazel
+++ b/deps/rabbitmq_stomp/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
@@ -11,6 +10,7 @@ load(
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
+ "rabbitmq_test_helper",
)
APP_NAME = "rabbitmq_stomp"
@@ -66,7 +66,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -76,7 +76,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
@@ -84,9 +83,8 @@ broker_for_integration_suites()
PACKAGE = "deps/rabbitmq_stomp"
-erlc(
+rabbitmq_test_helper(
name = "rabbit_stomp_client",
- testonly = True,
srcs = [
"test/src/rabbit_stomp_client.erl",
],
@@ -94,8 +92,6 @@ erlc(
"include/**/*.hrl",
"src/**/*.hrl",
]),
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = [
":test_erlang_app",
],
diff --git a/deps/rabbitmq_stream/BUILD.bazel b/deps/rabbitmq_stream/BUILD.bazel
index fe6362c723..0e15468c8a 100644
--- a/deps/rabbitmq_stream/BUILD.bazel
+++ b/deps/rabbitmq_stream/BUILD.bazel
@@ -52,7 +52,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -65,7 +65,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS + ["-Wno_undefined_callbacks"],
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_stream_common/BUILD.bazel b/deps/rabbitmq_stream_common/BUILD.bazel
index 912fea0129..994d9039b6 100644
--- a/deps/rabbitmq_stream_common/BUILD.bazel
+++ b/deps/rabbitmq_stream_common/BUILD.bazel
@@ -17,12 +17,11 @@ rabbitmq_app(
app_name = APP_NAME,
)
-xref(tags = ["xref"])
+xref()
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = "//:base_plt",
- tags = ["dialyze"],
)
suites = [
diff --git a/deps/rabbitmq_stream_management/BUILD.bazel b/deps/rabbitmq_stream_management/BUILD.bazel
index 6cb025c1ec..4bd1f52770 100644
--- a/deps/rabbitmq_stream_management/BUILD.bazel
+++ b/deps/rabbitmq_stream_management/BUILD.bazel
@@ -36,7 +36,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -46,7 +46,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_top/BUILD.bazel b/deps/rabbitmq_top/BUILD.bazel
index 92aaae5ad2..6f4108cbd9 100644
--- a/deps/rabbitmq_top/BUILD.bazel
+++ b/deps/rabbitmq_top/BUILD.bazel
@@ -37,7 +37,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -47,5 +47,4 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
)
diff --git a/deps/rabbitmq_tracing/BUILD.bazel b/deps/rabbitmq_tracing/BUILD.bazel
index 7193444fc8..913cc588a8 100644
--- a/deps/rabbitmq_tracing/BUILD.bazel
+++ b/deps/rabbitmq_tracing/BUILD.bazel
@@ -47,7 +47,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -57,7 +57,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_trust_store/BUILD.bazel b/deps/rabbitmq_trust_store/BUILD.bazel
index 63629eb90e..756fdda343 100644
--- a/deps/rabbitmq_trust_store/BUILD.bazel
+++ b/deps/rabbitmq_trust_store/BUILD.bazel
@@ -45,7 +45,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -57,7 +57,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_web_dispatch/BUILD.bazel b/deps/rabbitmq_web_dispatch/BUILD.bazel
index c545050a43..f409d55094 100644
--- a/deps/rabbitmq_web_dispatch/BUILD.bazel
+++ b/deps/rabbitmq_web_dispatch/BUILD.bazel
@@ -39,7 +39,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -51,7 +51,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
diff --git a/deps/rabbitmq_web_mqtt/BUILD.bazel b/deps/rabbitmq_web_mqtt/BUILD.bazel
index f74ad94621..26c84d3e2d 100644
--- a/deps/rabbitmq_web_mqtt/BUILD.bazel
+++ b/deps/rabbitmq_web_mqtt/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
@@ -9,6 +8,7 @@ load(
"broker_for_integration_suites",
"rabbitmq_app",
"rabbitmq_integration_suite",
+ "rabbitmq_test_helper",
)
APP_NAME = "rabbitmq_web_mqtt"
@@ -51,7 +51,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -61,7 +61,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
@@ -69,12 +68,10 @@ broker_for_integration_suites()
PACKAGE = "deps/rabbitmq_web_mqtt"
-erlc(
+rabbitmq_test_helper(
name = "test_utils",
srcs = glob(["test/src/*.erl"]),
hdrs = glob(["test/src/*.hrl"]),
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
)
suites = [
diff --git a/deps/rabbitmq_web_mqtt_examples/BUILD.bazel b/deps/rabbitmq_web_mqtt_examples/BUILD.bazel
index 8c2c7c348a..736beb0be5 100644
--- a/deps/rabbitmq_web_mqtt_examples/BUILD.bazel
+++ b/deps/rabbitmq_web_mqtt_examples/BUILD.bazel
@@ -31,10 +31,9 @@ rabbitmq_app(
runtime_deps = RUNTIME_DEPS,
)
-xref(tags = ["xref"])
+xref()
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = "//:base_plt",
- tags = ["dialyze"],
)
diff --git a/deps/rabbitmq_web_stomp/BUILD.bazel b/deps/rabbitmq_web_stomp/BUILD.bazel
index b65634315f..4ab857ce64 100644
--- a/deps/rabbitmq_web_stomp/BUILD.bazel
+++ b/deps/rabbitmq_web_stomp/BUILD.bazel
@@ -1,4 +1,3 @@
-load("@rules_erlang//:erlc.bzl", "erlc")
load("@rules_erlang//:xref.bzl", "xref")
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
load(
@@ -11,6 +10,7 @@ load(
"rabbitmq_app",
"rabbitmq_integration_suite",
"rabbitmq_suite",
+ "rabbitmq_test_helper",
)
APP_NAME = "rabbitmq_web_stomp"
@@ -56,7 +56,7 @@ rabbitmq_app(
deps = DEPS,
)
-xref(tags = ["xref"])
+xref()
plt(
name = "base_plt",
@@ -66,7 +66,6 @@ plt(
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = ":base_plt",
- tags = ["dialyze"],
warnings_as_errors = False,
)
@@ -74,12 +73,9 @@ broker_for_integration_suites()
PACKAGE = "deps/rabbitmq_web_stomp"
-erlc(
+rabbitmq_test_helper(
name = "test_util",
- testonly = True,
srcs = glob(["test/src/*.erl"]),
- dest = "test",
- erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
)
suites = [
diff --git a/deps/rabbitmq_web_stomp_examples/BUILD.bazel b/deps/rabbitmq_web_stomp_examples/BUILD.bazel
index 53dd9ad1e3..f299c19704 100644
--- a/deps/rabbitmq_web_stomp_examples/BUILD.bazel
+++ b/deps/rabbitmq_web_stomp_examples/BUILD.bazel
@@ -31,10 +31,9 @@ rabbitmq_app(
runtime_deps = RUNTIME_DEPS,
)
-xref(tags = ["xref"])
+xref()
dialyze(
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
plt = "//:base_plt",
- tags = ["dialyze"],
)
diff --git a/dist.bzl b/dist.bzl
index de5c354106..b8ef882bb8 100644
--- a/dist.bzl
+++ b/dist.bzl
@@ -1,14 +1,22 @@
-load("@rules_erlang//:erlang_home.bzl", "ErlangHomeProvider")
+load("@rules_pkg//:pkg.bzl", "pkg_tar")
load("@rules_erlang//:erlang_app_info.bzl", "ErlangAppInfo", "flat_deps")
load("@rules_erlang//:util.bzl", "path_join")
load("@rules_erlang//:ct.bzl", "additional_file_dest_relative_path")
load(
+ "@rules_erlang//tools:erlang_toolchain.bzl",
+ "erlang_dirs",
+ "maybe_symlink_erlang",
+)
+load(
":rabbitmq_home.bzl",
"RABBITMQ_HOME_ATTRS",
"RabbitmqHomeInfo",
"flatten",
"link_escript",
- "unique_versions",
+)
+load(
+ ":rabbitmq.bzl",
+ "APP_VERSION",
)
def _collect_licenses_impl(ctx):
@@ -70,11 +78,15 @@ def _app_file(plugin_lib_info):
def _plugins_dir(ctx, plugins):
plugins_dir = ctx.actions.declare_directory(path_join(ctx.label.name, "plugins"))
- erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path
+ (erlang_home, _, runfiles) = erlang_dirs(ctx)
- inputs = []
+ inputs = runfiles.files.to_list()
- commands = ["set -euo pipefail", ""]
+ commands = [
+ "set -euo pipefail",
+ "",
+ maybe_symlink_erlang(ctx),
+ ]
for plugin in plugins:
lib_info = plugin[ErlangAppInfo]
@@ -158,10 +170,6 @@ def _plugins_dir(ctx, plugins):
def _versioned_rabbitmq_home_impl(ctx):
plugins = flat_deps(ctx.attr.plugins)
- erlang_versions = unique_versions(plugins)
- if len(erlang_versions) > 1:
- fail("plugins do not have a unified erlang version", erlang_versions)
-
scripts = [_copy_script(ctx, script) for script in ctx.files._scripts]
rabbitmq_ctl_copies = [
@@ -195,9 +203,8 @@ def _versioned_rabbitmq_home_impl(ctx):
versioned_rabbitmq_home_private = rule(
implementation = _versioned_rabbitmq_home_impl,
- attrs = dict(RABBITMQ_HOME_ATTRS.items() + {
- "_erlang_home": attr.label(default = "@rules_erlang//:erlang_home"),
- }.items()),
+ attrs = RABBITMQ_HOME_ATTRS,
+ toolchains = ["@rules_erlang//tools:toolchain_type"],
)
def versioned_rabbitmq_home(**kwargs):
@@ -208,3 +215,70 @@ def versioned_rabbitmq_home(**kwargs):
}),
**kwargs
)
+
+# This macro must be invoked from the top level BUILD.bazel of rabbitmq-server
+def package_generic_unix(plugins):
+ collect_licenses(
+ name = "licenses",
+ srcs = native.glob(
+ ["LICENSE*"],
+ exclude = [
+ "LICENSE.md",
+ "LICENSE.txt",
+ ],
+ ),
+ deps = plugins,
+ )
+
+ 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 = native.glob([
+ "release-notes/*.md",
+ "release-notes/*.txt",
+ ]),
+ package_dir = "release-notes",
+ visibility = ["//visibility:public"],
+ )
+
+ versioned_rabbitmq_home(
+ name = "dist-home",
+ plugins = plugins,
+ )
+
+ 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",
+ ],
+ )
diff --git a/elixir_home.bzl b/elixir_home.bzl
deleted file mode 100644
index 8f35fc90ec..0000000000
--- a/elixir_home.bzl
+++ /dev/null
@@ -1,13 +0,0 @@
-ElixirHomeProvider = provider(
- fields = ["path"],
-)
-
-def _impl(ctx):
- return ElixirHomeProvider(path = ctx.build_setting_value)
-
-elixir_home = rule(
- implementation = _impl,
- # The next line marks this as a special rule that we can
- # configure when invoking the cli or via .bazelrc file
- build_setting = config.string(flag = True),
-)
diff --git a/packaging/docker-image/Dockerfile b/packaging/docker-image/Dockerfile
index b31b90470b..af326dd539 100644
--- a/packaging/docker-image/Dockerfile
+++ b/packaging/docker-image/Dockerfile
@@ -3,11 +3,21 @@
FROM ubuntu:20.04
RUN set -eux; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
+ apt-get update; \
+ apt-get install -y lsb-release ubuntu-dbgsym-keyring; \
+ echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse" > /etc/apt/sources.list.d/ddebs.list; \
+ echo "deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse" >> /etc/apt/sources.list.d/ddebs.list; \
+ echo "deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse" >> /etc/apt/sources.list.d/ddebs.list; \
+ apt-get update; \
+ apt-get install -y --no-install-recommends \
# grab gosu for easy step-down from root
- gosu \
- ; \
+ gosu \
+ libc6-dbg \
+ libgcc-s1-dbgsym \
+ libstdc++6-dbgsym \
+ libtinfo6-dbgsym \
+ zlib1g-dbgsym \
+ ; \
rm -rf /var/lib/apt/lists/*; \
# verify that the "gosu" binary works
gosu nobody true
diff --git a/packaging/docker-image/otp-versions/otp-max.yaml b/packaging/docker-image/otp-versions/otp-max.yaml
index fd79f7dd74..74f279570e 100644
--- a/packaging/docker-image/otp-versions/otp-max.yaml
+++ b/packaging/docker-image/otp-versions/otp-max.yaml
@@ -1,7 +1,7 @@
-otp: '24.3.4'
-otp_major: '24'
+otp: '25.0'
+otp_major: '25'
# make -C packaging/docker-image find-otp-sha256 OTP_VERSION_MATCH=24.0
-otp_sha256: e59bedbb871af52244ca5284fd0a572d52128abd4decf4347fe2aef047b65c58
+otp_sha256: 5988e3bca208486494446e885ca2149fe487ee115cbc3770535fd22a795af5d2
# Which is the max supported Elixir?
# https://github.com/rabbitmq/rabbitmq-server/blob/master/deps/rabbitmq_cli/mix.exs#L14
# Which is the latest Elixir release?
diff --git a/packaging/docker-image/otp-versions/otp-min.yaml b/packaging/docker-image/otp-versions/otp-min.yaml
index 13d6099b3b..acfec5d561 100644
--- a/packaging/docker-image/otp-versions/otp-min.yaml
+++ b/packaging/docker-image/otp-versions/otp-min.yaml
@@ -1,7 +1,7 @@
-otp: '23.2'
-otp_major: '23'
-# make -C packaging/docker-image find-otp-sha256 OTP_VERSION_MATCH=23.2
-otp_sha256: 79f2233a960cc427607d52a7b7e9e5b08afba96a4d87ced4efb64e902b44160c
-# Which is the min supported Elixir?
+otp: '24.3.4'
+otp_major: '24'
+# make -C packaging/docker-image find-otp-sha256 OTP_VERSION_MATCH=24.0
+otp_sha256: e59bedbb871af52244ca5284fd0a572d52128abd4decf4347fe2aef047b65c58
+# Which is the max supported Elixir?
# https://github.com/rabbitmq/rabbitmq-server/blob/master/deps/rabbitmq_cli/mix.exs#L14
-elixir: '1.12.3' \ No newline at end of file
+elixir: '1.12.3'
diff --git a/packaging/docker-image/otp-versions/otp-rc.yaml b/packaging/docker-image/otp-versions/otp-rc.yaml
deleted file mode 100644
index e9afb95b22..0000000000
--- a/packaging/docker-image/otp-versions/otp-rc.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-otp: '25.0-rc3'
-otp_major: '25'
-elixir: '1.13.4'
diff --git a/rabbitmq.bzl b/rabbitmq.bzl
index f9838a7bd9..7c13e30385 100644
--- a/rabbitmq.bzl
+++ b/rabbitmq.bzl
@@ -1,4 +1,8 @@
load(
+ "@rules_erlang//:erlang_bytecode.bzl",
+ "erlang_bytecode",
+)
+load(
"@rules_erlang//:erlang_app.bzl",
"DEFAULT_ERLC_OPTS",
"DEFAULT_TEST_ERLC_OPTS",
@@ -6,7 +10,7 @@ load(
"test_erlang_app",
)
load(
- "@rules_erlang//:ct_sharded.bzl",
+ "@rules_erlang//:ct.bzl",
"ct_suite",
"ct_suite_variant",
_assert_suites = "assert_suites",
@@ -87,7 +91,10 @@ LABELS_WITH_TEST_VERSIONS = [
]
def all_plugins(rabbitmq_workspace = "@rabbitmq-server"):
- return [rabbitmq_workspace + p for p in ALL_PLUGINS]
+ return [
+ Label("{}{}".format(rabbitmq_workspace, p))
+ for p in ALL_PLUGINS
+ ]
def with_test_versions(deps):
r = []
@@ -107,6 +114,8 @@ def rabbitmq_app(
app_env = "",
app_extra_keys = "",
extra_apps = [],
+ extra_hdrs = [],
+ extra_srcs = [],
extra_priv = [],
build_deps = [],
deps = [],
@@ -118,8 +127,10 @@ def rabbitmq_app(
app_module = app_module,
app_registered = app_registered,
app_env = app_env,
- app_extra = app_extra_keys,
+ app_extra_keys = app_extra_keys,
extra_apps = extra_apps,
+ extra_hdrs = extra_hdrs,
+ extra_srcs = extra_srcs,
extra_priv = extra_priv,
erlc_opts = select({
"//:debug_build": without("+deterministic", RABBITMQ_ERLC_OPTS),
@@ -137,8 +148,10 @@ def rabbitmq_app(
app_module = app_module,
app_registered = app_registered,
app_env = app_env,
- app_extra = app_extra_keys,
+ app_extra_keys = app_extra_keys,
extra_apps = extra_apps,
+ extra_hdrs = extra_hdrs,
+ extra_srcs = extra_srcs,
extra_priv = extra_priv,
erlc_opts = select({
"//:debug_build": without("+deterministic", RABBITMQ_TEST_ERLC_OPTS),
@@ -160,13 +173,13 @@ def rabbitmq_suite(erlc_opts = [], test_env = {}, **kwargs):
)
return kwargs["name"]
-def broker_for_integration_suites():
+def broker_for_integration_suites(extra_plugins = []):
rabbitmq_home(
name = "broker-for-tests-home",
plugins = [
"//deps/rabbit:erlang_app",
":erlang_app",
- ],
+ ] + extra_plugins,
testonly = True,
)
@@ -176,6 +189,16 @@ def broker_for_integration_suites():
testonly = True,
)
+def rabbitmq_test_helper(
+ erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
+ **kwargs):
+ erlang_bytecode(
+ testonly = True,
+ dest = "test",
+ erlc_opts = erlc_opts,
+ **kwargs
+ )
+
def rabbitmq_integration_suite(
package,
name = None,
@@ -220,7 +243,7 @@ def rabbitmq_integration_suite(
":rabbitmq-for-tests-run",
] + tools,
runtime_deps = [
- "//deps/rabbitmq_cli:elixir_app",
+ "//bazel/elixir:erlang_app",
"//deps/rabbitmq_cli:rabbitmqctl",
"//deps/rabbitmq_ct_client_helpers:erlang_app",
] + runtime_deps,
@@ -248,7 +271,7 @@ def rabbitmq_integration_suite(
"@rabbitmq-server-generic-unix-3.9//:rabbitmq-run",
] + tools,
runtime_deps = [
- "//deps/rabbitmq_cli:elixir_app",
+ "//bazel/elixir:erlang_app",
"//deps/rabbitmq_cli:rabbitmqctl",
"//deps/rabbitmq_ct_client_helpers:erlang_app",
] + runtime_deps,
diff --git a/rabbitmq_home.bzl b/rabbitmq_home.bzl
index e6ac310aa9..9f992d23c3 100644
--- a/rabbitmq_home.bzl
+++ b/rabbitmq_home.bzl
@@ -68,24 +68,12 @@ def _plugins_dir_links(ctx, plugin):
return links
-def unique_versions(plugins):
- erlang_versions = []
- for plugin in plugins:
- erlang_version = plugin[ErlangAppInfo].erlang_version
- if not erlang_version in erlang_versions:
- erlang_versions.append(erlang_version)
- return erlang_versions
-
def flatten(list_of_lists):
return [item for sublist in list_of_lists for item in sublist]
def _impl(ctx):
plugins = flat_deps(ctx.attr.plugins)
- erlang_versions = unique_versions(plugins)
- if len(erlang_versions) > 1:
- fail("plugins do not have a unified erlang version", erlang_versions)
-
if not ctx.attr.is_windows:
source_scripts = ctx.files._scripts
else:
diff --git a/rabbitmq_run.bzl b/rabbitmq_run.bzl
index dc09a0df22..c0385570c4 100644
--- a/rabbitmq_run.bzl
+++ b/rabbitmq_run.bzl
@@ -1,6 +1,18 @@
-load("@rules_erlang//:erlang_home.bzl", "ErlangHomeProvider", "ErlangVersionProvider")
-load("@rules_erlang//:util.bzl", "path_join", "windows_path")
-load(":rabbitmq_home.bzl", "RabbitmqHomeInfo", "rabbitmq_home_short_path")
+load(
+ "@rules_erlang//:util.bzl",
+ "path_join",
+ "windows_path",
+)
+load(
+ "@rules_erlang//tools:erlang_toolchain.bzl",
+ "erlang_dirs",
+ "maybe_symlink_erlang",
+)
+load(
+ ":rabbitmq_home.bzl",
+ "RabbitmqHomeInfo",
+ "rabbitmq_home_short_path",
+)
def _impl(ctx):
rabbitmq_home_path = rabbitmq_home_short_path(ctx.attr.home)
@@ -10,6 +22,8 @@ def _impl(ctx):
path_join(rabbitmq_home_path, "plugins"),
])
+ (erlang_home, _, runfiles) = erlang_dirs(ctx)
+
if not ctx.attr.is_windows:
output = ctx.actions.declare_file(ctx.label.name)
ctx.actions.expand_template(
@@ -18,7 +32,7 @@ def _impl(ctx):
substitutions = {
"{RABBITMQ_HOME}": rabbitmq_home_path,
"{ERL_LIBS}": erl_libs,
- "{ERLANG_HOME}": ctx.attr._erlang_home[ErlangHomeProvider].path,
+ "{ERLANG_HOME}": erlang_home,
},
is_executable = True,
)
@@ -30,12 +44,12 @@ def _impl(ctx):
substitutions = {
"{RABBITMQ_HOME}": windows_path(rabbitmq_home_path),
"{ERL_LIBS}": erl_libs,
- "{ERLANG_HOME}": windows_path(ctx.attr._erlang_home[ErlangHomeProvider].path),
+ "{ERLANG_HOME}": windows_path(erlang_home),
},
is_executable = True,
)
- runfiles = ctx.runfiles(ctx.attr.home[DefaultInfo].files.to_list())
+ runfiles = runfiles.merge(ctx.runfiles(ctx.attr.home[DefaultInfo].files.to_list()))
return [DefaultInfo(
runfiles = runfiles,
@@ -53,10 +67,10 @@ rabbitmq_run_private = rule(
default = Label("//:scripts/bazel/rabbitmq-run.bat"),
allow_single_file = True,
),
- "_erlang_home": attr.label(default = Label("@rules_erlang//:erlang_home")),
"is_windows": attr.bool(mandatory = True),
"home": attr.label(providers = [RabbitmqHomeInfo]),
},
+ toolchains = ["@rules_erlang//tools:toolchain_type"],
executable = True,
)
diff --git a/rabbitmqctl.bzl b/rabbitmqctl.bzl
index e68d041bfc..237fcf34ef 100644
--- a/rabbitmqctl.bzl
+++ b/rabbitmqctl.bzl
@@ -1,9 +1,6 @@
-load("@rules_erlang//:erlang_home.bzl", "ErlangVersionProvider")
load(":rabbitmq_home.bzl", "RabbitmqHomeInfo", "rabbitmq_home_short_path")
def _impl(ctx):
- erlang_version = ctx.attr._erlang_version[ErlangVersionProvider].version
-
rabbitmq_home_path = rabbitmq_home_short_path(ctx.attr.home)
script = """
@@ -25,7 +22,6 @@ def _impl(ctx):
rabbitmqctl = rule(
implementation = _impl,
attrs = {
- "_erlang_version": attr.label(default = Label("@rules_erlang//:erlang_version")),
"home": attr.label(providers = [RabbitmqHomeInfo]),
},
executable = True,
diff --git a/tools/erlang_ls.bzl b/tools/erlang_ls.bzl
index f767255ce2..2dbdea821b 100644
--- a/tools/erlang_ls.bzl
+++ b/tools/erlang_ls.bzl
@@ -1,9 +1,12 @@
-load("@rules_erlang//:erlang_home.bzl", "ErlangHomeProvider")
+load(
+ "@rules_erlang//tools:erlang_toolchain.bzl",
+ "erlang_dirs",
+)
def _impl(ctx):
out = ctx.actions.declare_file(ctx.label.name)
- erlang_home = ctx.attr._erlang_home[ErlangHomeProvider].path
+ (erlang_home, _, _) = erlang_dirs(ctx)
ctx.actions.write(
output = out,
@@ -32,7 +35,7 @@ plt_path: bazel-bin/deps/rabbit/.base_plt.plt
erlang_ls_config = rule(
implementation = _impl,
- attrs = {
- "_erlang_home": attr.label(default = "@rules_erlang//:erlang_home"),
- },
+ toolchains = [
+ "@rules_erlang//tools:toolchain_type",
+ ],
)
diff --git a/user-template.bazelrc b/user-template.bazelrc
index 6df69345bf..f7620754fc 100644
--- a/user-template.bazelrc
+++ b/user-template.bazelrc
@@ -1,6 +1,6 @@
-build --@rules_erlang//:erlang_home=/Users/rabbitmq/kerl/24.0
-build --@rules_erlang//:erlang_version=24.0
-build --//:elixir_home=/Users/rabbitmq/.kiex/elixirs/elixir-1.12.0/lib/elixir
+build:local --@rules_erlang//:erlang_home=/Users/rabbitmq/kerl/24.0
+build:local --@rules_erlang//:erlang_version=24.0
+build:local --//:elixir_home=/Users/rabbitmq/.kiex/elixirs/elixir-1.12.0/lib/elixir
# rabbitmqctl wait shells out to 'ps', which is broken in the bazel macOS
# sandbox (https://github.com/bazelbuild/bazel/issues/7448)
@@ -18,5 +18,5 @@ build --flaky_test_attempts=1
build:buildbuddy --remote_header=x-buildbuddy-api-key=YOUR_API_KEY
# cross compile for linux (if on macOS) with rbe
-build:rbe --host_cpu=k8
-build:rbe --cpu=k8
+# build:rbe --host_cpu=k8
+# build:rbe --cpu=k8
diff --git a/workspace_helpers.bzl b/workspace_helpers.bzl
index 4ed1a38035..13f4be02f9 100644
--- a/workspace_helpers.bzl
+++ b/workspace_helpers.bzl
@@ -3,7 +3,6 @@ load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository", "new_git_r
load("@rules_erlang//:github.bzl", "github_erlang_app")
load("@rules_erlang//:hex_archive.bzl", "hex_archive")
load("@rules_erlang//:hex_pm.bzl", "hex_pm_erlang_app")
-load("//:rabbitmq.bzl", "APP_VERSION")
def rabbitmq_external_deps(rabbitmq_workspace = "@rabbitmq-server"):
hex_pm_erlang_app(
@@ -131,9 +130,6 @@ erlang_app(
org = "potatosalad",
ref = "2b1d66b5f4fbe33cb198149a8cb23895a2c877ea",
version = "2b1d66b5f4fbe33cb198149a8cb23895a2c877ea",
- first_srcs = [
- "src/jose_block_encryptor.erl",
- ],
sha256 = "7816f39d00655f2605cfac180755e97e268dba86c2f71037998ff63792ca727b",
)