GHC 9.2.1-rc1 needs to run xattr in ghc.mk unconditionally. The fix for
this and support for the XATTR environment variable have only been added
to the GHC 8.10 series so far.
The only big change is required for darwin since GHC 8.10.5 now
runs xattr in the install phase on darwin:
* 11e1dcde0d
* ec451cac39
Unfortunately, it uses the host /usr/bin/xattr by default which is
present in the build due to a lack of sandboxing on darwin. That xattr
version however still requires Python 2.7 whereas Python 3.8 is in PATH
in our build. We solve this by setting the XATTR environment variable.
We can't use python3Packages.xattr since GHC expects Apple's fork of
xattr which provides some extra flags to utilize.
Co-authored-by: Cheng Shao <cheng.shao@tweag.io>
This reverts commit 36628e6e04.
As it turns out this wasn't caused by the update from python 3.8 -> 3.9,
but the underlying issue affects both python version (it seems that LTO
is at fault currently). Will have to be fixed elsewhere, reverting.
seems like python39 currently fails to build with musl as libc
https://github.com/NixOS/nixpkgs/issues/131557. As a workaround, we can just
build the musl GHCs using python38 like we have been in the past (the python 3.8
-> 3.9 update being a more recent development).
This addresses the fact that `ghc865Binary` segfaults on musl
(see #118731) because of the glibc+musl mix used in there.
With the previous commits, `ghc8102Binary` was changed to use
the musl-based bindist from GHC HQ instead, which works.
With this change, all nix Haskell compilers builds on musl:
NIX_PATH=nixpkgs=. nix-build --no-link --expr 'with import <nixpkgs> {}; { inherit (pkgsMusl.haskell.compiler) ghc884 ghc8104 ghc901 ghcHEAD; }'
ghc8102Binary doesn't build on hydra on arm since it exceeds the maximum
output size. This change works around this issue by using the minimal
version of that compiler instead.
* ghcHEAD: bump to 8.11.20200403
* ghcHead: reduce diff vs. 8.10.1
dontAddExtraLibs was removed by accident (IMO) in ea19a8ed1e
* ghcHEAD: add ability to use system libffi
- enable nixpkgs' libffi
- minimise diffs against 8.10.1
- remove patching
* remove configure warning about --with-curses-includes
configure: WARNING: unrecognized options: --with-curses-includes
The 8.4.x version of ghcjs hasn't compiled successfully
in ages, so I reckon it's unused. The even older code
in pkgs/development/compilers/ghcjs is unused entirely;
it's not even referenced in Nixpkgs.
ghc-8.4.4 requires sphinx < 1.8, otherwise build fails on haddock with:
Extension error: The 'ghc-flag' directive is already registered to domain std
Also fixed evaluation errors in configurations of ghc-8.2.x and ghc-8.4.x.
Closes https://github.com/NixOS/nixpkgs/pull/55703.
If the nix store lives on NFS, `ghc 8.2.1` is unable to build a package
database. This bug was fixed by @bgamari in `ghc 8.2.2` here:
https://ghc.haskell.org/trac/ghc/ticket/13945
This commit upgrades the unpacked bootstrap GHC version, so that we can build
newer versions of GHC even if the store is on NFS.
We keep the latest minor release of each one of the last 3 major releases,
which currently are GHC versions 8.2.2, 8.4.4, and 8.6.1. We also have
ghc-HEAD, but this doesn't count.
Dropping these compilers implied that we have to drop the corresponding
versions of ghcjs, too. We can also drop a shitload of obsolete compiler
patches that newer versions no longer need.
At some point, we can probably simplify the generic builder, too.
The per-version `default.nix`es just fill in default arguments. It is
much more useful to have the `.override` from the inner `callPackage`,
for finer control. Converting the outer `callPackage` to a plain import
makes the inner one the only one, revealing its `.override`.
The compilers themselves can pull them from `bootPkgs`, where they
should always come from anyways. This enforces that, simplifies that
code, and allows use to avoid more `rec { ... }` too.
Fixes mass build failures in these package sets,
due to "unknown pacakge: integer-simple".
Attributes that demonstrate this (see before/after):
* haskell.packages.integer-simple.ghc843.hello
* haskell.packages.integer-simple.ghc802.scientific
The second one is from the NixOS manual, FWIW.
Setting haskell.packageOverrides like so:
haskell = super.haskell // {
packageOverrides = self: super: {
my-package = ...;
my-other-package = ...;
};
};
causes all compiler-specific package sets to be overridden with those
overrides.