Skip to content

Commit a70603c

Browse files
authored
Merge pull request #5830 from rabbitmq/mergify/bp/v3.10.x/pr-5826
Updates for latest rules_erlang (backport #5694) (backport #5826)
2 parents 29163fa + e69a9c4 commit a70603c

File tree

14 files changed

+187
-138
lines changed

14 files changed

+187
-138
lines changed

.bazelrc

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ build --registry=https://raw.githubusercontent.com/rabbitmq/bazel-central-regist
44
build --incompatible_strict_action_env
55
build --local_test_jobs=1
66

7+
build --flag_alias=erlang_home=@rules_erlang//:erlang_home
8+
build --flag_alias=erlang_version=@rules_erlang//:erlang_version
9+
build --flag_alias=elixir_home=//:elixir_home
10+
711
build:buildbuddy --bes_results_url=https://app.buildbuddy.io/invocation/
812
build:buildbuddy --bes_backend=grpcs://remote.buildbuddy.io
913
build:buildbuddy --remote_cache=grpcs://remote.buildbuddy.io
@@ -26,25 +30,26 @@ build:rbe --jobs=50
2630
build:rbe --crosstool_top=@rbe//cc:toolchain
2731
build:rbe --extra_toolchains=@rbe//config:cc-toolchain
2832

29-
build:rbe --host_platform=@rbe//config:platform
33+
build:rbe --host_platform=//bazel/platforms:erlang_internal_platform
3034

3135
build:rbe --host_cpu=k8
3236
build:rbe --cpu=k8
3337

3438
build:rbe-23 --config=rbe
35-
build:rbe-23 --platforms=//bazel/platforms:erlang_23_platform
36-
build:rbe-23 --extra_execution_platforms=//bazel/platforms:erlang_23_platform
39+
build:rbe-23 --platforms=//bazel/platforms:erlang_linux_23_platform
3740

3841
build:rbe-24 --config=rbe
39-
build:rbe-24 --platforms=//bazel/platforms:erlang_24_platform
40-
build:rbe-24 --extra_execution_platforms=//bazel/platforms:erlang_24_platform
42+
build:rbe-24 --platforms=//bazel/platforms:erlang_linux_24_platform
4143

4244
build:rbe-25 --config=rbe
43-
build:rbe-25 --platforms=//bazel/platforms:erlang_25_platform
44-
build:rbe-25 --extra_execution_platforms=//bazel/platforms:erlang_25_platform
45+
build:rbe-25 --platforms=//bazel/platforms:erlang_linux_25_platform
46+
47+
# no-op config so that --config=local does not error
48+
build:local --color=auto
4549

46-
build:local --platforms=//bazel/platforms:erlang_external_platform
47-
build:local --extra_execution_platforms=//bazel/platforms:erlang_external_platform
50+
# having bzlmod enabled seems to interfere with docker toolchain resolution,
51+
# so we set this flag
52+
build --@io_bazel_rules_docker//transitions:enable=false
4853

4954
# Try importing a user specific .bazelrc
5055
# You can create your own by copying and editing the template-user.bazelrc template:

.github/workflows/oci.yaml

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -206,44 +206,27 @@ jobs:
206206

207207
- name: Further Configure Bazel
208208
run: |
209-
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
210209
ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
211210
cat << EOF >> user.bazelrc
212-
build --@rules_erlang//:erlang_version=${{ matrix.otp_major }}
213-
build --@rules_erlang//:erlang_home=${ERLANG_HOME}
214-
build --//:elixir_home=${ELIXIR_HOME}
215-
build --platforms=//bazel/platforms:erlang_external_platform
216-
build --extra_execution_platforms=//bazel/platforms:erlang_external_platform
211+
build --elixir_home=${ELIXIR_HOME}
217212
EOF
218213
219-
- name: Set the correct erlang source tar for the container
220-
run: |
221-
sudo npm install --global --silent @bazel/buildozer
222-
223-
buildozer 'set tars ["@otp_src_${{ matrix.otp_major }}//file"]' \
224-
//packaging/docker-image:otp_source
225-
226-
git diff
227-
228214
- name: Build
229215
run: |
230-
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
231-
ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
216+
export ERLANG_HOME="$(dirname $(dirname $(which erl)))"
232217
bazelisk build //packaging/docker-image:rabbitmq \
233218
--config=buildbuddy
234219
235220
- name: Test
236221
run: |
237-
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
238-
ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
222+
export ERLANG_HOME="$(dirname $(dirname $(which erl)))"
239223
OCI_TESTS=$(bazel query 'tests(//packaging/docker-image/...)')
240224
bazelisk test ${OCI_TESTS} \
241225
--config=buildbuddy
242226
243227
- name: Load
244228
run: |
245-
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
246-
ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
229+
export ERLANG_HOME="$(dirname $(dirname $(which erl)))"
247230
bazelisk run //packaging/docker-image:rabbitmq \
248231
--config=buildbuddy
249232

.github/workflows/test-mixed-versions.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,6 @@ jobs:
109109
build --@rules_erlang//:erlang_version=${{ matrix.erlang_version }}
110110
build --@rules_erlang//:erlang_home=${ERLANG_HOME}
111111
build --//:elixir_home=${ELIXIR_HOME}
112-
build --platforms=//bazel/platforms:erlang_external_platform
113-
build --extra_execution_platforms=//bazel/platforms:erlang_external_platform
114112
EOF
115113
#! - name: Setup tmate session
116114
#! uses: mxschmitt/action-tmate@v3

.github/workflows/test-windows.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ jobs:
5252
build --@rules_erlang//:erlang_version=${{ matrix.erlang_version }}
5353
build --@rules_erlang//:erlang_home="${ERL_PATH/\/bin\/erl/}"
5454
build --//:elixir_home="${IEX_PATH/\/bin\/iex/}"
55-
build --platforms=//bazel/platforms:erlang_external_platform
56-
build --extra_execution_platforms=//bazel/platforms:erlang_external_platform
5755
EOF
5856
5957
bazelisk info release

.github/workflows/test.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,6 @@ jobs:
112112
build --@rules_erlang//:erlang_version=${{ matrix.erlang_version }}
113113
build --@rules_erlang//:erlang_home=${ERLANG_HOME}
114114
build --//:elixir_home=${ELIXIR_HOME}
115-
build --platforms=//bazel/platforms:erlang_external_platform
116-
build --extra_execution_platforms=//bazel/platforms:erlang_external_platform
117115
EOF
118116
#! - name: Setup tmate session
119117
#! uses: mxschmitt/action-tmate@v3

.github/workflows/update-otp-for-oci.yaml

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ jobs:
1111
max-parallel: 1
1212
matrix:
1313
erlang_version:
14-
- "24.3"
14+
- "25.0"
1515
include:
16-
- erlang_version: "24.3"
17-
image_tag_suffix: 'otp-max'
16+
- erlang_version: "25.0"
17+
name: '25'
1818
timeout-minutes: 10
1919
steps:
2020
- name: CHECKOUT REPOSITORY
@@ -40,13 +40,21 @@ jobs:
4040
- name: MODIFY VERSION FILE
4141
if: steps.check-for-branch.outputs.c != 0
4242
run: |
43-
echo "Updating packaging/docker-image/${{ matrix.image_tag_suffix }}.yaml with:"
44-
echo " otp -> ${{ steps.fetch-version.outputs.VERSION }}"
45-
echo " otp_sha256 -> ${{ steps.fetch-version.outputs.SHA }}"
43+
sudo npm install --global --silent @bazel/buildozer
4644
47-
FILE=packaging/docker-image/otp-versions/${{ matrix.image_tag_suffix }}.yaml
48-
sed -i "s/otp: .*/otp: '${{ steps.fetch-version.outputs.VERSION }}'/" $FILE
49-
sed -i "s/otp_sha256: .*/otp_sha256: ${{ steps.fetch-version.outputs.SHA }}/" $FILE
45+
OLD_SHA="$(cat MODULE.bazel | buildozer 'print sha256' -:${{ matrix.name }})"
46+
OLD_VERSION="$(cat MODULE.bazel | buildozer 'print version' -:${{ matrix.name }})"
47+
48+
echo "$(cat MODULE.bazel | buildozer 'set sha256 "${{ steps.fetch-version.outputs.SHA }}"' -:${{ matrix.name }})" > MODULE.bazel
49+
echo "$(cat MODULE.bazel | buildozer 'set version "${{ steps.fetch-version.outputs.VERSION }}"' -:${{ matrix.name }})" > MODULE.bazel
50+
51+
echo "$(cat WORKSPACE | buildozer 'set downloaded_file_path "OTP-${{ steps.fetch-version.outputs.VERSION }}.tar.gz"' -:otp_src_${{ matrix.name }})" > WORKSPACE
52+
echo "$(cat WORKSPACE | buildozer 'set urls ["https://github.com/erlang/otp/archive/OTP-${{ steps.fetch-version.outputs.VERSION }}.tar.gz"]' -:otp_src_${{ matrix.name }})" > WORKSPACE
53+
echo "$(cat WORKSPACE | buildozer 'set sha256 "${{ steps.fetch-version.outputs.SHA2 }}"' -:otp_src_${{ matrix.name }})" > WORKSPACE
54+
55+
sed -i"_orig" "s/${OLD_SHA}/${{ steps.fetch-version.outputs.SHA }}" WORKSPACE
56+
sed -i"_orig" "s/${OLD_VERSION}/${{ steps.fetch-version.outputs.VERSION }}" WORKSPACE
57+
rm *_orig
5058
5159
set -x
5260
git diff

BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ load(":rabbitmq.bzl", "all_plugins")
1616
exports_files([
1717
"scripts/bazel/rabbitmq-run.sh",
1818
"scripts/bazel/rabbitmq-run.bat",
19+
"release-notes",
1920
])
2021

2122
config_setting(

MODULE.bazel

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,55 @@ bazel_dep(
2525

2626
bazel_dep(
2727
name = "rules_erlang",
28-
version = "3.5.0",
28+
version = "3.6.3",
29+
)
30+
31+
erlang_config = use_extension(
32+
"@rules_erlang//bzlmod:extensions.bzl",
33+
"erlang_config",
34+
)
35+
36+
erlang_config.internal_erlang_from_github_release(
37+
name = "23",
38+
sha256 = "e3ecb3ac2cc549ab90cd9f8921eaebc8613f4d5c89972a3987e5a762d5a2df08",
39+
version = "23.3.4.16",
40+
)
41+
42+
erlang_config.internal_erlang_from_github_release(
43+
name = "24",
44+
sha256 = "86dddc0de486acc320ed7557f12033af0b5045205290ee4926aa931b3d8b3ab2",
45+
version = "24.3.4.4",
46+
)
47+
48+
erlang_config.internal_erlang_from_github_release(
49+
name = "25",
50+
sha256 = "8fc707f92a124b2aeb0f65dcf9ac8e27b2a305e7bcc4cc1b2fdf770eec0165bf",
51+
version = "25.0.4",
52+
)
53+
54+
erlang_config.internal_erlang_from_http_archive(
55+
name = "git_master",
56+
strip_prefix = "otp-master",
57+
url = "https://github.com/erlang/otp/archive/refs/heads/master.tar.gz",
58+
version = "master",
59+
)
60+
61+
use_repo(
62+
erlang_config,
63+
"erlang_config",
64+
)
65+
66+
register_toolchains(
67+
"@erlang_config//external:toolchain",
68+
"@erlang_config//23:toolchain",
69+
"@erlang_config//24:toolchain",
70+
"@erlang_config//25:toolchain",
71+
"@erlang_config//git_master:toolchain",
72+
"//bazel/toolchains:elixir_toolchain_external",
73+
"//bazel/toolchains:elixir_toolchain_1_10",
74+
"//bazel/toolchains:elixir_toolchain_1_12",
75+
"//bazel/toolchains:elixir_toolchain_1_13",
76+
"//bazel/toolchains:elixir_toolchain_1_14",
2977
)
3078

3179
erlang_package = use_extension(

WORKSPACE

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,26 +112,55 @@ git_repository(
112112
git_repository(
113113
name = "rules_erlang",
114114
remote = "https://github.com/rabbitmq/rules_erlang.git",
115-
tag = "3.2.0",
115+
tag = "3.6.3",
116116
)
117117

118118
load(
119119
"@rules_erlang//:rules_erlang.bzl",
120+
"erlang_config",
121+
"internal_erlang_from_github_release",
122+
"internal_erlang_from_http_archive",
120123
"rules_erlang_dependencies",
121124
)
122125

126+
erlang_config(
127+
internal_erlang_configs = [
128+
internal_erlang_from_github_release(
129+
name = "23",
130+
sha256 = "e3ecb3ac2cc549ab90cd9f8921eaebc8613f4d5c89972a3987e5a762d5a2df08",
131+
version = "23.3.4.16",
132+
),
133+
internal_erlang_from_github_release(
134+
name = "24",
135+
sha256 = "86dddc0de486acc320ed7557f12033af0b5045205290ee4926aa931b3d8b3ab2",
136+
version = "24.3.4.4",
137+
),
138+
internal_erlang_from_github_release(
139+
name = "25",
140+
sha256 = "8fc707f92a124b2aeb0f65dcf9ac8e27b2a305e7bcc4cc1b2fdf770eec0165bf",
141+
version = "25.0.4",
142+
),
143+
internal_erlang_from_http_archive(
144+
name = "git_master",
145+
strip_prefix = "otp-master",
146+
url = "https://github.com/erlang/otp/archive/refs/heads/master.tar.gz",
147+
version = "master",
148+
),
149+
],
150+
)
151+
123152
rules_erlang_dependencies()
124153

154+
load("@erlang_config//:defaults.bzl", "register_defaults")
155+
156+
register_defaults()
157+
125158
register_toolchains(
126-
"//bazel/toolchains:erlang_toolchain_external",
127-
"//bazel/toolchains:erlang_toolchain_23",
128-
"//bazel/toolchains:erlang_toolchain_24",
129-
"//bazel/toolchains:erlang_toolchain_25",
130-
"//bazel/toolchains:erlang_toolchain_git_master",
131159
"//bazel/toolchains:elixir_toolchain_external",
132160
"//bazel/toolchains:elixir_toolchain_1_10",
133161
"//bazel/toolchains:elixir_toolchain_1_12",
134162
"//bazel/toolchains:elixir_toolchain_1_13",
163+
"//bazel/toolchains:elixir_toolchain_1_14",
135164
)
136165

137166
load("//:workspace_helpers.bzl", "rabbitmq_external_deps")

bazel/elixir/elixir.bzl

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,8 @@ load(
99
)
1010

1111
def elixir_toolchain_external():
12-
elixir_constraint = Label("//bazel/platforms:elixir_external")
13-
1412
elixir_external(
1513
name = "external_elixir_installation_ref",
16-
target_compatible_with = [
17-
elixir_constraint,
18-
],
1914
)
2015

2116
elixir_toolchain(
@@ -26,33 +21,27 @@ def elixir_toolchain_external():
2621
native.toolchain(
2722
name = "elixir_toolchain_external",
2823
exec_compatible_with = [
29-
elixir_constraint,
24+
Label("@erlang_config//:erlang_external"),
3025
],
3126
target_compatible_with = [
32-
elixir_constraint,
27+
Label("//bazel/platforms:elixir_external"),
3328
],
3429
toolchain = ":elixir_external",
3530
toolchain_type = Label("//bazel/elixir:toolchain_type"),
3631
visibility = ["//visibility:public"],
3732
)
3833

39-
return elixir_constraint
40-
4134
def elixir_toolchain_from_http_archive(
4235
name_suffix = "",
43-
version = None,
4436
url = None,
4537
strip_prefix = None,
4638
sha256 = None,
47-
elixir_constraint = None):
39+
elixir_constraints = None):
4840
elixir_build(
4941
name = "elixir_build{}".format(name_suffix),
5042
url = url,
5143
strip_prefix = strip_prefix,
5244
sha256 = sha256,
53-
target_compatible_with = [
54-
elixir_constraint,
55-
],
5645
)
5746

5847
elixir_toolchain(
@@ -63,11 +52,9 @@ def elixir_toolchain_from_http_archive(
6352
native.toolchain(
6453
name = "elixir_toolchain{}".format(name_suffix),
6554
exec_compatible_with = [
66-
elixir_constraint,
67-
],
68-
target_compatible_with = [
69-
elixir_constraint,
55+
Label("@erlang_config//:erlang_internal"),
7056
],
57+
target_compatible_with = elixir_constraints,
7158
toolchain = ":elixir{}".format(name_suffix),
7259
toolchain_type = Label("//bazel/elixir:toolchain_type"),
7360
visibility = ["//visibility:public"],
@@ -78,13 +65,14 @@ def elixir_toolchain_from_github_release(
7865
version = None,
7966
sha256 = None):
8067
[major, minor, patch] = version.split(".")
81-
elixir_constraint = Label("//bazel/platforms:elixir_{}_{}".format(major, minor))
68+
elixir_constraints = [
69+
Label("//bazel/platforms:elixir_{}_{}".format(major, minor)),
70+
]
8271
url = "https://github.com/elixir-lang/elixir/archive/refs/tags/v{}.tar.gz".format(version)
8372
elixir_toolchain_from_http_archive(
8473
name_suffix = name_suffix,
8574
url = url,
8675
strip_prefix = "elixir-{}".format(version),
8776
sha256 = sha256,
88-
elixir_constraint = elixir_constraint,
77+
elixir_constraints = elixir_constraints,
8978
)
90-
return elixir_constraint

0 commit comments

Comments
 (0)