-
Notifications
You must be signed in to change notification settings - Fork 92
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
remove version from ocaml buildId #1215
base: master
Are you sure you want to change the base?
Conversation
Removing package name only from the compiler package introduces inconsistency. Inconsistencies can make it hard to reason about. The current solution around using compiler variants isn't ideal, but seems more aligned with things work internally. I am, generally speaking, reluctant to make introduce inconsistencies to esy internals - because it's easy to forget such exception rules while debugging at hard problem in future. |
@ManasJayanth we can also remove the version from every kind of package, that would make it more consistent globally. The only advantage of having the version on the name is actually to make it easier to find a package. But then we're making a QOL <> consistency trade-off, which may be not desirable. My opinion is that this will not be a problem as the source of truth for buildId should always be BuildId.make, so you shouldn't never think on how the BuildId is created just that your path is "prefix/BuildId". But the current solution is not okay, as it will fail on a lot of environments and is a big regression from previous versions |
Current solution is low impact. Removing versions from all packages is a high impact change and open to a lot of possible breakages. |
Is there an instance where the current solution fails? |
@ManasJayanth yes, everytime there is not enough space for the path, like The solution of changing only ocaml version is also low impact, I would easily argue is even lower impact as it's going to be really simple to detect it as it's a core package and most users will not even notice, but the current one everytime you try to install esy you will notice. Also the current solution your install scripts need to change, which is also an impact for users |
Which install scripts? |
@ManasJayanth #1212 this one, and this default's are also going to fail as |
It doesn't have to match. I think there is a misunderstanding. |
* this should solve the problem of path limit with musl
@ManasJayanth how exactly it will work if the size is different? It will reduce the maximum size? If so, I misunderstood on how it works. I don't think is a great UX if you cannot setup a CI because esy will fail and telling people to install on /usr/local is also not a great UX. It's hard to see the current solution as lower impact, as you can clearly see it failing in a couple of places. While overall this solution is an upgrade from the current release, and the current solution is a downgrade, as this will make the path size consistent across the same user, doesn't matter which ocaml version you're using. If your concern is changing the internals, we could have a policy if this breaks we rollback to 0.6.7 and find a better solution? Also I'm seeing on the wild, the problem of the current approach: |
7c14f7f
to
56557c5
Compare
I'm not even sure removing version gives us enough bytes and make considerable improvements. Benfits outweigh the costs The CI failures mostly seen are because of @esy-nightly/ prefix in the package name. IMO, when it comes to worrying about conserving bytes in the path length we should worry more about PPX users - they tend to install binaries in much deeper paths. Few bytes from versions wont help there. Not saying we'd never get rid of versions from paths, but I dont think it's the solution for this problem. |
56557c5
to
5084c80
Compare
This is an alternative to the change made at #1201
Problem
Using big versions lead to a huge reduction in the available path size for
ocamlrun
who leads to fails during install in a couple of environmentsSolution
Instead of making the version configurable, removing the version from the BuildId path solves the same problem of using custom ocaml versions but also solves the problem of big path size to ocamlrun
Problems
I think this approach is sound as this is how the source version path also works, except that we're adding an exception for it when is the ocaml package
Review
To avoid noise I recommend to review each commit at time