Cannot create release file

I am trying to create a release after upgrading to OTP 24 and getting this error

** (EXIT from #PID<0.93.0>) an exception was raised:
    ** (UndefinedFunctionError) function :ram_file.compress/1 is undefined or private
        (kernel 8.0) :ram_file.compress({:file_descriptor, :ram_file, #Port<0.8>})
        (mix 1.11.2) lib/mix/release.ex:812: Mix.Release.strip_beam/2
        (mix 1.11.2) lib/mix/release.ex:780: anonymous fn/5 in Mix.Release.copy_ebin/3
        (elixir 1.11.2) lib/enum.ex:2181: Enum."-reduce/3-lists^foldl/2-0-"/3
        (mix 1.11.2) lib/mix/release.ex:775: Mix.Release.copy_ebin/3
        (mix 1.11.2) lib/mix/tasks/release.ex:1345: Mix.Tasks.Release.copy/2
        (elixir 1.11.2) lib/task/supervised.ex:90: Task.Supervised.invoke_mfa/2
        (elixir 1.11.2) lib/task/supervised.ex:35: Task.Supervised.reply/5

Everything DID worked OK before

I tried to find a solution on the web but no success
any idea?

1 Like

How did you installed Erlang?

What is 1.24?

sorry I meant OTP 24

as described in the elixir doc
apt install esl-erlang
apt install elixir

Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [jit]

Interactive Elixir (1.11.2) - press Ctrl+C to exit (type h() ENTER for help)

Try rm -rf _build && mix release.

Only Elixir 1.11.4 is guaranteed to work with OTP 24. In this case, we were using a private API, which was removed on OTP 24, and we fixed it on more recent Elixir versions.

5 Likes

Did that. didnt work

But I got that on a regular install
How do I go back?

Upgrade Elixir to 1.11.4, and everything should work

1 Like

I dont know how
I am on ubuntu 20.04

Wow, how did you install Elixir and how update OTP? In your case i would read about GitHub - asdf-vm/asdf-elixir: Elixir plugin for asdf version manager and install through it. So, you have a lot to read, but I would recommend to do that.

I follow the instruction on the Elixir installation
The problem is that this package install OTP 24 and Elixir 1.11.2
I will try asdf to do that

1 Like

Elixir 1.11.4 is not installed with default installation method recalled below

currently otp 24 is installed but only elixir 1.11.2 and not 1.11.4 so that upon apt update the elixir setup is down.

no simple way to go back to otp 23 unless manually dpkg -i the deb package found on the erlang site.

so that with a simple apt update your setup is suddenly down…

Add Erlang Solutions repository: wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb && sudo dpkg -i erlang-solutions_2.0_all.deb
Run: sudo apt-get update
Install the Erlang/OTP platform and all of its applications: sudo apt-get install esl-erlang
Install Elixir: sudo apt-get install elixir

)

As of today (2021-05-17) it looks like newest Elixir version that the erlang-solutions repo has is 1.11.2 from 2020-11-03. It looks like there are 2 updates since that it’s missing:

  • 1.11.3 on 2021-01-04
  • 1.11.4 on 2021-03-16

What I’ve done for now on Ubuntu 20.04 is install the most recent version of Erlang 23 and pin it with apt-mark like this:

$ sudo apt-get install esl-erlang=1:23.3.1-1
$ sudo apt-mark hold esl-erlang

When a version of Elixir that supports OTP 24 is published I’ll remove the hold like this:

$ sudo apt-mark unhold esl-erlang

You can see the Ubuntu help page here: PinningHowto - Community Help Wiki

I’m not really sure why Erlang Solutions is publishing new Erlang release but not publishing new Elixir releases. The Debian package indicates that any version of Erlang >= 1:23.1 should work but that doesn’t seem to be correct. The dependencies should probably be updated to require a version of Erlang < 24 if indeed Elixir 1.11.2 does not support Erlang 24.

Does anyone know if Erlang Solutions is going to continue publishing Debian packages for Ubuntu for installing Elixir?

2 Likes

If you ping them on Twitter, they usually release new ones quickly.

That explain it.
Thanks

Hi,

I’m working on building and publishing elixir 1.11.4 with erlang 24.0 packages right now. Where I’m stuck is that the Elixir test suite itself fails and this is a required step in our release process. The vast majority look spurious to me, in that the erlang compiler is emitting slightly different output relative to what the elixir tests match against. However some of the tests imply that its important that Elixir can pass runtime errors from erlang/otp.

Thanks for the update. Really appreciate it

see Erlang Solutions packages for Ubuntu 20.04 - #4 by dimitarvp for updates. amd64 packages are pushed, arm64 to follow.