Skip to content

Commit 064f2ae

Browse files
authored
Merge pull request #8873 from rabbitmq/mergify/bp/v3.10.x/pr-8807
Add elixir 1.15.2 (backport #8748) (backport #8807)
2 parents 0bd9e4f + ba489ee commit 064f2ae

File tree

16 files changed

+135
-55
lines changed

16 files changed

+135
-55
lines changed

MODULE.bazel

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ bazel_dep(
3131

3232
bazel_dep(
3333
name = "rules_erlang",
34-
version = "3.10.5",
34+
version = "3.11.1",
3535
)
3636

3737
bazel_dep(
@@ -105,6 +105,12 @@ elixir_config.internal_elixir_from_github_release(
105105
version = "1.14.5",
106106
)
107107

108+
elixir_config.internal_elixir_from_github_release(
109+
name = "1_15",
110+
sha256 = "3cfadca57c3092ccbd3ec3f17e5eab529bbd2946f50e4941a903c55c39e3c5f5",
111+
version = "1.15.2",
112+
)
113+
108114
use_repo(
109115
elixir_config,
110116
"elixir_config",
@@ -126,6 +132,7 @@ register_toolchains(
126132
"@elixir_config//external:toolchain",
127133
"@elixir_config//1_13:toolchain",
128134
"@elixir_config//1_14:toolchain",
135+
"@elixir_config//1_15:toolchain",
129136
)
130137

131138
erlang_package = use_extension(
@@ -389,6 +396,8 @@ erlang_dev_package.hex_package(
389396
build_file = "@rabbitmq-server//bazel:BUILD.amqp",
390397
sha256 = "b6d926770e4508e30e3e9e476c57b6c8aeda44f7715663bdc38935620ce5be6f",
391398
version = "2.1.1",
399+
patch_args = ["-p1"],
400+
patches = ["@rabbitmq-server//bazel:amqp.patch"],
392401
)
393402

394403
erlang_dev_package.git_package(
@@ -440,8 +449,8 @@ erlang_dev_package.hex_package(
440449
erlang_dev_package.hex_package(
441450
name = "x509",
442451
build_file = "@rabbitmq-server//bazel:BUILD.x509",
443-
sha256 = "5ff9c79e77d64a62ccffd90aaeb23e8f5b6e47844ef7bc8fed931ecf238662e0",
444-
version = "0.7.0",
452+
sha256 = "3604125d6a0171da6e8a935810b58c999fccab0e3d20b2ed28d97fa2d9e2f6b4",
453+
version = "0.8.7",
445454
)
446455

447456
use_repo(

WORKSPACE

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ rules_pkg_dependencies()
1919
git_repository(
2020
name = "rules_erlang",
2121
remote = "https://github.com/rabbitmq/rules_erlang.git",
22-
tag = "3.10.5",
22+
tag = "3.11.1",
2323
)
2424

2525
load("@rules_erlang//:internal_deps.bzl", "rules_erlang_internal_deps")
@@ -175,6 +175,11 @@ elixir_config(
175175
sha256 = "2ea249566c67e57f8365ecdcd0efd9b6c375f57609b3ac2de326488ac37c8ebd",
176176
version = "1.14.5",
177177
),
178+
internal_elixir_from_github_release(
179+
name = "1_15",
180+
sha256 = "3cfadca57c3092ccbd3ec3f17e5eab529bbd2946f50e4941a903c55c39e3c5f5",
181+
version = "1.15.2",
182+
),
178183
],
179184
rabbitmq_server_workspace = "@",
180185
)

bazel/amqp.patch

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
diff --git a/lib/amqp/core.ex b/lib/amqp/core.ex
2+
index a7302aa..abf2be6 100644
3+
--- a/lib/amqp/core.ex
4+
+++ b/lib/amqp/core.ex
5+
@@ -3,6 +3,10 @@ defmodule AMQP.Core do
6+
7+
require Record
8+
9+
+ # Elixir 1.15 compiler optimizations require that we explicitly
10+
+ # add the rabbit_common code path
11+
+ true = :code.add_path(:filename.join(:os.getenv(~c"DEPS_DIR"), ~c"rabbit_common/ebin"))
12+
+
13+
Record.defrecord(
14+
:p_basic,
15+
:P_basic,

bazel/platforms/BUILD.bazel

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ platform(
5151
name = "erlang_linux_25_3_platform",
5252
constraint_values = [
5353
"@erlang_config//:erlang_25_3",
54-
"@elixir_config//:elixir_1_14",
54+
"@elixir_config//:elixir_1_15",
5555
],
5656
parents = ["@rbe//config:platform"],
5757
)
@@ -60,7 +60,7 @@ platform(
6060
name = "erlang_linux_git_master_platform",
6161
constraint_values = [
6262
"@erlang_config//:erlang_26_unknown",
63-
"@elixir_config//:elixir_1_14",
63+
"@elixir_config//:elixir_1_15",
6464
],
6565
parents = ["@rbe//config:platform"],
6666
)

deps/rabbitmq_cli/config/config.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Config
2424
#
2525
# Or configure a 3rd-party app:
2626
#
27-
config :logger, level: :warn, console: [device: :standard_error]
27+
config :logger, level: :warning, console: [device: :standard_error]
2828
#
2929

3030
# It is also possible to import configuration files, relative to this

deps/rabbitmq_cli/lib/rabbit_common/records.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ defmodule RabbitCommon.Records do
88
require Record
99
import Record, only: [defrecord: 2, extract: 2]
1010

11+
# Elixir 1.15 compiler optimizations require that we explicitly
12+
# add the rabbit_common code path
13+
true = Code.append_path(Path.join([System.get_env("DEPS_DIR"), "rabbit_common", "ebin"]))
14+
1115
# Important: amqqueue records must not be used directly since they are versioned
1216
# for mixed version cluster compatibility. Convert records
1317
# to maps on the server end to access the fields of those records. MK.

deps/rabbitmq_cli/lib/rabbitmq/cli/core/listeners.ex

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ defmodule RabbitMQ.CLI.Core.Listeners do
1313
# API
1414
#
1515

16+
# TODO: Remove when we require Elixir 1.15
17+
if function_exported?(Mix, :ensure_application!, 1) do
18+
Mix.ensure_application!(:public_key)
19+
end
20+
1621
defrecord :certificate,
1722
:Certificate,
1823
extract(:Certificate, from_lib: "public_key/include/public_key.hrl")

deps/rabbitmq_cli/lib/rabbitmq/cli/diagnostics/commands/remote_shell_command.ex

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
defmodule RabbitMQ.CLI.Diagnostics.Commands.RemoteShellCommand do
88
@behaviour RabbitMQ.CLI.CommandBehaviour
99
@dialyzer :no_missing_calls
10+
@dialyzer {:nowarn_function, [run: 2, start_shell_on_otp_26_plus: 1, start_shell_on_otp_25: 1]}
1011

1112
use RabbitMQ.CLI.Core.MergesNoDefaults
1213
use RabbitMQ.CLI.Core.AcceptsNoPositionalArguments
@@ -15,18 +16,9 @@ defmodule RabbitMQ.CLI.Diagnostics.Commands.RemoteShellCommand do
1516
_ = :c.l(:shell)
1617

1718
if :erlang.function_exported(:shell, :start_interactive, 1) do
18-
:shell.start_interactive({node_name, :shell, :start, []})
19-
:timer.sleep(:infinity)
19+
start_shell_on_otp_26_plus(node_name)
2020
else
21-
_ = Supervisor.terminate_child(:kernel_sup, :user)
22-
Process.flag(:trap_exit, true)
23-
user_drv = :user_drv.start([~c"tty_sl -c -e", {node_name, :shell, :start, []}])
24-
Process.link(user_drv)
25-
26-
receive do
27-
{~c"EXIT", _user_drv, _} ->
28-
{:ok, "Disconnected from #{node_name}."}
29-
end
21+
start_shell_on_otp_25(node_name)
3022
end
3123
end
3224

@@ -41,4 +33,26 @@ defmodule RabbitMQ.CLI.Diagnostics.Commands.RemoteShellCommand do
4133
def banner(_, %{node: node_name}) do
4234
"Starting an interactive Erlang shell on node #{node_name}... Press 'Ctrl+G' then 'q' to exit."
4335
end
36+
37+
defp start_shell_on_otp_26_plus(node_name) do
38+
case :shell.start_interactive({node_name, {:shell, :start, []}}) do
39+
:ok -> :ok
40+
{:error, :already_started} -> :ok
41+
{error, _} -> {:error, {:badrpc, :nodedown}}
42+
end
43+
44+
:timer.sleep(:infinity)
45+
end
46+
47+
defp start_shell_on_otp_25(node_name) do
48+
_ = Supervisor.terminate_child(:kernel_sup, :user)
49+
Process.flag(:trap_exit, true)
50+
user_drv = :user_drv.start([~c"tty_sl -c -e", {node_name, :shell, :start, []}])
51+
Process.link(user_drv)
52+
53+
receive do
54+
{~c"EXIT", _user_drv, _} ->
55+
{:ok, "Disconnected from #{node_name}."}
56+
end
57+
end
4458
end

deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/csv.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ defmodule RabbitMQ.CLI.Formatters.Csv do
9494
end
9595
end
9696

97+
# Elixir 1.15 compiler optimizations require that we explicitly
98+
# add the csv code path
99+
true = Code.append_path(Path.join(["_build", Atom.to_string(Mix.env()), "lib", "csv", "ebin"]))
100+
97101
defimpl CSV.Encode, for: PID do
98102
def encode(pid, env \\ []) do
99103
FormatterHelpers.format_info_item(pid)

deps/rabbitmq_cli/lib/rabbitmq/cli/formatters/pretty_table.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ defmodule RabbitMQ.CLI.Formatters.PrettyTable do
1212
require Record
1313
import Record
1414

15+
# Elixir 1.15 compiler optimizations require that we explicitly
16+
# add the stdout_formatter code path
17+
true = Code.append_path(Path.join([System.get_env("DEPS_DIR"), "stdout_formatter", "ebin"]))
18+
1519
defrecord :table,
1620
extract(:table,
1721
from_lib: "stdout_formatter/include/stdout_formatter.hrl"

0 commit comments

Comments
 (0)