-
-
Notifications
You must be signed in to change notification settings - Fork 378
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
Pin versions of libraries used by plugins #2894
Comments
Can't you just use |
If there was a freeze file checked into this repo, that would effectively achieve the same result. Just to clarify - by "you" do you mean "you, Mitchell", or "one"? |
It sounds like your underlying problem is a variant of #411 ? |
FWIW I solve this problem at work by building HLS from source and adding |
I think pinning precise versions of underlying tools is a good idea. It may make it harder to get build plans for all GHCs, though... |
@michaelpj Thanks, that's what I started to do, but then I got a little bit stuck and scared due to the requirement to use a different version of HLS for different versions of GHC, all tied together with the I'm happy to build everything from source, too, but I could use a bit of guidance :) I see that after some usage of
Were I to ditch Thanks. |
I think |
I mean you Mitchell. We cannot use a single freeze file since we want to support a range of We do maintain a selection of |
I admit I don't fully grasp what is expensive or hard to maintain about deterministic builds - but I take your word for it. FWIW, in case this changes anything, I am only imagining a frozen set of dependencies for the released version(s) of HLS. That way, everyone using HLS version 1.7.0.0, for example, need look no further than that version string to know whether their software has the same set of transitive dependencies as another user's, no matter if they built from source, or acquired hls from ghcup, or nix, or however else one might go about installing it. But if that doesn't work, then (just reiterating my previous comment) I think it would be valuable to have some documentation somewhere about how intrepid users might go about getting a working HLS "suite". Because as I mentioned, it's simple enough to to just |
We already produce If this is something that would be useful to you, by all means send a PR! This is where CI calls haskell-language-server/.github/actions/setup-build/action.yml Lines 122 to 129 in 9195eb6
|
I'm currently trying to debug a plugin regression, and this would have been very useful to have! |
For most of the plugins that depend on external tools, you can now see which version using |
Problem: it is unclear which versions of plugins (the Haskell ones, anyway - I'm not sure if any plugins are not bundled Haskell libraries, but are instead communicated with via subprocess) my HLS has installed.
Describe the solution you'd like
Plugins pin their dependency on the underlying tool (e.g.
hls-ormolu-plugin-1.0.2.1
could depend onormolu == 0.4.0.0
rather thanormolu >= 0.1.2 && < 0.5
)Additional context
This (I think) would make it easier for different people on a team to end up installing a version of HLS that has the same underlying formatter (and other plugins).
Currently, someone I'm collaborating with has managed to install
haskell-language-server-1.7.0.0
with a version oformolu
less than the latest0.4.0.0
, which is what myhaskell-language-server-1.7.0.0
seems to have picked. So, we're getting some formatting diffs when we trade pull requests. 🥲The text was updated successfully, but these errors were encountered: