Skip to content

Commit

Permalink
Use rules_erlang 3.6.3
Browse files Browse the repository at this point in the history
Use the new @erlang_config repo from rules_erlang 3.6+ for simplified
config and the elimiation of the need for --config=local
  • Loading branch information
HoloRin committed Sep 19, 2022
1 parent 90cc0e2 commit 8537d04
Show file tree
Hide file tree
Showing 14 changed files with 167 additions and 137 deletions.
23 changes: 14 additions & 9 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ build --registry=https://raw.githubusercontent.com/rabbitmq/bazel-central-regist
build --incompatible_strict_action_env
build --local_test_jobs=1

build --flag_alias=erlang_home=@rules_erlang//:erlang_home
build --flag_alias=erlang_version=@rules_erlang//:erlang_version
build --flag_alias=elixir_home=//:elixir_home

build:buildbuddy --bes_results_url=https://app.buildbuddy.io/invocation/
build:buildbuddy --bes_backend=grpcs://remote.buildbuddy.io
build:buildbuddy --remote_cache=grpcs://remote.buildbuddy.io
Expand All @@ -26,25 +30,26 @@ build:rbe --jobs=50
build:rbe --crosstool_top=@rbe//cc:toolchain
build:rbe --extra_toolchains=@rbe//config:cc-toolchain

build:rbe --host_platform=@rbe//config:platform
build:rbe --host_platform=//bazel/platforms:erlang_internal_platform

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-23 --platforms=//bazel/platforms:erlang_linux_23_platform

build:rbe-24 --config=rbe
build:rbe-24 --platforms=//bazel/platforms:erlang_24_platform
build:rbe-24 --extra_execution_platforms=//bazel/platforms:erlang_24_platform
build:rbe-24 --platforms=//bazel/platforms:erlang_linux_24_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-25 --platforms=//bazel/platforms:erlang_linux_25_platform

# no-op config so that --config=local does not error
build:local --color=auto

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

# Try importing a user specific .bazelrc
# You can create your own by copying and editing the template-user.bazelrc template:
Expand Down
25 changes: 4 additions & 21 deletions .github/workflows/oci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,44 +86,27 @@ jobs:

