Add workaround so rebar2 can use Elixir 1.12.0

Notice that Elixir 1.12.0 requires Erlang/OTP 21 or higher
BTW, this workaround works only with rebar2... unfortunately
rebar3 doesn't compile the elixir files from lib/
This commit is contained in:
Badlop 2021-07-15 01:29:35 +02:00
parent 91763bbc61
commit 937e1c2e37
4 changed files with 46 additions and 2 deletions

View File

@ -130,6 +130,7 @@ ifeq "$(IS_REBAR)" "3"
EBINDIR=$(DEPSDIR)/ejabberd/ebin
REBARREL=$(REBAR) as prod tar
REBARDEV=REBAR_PROFILE=dev $(REBAR) release
ELIXIR_WARNING="\033[32m===>\033[00m If you get \033[1;91mDependency failure: source for elixir...\033[00m, please run \033[4;37mmake\033[00m again"
else
SKIPDEPS=skip_deps=true
LISTDEPS=-q list-deps
@ -142,12 +143,23 @@ else
EBINDIR=ebin
REBARREL=$(REBAR) generate
REBARDEV=
ELIXIR_WARNING="\033[32m===>\033[00m If you get \033[1;91mERROR: Dependency dir .../elixir failed...\033[00m, please run \033[4;37mmake\033[00m again"
endif
endif
all: deps src
deps: $(DEPSDIR)/.got
deps: elixir-rebar $(DEPSDIR)/.got
elixir-rebar:
@[ @elixir@ = true ] \
&& ( [ ! -d $(DEPSDIR)/elixir/ ] \
&& echo $(ELIXIR_WARNING) \
|| ( [ ! -f $(DEPSDIR)/elixir/rebar.config ] \
&& { mkdir $(DEPSDIR)/elixir/src ; \
cp lib/elixir.app.src $(DEPSDIR)/elixir/src/ ; \
cp lib/rebar.config $(DEPSDIR)/elixir/ ; } \
|| true ) ) || true
$(DEPSDIR)/.got:
rm -rf $(DEPSDIR)/.got

11
lib/elixir.app.src Normal file
View File

@ -0,0 +1,11 @@
{application, elixir,
[{description, "elixir"},
{vsn, "1.12.0"},
{modules, [
elixir
]},
{registered, [elixir_config, elixir_code_server]},
{applications, [kernel,stdlib,compiler]},
{mod, {elixir,[]}},
{env, [{ansi_enabled, false}]}
]}.

21
lib/rebar.config Normal file
View File

@ -0,0 +1,21 @@
%% Using Elixir as a Rebar dependency
%% This configuration file only exists so Elixir can be used
%% as a Rebar dependency, the same happens for the file
%% src/elixir.app.src.
%% In practice, Elixir is structured as OTP where many applications
%% are placed in the lib directory. Since this structure is not
%% supported by default by Rebar, after adding Elixir as a dependency
%% you need to explicitly add it to lib_dirs:
%%
%% {lib_dirs, [
%% "deps/elixir/lib"
%% ]}.
%%
%% Run "make" as the proper compilation step
{post_hooks, [{compile, "make compile"}]}.
%% This prevents rebar_elixir_plugin from recompiling Elixir
{ex_opts, [{src_dirs, [".PHONY"]}]}.

View File

@ -24,7 +24,7 @@
{if_var_true, tools,
{ejabberd_po, ".*", {git, "https://github.com/processone/ejabberd-po", {branch, "main"}}}},
{if_var_true, elixir,
{elixir, ".*", {git, "https://github.com/elixir-lang/elixir", {tag, "v1.4.4"}}}},
{elixir, ".*", {git, "https://github.com/elixir-lang/elixir", {tag, "v1.12.0"}}}},
{if_var_true, pam,
{epam, ".*", {git, "https://github.com/processone/epam", {tag, "1.0.10"}}}},
{if_var_true, redis,