HashNuke / heroku-buildpack-elixir

Heroku Buildpack for Elixir with nitro boost
MIT License
810 stars 304 forks source link

libtinfo.so.5 issue with using buildpack #204

Open callumcieciala opened 3 years ago

callumcieciala commented 3 years ago

Hey,

Sorry if this is the wrong place.

All signs point to this buildpack for deploying elixir to cloudfoundry (KubecCF).

When using the buildpack I get staging failed:

[STG/0] OUT -----> Checking Erlang and Elixir versions [STG/0] OUT cat: /home/vcap/app: Is a directory [STG/0] OUT cat: /home/vcap/bin: Is a directory [STG/0] OUT Will use the following versions: [STG/0] OUT Stack [STG/0] OUT Erlang 21.2.5 [STG/0] OUT * Elixir v1.10.2 [STG/0] OUT -----> Stack changed, will rebuild [STG/0] OUT -----> Cleaning all cache to force rebuilds [STG/0] OUT -----> Fetching Erlang 21.2.5 from https://s3.amazonaws.com/heroku-buildpack-elixir/erlang/cedar-14/OTP-21.2.5.tar.gz [STG/0] OUT -----> Installing Erlang 21.2.5 (changed) [STG/0] OUT [STG/0] OUT -----> Fetching Elixir v1.10.2 for OTP 21 from https://repo.hex.pm/builds/elixir/v1.10.2-otp-21.zip [STG/0] OUT -----> Installing Elixir v1.10.2 (changed) [STG/0] OUT -----> Installing Hex [STG/0] OUT /app/.platform_tools/erlang/erts-10.2.3/bin/beam.smp: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory [STG/0] OUT 2021/06/24 15:27:39 compile script failed exit status 127 [STG/0] OUT 2021/06/24 15:27:39 failed to create droplet: BuildpackCompileFailed: exit status 223 - internal error: failed to compile droplet: exit status 127

Has anyone seen anything similar? or has any ideas?, this issue is driving me insane.

Thanks!

callumcieciala commented 3 years ago

I tried a branch from April just as a what if and I got;

-----> Checking Erlang and Elixir versions Will use the following versions:

NduatiK commented 3 years ago

@callumcieciala, did you figure this out?

callumcieciala commented 3 years ago

@NduatiK nope, I scoured the internet and after chatting to a few people in elixir + cloudfoundry slack channels. Nobody had any ideas with this specific issue, I've moved on to alternative solutions.

NduatiK commented 3 years ago

Thanks I've been trying to deploy elixir on Digital Ocean using Dokku but no luck either. I'll keep at it and give up if a few hours go by.

ArthurFleischman commented 2 years ago

i still have this problem in sep 2021, may be some internals or local .so files missing at heroku's servers.

dustinfarris commented 2 years ago

Also seeing this on a recent production deploy on Gigalixir.

NduatiK commented 2 years ago

I think this is related to the Ubuntu version. I had success with Ubuntu 18. I can't recall how I set that for Heroku or Gigalixir. Probably an .env file.

I check it out and report back


Edit:

On Heroku, I added a .env file to my project root that specified my target stack.

# .env
STACK="heroku-18"
joshcrews commented 2 years ago

I expect Ubuntu version is the issue. I just tried upgrading heroku to heroku-22 stack and got this

remote: -----> Checking Erlang and Elixir versions
remote:        Will use the following versions:
remote:        * Stack heroku-22
remote:        * Erlang 22.1.8
remote:        * Elixir v1.13.1 
remote: -----> Stack changed, will rebuild
remote: -----> Fetching Erlang 22.1.8 from https://s3.amazonaws.com/heroku-buildpack-elixir/erlang/cedar-14/OTP-22.1.8.tar.gz
remote: -----> Installing Erlang 22.1.8 (changed)
remote: 
remote: -----> Fetching Elixir v1.13.1 for OTP 22 from https://repo.hex.pm/builds/elixir/v1.13.1-otp-22.zip
remote: -----> Installing Elixir v1.13.1 (changed)
remote: -----> Installing Hex
remote: /app/.platform_tools/erlang/erts-10.5.6/bin/beam.smp: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
remote:  !     Push rejected, failed to compile Elixir app.

I don't know the solution

kasvith commented 2 years ago

Having the same issue with buildpack

kasvith commented 2 years ago

I used container stack with heroku using a Dockerfile instead

pbjTEG commented 2 years ago

I inherited an Erlang app (I don't speak Erlang) and solved this problem by updating elixir_buildpack.config:

erlang_version=24.2 elixir_version=1.14.0

and mix.exs:

elixir: "~> 1.14.0",

Luckily, the app still builds. Wish me luck on the push from staging to live.

martasd commented 1 year ago

@pbjTEG How did you manage to make this work? When I try this Erlang version, I get

Sorry, Erlang 24.2 isn't supported yet. For a list of supported versions, please see https://github.com/HashNuke/heroku-buildpack-elixir#version-support
martasd commented 1 year ago

As @joshcrews, this relates to the Heroku stack version. When I downgrade to heroku-20 stack, the compilation issue does not occur. Thus the workaround for now is to use the previous stack:

$ heroku apps:stacks:set heroku-20
pbjTEG commented 1 year ago

@pbjTEG How did you manage to make this work? When I try this Erlang version, I get

Sorry, Erlang 24.2 isn't supported yet. For a list of supported versions, please see https://github.com/HashNuke/heroku-buildpack-elixir#version-support

I probably should have mentioned that I'm using an Elixir buildpack, https://github.com/HashNuke/heroku-buildpack-elixir

You can get more information about it here: https://elements.heroku.com/buildpacks/heroku/heroku-buildpack-erlang

ricardohsd commented 1 year ago

Setting the heroku stack:set heroku-20 worked for me

robdimsdale commented 1 year ago

I think this is happening because elixir is looking for libtinfo5, which is present on the cflinuxfs3/Bionic/18.04 stack (i.e. here). But, on the cflinuxfs4/Jammy/22.04 stack, we see that this library was upgraded to libtinfo6 (here).

My assumption is that this is because the buildpack provides pre-built binaries, which are pre-compiled for cflinuxfs3/Bionic/18.04, and hence aren't compatible with cflinuxfs4/Jammy/22.04.

I think this buildpack needs to update its dependencies to work with cflinuxfs4.

The other difference that might be relevant is that cflinuxfs4 does not provide the dev package, but I don't think that's the issue based on the error message above

robdimsdale commented 1 year ago

Also I assume that the heroku-20 stack is based on Ubuntu 20.04/Focal, which has a lot of similar libraries as Bionic/18.04, which would explain why using that stack works.