For … reasons … I’m converting an Erlang codebase to compile with mix, and I’ve run into a problem.
One of my Erlang projects uses “hackney”, so I’ve specified it in my mix.exs as follows:
defp deps do
[
# ...
{:hackney, "~> 1.15.2"}
]
end
hackney has a dependency on ssl_verify_fun, specified in its rebar.config:
{deps, [
% ...
{ssl_verify_fun, "1.1.5"}
But: ssl_verify_fun has a mix.exs file in it. I don’t know why. This causes it to be compiled with mix, which causes it to add a reference to the elixir app, which it doesn’t actually need, which causes my application (which also doesn’t need elixir) to fail to start, because it’s not included.
If I attempt to use an alternative fork (actually, just using the original repo for demonstration purposes), by adding the following to my mix.exs (that depends on hackney)…
{:ssl_verify_fun, git: "https://github.com/deadtrickster/ssl_verify_fun.erl", tag: "1.1.5"}
…causes “different specs were given …”
Adding override: true causes mix deps.get to pull the correct code from git, but then I get “The lock is missing for package”. I get the same if I attempt to set manager: :rebar3.
I can manually edit the mix.exs to add language: :erlang, which fixes my problem, but isn’t permanent.
If I delete the deps/ssl_verify_fun/mix.exs file (attempting to trick mix into using rebar instead), I get “Could not find a Mix.Project, please …”
And this isn’t permanent, either.
How do I…
- Use an alternative fork of
ssl_verify_fun? - OR: edit its
mix.exsbefore compiling? - OR: change the manager used to rebar3?
- OR: something else?






















