2017-01-16 110 views
0

我试图编译一个模块,使用ejabberd新的xmpp库。为什么rebar3不能编译它自己可以编译的依赖关系?

我有一个非常简单的rebar.config文件:

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

当我尝试运行rebar3 eunitrebar3 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在吗?责怪xmpp库的rebar.config.script

+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"}]}]} 
]}.