2017-01-16 8 views
0

Я пытаюсь скомпилировать модуль, который использует новую библиотеку xmpp для ejabberd.Почему не может rebar3 скомпилировать зависимость, которую он может скомпилировать сам по себе?

Я очень простой rebar.config файл:

{deps, [ 
    {xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.1.4"}}} 
]}. 

Когда я пытаюсь запустить rebar3 eunit или rebar3 compile я получаю сообщение об ошибке:

$ rebar3 compile 
===> Verifying dependencies... 
===> Fetching xmpp ({git,"https://github.com/processone/xmpp", 
           {ref,"c010141487632db1666bcbf64f90f42c0fde50aa"}}) 
===> Fetching rebar3_hex ({pkg,<<"rebar3_hex">>,<<"3.1.0">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/rebar3_hex-3.1.0.tar 
===> Compiling rebar3_hex 
===> Fetching fast_xml ({pkg,<<"fast_xml">>,<<"1.1.18">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/fast_xml-1.1.18.tar 
===> Fetching pc ({pkg,<<"pc">>,<<"1.4.0">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/pc-1.4.0.tar 
===> Compiling pc 
===> Fetching stringprep ({pkg,<<"stringprep">>,<<"1.0.7">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/stringprep-1.0.7.tar 
===> Fetching p1_utils ({pkg,<<"p1_utils">>,<<"1.0.6">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/p1_utils-1.0.6.tar 
===> Compiling p1_utils 
===> Compiling fast_xml 
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/fast_xml/c_src/fxml.c 
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/fast_xml/c_src/fxml_stream.c 
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/fast_xml/priv/lib/fxml.so 
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/fast_xml/priv/lib/fxml_stream.so 
===> Compiling stringprep 
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/stringprep/c_src/stringprep.cpp 
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/stringprep/priv/lib/stringprep.so 
===> Compiling xmpp 
===> Compiling _build/default/lib/xmpp/src/xmpp_util.erl failed 
_build/default/lib/xmpp/include/xmpp.hrl:29: can't find include file "fxml.hrl" 

Однако, когда я скомпилировать этот модуль отдельно, он работает:

$ cd _build/default/lib/xmpp 
$ rebar3 compile 
===> Fetching rebar3_hex ({pkg,<<"rebar3_hex">>,<<"3.1.0">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/rebar3_hex-3.1.0.tar 
===> Compiling rebar3_hex 
===> Verifying dependencies... 
===> Fetching fast_xml ({pkg,<<"fast_xml">>,<<"1.1.18">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/fast_xml-1.1.18.tar 
===> Fetching pc ({pkg,<<"pc">>,<<"1.4.0">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/pc-1.4.0.tar 
===> Compiling pc 
===> Fetching stringprep ({pkg,<<"stringprep">>,<<"1.0.7">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/stringprep-1.0.7.tar 
===> Fetching p1_utils ({pkg,<<"p1_utils">>,<<"1.0.6">>}) 
===> Downloaded package, caching at /Users/marcp/.cache/rebar3/hex/default/packages/p1_utils-1.0.6.tar 
===> Skipping p1_utils (from {pkg,<<"p1_utils">>,<<"1.0.6">>, 
            <<"EF0951DDF38E92B7E479AF4B8DC950DF76AF8C1030432EF68B7FD7AD17C436FE">>}) as an app of the same name has already been fetched 
===> Compiling p1_utils 
===> Compiling fast_xml 
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/fast_xml/c_src/fxml.c 
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/fast_xml/c_src/fxml_stream.c 
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/fast_xml/priv/lib/fxml.so 
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/fast_xml/priv/lib/fxml_stream.so 
===> Compiling stringprep 
===> Compiling /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/stringprep/c_src/stringprep.cpp 
===> Linking /Users/marcp/Desktop/erlang-test/myapp/_build/default/lib/xmpp/_build/default/lib/stringprep/priv/lib/stringprep.so 
===> Compiling xmpp 

Как я могу узнать, что такое g Начать? Виноват ли rebar.config.script библиотеки xmpp?

+0

Выполнение 'DEBUG = 1 rebar3 compile' помогли мне довольно часто :) – filmor

ответ

0

Оказалось, что xmpp не может быть скомпилирован с помощью rebar3 из коробки. Я открыл issue on GitHub.

В качестве временного решения, добавив следующие строки в моем rebar.config файл работал:

{overrides, [ 
    {add, xmpp, [{erl_opts, [{i, "_build/default/lib/fast_xml/include"}]}]} 
]}.