- i tried to compile the
deps
inejabberd 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}]}]}}
- 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.
./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?
- 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>
0
@Badlop : Thanks for your answer.
-
Yes i mixed my previous ejabberd source code with the new version
24.06
, after i fresh clone from the repo. i can compiled ejabberd successfully. -
I wish there is an option for Rebar3 or Mix to output the compiled files, so that i know what have changed so i can copy the new compiled file to its destination without to
make install
every time i modified the code. -
Now i am facing another issue which i have never encountered in my previous compilation and it said :
Invalid value of option modules->mod_http_upload->thumbnail: ejabberd is built without image converter support
Please help me on the issue No. 3
Thanks.