matchwood / ghcjs-stack-dist

24 stars 7 forks source link

Updating to LTS 9.21 #8

Closed Tehnix closed 6 years ago

Tehnix commented 6 years ago

I was wondering what work is involved in updating this to something like LTS 9.21, which has aeson-1.1.2.0?

matchwood commented 6 years ago

The basic work flow is to try building ghcjs with lts 9.21 and see if it works! In practice this usually entails finding out if any of the ghcjs boot packages have different versions in 9.21, and then creating a branch of ghcjs-boot that uses those versions (eg https://github.com/matchwood/ghcjs-boot/tree/lts-8.11). Then you have to work out if any of the patches in ghcjs-boot need to be updated, or if any new patches need to be added. Finally you create a source distribution.

Lts-9.21 shouldn't be too difficult (fingers crossed). The main problem is simply the amount of processor time it takes to compile and test ghcjs but I would be happy to give it a go if you'd like to help out?

Tehnix commented 6 years ago

I would love to! I might be getting ahead of myself, but since work on GHCJS for GHC 8.2 seems to be active, do you think it would make more sense to put the focus on making a dist for that instead? Or would that entail a lot more work, than just upgrading the resolver packages for the current GHCJS version, to lts-9.21?

matchwood commented 6 years ago

Great! GHCJS for 8.2 should, in principle, be easier to make a dist for, because the boot package strategy changed. However I did try doing this a few weeks ago and failed at the point of actually getting stack to use the dist - I think some of the changes in how ghcjs is built didn't mesh well with stack, but I'm not 100% sure. I was planning to try again with new hardware in the next month or so (I just don't have enough RAM on my current development machine).

In any case, I think lts 9.21 is a good snapshot to support, and it is worth doing both. Perhaps we should start with 9.21 and get something working for that, and then tackle GHCJS 8.2.

Tehnix commented 6 years ago

Hmm, what is your usual strategy for compiling GHCJS? Just clone down ghcjs, switch to the ghc-8.0 branch and stack build?

matchwood commented 6 years ago

Pretty much! I made some changes to ghcjs when I was putting things together for the last dist https://github.com/matchwood/ghcjs/commits/lts-8.11 so if you take a look at those commits you should be able to get an idea of what is required. But it is probably worth starting from scratch with the latest ghc-8.0 branch, and then using my commits for lts-8.11 as a guide.

matchwood commented 6 years ago

Oh, and remember that the part that will really need fixing is ghcjs-boot. https://github.com/matchwood/ghcjs-boot/commits/lts-8.11 . That is where we'll have to write patches for boot packages if necessary.

matchwood commented 6 years ago

There is some info in the readme about the workflow for that (basically clone the subrepos, update them, and then git diff any changes back into the patches directory). Also if you are building with stack there is this https://github.com/matchwood/ghcjs/blob/lts-8.11/STACK.markdown

matchwood commented 6 years ago

Ok, I made a branch for ghcjs for us to work on lts-9.21 https://github.com/matchwood/ghcjs/tree/lts-9.21

matchwood commented 6 years ago

I'll make a similar one for ghcjs-boot, and then I'll start working on hacking things together a bit.

matchwood commented 6 years ago

Ok, here is the ghcjs-boot branch https://github.com/matchwood/ghcjs-boot/tree/lts-9.21

matchwood commented 6 years ago

I've updated the easiest packages to match stack versions, but I haven't done the following:

because they aren't handled in the same way (they are more complicated).

matchwood commented 6 years ago

Ok, I'm at the point where I need to start modifying patches for the deps I updated. We will need to coordinate our efforts from this point on, as there is no point in both of us wrestling with the same patches! If you can let me know a way of contacting you aside from this issue we can discuss and break up the remaining work...

Tehnix commented 6 years ago

@matchwood quick work :D I'll get GHCJS running with your branches later today, after work.

W.r.t. coordinating, do you mind slack, or prefer IRC? I would suggest the Haskell-miso slack chat (auto invite via https://haskell-miso-slack.herokuapp.com), else we could do it in #GHCJS on Freenode. Or something else, if you have any preferences.

I could imagine others would be interested in the progress/contributing, so I'd prefer to keep it somewhere open.

matchwood commented 6 years ago

Slack is fine, I've created a channel on haskell-miso for this purpose and invited you there.

matchwood commented 6 years ago

A possibly working candidate dist is now in the develop branch https://github.com/matchwood/ghcjs-stack-dist/tree/develop.

matchwood commented 6 years ago

Working candidate released to master.