Mix error corresponding to erlang-20rc.1 version

Hello!

This

mix help

gives me a strange error on Arch:x86_64 with Elixir 1.4.2:

** (Version.InvalidRequirementError) ~> 1.0
    (elixir) lib/version.ex:159: Version.match?/3
    (mix) lib/mix/local.ex:100: Mix.Local.check_elixir_version_in_ebin/1
    (elixir) lib/enum.ex:645: Enum."-each/2-lists^foreach/1-0-"/2
    (elixir) lib/enum.ex:645: Enum.each/2
    (mix) lib/mix/local.ex:50: Mix.Local.append_archives/0
    (mix) lib/mix/cli.ex:8: Mix.CLI.main/1

Tried to reinstall elixir and erlang packages, but have no luck.
What I’m doing wrong?

1 Like

That looks like there is an issue in your mix.exs file, what is its contents?

This error is not depends on mix.exs.

I have it in any of my elixir projects, and even then I make a new one:

mix new test

** (Version.InvalidRequirementError) ~> 1.0
    (elixir) lib/version.ex:159: Version.match?/3
    (mix) lib/mix/local.ex:100: Mix.Local.check_elixir_version_in_ebin/1
    (elixir) lib/enum.ex:645: Enum."-each/2-lists^foreach/1-0-"/2
    (elixir) lib/enum.ex:645: Enum.each/2
    (mix) lib/mix/local.ex:50: Mix.Local.append_archives/0
    (mix) lib/mix/cli.ex:8: Mix.CLI.main/1

What is your erlang version?

If you’re on OTP 20 release candidate, you’ll probably need elixir master - there’s an incompatibility with precompiled modules that contain regular expressions.

I’m currently using elixir-1.4.2-1 and erlang-nox-20.0rc-1 Arch packages.
So… do I have to install elixir 1.5-dev?

I’m not 100% sure. There’s no official support for OTP 20 in elixir yet. You’re exploring uncharted waters.

You where right. It’s because of erlang 20.0rc-1 version.
I downgraded erlang-nox package with AUR downgrade utility to erlang-nox-19.3-3 version and it works as expected.

1 Like

I also noted that pacman has erlang 20rc version. Thanks for the hint about downgrade.

How did you find your erlang version?
How can I downgrade to erlang-nox-19.3-3?

Or how can I get the master branch of Elixir? I’m on arch linux.

@nezzart like @flomop told, use the AUR downgrade package.
I’m wondering if packaging erlang 20.0rc should be considered a bug?

How did I find my erlang version?

How did I find my erlang version?

yaourt -S downgrade
then
downgrade erlang

Why is a non-release version of an in-development erlang being packaged in a release repository?!

Who knows. I added a bug report, see FS#54062, https://bugs.archlinux.org/task/54062?string=erlang&project=5&search_name=&type[0]=&sev[0]=&pri[0]=&due[0]=&reported[0]=&cat[0]=&status[0]=open&percent[0]=&opened=&dev=&closed=&duedatefrom=&duedateto=&changedfrom=&changedto=&openedfrom=&openedto=&closedfrom=&closedto=

Also, I noticed that against erlang-nox-19.3.3-x86_64 (or erlang-19.3.3-x86_64) you should use elixir-1.4.2-1-any package. If I’m using elixir 1.4.2-2 with erlang-19.3.3, I’m getting error while launching iex (with no problem to launch erl).

So, do:

yaourt -S downgrade
downgrade erlang

or

downgrade erlang-nox

select version erlang(-nox)-19.3.3-x86_64.

downgrade elixir

select version elixir-1.4.2-1-any.

Elixir v1.4.4 has been released with support for Erlang 20.

4 Likes

And, a few hours ago they commited elixir-1.4.4-1 to ARCH community repo. So everything should work as expected from now on.

Actually, the problem persists and is in parsing versions:

Version.Parser.parse_requirement("~> 1.0")
:error

On Erlang OTP 20.0.1 and Elixir 1.5.0-dev.