purescript now requires at least GHC 9.2 to be built due to the use of
OverloadedRecordDot. Consequently `haskellPackages.purescript` is marked
as broken. After eliminating the test dependency on the broken
utf8-light in language-javascript_0_7_0_0 we can build and test
purescript in the 9.2.4 package set.
This is a dependency of cabal-install and builds by virtue of its
overrideScope. We also want to make sure it builds independently, so
that it doesn't get marked as broken at the very least.
GHC's cross build flavours disable the terminfo package, so it will
never be included if we are cross-compiling – setting it to null thus
breaks all builds depending on the package.
To fix this problem, we use the versioned attribute generated by
hackage2nix, just like we do for xhtml.
Closes#182785.
The update officially introduces support for GHC 9.2 and the previous
was starting to fail to apply (due to hackage revisions, so probably
easy to fix). Since the changelog from 0.29 to 0.30 looks pretty
harmless, let's try updating.
The xhtml library is only built as part of the GHC build process if GHC
is disabled. This means that no GHC cross compiler has xhtml bundled,
since haddock can't be built if GHC is a cross compiler (see relevant
notes in the GHC nix expressions). This means that all packages
depending on xhtml would currently fail to build when cross-compiled, as
haskellPackages would assume it'd be provided by GHC. This is fixed by
this commit.
pkgsStatic hits this case, so we test compilation of xhtml for these
package sets which will remind us to update the attribute name whenever
its version changes.
* Test the default pkgsStatic.haskellPackages set, as it should be
working properly now.
* Instead of GHC 8.10.7 which hasn't gotten some workarounds applied,
test GHC 9.2.2 additionally which should work as well as GHC 9.0.
* Test building an actual executable, cabal2nix.
* Simplify aggregate job definition.
* Make sure GHC 9.2 lens gets built on Hydra.
Patch sent to upstream via email, but the package hasn't been updated in
ten years.
Changes:
- IO.seek should now return the new offset so I used modifyMVar instead
of modifyMVar_
- mkFileHandle now requires a RawIO instance for Device. Since this was
not the case before and I don't think we need to actually support raw
IO, I used DeriveAnyClass.