Commit Graph

35 Commits

Author SHA1 Message Date
Dennis Gosnell
c9e0650b51
Merge pull request #177948 from lf-/apply-haddock-hyperlinking-patch
ghc8107-ghc923: patch haddock to generate correct source links
2022-06-28 15:30:49 +09:00
Jade Lovelace
2cf08210fd ghc8107-ghc923: patch haddock to generate correct source links
Previously links to external modules were jacked because haddock was
doing them wrong. I fixed this upstream in early May 2022 but it's not
out yet.
2022-06-16 16:39:42 -07:00
Jade Lovelace
fc1548e597 ghc8.10.7-ghc9.2.3: hyperlink sources in base lib haddocks
This was disabled basically by accident before.

The links are jacked, but that was is true for every package; it is not
unique to this PR. I fixed it upstream here:
https://github.com/haskell/haddock/pull/1482
but it's not in any release distributions yet I don't think.

Fixes #171841
2022-06-16 15:04:26 -07:00
Sergei Trofimovich
849d47a928 ghc: use CXX=c++, not CXX=cxx
Otherwise attempt to build ghcHEAD from local checkout fails as:

    $ nix build -L --impure --expr 'with import ~/nm {}; haskell.compiler.ghcHEAD.overrideAttrs (oa: { src = ./.; patches = []; nativeBuildInputs = oa.nativeBuildInputs ++ [ git ]; })' --keep-failed
    ...
    ghc> checking C++ standard library flavour... ./configure: line 11487: /nix/store/r7r10qvsqlnvbzjkjinvscjlahqbxifl-gcc-wrapper-11.3.0/bin/cxx: No such file or directory

I think 'cxx' is not provided by stdenv.
2022-05-29 20:02:53 +02:00
Adam Joseph
c0085404bd lib/systems/inspect.nix: remove isPowerPC
Very confusingly, the `isPowerPC` predicate in
`lib/systems/inspect.nix` does *not* match `powerpc64le`!

This is because `isPowerPC` is defined as

  isPowerPC      = { cpu = cpuTypes.powerpc; };

Where `cpuTypes.powerpc` is:

  { bits = 32; significantByte = bigEndian; family = "power"; };

This means that the `isPowerPC` predicate actually only matches the
subset of machines marketed under this name which happen to be 32-bit
and running in big-endian mode which is equivalent to:

  with stdenv.hostPlatform; isPower && isBigEndian && is32bit

This seems like a sharp edge that people could easily cut themselves
on.  In fact, that has already happened: in
`linux/kernel/common-config.nix` there is a test which will always
fail:

  (stdenv.hostPlatform.isPowerPC && stdenv.hostPlatform.is64bit)

A more subtle case of the strict isPowerPC being used instead of the
moreg general isPower accidentally are the GHC expressions:

  Update pkgs/development/compilers/ghc/8.10.7.nix
  Update pkgs/development/compilers/ghc/8.8.4.nix
  Update pkgs/development/compilers/ghc/9.2.2.nix
  Update pkgs/development/compilers/ghc/9.0.2.nix
  Update pkgs/development/compilers/ghc/head.nix

Since the remaining legitimate use sites of isPowerPC are so few, remove
the isPowerPC predicate completely. The alternative expression above is
noted in the release notes as an alternative.