- name: Further Configure Bazel
run: |
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
cat << EOF >> user.bazelrc
build --@rules_erlang//:erlang_version=${{ matrix.otp_major }}
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
build --elixir_home=${ELIXIR_HOME}
EOF
- name: Set the correct erlang source tar for the container
run: |
sudo npm install --global --silent @bazel/buildozer
buildozer 'set tars ["@otp_src_${{ matrix.otp_major }}//file"]' \
//packaging/docker-image:otp_source
git diff
- name: Build
run: |
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
export ERLANG_HOME="$(dirname $(dirname $(which erl)))"
bazelisk build //packaging/docker-image:rabbitmq \
--config=buildbuddy
- name: Test
run: |
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
export ERLANG_HOME="$(dirname $(dirname $(which erl)))"
OCI_TESTS=$(bazel query 'tests(//packaging/docker-image/...)')
bazelisk test ${OCI_TESTS} \
--config=buildbuddy
- name: Load
run: |
ERLANG_HOME="$(dirname $(dirname $(which erl)))"
ELIXIR_HOME="$(dirname $(dirname $(which iex)))"
export ERLANG_HOME="$(dirname $(dirname $(which erl)))"
bazelisk run //packaging/docker-image:rabbitmq \
--config=buildbuddy
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/test-mixed-versions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,6 @@ 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
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/test-windows.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,6 @@ 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
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,6 @@ 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
Expand Down
22 changes: 12 additions & 10 deletions .github/workflows/update-otp-patches.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
matrix:
include:
- erlang_version: "25.0"
name_suffix: '_25'
name: '25'
timeout-minutes: 10
steps:
- name: CHECKOUT REPOSITORY
Expand Down Expand Up @@ -63,17 +63,19 @@ jobs:
run: |
sudo npm install --global --silent @bazel/buildozer
LINE=$(grep -n 'name_suffix = "${{ matrix.name_suffix }}",' bazel/toolchains/BUILD.bazel | awk -F ":" '{print $1}')
LINE=$(($LINE-1))
OLD_SHA="$(cat MODULE.bazel | buildozer 'print sha256' -:${{ matrix.name }})"
OLD_VERSION="$(cat MODULE.bazel | buildozer 'print version' -:${{ matrix.name }})"
buildozer 'set sha256 "${{ steps.fetch-version.outputs.SHA }}"' \
//bazel/toolchains:%${LINE} || test $? -eq 3
buildozer 'set version "${{ steps.fetch-version.outputs.VERSION }}"' \
//bazel/toolchains:%${LINE} || test $? -eq 3
echo "$(cat MODULE.bazel | buildozer 'set sha256 "${{ steps.fetch-version.outputs.SHA }}"' -:${{ matrix.name }})" > MODULE.bazel
echo "$(cat MODULE.bazel | buildozer 'set version "${{ steps.fetch-version.outputs.VERSION }}"' -:${{ matrix.name }})" > MODULE.bazel
echo "$(cat WORKSPACE | buildozer 'set downloaded_file_path "OTP-${{ steps.fetch-version.outputs.VERSION }}.tar.gz"' -:otp_src${{ matrix.name_suffix }})" > WORKSPACE
echo "$(cat WORKSPACE | buildozer 'set urls ["https://github.com/erlang/otp/archive/OTP-${{ steps.fetch-version.outputs.VERSION }}.tar.gz"]' -:otp_src${{ matrix.name_suffix }})" > WORKSPACE
echo "$(cat WORKSPACE | buildozer 'set sha256 "${{ steps.fetch-version.outputs.SHA2 }}"' -:otp_src${{ matrix.name_suffix }})" > WORKSPACE
echo "$(cat WORKSPACE | buildozer 'set downloaded_file_path "OTP-${{ steps.fetch-version.outputs.VERSION }}.tar.gz"' -:otp_src_${{ matrix.name }})" > WORKSPACE
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
echo "$(cat WORKSPACE | buildozer 'set sha256 "${{ steps.fetch-version.outputs.SHA2 }}"' -:otp_src_${{ matrix.name }})" > WORKSPACE
sed -i"_orig" "s/${OLD_SHA}/${{ steps.fetch-version.outputs.SHA }}" WORKSPACE
sed -i"_orig" "s/${OLD_VERSION}/${{ steps.fetch-version.outputs.VERSION }}" WORKSPACE
rm *_orig
set -x
git diff
Expand Down
1 change: 1 addition & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ load(":rabbitmq.bzl", "all_plugins")
exports_files([
"scripts/bazel/rabbitmq-run.sh",
"scripts/bazel/rabbitmq-run.bat",
"release-notes",
])

