If xref analysis is being run by a dependency during its compilation phase, the xref provider will try to add that deps' parents to the check job while the ebin/ directories for them do not exist. This causes a crash. This patch makes it so directories are only added if they are existing, preventing failure on any compile hook for dependencies and allowing successful compilation as a best effort.pull/1569/head
@ -0,0 +1,12 @@ | |||||
{erl_opts, [debug_info]}. | |||||
{deps, []}. | |||||
{xref_checks,[ | |||||
undefined_function_calls, | |||||
undefined_functions, | |||||
locals_not_used, | |||||
deprecated_function_calls, | |||||
deprecated_functions | |||||
]}. | |||||
{provider_hooks, [{post, [{compile, xref}]}]}. |
@ -0,0 +1,16 @@ | |||||
{application, rebar_issue1, | |||||
[{description, "An OTP application"}, | |||||
{vsn, "0.1.0"}, | |||||
{registered, []}, | |||||
{mod, { rebar_issue1_app, []}}, | |||||
{applications, | |||||
[kernel, | |||||
stdlib | |||||
]}, | |||||
{env,[]}, | |||||
{modules, []}, | |||||
{maintainers, []}, | |||||
{licenses, []}, | |||||
{links, []} | |||||
]}. |
@ -0,0 +1,26 @@ | |||||
%%%------------------------------------------------------------------- | |||||
%% @doc rebar_issue1 public API | |||||
%% @end | |||||
%%%------------------------------------------------------------------- | |||||
-module(rebar_issue1_app). | |||||
-behaviour(application). | |||||
%% Application callbacks | |||||
-export([start/2, stop/1]). | |||||
%%==================================================================== | |||||
%% API | |||||
%%==================================================================== | |||||
start(_StartType, _StartArgs) -> | |||||
rebar_issue1_sup:start_link(). | |||||
%%-------------------------------------------------------------------- | |||||
stop(_State) -> | |||||
ok. | |||||
%%==================================================================== | |||||
%% Internal functions | |||||
%%==================================================================== |
@ -0,0 +1,35 @@ | |||||
%%%------------------------------------------------------------------- | |||||
%% @doc rebar_issue1 top level supervisor. | |||||
%% @end | |||||
%%%------------------------------------------------------------------- | |||||
-module(rebar_issue1_sup). | |||||
-behaviour(supervisor). | |||||
%% API | |||||
-export([start_link/0]). | |||||
%% Supervisor callbacks | |||||
-export([init/1]). | |||||
-define(SERVER, ?MODULE). | |||||
%%==================================================================== | |||||
%% API functions | |||||
%%==================================================================== | |||||
start_link() -> | |||||
supervisor:start_link({local, ?SERVER}, ?MODULE, []). | |||||
%%==================================================================== | |||||
%% Supervisor callbacks | |||||
%%==================================================================== | |||||
%% Child :: {Id,StartFunc,Restart,Shutdown,Type,Modules} | |||||
init([]) -> | |||||
{ok, { {one_for_all, 0, 1}, []} }. | |||||
%%==================================================================== | |||||
%% Internal functions | |||||
%%==================================================================== |
@ -0,0 +1,17 @@ | |||||
{application, rebar_issue2, | |||||
[{description, "An OTP application"}, | |||||
{vsn, "0.1.0"}, | |||||
{registered, []}, | |||||
{mod, { rebar_issue2_app, []}}, | |||||
{applications, | |||||
[kernel, | |||||
stdlib, | |||||
rebar_issue1 | |||||
]}, | |||||
{env,[]}, | |||||
{modules, []}, | |||||
{maintainers, []}, | |||||
{licenses, []}, | |||||
{links, []} | |||||
]}. |
@ -0,0 +1,26 @@ | |||||
%%%------------------------------------------------------------------- | |||||
%% @doc rebar_issue2 public API | |||||
%% @end | |||||
%%%------------------------------------------------------------------- | |||||
-module(rebar_issue2_app). | |||||
-behaviour(application). | |||||
%% Application callbacks | |||||
-export([start/2, stop/1]). | |||||
%%==================================================================== | |||||
%% API | |||||
%%==================================================================== | |||||
start(_StartType, _StartArgs) -> | |||||
rebar_issue2_sup:start_link(). | |||||
%%-------------------------------------------------------------------- | |||||
stop(_State) -> | |||||
ok. | |||||
%%==================================================================== | |||||
%% Internal functions | |||||
%%==================================================================== |
@ -0,0 +1,35 @@ | |||||
%%%------------------------------------------------------------------- | |||||
%% @doc rebar_issue2 top level supervisor. | |||||
%% @end | |||||
%%%------------------------------------------------------------------- | |||||
-module(rebar_issue2_sup). | |||||
-behaviour(supervisor). | |||||
%% API | |||||
-export([start_link/0]). | |||||
%% Supervisor callbacks | |||||
-export([init/1]). | |||||
-define(SERVER, ?MODULE). | |||||
%%==================================================================== | |||||
%% API functions | |||||
%%==================================================================== | |||||
start_link() -> | |||||
supervisor:start_link({local, ?SERVER}, ?MODULE, []). | |||||
%%==================================================================== | |||||
%% Supervisor callbacks | |||||
%%==================================================================== | |||||
%% Child :: {Id,StartFunc,Restart,Shutdown,Type,Modules} | |||||
init([]) -> | |||||
{ok, { {one_for_all, 0, 1}, []} }. | |||||
%%==================================================================== | |||||
%% Internal functions | |||||
%%==================================================================== |