The thing is that my estimate above (1 hour per package per GHC major release) is foremost an administrative cost, which is to be paid even if there was no breakage at all. Here is a typical workflow:
git clone
a package.- Build it with a new GHC, figure out any
allow-newer
andsource-repository-package
necessary. - Test with a new GHC, especially
doctest
. Fix any discrepancies, hopefully minor. - Benchmark with a new GHC, compare against old GHC.
- Fix any new GHC warnings.
- Fix any
cabal check
warnings. - Bump dependency versions.
- Update changelog.
- Regenerate CI.
- Push and wait for CI to complete. Review results.
- Raise pull request, request reviews.
- Next,
cabal get
the released version of the package. - Bump dependencies, compile, test and benchmark it.
- Decide whether a Hackage revision is enough or do we need to go for a new release.
- I’ll spare you of the release checklist.
None of the steps are particularly difficult or time consuming on their own. But it’s a lot of small actions and multiple context switches.