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
Currently everything seems like the derivation's outPath has been
corrupted somehow, causing reverse dependencies to fail. Since we can't
purge store paths from Hydra and the binary cache easily at the moment,
we just make the derivation hash change by inserting an unsubstantial
change, causing Hydra to build this package and all reverse dependencies
again — hopefully successfully this time around.
A few libraries published by https://github.com/typeclasses/ have the issue
that they have a test suite with its Main module in hegehog.hs. On darwin
GHC can't distinguish between Hedgehog.hs and hedgehog.hs due to the case
insensitive file system and will raise an issue about this.
Interestingly SDL-image exhibits both the problems of SDL-mixer and SDL-ttf
have. How the respective fixes we apply here as well work is explained in
1a68ebf98573291fc4a8d8e7b35ea2e74a0d6665 and
2a8105fc58644307007f326de25b357d216d3ad7.
SDL-mixer's configure script makes some darwin specific assumptions about
the layout of the SDL libraries which don't hold up with the way they are
packaged in nixpkgs. Since the way we are doing this on other platforms
works with the configure script and doesn't significantly differ from the
situation on darwin, we can just replace a string in a string comparison
to ensure the non-darwin code path is taken.
SDL_main.h which is included from SDL_ttf.h contains a #define which redefines
main to SDL_main. This has to do with the way SDL binaries are linked and
executed on darwin which is explained here [1]. However this is bad news for
hsc2hs intermediate C sources which in this case only to gather version
information from the headers and not to run a full SDL application.
Thus compilation would fail due to this issue which we can avoid by redefining
main to main again after including the header.
[1]: http://www.ariis.it/link/repos/sdl-bindings/hssdl-image/MACOSX
The tests use pgrep which is not packaged for darwin yet as we are
lacking some private / non open source headers for it to compile.
May be resolvable in the future.
A script used at test time in HTF assumes that you have GNU coreutils
installed in a manner where all executables are prefixed with a `g`.
Since we use GNU coreutils in the stdenv anyways, this is not necessary
and needs to be patched out.