config_setting(
Expand Down
49 changes: 48 additions & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,54 @@ bazel_dep(

bazel_dep(
name = "rules_erlang",
version = "3.5.0",
version = "3.6.3",
)

erlang_config = use_extension(
"@rules_erlang//bzlmod:extensions.bzl",
"erlang_config",
)

erlang_config.internal_erlang_from_github_release(
name = "23",
sha256 = "e3ecb3ac2cc549ab90cd9f8921eaebc8613f4d5c89972a3987e5a762d5a2df08",
version = "23.3.4.16",
)

erlang_config.internal_erlang_from_github_release(
name = "24",
sha256 = "86dddc0de486acc320ed7557f12033af0b5045205290ee4926aa931b3d8b3ab2",
version = "24.3.4.4",
)

erlang_config.internal_erlang_from_github_release(
name = "25",
sha256 = "8fc707f92a124b2aeb0f65dcf9ac8e27b2a305e7bcc4cc1b2fdf770eec0165bf",
version = "25.0.4",
)

erlang_config.internal_erlang_from_http_archive(
name = "git_master",
strip_prefix = "otp-master",
url = "https://github.com/erlang/otp/archive/refs/heads/master.tar.gz",
version = "master",
)

use_repo(
erlang_config,
"erlang_config",
)

register_toolchains(
"@erlang_config//external:toolchain",
"@erlang_config//23:toolchain",
"@erlang_config//24:toolchain",
"@erlang_config//25:toolchain",
"@erlang_config//git_master:toolchain",
"//bazel/toolchains:elixir_toolchain_external",
"//bazel/toolchains:elixir_toolchain_1_10",
"//bazel/toolchains:elixir_toolchain_1_12",
"//bazel/toolchains:elixir_toolchain_1_13",
)

erlang_package = use_extension(
Expand Down
40 changes: 34 additions & 6 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -112,22 +112,50 @@ git_repository(
git_repository(
name = "rules_erlang",
remote = "https://github.com/rabbitmq/rules_erlang.git",
tag = "3.2.0",
tag = "3.6.3",
)

load(
"@rules_erlang//:rules_erlang.bzl",
"erlang_config",
"internal_erlang_from_github_release",
"internal_erlang_from_http_archive",
"rules_erlang_dependencies",
)

erlang_config(
internal_erlang_configs = [
internal_erlang_from_github_release(
name = "23",
sha256 = "e3ecb3ac2cc549ab90cd9f8921eaebc8613f4d5c89972a3987e5a762d5a2df08",
version = "23.3.4.16",
),
internal_erlang_from_github_release(
name = "24",
sha256 = "86dddc0de486acc320ed7557f12033af0b5045205290ee4926aa931b3d8b3ab2",
version = "24.3.4.4",
),
internal_erlang_from_github_release(
name = "25",
sha256 = "8fc707f92a124b2aeb0f65dcf9ac8e27b2a305e7bcc4cc1b2fdf770eec0165bf",
version = "25.0.4",
),
internal_erlang_from_http_archive(
name = "git_master",
strip_prefix = "otp-master",
url = "https://github.com/erlang/otp/archive/refs/heads/master.tar.gz",
version = "master",
),
],
)

rules_erlang_dependencies()

load("@erlang_config//:defaults.bzl", "register_defaults")

register_defaults()

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_12",
Expand Down
30 changes: 9 additions & 21 deletions bazel/elixir/elixir.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,8 @@ load(
)

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(
Expand All @@ -26,33 +21,27 @@ def elixir_toolchain_external():
native.toolchain(
name = "elixir_toolchain_external",
exec_compatible_with = [
elixir_constraint,
Label("@erlang_config//:erlang_external"),
],
target_compatible_with = [
elixir_constraint,
Label("//bazel/platforms:elixir_external"),
],
toolchain = ":elixir_external",
toolchain_type = Label("//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_constraints = None):
elixir_build(
name = "elixir_build{}".format(name_suffix),
url = url,
strip_prefix = strip_prefix,
sha256 = sha256,
target_compatible_with = [
elixir_constraint,
],
)

elixir_toolchain(
Expand All @@ -63,11 +52,9 @@ def elixir_toolchain_from_http_archive(
native.toolchain(
name = "elixir_toolchain{}".format(name_suffix),
exec_compatible_with = [
elixir_constraint,
],
target_compatible_with = [
elixir_constraint,
Label("@erlang_config//:erlang_internal"),
],
target_compatible_with = elixir_constraints,
toolchain = ":elixir{}".format(name_suffix),
toolchain_type = Label("//bazel/elixir:toolchain_type"),
visibility = ["//visibility:public"],
Expand All @@ -78,13 +65,14 @@ def elixir_toolchain_from_github_release(
version = None,
sha256 = None):
[major, minor, patch] = version.split(".")
elixir_constraint = Label("//bazel/platforms:elixir_{}_{}".format(major, minor))
elixir_constraints = [
Label("//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,
elixir_constraints = elixir_constraints,
)
return elixir_constraint
Loading

0 comments on commit 8537d04

Please sign in to comment.