Comments (6)
Thanks @hez. I like that suggestion.
Right now, according to this we basically check for ${cache_path}/elixir-${elixir_version}.zip
We could change this to ${cache_path}/elixir-${elixir_version}-otp-${erlang_version}.zip
The file we download usually looks something like this anyway:
-----> Fetching Elixir v1.10.3 for OTP 22 from https://repo.hex.pm/builds/elixir/v1.10.3-otp-22.zip
The code that fetches it even uses the otp_version
and then throws it away when writing the elixir_download_file
. I wonder if perhaps the otp_version is all we need rather than the entire erlang_version
.
from heroku-buildpack-elixir.
Thanks for the bug report @jbrowning. I guess we could try and implement something to check the compatibility matrix described here
https://hexdocs.pm/elixir/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp
Perhaps in this function which checks the erlang version.
https://github.com/HashNuke/heroku-buildpack-elixir/blob/master/lib/canonical_version.sh#L20
Any help implementing this would be greatly appreciated!
from heroku-buildpack-elixir.
We had this happen and had to turn off caching completely. We could turn it on then turn it off on lang update but that seems like a lot of work.
from heroku-buildpack-elixir.
@jesseshieh I would suggest tagging the cache with the otp + elixir ver and invalidating it if it changes at all. That would be easiest and cover all bases.
from heroku-buildpack-elixir.
@jesseshieh Yeah elixir_version
+ otp_version
like the original filename is all you need to retain in order to fix this. Minor Erlang version changes will still download the same OTP version.
from heroku-buildpack-elixir.
I just submitted a pull request with a potential fix. I tested it briefly and it seems to work. If you guys want to try it out, change your buildpack to https://github.com/jesseshieh/heroku-buildpack-elixir#js/elixir-otp-version-cache
and see if everything works okay.
from heroku-buildpack-elixir.
Related Issues (20)
- Is there anyway to add an aditional binary that can be used at compile time. HOT 3
- Support the new Cloud Native Buildpack (CNB) format.
- Doesn't work with Heroku-20 Stack HOT 8
- Crypto.app not found HOT 1
- Too many levels of symbolic links HOT 10
- Error building with Heroku-20 stack HOT 5
- Update Readme With Updated Default Versions
- Buildpack incompatible with building in /app HOT 13
- Build isn't marked as failing if errors occur
- Use OTP builds from hexpm/bob HOT 1
- Cache isn't cleared on stack change which results in shared library errors HOT 3
- Can't deploy on Heroku-20, Erlang 23, Elixir 1.12 HOT 1
- libtinfo.so.5 issue with using buildpack HOT 17
- gzip: stdin: not in gzip format HOT 2
- Can't deploy on Heroku-20, Erlang 21.2.5, Elixir 1.12.2 HOT 2
- Support for Stack Heroku-22 HOT 1
- Issues upgrading to Heroku 22 HOT 4
- mix releases should be required (or suggested) for Elixir 1.15
- Deployment of poncho apps
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from heroku-buildpack-elixir.