Supersonido / rebar_mix

rebar3 plugin for building Elixir dependencies with mix
Apache License 2.0
53 stars 20 forks source link

Plugin doesn't work with upcoming Elixir v1.10 #15

Open liveforeverx opened 4 years ago

liveforeverx commented 4 years ago

Environment

Current behavior

Creating new application and using rebar_mix plugin for example to include jason library, like this in rebar.config:

{erl_opts, [debug_info]}.
{deps, [
         {jason, "1.1.2"}
]}.

{plugins, [rebar_mix]}.
{provider_hooks, [
  {pre,  [{compile, {mix, find_elixir_libs}}]},
  {post, [{compile, {mix, consolidate_protocols}}]}
]}.

{shell, [
    {apps, [mylib]}
]}.

Expected behavior

Jason compiled.

Jason compiles with Elixir v1.9, but with upcoming Elixir v1.10 it produces an error:

rebar3 shell
...
Generated decimal app
===> Failed to read required .app file for processing the application 'decimal': no such file or directory

Tracing back it is dependent on this change:

* [Mix.Project] Make sure `MIX_BUILD_PATH` specifies only the `build_path` prefix and that env+target are still concatenated

So probably this change could fix this:

https://github.com/Supersonido/rebar_mix/blob/master/src/rebar_mix_builder.erl#L14-L15

to:

{env, [{"MIX_BUILD_PATH", filename:join(AppDir, "../../../")},
    {"MIX_ENV", "default"}]}]) of

Or getting MIX_ENV from profiles (I see multiple profiles, but I don't know, which one to use).

tsloughter commented 4 years ago

Thanks. That fix isn't completely right though, we need to tell it use use prod MIX_ENV and to use a specific build path that is unrelated to its ENV.

tsloughter commented 4 years ago

Issue was found and I talked to Jose, he is resolving it. It happened because of https://github.com/elixir-lang/elixir/issues/9188/

Thanks for catching this early!