This is the part of the autoconf/make logic that may be relevant to us
which wasn't replicated from Libdw. For completeness' sake, do this
here. The extra logic in distrib/configure.ac.in is not relevant to us
since we don't build bindists for make built GHCs.
People seem to frequently expect pkgsCross.*.haskell.compiler.* /
pkgsStatic.haskell.compiler.* to contain cross compilers and are greeted
with a failing assert instead. We can help them out a little bit, by
hinting the may have meant to use buildPackages.
CI needs ugly workarounds to catch a `throw` on unsupported platforms.
If aliases are disabled, as is the case in CI, we simply return `null`
for this leaf package. This will ignore it for CI purposes, while still
giving a proper error message for end users.
Because we're building things separately, we don't need the fancy
lib/... namespacing tricks that GCC normally does to squeeze itself in
the FHS. We can just use the normal autotools libdir and include dir,
and the nixpkgs infra will sort everything out.
Where possible I submitted patches to the mailing list, and fetched
those. The ones I am vendoring are the residuals which I don't think are
ready for upstreaming yet. (I can imagine a further reworking upstream
such that we wouldn't need our own patches of that sort, but it would be
good to get the first crop merged first before discussing that.)
This will fail with an "musl is not supported on this system" anyway.
The difference is, that this error via `musl`'s `meta.platforms` can be
caught properly by CI, but the assert can not without ugly workarounds.
These asserts throw on darwin, before `meta.platforms` is checked. This,
among many others, makes CI require ugly workarounds.
Upstream says its build requirements are "gcc/clang, ..." - so it seems
like these asserts are not required in principle. Also, they are 10
years old.
Can't test, because the packge is marked as broken entirely. Tried
updating to latest 2.7.1, but the build didn't succeed either.
Missing these weren't causing any issues because they only require
headers, and gcc was likely using newlib headers. However, these
features must be disabled for `libc = null;` to work properly.