-
Notifications
You must be signed in to change notification settings - Fork 30
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
What's the user experience for a matrix build where a ghc version is supported by one platform and not another? As long as the docs and error messages are clear (and clear about what to do to fix) this seems like an ok solution. Is there anyway to support the same version list across max/linux/windows? Even it it means supporting fewer GHCs, I think that would be a superior user experience.
@jared-w if you've got a free moment, would appreciate your thoughts on this as well. |
@tclem yeah, I have a few thoughts, thanks for the mention. There's a few subtle things happening here that make it to where I am unconvinced the PR needs to take the approach it currently does.
In summary:
|
And as a general note, while I don't myself use Windows on my personal machines, I see it as important to have it on equal footing whenever possible. Even if it were necessary to change a lot of the internal reworkings of how we invoke chocolatey (or install GHC/cabal on windows in general) in order to accommodate other GHC versions and keep the version specification the same, I would be much more willing to do that; particularly since the most core API of Having a visible breaking change to how Windows users specify GHC versions solely due to github-action implementation implementation details is truly the worst of both worlds. Luckily, it doesn't seem to be necessary. This is not to diminish Thomas's work; chasing tooling breakages across several layers of abstraction and coming up with a working solution is no small feat. |
Hey @jared-w thanks for the feedback! I've laid out what I think our options are below, but I'm open to other ideas! I would love to hear your thoughts!
In my testing, this did not occur.
The first step fails while the second works
This action appears to have relied on the functionality. Hence we had to add the change to We fail the step if we detect any usage of The way I see it, we have 4 options:
4 is probably the best solution, but is out of our hands and likely would not be available for a while. |
Hi folks, just my 2 cents..
Correct, using a specific version resolves to exactly that version. There is an open feature request for this but it's not available yet chocolatey/choco#800
I think this is the right thing to do. As @jared-w said the point releases are just because chocolatey won't let me revise the packages. Now the point releases will never contain functionality changes wrt to the compiler itself. They are always just packaging related. as such there will never be a functional difference, only a difference in what the installer does, since a change in functionality will be a bump in minor version from upstream not the revision number. For instance the 8.10.2.1 revision fixes the hardcoded linker issue with the upstream binary, without touching the package they provide. It just post-processes the settings file after install. As such I think it makes more sense to ignore the revision number and just map them internally to the latest one. my intention with the revisions are that users shouldn't care about which number it is. This will allow you to treat Windows the same as Linux etc w.r.t version numbers. |
Thank you everyone for jumping in here on such short notice. Based on the feedback, I believe our goals should be:
We can accomplish that by:
I'll go ahead and update this pr and get this version released. Since this is a minor version with no breaking changes, if we decide on a solution that we feel is better in the future (that may take longer to implement), we can major version the action and spend the time to do that. However, I would like to get this fixed asap. Thanks again folks! |
Disabling command execution is a good way to accomplish that, nice; I hadn't thought of it initially. We should, however, eventually map all patch releases on chocolatey internally so that we use the "most correct" version of the installer for any given GHC version. But that can be in a follow up. |
Do I interpret these changes right: I need to do - uses: actions/[email protected]
with:
ghc-version: '8.10.2.2' # 8.10.2 isn't automatically remapped to 8.10.2.2?
cabal-version: '3.2.0.0' |
@phadej You should just use the existing versions - uses: actions/[email protected]
with:
ghc-version: '8.10.2 |
Unless 8.10.2 is internally mapped to 8.10.2.1 or 8.10.2.2 he shouldn't though... as 8.10.2 is broken as released by GHC HQ. |
It will be internally mapped from In the meantime, versions like |
So, this is a fairly lengthy pr to update GHC versions on windows.
Context
To begin with, we install GHC differently depending on OS. For windows, we use the tool Choco. Which adds GHC to path using the
add-path
command, which was just recently disabled. This causes the workflow run to fail.So, working with GhcChoco, we made some new versions that no longer use the disabled command. However, these only exist on choco, not the other platforms. Previously, the version list of GHC for all os's was the same. So thats our first major change:
However, when we did that, we ran into some other issues which we have fixed:
add-path
command did, so when we check that we have added to the path mid step, that failed. We now manually add it to the path as well using thecore.addPath
command. This is best effort (we assume the path we are adding is correct, if the generated path is wrong we may encounter issues, but its the simplest way to solve this issue)Resolves #44