Co-authored-by: sternenseemann <sternenseemann@systemli.org>
2022-05-25 09:45:42 +02:00
sternenseemann
eb286631b4 haskell.compiler: check targetPlatform for Cabal Paths module patch
The issue we are working around is concerned with the lack of dead
code elimination in the aarch64-darwin LLVM codegen backend. Thus
the relevant condition is the target platform, not the host
platform as checked previously.
2022-04-09 00:26:05 +02:00
rnhmjoj
654940f36b haskellPackages.mkDerivation: check haddock availability
This change makes the haskell builder run the haddockPhase only if the
haddock program is availble (for example, it's not when cross-compiling).
2022-03-17 19:43:04 +01:00
Ben Siraphob
e68cbf0c04
Merge pull request #154046 from hexagonal-sun/ghc-fix-bin-outputs-on-aarch64-darwin
ghc8107: fix seperate bin outputs on aarch64-darwin
2022-01-30 20:21:51 +00:00
Matthew Leach
b0dcd7fa34 haskell.compiler.ghc8107: fix seperate bin outputs on aarch64-darwin 2022-01-21 15:34:05 +00:00
sternenseemann
e3c61654ca haskell.compiler.*: disable large address space only on iOS
The condition used in the past to detect iOS was "is this
aarch64-darwin"? Since we have aarch64-darwin devices running macOS
nowadays which do allow large address space, let's use the more accurate
flag.
2022-01-04 12:10:00 +01:00
sternenseemann
c610be58c0 haskell.compiler.*: use build->target LLVM in build
This is no substantial change, as we already assert that the
build->target and host->target LLVM are the same, but this brings the
terminology in the file in a more consistent order, since we use
build->target for CC/CXX and bintools already.

In fact we should be passing build->target to configure always,
host->target would come into play when updating GHC's settings file
after installing.
2021-12-01 18:37:24 +01:00
sterni
c85d141221
Merge pull request #148079 from sternenseemann/ghc-set-clang-only-if-use-llvm
haskell.compiler.*: only set CLANG to match llc/opt
2021-12-01 17:34:38 +01:00
sternenseemann
0f5a723dd1 Merge remote-tracking branch 'origin/master' into haskell-updates 2021-12-01 17:31:16 +01:00
sternenseemann
6daa4a5c04 haskell.compiler.*: use wrapped darwin bintools on aarch64
On aarch64-darwin we have additional wrappers for install_name_tool and
strip to deal with codesigning requirements (e. g. updating the
signature / checksum after changing a binary). These wrappers don't
exist on x86_64-darwin which is why the unwrapped versions were used
before, causing the kernel to kill (some) executables produced by GHC.
2021-12-01 17:29:12 +01:00
sternenseemann
c23e14e33f haskell.compiler.*: assert that host->target == build->target tools
CC, CXX, LD, AR, …, LLC, OPT and CLANG will be invoked by GHC's build
system at build time in the build->target role. However, since we are
passing absolute paths, they will get saved in GHC's settings file and
later invoked at runtime, when they should be host->target. This means
that the build->target and host->target tools need to be the same for
our built GHC to work properly which is what we guard using these new
asserts.

Being able to drop these asserts would be a step towards cross-compiling
GHC (as opposed to building a GHC cross-compiler which still works).
2021-11-30 23:06:44 +01:00
sternenseemann
19fc229294 haskell.compiler.*: use targetCC for hasGold check
This is a bit shorter and more consistent with the rest of the file.
2021-11-30 23:00:11 +01:00
sternenseemann
c876c7498e haskell.compiler.*: only set CLANG to match llc/opt
* By taking clang from llvmPackages we make sure there is no version
  mismatch between LLVM (where llc and opt come from) and clang (which
  previously would be taken from stdenv on darwin for example).

* Only pass CLANG if useLLVM is true. Previously we also set this if
  targetCC was clang. This would cause potentially confusing behavior if
  llc and opt as well as clang are provided via PATH (and GHC is
  compiled with useLLVM == false), because clang from PATH would be
  ignored, but not llc and opt.
2021-11-30 22:55:19 +01:00
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
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
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
github-actions[bot]
b7d0ebd8f8
Merge master into haskell-updates 2021-09-16 00:06:30 +00:00
Divam
feac31b1f0 ghc: add the Cabal ghcjs support patch 2021-09-15 12:51:34 +09: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
eea8e3eace ghc8.10.7: fix mingw build 2021-09-09 03:35:07 +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
a0142cc3cc Merge remote-tracking branch 'origin/master' into haskell-updates 2021-08-28 14:45:41 +02:00
sternenseemann
9eca744cc0 ghc: 8.10.6 -> 8.10.7
https://www.haskell.org/ghc/download_ghc_8_10_7.html
2021-08-27 00:42:51 +02:00