Cannot install erlang 25 on macOS 12.4 (M1 architecture)

I am following a summary of instructions to get elixir installed on M1 via the asdf VM on this stackoverflow post. I have tried a couple of different things related to Kerl environment variables to get the following to work

~ » asdf install erlang latest                                                                                                                        11:18:15
asdf_25.0.2 is not a kerl-managed Erlang/OTP installation
The asdf_25.0.2 build has been deleted
Extracting source code
Building Erlang/OTP 25.0.2 (asdf_25.0.2), please wait...
Build failed.
gmake[5]: Leaving directory '/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/lib/megaco/src/flex'
gmake[4]: *** [/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/make/run_make.mk:35: opt] Error 2
gmake[4]: Leaving directory '/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/lib/megaco/src/flex'
gmake[3]: *** [/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/make/otp_subdir.mk:29: opt] Error 2
gmake[3]: Leaving directory '/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/lib/megaco/src'
gmake[2]: *** [/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/make/otp_subdir.mk:29: opt] Error 2
gmake[2]: Leaving directory '/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/lib/megaco'
gmake[1]: *** [/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/make/otp_subdir.mk:29: opt] Error 2
gmake[1]: Leaving directory '/Users/Joey/.asdf/plugins/erlang/kerl-home/builds/asdf_25.0.2/otp_src_25.0.2/lib'
gmake: *** [Makefile:511: libs] Error 2

The best guide I found for installing Erlang and Elixir on an M1 Mac with ASDF is this one by Yamazaki Susumu. I recommend it especially because it makes use of all CPU cores.

The guide is from December 2021, but it worked for me in February/March and I’ve been able to keep updating Erlang and Elixir within ASDF with all cores still firing, including the latest Erlang 25 release that gives a real speed boost to M1s with its JIT support.

This works for me:

$ KERL_CONFIGURE_OPTIONS="--disable-debug --disable-silent-rules --without-javac --enable-shared-zlib --enable-dynamic-ssl-lib --enable-threads --enable-kernel-poll --enable-wx --enable-webview --enable-darwin-64bit --enable-gettimeofday-as-os-system-time --with-ssl=/opt/homebrew/opt/openssl@3" asdf install erlang 25.0.2

❯ sysctl -a | grep machdep.cpu
machdep.cpu.cores_per_package: 10
machdep.cpu.core_count: 10
machdep.cpu.logical_per_package: 10
machdep.cpu.thread_count: 10
machdep.cpu.brand_string: Apple M1 Max

The options came from a tweet of Jose, one I cannot seem to find quickly

1 Like

I wrote that Stack Overflow answer, and I can still build OTP 25 on an M1 Mac using those instructions.

There is not much info in the logs you provided. Is there not a more detailed log that tells you more information about whats going wrong?

My guess is you skipped a step listed in the make sure to read the "Before asdf install" point.

Actually I’m having problems myself recently building with asdf-erlang with KERL_BUILD_DOCS set, which I wrote about here. However, it works when I use kerl directly, not asdf. I wonder if your error is related? There could be an asdf bug.

Unfortunately building Erlang is a complex process and there are readmes to be read and choices to be made. The foolproof “just do this” ways are good until they break, then you’re back to reading readmes and setting environment variables anyway.

1 Like

I did my best to follow all the instructions there, and have double checked that I did have all those packages installed before running asdf install. I still get the same results. I will try the above linked article on dev.to and see if I have any luck.

About half my team is on M1 vs Intel Macs. I have never had a problem running Elixir/Erlang, but others have.

The problems range from asdf not installing, to Elixir compilation being very slow.

As someone else mentioned, this is what seemed to fix it for everyone:

$ echo $KERL_CONFIGURE_OPTIONS
--disable-debug --disable-silent-rules --enable-dynamic-ssl-lib --enable-hipe --enable-shared-zlib --enable-smp-support --enable-threads --enable-wx --with-ssl=/opt/homebrew/opt/openssl@1.1 --without-javac --enable-darwin-64bit --enable-kernel-poll --with-dynamic-trace=dtrace

Oh, I just remembered, there is an issue with exwidgets

I just setup erlang 25.0.3 and elixir 1.13.4 on my m1 mbp using asdf package manager without any issue. Observer works flawlessly.
There was an issue with wxwidgets 3.1.x which is now resolved in latest version 3.2.x
I followed following steps

brew install kerl
brew install wxwidgets

.kerlrc in ~

KERL_CONFIGURE_OPTIONS="--disable-debug --without-javac --enable-dynamic-ssl-lib --enable-shared-zlib --enable-hipe --enable-smp-support --enable-threads --enable-kernel-poll --with-wx"
KERL_BUILD_DOCS=yes

installed eralng and elixir

asdf install erlang 25.0.3
asdf global erlang 25.0.3

asdf install elixir 1.13.4-otp-25
asdf global elixir  1.13.4-otp-25
4 Likes