Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"make options" crashes with Erlang/OTP 28.0-rc1 #4352

Open
badlop opened this issue Feb 19, 2025 · 0 comments
Open

"make options" crashes with Erlang/OTP 28.0-rc1 #4352

badlop opened this issue Feb 19, 2025 · 0 comments

Comments

@badlop
Copy link
Member

badlop commented Feb 19, 2025

When running "make options" with Erlang/OTP 28.0-rc1, it crashes and shows error message:

escript: exception error: undefined function erl_types:t_opaque_from_records/1
 function  opt_types_sh__escript__1739__876963__702419__1122:t_remote/2 (tools/opt_types.sh, line 458)
  in call from opt_types_sh__escript__1739__876963__702419__1122:type_with_default/3 (tools/opt_types.sh, line 227)
  in call from opt_types_sh__escript__1739__876963__702419__1122:'-map_to_specs/3-fun-0-'/5 (tools/opt_types.sh, line 212)
  in call from maps:fold_1/4 (maps.erl, line 871)
  in call from opt_types_sh__escript__1739__876963__702419__1122:map_to_specs/3 (tools/opt_types.sh, line 210)
  in call from opt_types_sh__escript__1739__876963__702419__1122:main/1 (tools/opt_types.sh, line 18)
make: *** [Makefile:236: options] Error 127

This is because Erlang 28 removed the function erl_types:t_opaque_from_records/1 in commit erlang/otp@5dab31e and that function is called by function t_remote/2 in ejabberd's tools/opt_types.sh

The good news: apparently this is the only missing function, because applying a dummy patch like this removes the error and "make options" finishes correctly:

diff --git a/tools/opt_types.sh b/tools/opt_types.sh
index 5c8761f82..9a8bdf47e 100755
--- a/tools/opt_types.sh
+++ b/tools/opt_types.sh
@@ -452,6 +452,23 @@ t_from_form(Spec) ->
                erl_types:var_table__new(), erl_types:cache__new()),
     T.
 
+t_remote(Mod, acl) ->
+    erl_types:t_any();
+t_remote(Mod, ip4_address) ->
+    erl_types:t_tuple();
+t_remote(Mod, ip6_address) ->
+    erl_types:t_tuple();
+t_remote(Mod, ip_address) ->
+    erl_types:t_tuple();
+t_remote(Mod, jid) ->
+    erl_types:t_tuple();
+t_remote(Mod, re_mp) ->
+    erl_types:t_tuple();
+t_remote(Mod, shaper_rule) ->
+    erl_types:t_tuple();
+t_remote(Mod, uri) ->
+    erl_types:t_tuple();
+
 t_remote(Mod, Type) ->
     D = maps:from_list([{{opaque, Type, []},
                          {{Mod, 1, 2, []}, type}}]),
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant