Commit Graph

46 Commits

Author SHA1 Message Date
sternenseemann
8f1a52ac33 haskell.compiler.*: disable useLLVM also for SPARC and PowerPC
These targets also have NCG support, but they are tested less (in fact
SPARC seems to be untested atm) and may have issues. In such cases being
able to fallback to -fllvm without rebuilding the compiler could be
useful. OTOH GHC will default to -fasm and the backends probably work
well enough in most cases.
2021-11-28 17:14:18 +01:00
sternenseemann
17b8b5a4dc haskell.compiler.*: pass runtime dependencies via configure script
GHC can actually accept absolute paths for its runtime tools (except for
touch) at configure time which are then saved in
`$out/lib/ghc-${version}/settings`. This allows us to drop the wrapper
entirely if we assume that a POSIX compliant touch is in PATH when we
run GHC later.

The touch problem can presumably be fixed by either patching the
configure file of GHC (although we need to take care not to change the
touch GHC uses during its compilation) or messing with the settings file
after installation.

The rationale for dropping the wrapper PATH entry completely is that
it's always possible to invoke GHC via its library which will bypass the
wrapper completely, leading to subtly different behavior.

Binary GHCs are not touched in this commit, but ideally they'll get a
similar treatment as well, so they are more robust, although we
generally don't need to use them as a library.

Note that GHC 8.8.4 doesn't care about install_name_tool or otool, so
the respective environment variables are not set.
2021-11-27 14:39:22 +01:00
sternenseemann
a7c564596e haskell.compiler.*: use isScript over grepping for #! 2021-11-25 16:48:56 +01:00
sternenseemann
f5c3b6523c haskell.compiler.*: move propagatedBuildInputs into runtimeDeps
This has two main benefits:

* GHC will work reliably outside of stdenv, even when using -fllvm since
  everything it'll call at runtime will be provided in PATH via the
  wrapper scripts.

* LLVM will no longer leak into haskell packages' configure
  scripts. This was an issue with llvm-hs which fails to build if the
  LLVM version of the compiler since the propagatedBuildInputs of GHC
  take precedence over the nativeBuildInputs added in the derivation.
2021-11-25 16:47:51 +01:00
sternenseemann
035f20bc6b haskell.compiler.*: prefix PATH with runtimeDeps
This will prevent freak accidents where the wrong tools are used because
they are in PATH by chance.
2021-11-25 16:42:47 +01:00
sternenseemann
a6f258f49f Merge remote-tracking branch 'origin/master' into haskell-updates 2021-11-25 09:28:37 +01:00
sternenseemann
b2c2215f60 pkgsMusl.haskell.compiler.ghc884: return accurate platforms 2021-11-24 17:07:57 +01:00
sternenseemann
55b8d8c1bf haskell.compiler.ghc884: re-enable aarch64-linux
Since we inherit the platform list from the bootstrap GHC, we get
differing lists depending on which platform we evaluate the platform
list on (depending on whether 8.10.2 or 8.6.5 is used). This leads to
Hydra thinking aarch64-linux is not supported as it evaluates on
x86_64-linux usually.
2021-11-24 15:14:54 +01:00
sternenseemann
156d8d619c haskell.compiler.*: be clear about LLVM build->target role
Since LLVM itself doesn't depend on target at all, this doesn't change
anything *in effect* (i. e. rebuild count should be zero), but it is
more clear about the intention and what LLVM is used for here (i. e. in
depsBuildTarget).
2021-11-24 13:48:37 +01:00
sternenseemann
2034c06a0a haskell.compiler.ghc884: revert to reverse bootstraping using 8.10.2
Reverse bootstrapping is not supported by GHC upstream. In the case of
8.8.4 it just happens to work using 8.10.2, with later versions,
specifically 8.10.7 there seems to be some digressions in the generated /
used C code which cause 8.8.4 to fail to compile [1].

