Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

haskellPackages: update hackage #339272

Merged
merged 85 commits into from
Oct 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
165e383
all-cabal-hashes: 2024-08-19T17:17:03Z -> 2024-09-03T10:29:19Z
sternenseemann Sep 3, 2024
84d63ae
haskellPackages.diohsc: unbreak
marcin-serwin Sep 3, 2024
1a0b472
Merge master into haskell-updates
github-actions[bot] Sep 4, 2024
fb5e058
Merge master into haskell-updates
github-actions[bot] Sep 5, 2024
968501d
Merge master into haskell-updates
github-actions[bot] Sep 6, 2024
a466689
haskell.packages.ghc910: fixed some packages
eldritch-cookie Sep 6, 2024
c8a2675
Merge master into haskell-updates
github-actions[bot] Sep 7, 2024
04f0edf
haskellPackages: regenerate package set based on current config
maralorn Sep 7, 2024
ae3938b
haskellPackages.clash-prelude: Unmark broken
maralorn Sep 7, 2024
85fcc86
Regenerate hackage-packages
marcin-serwin Sep 7, 2024
bfc503e
Add info about override removal
marcin-serwin Sep 7, 2024
e2af344
haskellPackages.system-fileio: disable checks
flandweber Sep 3, 2024
67a00dc
haskellPackages: regenerate package set based on current config
flandweber Sep 3, 2024
adf1e11
haskellPackages.diohsc: unbreak (#339302)
maralorn Sep 7, 2024
9e1b301
haskellPackages.system-fileio: disable checks (#339341)
maralorn Sep 7, 2024
08a9878
Merge master into haskell-updates
github-actions[bot] Sep 8, 2024
cd31b04
haskell.compiler.ghc*: set stage 0 tools
AlexandreTunstall Jul 23, 2023
4b00fbf
haskell.compiler.ghc*: correctly account for ncurses in cross
AlexandreTunstall Jul 23, 2023
1261fe0
haskell.compiler.ghc*: fall back to host libs for “cross native” ghc
AlexandreTunstall Jul 23, 2023
d5f666f
haskell.compiler.ghc*: don't configure --host
AlexandreTunstall Jul 23, 2023
bd331dc
ghc-settings-edit: init at 0.1.0
sternenseemann Apr 14, 2024
884a76c
haskell.compiler.ghc*: use host->target CC and tools in settings
AlexandreTunstall Jul 23, 2023
f865044
haskell.compiler.ghc*: don't cross-compile haddock
AlexandreTunstall Jul 23, 2023
35d77dd
haskell.compiler.ghc*: add enableUnregisterised
AlexandreTunstall Jul 23, 2023
d3bad45
haskell.compiler.ghc*: assert cross is possible
AlexandreTunstall Jul 23, 2023
322bab8
haskell.compiler.ghc*: allow all platforms
AlexandreTunstall Jul 23, 2023
bd373f0
haskell.compiler.ghc*: use GHC from pkgsBuildBuild
AlexandreTunstall Jul 23, 2023
eeeeb55
tests.cross.sanity: Add GHC to catch regressions
AlexandreTunstall Mar 29, 2024
8b6009f
haskell.compiler.ghc96: fix incorrect unlit path for cross compilers
sternenseemann Sep 5, 2024
8c08fb1
haskell.compiler.ghc9{6,8,10}: update comment about stage selection
sternenseemann Sep 5, 2024
de13f8f
haskell.compiler.*: set cctools tools in settings if applicable
sternenseemann Sep 5, 2024
2dae227
haskell.compiler.*: set correct runtime LLVM tools in settings
sternenseemann Sep 5, 2024
fee9184
Merge master into haskell-updates
github-actions[bot] Sep 9, 2024
5cd41e1
release-haskell.nix: don't try to build pkgsMusl on non x86_64-linux
sternenseemann Sep 9, 2024
7fff043
haskell.compiler.ghc{96,98,910}: use emscripten installCC for ghcjs
sternenseemann Sep 9, 2024
fbd40df
Merge master into haskell-updates
github-actions[bot] Sep 10, 2024
14ba90a
Merge master into haskell-updates
github-actions[bot] Sep 11, 2024
4888c3c
haskellPackages.ghc-settings-edit: build using Cabal
sternenseemann Sep 11, 2024
46460a7
git-annex: update sha256 for 10.20240831
sternenseemann Sep 11, 2024
7bb5725
Merge master into haskell-updates
github-actions[bot] Sep 12, 2024
e8a9683
Merge master into haskell-updates
github-actions[bot] Sep 13, 2024
cc27161
haskellPackages.weeder: 2.8.0 -> 2.9.0
sternenseemann Sep 13, 2024
9d2a706
haskellPackages.xmonad-contrib: restrict to < 0.18.1 to match xmonad
sternenseemann Sep 13, 2024
35f1a5b
Merge master into haskell-updates
github-actions[bot] Sep 14, 2024
b039994
haskell.compiler.ghc*: use matching CLANG & CC on Darwin with LLVM
sternenseemann Sep 1, 2024
7270465
Merge master into haskell-updates
github-actions[bot] Sep 15, 2024
4bb5826
Merge master into haskell-updates
github-actions[bot] Sep 16, 2024
798d365
haskell.packages.ghc910 05/09 fixes of some packages (#340116)
maralorn Sep 16, 2024
9ee18fb
haskell.packages.ghc910.hoogle: Enable hydra job
maralorn Sep 16, 2024
a748ced
Merge master into haskell-updates
github-actions[bot] Sep 17, 2024
bb260f9
Merge master into haskell-updates
github-actions[bot] Sep 18, 2024
273bbac
Merge master into haskell-updates
github-actions[bot] Sep 19, 2024
f716fa5
haskell.compiler.*: pass --with-curses-* flags again
sternenseemann Sep 15, 2024
2c878dc
top-level/release-haskell.nix: reflect removal of mailctl
sternenseemann Sep 18, 2024
6c00c67
haskell.compiler.ghc96*: use patch for unlit workaround
sternenseemann Sep 18, 2024
8bf0041
haskell.compiler.ghc9*: fix rpath on aarch64-linux
AlexandreTunstall Sep 17, 2024
e04b930
haskell.compiler.*: check that there are no references to stage0
sternenseemann Sep 19, 2024
4903ac9
haskell.compiler.*: remove perl from buildInputs
sternenseemann Sep 19, 2024
097aff7
haskell.compiler.*: move bootPkgs.ghc to depsBuildBuild
sternenseemann Sep 19, 2024
e0580b2
Merge master into haskell-updates
github-actions[bot] Sep 20, 2024
69830da
top-level/release-haskell.nix: add jobs for cross compiled GHCs
sternenseemann Sep 19, 2024
f3f40a1
binutils: CoreServices depends on host, not build platform
sternenseemann Sep 19, 2024
93d1421
Merge master into haskell-updates
github-actions[bot] Sep 21, 2024
7a58bae
Merge master into haskell-updates
github-actions[bot] Sep 22, 2024
3abd3da
Merge master into haskell-updates
github-actions[bot] Sep 23, 2024
e2d259e
pkgs.haskell.lib: Add disableParallelBuilding function
rvl Sep 18, 2024
931fd13
haskellPackages.gi-gtk: Re-enable parallel building
rvl Sep 18, 2024
0cac1f1
haskell.compiler.*: don't declare stage0 ghc as dep to stdenv
sternenseemann Sep 23, 2024
5ad0f9a
haskell.compiler.*: let configure know about objdump
sternenseemann Sep 23, 2024
5b15a1f
haskell.compiler.*: use symlinks from bintool wrapper if possible
sternenseemann Sep 23, 2024
b6b063b
Merge master into haskell-updates
github-actions[bot] Sep 24, 2024
b341506
Merge branch master into haskell-updates
sternenseemann Sep 27, 2024
73a431e
Merge master into haskell-updates
github-actions[bot] Sep 28, 2024
f827685
Merge master into haskell-updates
github-actions[bot] Sep 29, 2024
7b0a689
Merge master into haskell-updates
github-actions[bot] Sep 30, 2024
3c833cf
Merge master into haskell-updates
github-actions[bot] Oct 1, 2024
e742aa0
haskellPackages: mark builds failing on hydra as broken
sternenseemann Oct 1, 2024
2eb05ff
Merge master into haskell-updates
github-actions[bot] Oct 2, 2024
5fd2fd5
Update release-haskell.nix
jmatsushita Oct 2, 2024
cdeda1a
Enable haskell-language-server for ghc9101 (#345947)
maralorn Oct 2, 2024
9d0ab8b
Merge master into haskell-updates
github-actions[bot] Oct 3, 2024
d4db941
Merge master into haskell-updates
github-actions[bot] Oct 4, 2024
edd71fd
Merge master into haskell-updates
github-actions[bot] Oct 5, 2024
804e7c5
haskell.compiler.*: don't build profiled libs when host == riscv64
sternenseemann Oct 5, 2024
f7bd593
Merge remote branch master into haskell-updates
sternenseemann Oct 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions doc/languages-frameworks/haskell.section.md
Original file line number Diff line number Diff line change
Expand Up @@ -1076,6 +1076,9 @@ benchmark component.
`disableLibraryProfiling drv`
: Sets the `enableLibraryProfiling` argument to `false` for `drv`.

`disableParallelBuilding drv`
: Sets the `enableParallelBuilding` argument to `false` for `drv`.

#### Library functions in the Haskell package sets {#haskell-package-set-lib-functions}

Some library functions depend on packages from the Haskell package sets. Thus they are
Expand Down
8 changes: 4 additions & 4 deletions pkgs/data/misc/hackage/pin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"commit": "4670ba3f52eae6737137ddcb817182f3daad4f26",
"url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/4670ba3f52eae6737137ddcb817182f3daad4f26.tar.gz",
"sha256": "18q5shdmh12147502135q6132rmzp29qfjhwrcjwidl0pi9ki70i",
"msg": "Update from Hackage at 2024-08-19T17:17:03Z"
"commit": "5d97d9c05e76d8cecb68f1e9063afb39ca0fb26b",
"url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/5d97d9c05e76d8cecb68f1e9063afb39ca0fb26b.tar.gz",
"sha256": "1ic4wn5immv06m1m2cq6mzrrgrxbidxmj39licxlkmnm9jlwzjwr",
"msg": "Update from Hackage at 2024-09-03T10:29:19Z"
}
183 changes: 152 additions & 31 deletions pkgs/development/compilers/ghc/8.10.7.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ lib, stdenv, pkgsBuildTarget, pkgsHostTarget, targetPackages
{ lib, stdenv, pkgsBuildTarget, pkgsHostTarget, buildPackages, targetPackages

# build-tools
, bootPkgs
Expand Down Expand Up @@ -32,14 +32,19 @@
, # If enabled, use -fPIC when compiling static libs.
enableRelocatedStaticLibs ? stdenv.targetPlatform != stdenv.hostPlatform

, enableProfiledLibs ? true
# Exceeds Hydra output limit (at the time of writing ~3GB) when cross compiled to riscv64.
# A riscv64 cross-compiler fits into the limit comfortably.
, enableProfiledLibs ? !stdenv.hostPlatform.isRiscV64

, # Whether to build dynamic libs for the standard library (on the target
# platform). Static libs are always built.
enableShared ? !stdenv.targetPlatform.isWindows && !stdenv.targetPlatform.useiOSPrebuilt

, # Whether to build terminfo.
enableTerminfo ? !stdenv.targetPlatform.isWindows
enableTerminfo ? !(stdenv.targetPlatform.isWindows
# terminfo can't be built for cross
|| (stdenv.buildPlatform != stdenv.hostPlatform)
|| (stdenv.hostPlatform != stdenv.targetPlatform))

, # What flavour to build. An empty string indicates no
# specific flavour and falls back to ghc default values.
Expand All @@ -55,25 +60,31 @@

, enableHaddockProgram ?
# Disabled for cross; see note [HADDOCK_DOCS].
(stdenv.targetPlatform == stdenv.hostPlatform)
(stdenv.buildPlatform == stdenv.hostPlatform && stdenv.targetPlatform == stdenv.hostPlatform)

, # Whether to disable the large address space allocator
# necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
disableLargeAddressSpace ? stdenv.targetPlatform.isiOS

, # Whether to build an unregisterised version of GHC.
# GHC will normally auto-detect whether it can do a registered build, but this
# option will force it to do an unregistered build when set to true.
# See https://gitlab.haskell.org/ghc/ghc/-/wikis/building/unregisterised
enableUnregisterised ? false
}@args:

assert !enableIntegerSimple -> gmp != null;

# Cross cannot currently build the `haddock` program for silly reasons,
# see note [HADDOCK_DOCS].
assert (stdenv.targetPlatform != stdenv.hostPlatform) -> !enableHaddockProgram;
assert (stdenv.buildPlatform != stdenv.hostPlatform || stdenv.targetPlatform != stdenv.hostPlatform) -> !enableHaddockProgram;

# GHC does not support building when all 3 platforms are different.
assert stdenv.buildPlatform == stdenv.hostPlatform || stdenv.hostPlatform == stdenv.targetPlatform;

let
libffi_name = if stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64 then "libffi" else "libffi_3_3";
inherit (stdenv) buildPlatform hostPlatform targetPlatform;

inherit (bootPkgs) ghc;

# TODO(@Ericson2314) Make unconditional
targetPrefix = lib.optionalString
(targetPlatform != hostPlatform)
Expand All @@ -86,6 +97,8 @@ let
endif
BUILD_SPHINX_HTML = ${if enableDocs then "YES" else "NO"}
BUILD_SPHINX_PDF = NO
WITH_TERMINFO = ${if enableTerminfo then "YES" else "NO"}
'' +
# Note [HADDOCK_DOCS]:
# Unfortunately currently `HADDOCK_DOCS` controls both whether the `haddock`
Expand Down Expand Up @@ -134,7 +147,9 @@ let
pkgsBuildTarget.targetPackages.stdenv.cc
] ++ lib.optional useLLVM buildTargetLlvmPackages.llvm;

buildCC = buildPackages.stdenv.cc;
targetCC = builtins.head toolsForTarget;
installCC = pkgsHostTarget.targetPackages.stdenv.cc;

# toolPath calculates the absolute path to the name tool associated with a
# given `stdenv.cc` derivation, i.e. it picks the correct derivation to take
Expand All @@ -145,12 +160,13 @@ let
tools = {
"cc" = cc;
"c++" = cc;
as = cc.bintools.bintools;
as = cc.bintools;

ar = cc.bintools.bintools;
ranlib = cc.bintools.bintools;
nm = cc.bintools.bintools;
readelf = cc.bintools.bintools;
ar = cc.bintools;
ranlib = cc.bintools;
nm = cc.bintools;
readelf = cc.bintools;
objdump = cc.bintools;

ld = cc.bintools;
"ld.gold" = cc.bintools;
Expand All @@ -169,6 +185,9 @@ let
if stdenv.targetPlatform.isDarwin
then cc.bintools
else cc.bintools.bintools;

# clang is used as an assembler on darwin with the LLVM backend
clang = cc;
}.${name};
in
"${tools}/bin/${tools.targetPrefix}${name}";
Expand All @@ -185,14 +204,40 @@ let
(lib.optionalString enableIntegerSimple "-integer-simple")
];

in
libffi_name =
if stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64
then "libffi"
else "libffi_3_3";

# These libraries are library dependencies of the standard libraries bundled
# by GHC (core libs) users will link their compiled artifacts again. Thus,
# they should be taken from targetPackages.
#
# We need to use pkgsHostTarget if we are cross compiling a native GHC compiler,
# though (when native compiling GHC, pkgsHostTarget == targetPackages):
#
# 1. targetPackages would be empty(-ish) in this situation since we can't
# execute cross compiled compilers in order to obtain the libraries
# that would be in targetPackages.
# 2. pkgsHostTarget is fine to use since hostPlatform == targetPlatform in this
# situation.
# 3. The core libs used by the final GHC (stage 2) for user artifacts are also
# used to build stage 2 GHC itself, i.e. the core libs are both host and
# target.
targetLibs =
let
basePackageSet =
if hostPlatform != targetPlatform
then targetPackages
else pkgsHostTarget;
in
{
inherit (basePackageSet) gmp ncurses;
# dynamic inherits are not possible in Nix
libffi = basePackageSet.${libffi_name};
};

# C compiler, bintools and LLVM are used at build time, but will also leak into
# the resulting GHC's settings file and used at runtime. This means that we are
# currently only able to build GHC if hostPlatform == buildPlatform.
assert targetCC == pkgsHostTarget.targetPackages.stdenv.cc;
assert buildTargetLlvmPackages.llvm == llvmPackages.llvm;
assert stdenv.targetPlatform.isDarwin -> buildTargetLlvmPackages.clang == llvmPackages.clang;
in

stdenv.mkDerivation (rec {
version = "8.10.7";
Expand Down Expand Up @@ -277,6 +322,8 @@ stdenv.mkDerivation (rec {
for env in $(env | grep '^TARGET_' | sed -E 's|\+?=.*||'); do
export "''${env#TARGET_}=''${!env}"
done
# Stage0 (build->build) which builds stage 1
export GHC="${bootPkgs.ghc}/bin/ghc"
# GHC is a bit confused on its cross terminology, as these would normally be
# the *host* tools.
export CC="${toolPath "cc" targetCC}"
Expand All @@ -289,6 +336,7 @@ stdenv.mkDerivation (rec {
export RANLIB="${toolPath "ranlib" targetCC}"
export READELF="${toolPath "readelf" targetCC}"
export STRIP="${toolPath "strip" targetCC}"
export OBJDUMP="${toolPath "objdump" targetCC}"
'' + lib.optionalString (stdenv.targetPlatform.linker == "cctools") ''
export OTOOL="${toolPath "otool" targetCC}"
export INSTALL_NAME_TOOL="${toolPath "install_name_tool" targetCC}"
Expand All @@ -297,8 +345,22 @@ stdenv.mkDerivation (rec {
export OPT="${lib.getBin buildTargetLlvmPackages.llvm}/bin/opt"
'' + lib.optionalString (useLLVM && stdenv.targetPlatform.isDarwin) ''
# LLVM backend on Darwin needs clang: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/codegens.html#llvm-code-generator-fllvm
export CLANG="${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang"
# The executable we specify via $CLANG is used as an assembler (exclusively, it seems, but this isn't
# clarified in any user facing documentation). As such, it'll be called on assembly produced by $CC
# which usually comes from the darwin stdenv. To prevent a situation where $CLANG doesn't understand
# the assembly it is given, we need to make sure that it matches the LLVM version of $CC if possible.
# It is unclear (at the time of writing 2024-09-01) whether $CC should match the LLVM version we use
# for llc and opt which would require using a custom darwin stdenv for targetCC.
export CLANG="${
if targetCC.isClang
then toolPath "clang" targetCC
else "${buildTargetLlvmPackages.clang}/bin/${buildTargetLlvmPackages.clang.targetPrefix}clang"
}"
'' + ''
# No need for absolute paths since these tools only need to work during the build
export CC_STAGE0="$CC_FOR_BUILD"
export LD_STAGE0="$LD_FOR_BUILD"
export AR_STAGE0="$AR_FOR_BUILD"
echo -n "${buildMK}" > mk/build.mk
sed -i -e 's|-isysroot /Developer/SDKs/MacOSX10.5.sdk||' configure
Expand Down Expand Up @@ -329,21 +391,26 @@ stdenv.mkDerivation (rec {
done
'';

# Although it is usually correct to pass --host, we don't do that here because
# GHC's usage of build, host, and target is non-standard.
# See https://gitlab.haskell.org/ghc/ghc/-/wikis/building/cross-compiling
# TODO(@Ericson2314): Always pass "--target" and always prefix.
configurePlatforms = [ "build" "host" ]
++ lib.optional (targetPlatform != hostPlatform) "target";
configurePlatforms = [ "build" ]
++ lib.optional (buildPlatform != hostPlatform || targetPlatform != hostPlatform) "target";

# `--with` flags for libraries needed for RTS linker
configureFlags = [
"--datadir=$doc/share/doc/ghc"
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
] ++ lib.optionals enableTerminfo [
"--with-curses-includes=${lib.getDev targetLibs.ncurses}/include"
"--with-curses-libraries=${lib.getLib targetLibs.ncurses}/lib"
] ++ lib.optionals (args.${libffi_name} != null) [
"--with-system-libffi"
"--with-ffi-includes=${targetPackages.${libffi_name}.dev}/include"
"--with-ffi-libraries=${targetPackages.${libffi_name}.out}/lib"
"--with-ffi-includes=${targetLibs.libffi.dev}/include"
"--with-ffi-libraries=${targetLibs.libffi.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && !enableIntegerSimple) [
"--with-gmp-includes=${targetPackages.gmp.dev}/include"
"--with-gmp-libraries=${targetPackages.gmp.out}/lib"
"--with-gmp-includes=${targetLibs.gmp.dev}/include"
"--with-gmp-libraries=${targetLibs.gmp.out}/lib"
] ++ lib.optionals (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
"--with-iconv-includes=${libiconv}/include"
"--with-iconv-libraries=${libiconv}/lib"
Expand All @@ -355,6 +422,8 @@ stdenv.mkDerivation (rec {
"CONF_GCC_LINKER_OPTS_STAGE2=-fuse-ld=gold"
] ++ lib.optionals (disableLargeAddressSpace) [
"--disable-large-address-space"
] ++ lib.optionals enableUnregisterised [
"--enable-unregisterised"
];

# Make sure we never relax`$PATH` and hooks support for compatibility.
Expand All @@ -365,17 +434,35 @@ stdenv.mkDerivation (rec {

nativeBuildInputs = [
perl autoreconfHook autoconf automake m4 python3
ghc bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
bootPkgs.alex bootPkgs.happy bootPkgs.hscolour
bootPkgs.ghc-settings-edit
] ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
autoSignDarwinBinariesHook
] ++ lib.optionals enableDocs [
sphinx
];

# Everything the stage0 compiler needs to build stage1: CC, bintools, extra libs.
# See also GHC, {CC,LD,AR}_STAGE0 in preConfigure.
depsBuildBuild = [
# N.B. We do not declare bootPkgs.ghc in any of the stdenv.mkDerivation
# dependency lists to prevent the bintools setup hook from adding ghc's
# lib directory to the linker flags. Instead we tell configure about it
# via the GHC environment variable.
buildCC
# stage0 builds terminfo unconditionally, so we always need ncurses
ncurses
];
# For building runtime libs
depsBuildTarget = toolsForTarget;

buildInputs = [ perl bash ] ++ (libDeps hostPlatform);
# Prevent stage0 ghc from leaking into the final result. This was an issue
# with GHC 9.6.
disallowedReferences = [
bootPkgs.ghc
];

buildInputs = [ bash ] ++ (libDeps hostPlatform);

depsTargetTarget = map lib.getDev (libDeps targetPlatform);
depsTargetTargetPropagated = map (lib.getOutput "out") (libDeps targetPlatform);
Expand All @@ -402,6 +489,39 @@ stdenv.mkDerivation (rec {
requiredSystemFeatures = [ "big-parallel" ];

postInstall = ''
settingsFile="$out/lib/${targetPrefix}${passthru.haskellCompilerName}/settings"
# Make the installed GHC use the host->target tools.
ghc-settings-edit "$settingsFile" \
"C compiler command" "${toolPath "cc" installCC}" \
"Haskell CPP command" "${toolPath "cc" installCC}" \
"C++ compiler command" "${toolPath "c++" installCC}" \
"ld command" "${toolPath "ld${lib.optionalString useLdGold ".gold"}" installCC}" \
"Merge objects command" "${toolPath "ld${lib.optionalString useLdGold ".gold"}" installCC}" \
"ar command" "${toolPath "ar" installCC}" \
"ranlib command" "${toolPath "ranlib" installCC}"
''
+ lib.optionalString (stdenv.targetPlatform.linker == "cctools") ''
ghc-settings-edit "$settingsFile" \
"otool command" "${toolPath "otool" installCC}" \
"install_name_tool command" "${toolPath "install_name_tool" installCC}"
''
+ lib.optionalString useLLVM ''
ghc-settings-edit "$settingsFile" \
"LLVM llc command" "${lib.getBin llvmPackages.llvm}/bin/llc" \
"LLVM opt command" "${lib.getBin llvmPackages.llvm}/bin/opt"
''
+ lib.optionalString (useLLVM && stdenv.targetPlatform.isDarwin) ''
ghc-settings-edit "$settingsFile" \
"LLVM clang command" "${
# See comment for CLANG in preConfigure
if installCC.isClang
then toolPath "clang" installCC
else "${llvmPackages.clang}/bin/${llvmPackages.clang.targetPrefix}clang"
}"
''
+ ''
# Install the bash completion file.
install -D -m 444 utils/completion/ghc.bash $out/share/bash-completion/completions/${targetPrefix}ghc
'';
Expand All @@ -427,7 +547,8 @@ stdenv.mkDerivation (rec {
guibou
] ++ lib.teams.haskell.members;
timeout = 24 * 3600;
inherit (ghc.meta) license platforms;
platforms = lib.platforms.all;
inherit (bootPkgs.ghc.meta) license;
};

} // lib.optionalAttrs targetPlatform.useAndroidPrebuilt {
Expand Down
Loading