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.
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.
Thanks to Ryan Scott's investigation it became clear this crash can also
happen on Linux and thus seems to be a general issue in GHC 9.0.2 (only,
luckily). We'll disable the test suite everywhere for now, but the
prospect of this crash / incorrect runtime result is a bit ominous.
Refer to the [ghc-issue] for details.
[ghc-issue]: https://gitlab.haskell.org/ghc/ghc/-/issues/21141
I've tried to be conservative and only clean up things that broke eval
which in most cases had to do with uses of versioned packages that have
become the default in Stackage Nightly now. There's probably still
potential for cleaning up some additional workarounds and likely there
are still a lot of new workarounds to be found once we know about the
build failures.
Also note that clean eval only means that nix-env doesn't fail.
Notes:
* HLS now lacks the stylish-haskell and britanny plugins by default,
since they don't support GHC 9.0.2. We'll need to re-enable them
for GHC < 9.0.2
* A lot of uses of hspec 2.9.* can probably be removed, as 2.8.* which
is used in Stackage Nightly is new enough for most packages.
0.14.0.0 introduces support for GHC 9.0.1, but also drops support for
all GHCs below, so we can't upgrade to that version.
For the 9.0.1 hls brittany support is now possible in theory. In
practice however, it is a massive pain to get to work, as britanny
depends on the latest and greatest version of multiple packages that are
pinned by Stackage LTS.
This means we only have to update the llvmPackages attribute in one
place now and should prevent situations like with 8.6.5 where different
versions would be used in the package set compared to the compiler
build.
Drop comments in the configuration-ghc-X.Y.x.nix files as well, since
LLVM version isn't tied to the compiler minor version at
all (e. g. 8.10.2 and 8.10.7 have different support ranges).
2.3.0 requires GHC 9.0.*, so we'll have to downgrade it for
now. Additionally we'll take this opportunity to fix
haskell.packages.ghc901.weeder and its dependencies.
* haskell.packages.ghc884.ghc-api-compat needed us to re-add the 8.6
version of the package.
* haskell.packages.ghc901.ghc-api-compat now points to the newly
released 9.0.1 version of the package.
* haskell.packages.ghc8107.ghc-api-compat now correctly points to
ghc-api-compat 8.10.7.
GHC 9.2.1 is still unsupported (which is to be expected, with it
being a release candidate).
To make sure everything stays working we'll build ghc-api-compat as part
of versionedCompilerJobs.
Test suite doesn't build with GHC 9.0.1 and since upstream is
currently not invested in fixing it, we (temporarily) disable it.
Upside: we can build hoogle again.
https://github.com/Soostone/retry/issues/71