Thus we revert to using 8.10.2 for aarch64 and Musl which means: Still
no integer-simple and musl at the same time (however all other GHCs have
it, so it's probably not a problem) and no aarch64-darwin (GHC 8.8.4
can't target that architecture anyways). In short, the situation stays
the same.

[1]: https://github.com/NixOS/nixpkgs/pull/138523#issuecomment-927339953
2021-09-26 19:40:56 +02:00
Niklas Hambüchen
c57ad7ccb9 haskell.compiler.ghc*: Use 8.10.7 bindist for bootstrapping.
This fixes musl+integer-simple, see #130441.

Co-Authored-By: sternenseemann <sternenseemann@systemli.org>
2021-09-23 20:38:36 +02:00
Niklas Hambüchen
998e40ce38 haskell.compiler.ghc*: Add variantSuffix.
When debugging musl builds, I often have to sift through thousands of lines
of `nix-store -q --tree` or `nix-store -qR` output.
Until now, `pkgsMusl` and normal `pkgs` GHCs looked exactly the same in
there, making that task tough.

Same for `integer-simple`, which makes debugging `gmp` issues easier.

This commit introduces a suffix to tell them apart easily.

Note that this is different from `targetPrefix` which is for
cross-compilation, which `pkgsMusl` does not do.

For GHC HEAD, integer-simple no longer exists, instead we now have a
“bignum backend”, so we just call the integer-simple successor
native-bignum.

Co-Authored-By: sternenseemann <sternenseemann@systemli.org>
2021-09-23 16:41:49 +02:00
sternenseemann
3bdb476804 haskell.compiler.ghc*: use pname instead of name
This also means the -binary suffix is moved *before* the version which
prevents builtins.parseDrvName from interpreting it as part of the version.
2021-09-23 16:41:49 +02:00
Alyssa Ross
56314db098
Merge remote-tracking branch 'nixpkgs/master' into staging-next
Conflicts:
	pkgs/development/compilers/ghc/8.10.7.nix
	pkgs/development/compilers/ghc/8.8.4.nix

I've removed the isWindows check from useLdGold in ghc, since that should
be covered by the new hasGold check.
2021-09-11 10:49:13 +00:00
Alexandre Esteves
bd5f47022c ghc8.8.4: fix mingw build 2021-09-09 03:35:17 +01:00
Vladimír Čunát
dbc3228248
Merge branch 'master' into staging-next
(It's a little older version of master, to bring haskell updates now.)
2021-09-07 08:21:02 +02:00
Alyssa Ross
071a7a4583
Merge remote-tracking branch 'nixpkgs/master' into staging-next 2021-09-03 18:23:45 +00:00
sternenseemann
791f39c668 haskell.compiler.*: clean up maintainer sets
Let's remove peti (retired) as well Marc, Andres and Will who haven't
been active lately. Feel free to re-add yourself, but this should at
least lessen the GitHub notifications for now.

Add lib.teams.haskell to every maintainer list additionally. I've also
added Domen and Pavol to GHC 8.10.7 binary since they are the only ones
working on aarch64-darwin so far. Let me know if that is alright with
you.
2021-09-01 16:49:18 +02:00
sternenseemann
3ff0594935 haskell.compiler.ghc884: remove big-parallel
GHC 8.8.4 seems to be quite susceptible to flaky build failures when
using more cores. Since we don't care about speed too much with this
one, let's disable big-parallel again.
2021-08-30 12:17:09 +02:00
sternenseemann
b4f66903e3 haskell.compiler.*: make big-parallel
Compiling GHC on Hydra takes 3h or more (with -j2) whereas even on an
outdated CPU GHC can be compiled in under an hour with -j4. To get a
higher NIX_BUILD_CORES value at build time, we'll have to mark GHC
big-parallel.
2021-08-24 00:57:19 +02:00
Guillaume Bouchard
5c1d3b7944 ghc: add guibou as maintainers for all ghc compilers 2021-08-23 12:40:11 +02:00
sternenseemann
0908812372 haskell.compiler.*: check bintools.hasGold before enabling ld.gold 2021-08-18 01:21:44 +02:00
(cdep)illabout
be8d8a9efb
ghc: mark integer-simple builds as broken when hostplatform is musl 2021-07-24 21:13:02 +09:00
Niklas Hambüchen
f4e62a996f pkgsMusl.haskell.compiler.ghc{8104,884,901,HEAD}: Disable sphinx for musl
Adds new package options:

* enableDocs
* enableHaddockProgram

to control whether to build Sphinx docs, and GHC haddocks and the
haddock program.

Unfortunately currently the building of the `haddock `program
and generating GHC docs are mixed into one option, see:
https://gitlab.haskell.org/ghc/ghc/-/issues/20077

Making Sphinx docs disableable, and disabling them by default
for Musl and cross builds, makes it much easier to provide these
builds without having to support Sphinx's enormous dependency
tree for those ways of building.
2021-07-10 02:49:42 +02:00
Niklas Hambüchen
8adcd39504 ghc: Add comments about hardeningDisable pie for musl 2021-07-10 02:49:42 +02:00
Niklas Hambüchen
8b15fccf8a pkgsMuslhaskell.compiler.{ghc884,ghc8104}: Use GHC 8.10 as bootstrap compiler.
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; }'
2021-07-10 02:49:42 +02:00
sternenseemann
cd33c34578 haskell.compiler.ghc884: patch for sphinx >= 4.0
With sphinx 4, interpreting the conf.py fails due to a decode
error: https://gitlab.haskell.org/ghc/ghc/-/issues/19962
The fix is an one line change which we have to backport from GHC
master.

9.2 and 8.10.6 will have a fix for this, GHC 9.0.1 and ghcHEAD
already have and GHC 8.10.4 has been patched in nixpkgs already.
2021-06-22 13:42:55 +02:00
John Ericson
4f97d78936
Merge pull request #126205 from sternenseemann/ghc-linker-checks
ghc: check for targetPlatform.linker to determine if gold is available
2021-06-08 16:42:13 -04:00
sternenseemann
036eef1d1e haskell.compiler.*: use gold based on targetPlatform.linker
useLdGold previously just checked for useLLVM which (currently) implies
`linker == "lld"`. However more accurate is to check the `linker` of the
`targetPlatform` as it actually tells us which bintools package we can
expect.

`linker == "bfd"` implies that we are using the `binutils` package, so
gold is available, so we can use it unless musl is the libc. `linker ==
"gold"` implies that gold is the default linker already and we should
absolutely use it.
2021-06-08 22:17:24 +02:00
sternenseemann
118b28a127 haskell.compiler.*: pull in unwrapped bintools for darwin
GHC calls otool on darwin which is contained in the
stdenv.cc.bintools.bintools derivation and thus needs adding to the
runtime PATH of GHC. Since this is toolchain specific technically, we
check for cctools instead of darwin (although I don't know if GHC
or nixpkgs work on macOS without cctools).

This fixes usage of GHC in an environment where otool is not available
and more specifically in stdenvNoCC which is used by writers.writeHaskell.
Resolves #123228.
2021-06-08 14:20:09 +02:00
oxalica
354d262db8
lib.meta: introduce availableOn 2021-04-02 19:20:23 +08:00
Cheng Shao
643169bbb4 Fix ar command path in GHC.
Previously, the "ar command" in the global config of GHC in nixpkgs is
simply "ar" instead of a proper absolute path in the nix store. This
will result in an "ar: command not found" error when using GHC and cabal
in a pure nix shell. This commit adds the patch and applies to all
pre-9.0 versions.

See output of ghc --info for "ar command" value.
2021-02-05 22:54:09 +01:00
Ben Siraphob
acc5f7b18a pkgs/development/compilers: stdenv.lib -> lib 2021-01-23 08:57:37 +07:00
zowoq
31f5dd3f36 treewide: editorconfig fixes
- remove trailing whitespace
- use spaces for indentation
2021-01-20 09:11:11 +10:00
Robert Hensing
6057cb9786 ghc*: Increase build timeout to 1 day
The default of 10 hours is insufficient for some of the slower
platforms like macOS and aarch64.
2020-11-06 11:07:48 +01:00
Will Young
1c2ee215ab ghc:8.10.2Binary bootstrap for 8.8 on aarch64 (NixOS#97407) 2020-10-21 21:13:22 +02:00
Matthew Bauer
d0e52b6b32
Merge pull request #95309 from obsidiansystems/mobile-fixes
Support Android 29 in cross-compilation
2020-08-28 14:59:37 -05:00
Matthew Bauer
c5617381bc ghc: document Stage1Only setting 2020-08-17 23:51:59 -05:00
Matthew Bauer
0be29459d6 ghc: set Stage1Only = YES on iOS
We want stage1Only here even if system == system, since we can’t run
the native arch simulator binaries locally.
2020-08-17 23:51:59 -05:00
Divam Narula
818d24c9db
Merge branch 'staging' into upstream-wasm-cross-nixpkgs-4 2020-08-16 10:13:57 +05:30
Gabor Greif
7b3dbe3dd3 ghc-{8.8.3, 8.8.4, 8.10.1}: fix typos 2020-08-07 20:34:42 +02:00
Divam
95a5a19658 Enable dontStrip for wasm 2020-08-05 20:17:14 +09:00
Divam
a9ac31c299 Set the STRIP_CMD to ':' for dontStrip
(as mentioned in mk/build.mk.sample)
2020-08-05 20:08:37 +09:00
Domen Kožar
1353355a63
ghc 8.8.4/8.10.1: fix PEBKAC 2020-08-01 16:27:12 +02:00
Domen Kožar
6d54b2f918 ghc 8.8.4, 8.10.1: disable profiled builds on aarch64 to avoid 2GB output limit 2020-07-24 13:07:34 +02:00
Gabor Greif
dd6ce8c879 ghc: add new version 8.8.4 2020-07-24 13:02:55 +02:00