iPPLE
iPPLE

Reputation: 3

Error in override_deps_versions2 while compile dependencies

  1. i tried to compile the deps in ejabberd 24.06 by this:

./rebar compile

==> cowlib (compile)
==> gun (compile)
==> jsx (compile)
==> p1_utils (compile)
==> cache_tab (compile)
==> eimp (compile)
==> ezlib (compile)
==> fast_tls (compile)
==> fast_xml (compile)
==> fast_yaml (compile)
WARN:  /home/ipple/ejabberd-src/deps/unicode_util_compat/src/unicode_util_compat.app.src has version "0.7.0"; requested regex was \~\>0.7.0
Uncaught error in rebar_core: {'EXIT',
{function_clause,
\[{override_deps_versions2,
'-update_deps/1-fun-0-',
\[{unicode_util_compat,"\~\>0.7.0"}\],
\[{file,
"/home/ipple/ejabberd-src/plugins/override_deps_versions2.erl"},
{line,14}\]},
{lists,map,2,
\[{file,"lists.erl"},{line,1243}\]},
{override_deps_versions2,update_deps,1,
\[{file,
"/home/ipple/ejabberd-src/plugins/override_deps_versions2.erl"},
{line,14}\]},
{rebar_core,acc_modules,5,
\[{file,"src/rebar_core.erl"},{line,540}\]},
{rebar_core,process_dir1,7,
\[{file,"src/rebar_core.erl"},{line,247}\]},
{rebar_core,process_each,5,
\[{file,"src/rebar_core.erl"},{line,351}\]},
{rebar_core,process_dir1,7,
\[{file,"src/rebar_core.erl"},{line,253}\]},
{rebar_core,process_commands,2,
\[{file,"src/rebar_core.erl"},{line,93}\]}\]}}
  1. And another question why does make command does not output the compiled file name ?

make

/usr/bin/mix  compile  
Compiling 1 file (.erl)  
Compiling 17 files (.ex)

and ejabberd 21 i have this output when compile, after make some changes in ejabberd_c2s.erl

make

/usr/lib/erlang/bin/escript rebar skip_deps=true compile
==> rel (pre_compile)
==> rel (compile)
==> ejabberd-src (pre_compile)
==> ejabberd-src (compile)
Compiled src/ejabberd_c2s.erl

Please help!

I'm seeking for the answers from ejabberd forum.

Upvotes: -1

Views: 24

Answers (1)

Badlop
Badlop

Reputation: 4120

  1. ./rebar compile

That means you are using rebar2, an obsolete program. Better user Rebar3, or Elixir's Mix. When you run ./configure in ejabberd it will try to use mix, or rebar3 if possible; as both tools are far better than rebar.

It seems you added some additional dependencies to ejabberd, or maybe you have added ejabberd as a dependency to another application, right? And, as few people do this, maybe there's some problem/bug in ejabberd that nobody else than you can investigate, because you didn't explain what non-documented and non-standard things are you doing to compile ejabberd...

If you deviate from the documented method to compile ejabberd from source code you should mention what changes you made, right?

  1. And another question why does make command does not output the compiled file name ?

It seems you have Erlang/OTP and Elixir installed. Since ejabberd 24.02 configure will setup to compile ejabberd using mix, which is a tool more updated and powerful than the old rebar. And as you noticed, the mix tool does not show file per file, only the number of compiled files. That is normal, and expected:

$ ./configure
...
build tool to use (change using --with-rebar): /home/badlop/.asdf/shims/mix
...

$ make
/home/badlop/.asdf/shims/mix deps.get && :> _build/dev/lib/.got
Resolving Hex dependencies...
...
/home/badlop/.asdf/shims/mix compile && :> _build/dev/lib/.built
...
==> ejabberd
Compiling 287 files (.erl)
Compiling 17 files (.ex)
Generated ejabberd app

$ make relive
...
10:59:39.981 [info] ejabberd 24.7.2 is started in the node :ejabberd@localhost in 1.00s
iex(ejabberd@localhost)1>

Upvotes: 1

Related Questions