ghcWithPackages: handle the boot dylib links separately for GHC 9.6
From GHC 9.6 on, the boot libraries (dependencies of the ghc library) are present in a separate directory after the installation, and thus the wrapper environment provided by ghcWithPackages needs to handle the links to the boot dynamic libraries separately than other ordinary ones.
This commit is contained in:
parent
91c754d381
commit
b1600b5672
1 changed files with 13 additions and 1 deletions
|
@ -55,6 +55,12 @@ let
|
|||
libDir = if isHaLVM then "$out/lib/HaLVM-${ghc.version}"
|
||||
else "$out/lib/${ghc.targetPrefix}${ghc.haskellCompilerName}"
|
||||
+ lib.optionalString (ghc ? hadrian) "/lib";
|
||||
# Boot libraries for GHC are present in a separate directory.
|
||||
bootLibDir = let arch = if stdenv.targetPlatform.isAarch64
|
||||
then "aarch64"
|
||||
else "x86_64";
|
||||
platform = if stdenv.targetPlatform.isDarwin then "osx" else "linux";
|
||||
in "${ghc}/lib/${ghc.haskellCompilerName}/lib/${arch}-${platform}-${ghc.haskellCompilerName}";
|
||||
docDir = "$out/share/doc/ghc/html";
|
||||
packageCfgDir = "${libDir}/package.conf.d";
|
||||
paths = lib.concatLists (
|
||||
|
@ -131,11 +137,17 @@ symlinkJoin {
|
|||
'' + (lib.optionalString (stdenv.targetPlatform.isDarwin && !isGhcjs && !stdenv.targetPlatform.isiOS) ''
|
||||
# Work around a linker limit in macOS Sierra (see generic-builder.nix):
|
||||
local packageConfDir="${packageCfgDir}";
|
||||
local dynamicLinksDir="$out/lib/links"
|
||||
local dynamicLinksDir="$out/lib/links";
|
||||
mkdir -p $dynamicLinksDir
|
||||
# Clean up the old links that may have been (transitively) included by
|
||||
# symlinkJoin:
|
||||
rm -f $dynamicLinksDir/*
|
||||
|
||||
# Boot libraries are located differently than other libraries since GHC 9.6, so handle them separately.
|
||||
if [[ -x "${bootLibDir}" ]]; then
|
||||
ln -s "${bootLibDir}"/*.dylib $dynamicLinksDir
|
||||
fi
|
||||
|
||||
for d in $(grep -Poz "dynamic-library-dirs:\s*\K .+\n" $packageConfDir/*|awk '{print $2}'|sort -u); do
|
||||
ln -s $d/*.dylib $dynamicLinksDir
|
||||
done
|
||||
|
|
Loading…
Reference in a new issue