Does anybody know who the Elixir Buildpack Team is?

Does Heroku manage this? The OTP 24.0 build is broken and these buildpacks are used in a lot of places, including CI pipelines. I think Gigalixir may even use them (not sure though).

Just wondering if anybody has an idea when this one might be fixed or if it’s getting any attention?

Weird - looks like the issue is with the detected architecture name - the workflow expects x86_64-unknown-linux-gnu:

But what’s getting created appears to be x86_64-pc-linux-gnu based on the workflow’s logs:

if test ! -f ""/build/otp-OTP-24.0/release/x86_64-pc-linux-gnu"/releases/24/installed_application_versions" ; then				\
 echo "erts-12.0" > ""/build/otp-OTP-24.0/release/x86_64-pc-linux-gnu"/releases/24/installed_application_versions" || exit 1;	\
else								\
 if test x = x`grep erts-12.0 ""/build/otp-OTP-24.0/release/x86_64-pc-linux-gnu"/releases/24/installed_application_versions"` ; then \
  echo erts-12.0 >> ""/build/otp-OTP-24.0/release/x86_64-pc-linux-gnu"/releases/24/installed_application_versions" || exit 1;	\
 fi ;								\
fi
make[2]: Leaving directory '/build/otp-OTP-24.0/erts'
make[1]: Leaving directory '/build/otp-OTP-24.0/erts'
/usr/bin/install -c -m 644 "/build/otp-OTP-24.0/OTP_VERSION" ""/build/otp-OTP-24.0/release/x86_64-pc-linux-gnu"/releases/24"

:thinking:

1 Like

This PR looks like the root cause:

Take particular note of the change to .gitignore.

1 Like

Thats some fine sleuthing!

That particular buildpack appears to be maintained by only one person: Contributors to elixir-buildpack/heroku-otp · GitHub

Although I think most people use GitHub - HashNuke/heroku-buildpack-elixir: Heroku Buildpack for Elixir with nitro boost

Gigalixir uses buildpacks as well, although I’m not sure what they currently point to in their docs

2 Likes

jesseshieh(who seems to be the primary maintainer these days of the HashNuke repo) is actually Jesse from Gigalixir.

3 Likes

Hey guys, thanks for bringing this up. Indeed, most people use the hashnuke buildpack and that’s the one gigalixir uses. Has anyone had problems with OTP 24 on gigalixir? If so, definitely let me know.

3 Likes

It looks like this is used by Codeship. They reference using Heroku buildpacks so I assumed it was all the same.

I just tried to update my app on Heroku to OTP 24 and v1.12.0 of Elixir.

-----> Building on the Heroku-18 stack
-----> Using buildpack: hashnuke/elixir
-----> Elixir app detected
-----> Will export the following config vars:
LEI_CACHE_CLEAN_ENABLE
LEI_GH_TOKEN
LEI_JOBS_PER_CORE_MAX
LEI_NUM_OF_REPOS
REDIS_URL
       * MIX_ENV=prod
-----> Checking Erlang and Elixir versions
       Will use the following versions:
       * Stack heroku-18
       * Erlang 24.0.1
       * Elixir v1.12.0 
-----> Fetching Erlang 24.0.1 from https://s3.amazonaws.com/heroku-buildpack-elixir/erlang/cedar-14/OTP-24.0.1.tar.gz
-----> Installing Erlang 24.0.1 (changed)
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
/tmp/codon/tmp/buildpacks/33c47927cb45211dfbbb80b66b1137336c08f55a/lib/erlang_funcs.sh: line 36: /tmp/tmp.CfN0V6CYfJ/erlang/Install: No such file or directory
-----> Fetching Elixir v1.12.0 for OTP 24 from https://repo.hex.pm/builds/elixir/v1.12.0-otp-24.zip
-----> Installing Elixir v1.12.0 (changed)
-----> Installing Hex
/tmp/build_d58dda45/.platform_tools/elixir/bin/elixir: 230: exec: erl: not found
-----> Installing rebar
/tmp/build_d58dda45/.platform_tools/elixir/bin/elixir: 230: exec: erl: not found
-----> Fetching app dependencies with mix
/tmp/build_d58dda45/.platform_tools/elixir/bin/elixir: 230: exec: erl: not found
 !     Push rejected, failed to compile Elixir app.
 !     Push failed

These get defined in a config file called elixir_buildpack.config that Heroku reads…

UPDATE: realized I was on heroku-18 (Ubuntu 18) - upgraded stack to heroku-20 - and it is deploy OTP 24.

Howdy! I’m the maintainer of the new fork, I built it mostly to replace the build system, the buildpack code is pretty much the same. Thanks for bringing it to my attention

I’ve just looked over the issue quickly and it looks like it should just be a matter of using the RELEASE_ROOT environment variable.

3 Likes

The new fork of the buildpack now works with 24.x :+1:

2 Likes

Thank you!