The latest aeson doesn't build in ghcjs because it includes text-short
in its dependency tree, which hangs on checkPhase because it uses C FFI.
But since ghcjs-base has an upper bound on aeson<1.6 anyway, just
override it.
The derivation for the GHCJS `vector` package broke in #142940 due to
introducing the line of code that this change deletes.
The offending line appears to have been unintentionally added and
causes an evaluation failure for two separate reason :
* The argument order is wrong
The change in #142940 switched the `haskellLib` utilities to flip
their argument order, but the `appendPatch` in the offending line
has the original argument order
* The patch file referenced by the offending line does not exist
The correct fix is to delete the line, because the patch is not
necessary. The default version of the `vector` package is `0.12.3.1`,
which already includes the fix from that patch.
- The haskell lib is very close to not relying on Nixpkgs. I think
this is good---simpler to think about and matches Nixpkgs's lib.
- The haskell lib is only imported once
- stdenv is exposed more shallowly so it can be overriden more easily.
I'll eventually use this on Darwin to avoid the Sierra shared
library problems (unless changes are to be made system-wide).
Closes https://github.com/NixOS/nixpkgs/pull/27840.
This makes it easier to ensure that the list of stage 1 packages accurately matches the given version of ghcjs, and makes it possible for this list to be overridden
Previously, the stage2 information was stored in haskell-modules, and imported directly from there. However, the correct stage2 information is determined by the version of ghcjs-boot repository. This commit makes the stage2 information part of the ghcjs derivation, which improves organization and makes it possible to override stage2 when overriding ghcjs.
GHCJS uses integer-gmp, but cabal2nix generates a dependency list that
includes integer-simple instead. This tweaks the stage2 generator to
replace any instance of integer-simple with integer-gmp.
Things currently still work without this change (assuming
integer-simple is defined as null), as ghcjs includes integer-gmp in
its stage1 packages - so it's always available.
However, this change makes things a bit more explicit, rather than
leaving things to chance. If at any point the stage1 packages are also
split up into separate derivations, the integer-gmp package will need to
be passed along to the packages that depend on it. This change should
prevent some confusion going forward.
Previously, we were compiling Setup.hs with ghcjs (instead of ghc),
and that required that Cabal be available, otherwise the Setup.hs would
fail to compile.
Now that we are compiling Setup.hs with ghc, it's no longer necessary
to add Cabal as a dependency to all ghcjs packages.