ghc-8.6.3: use system libffi
Use the system `libffi` (`ie` nixpkgs's) instead of built-in libffi from ghc source tree. This will prevent library conflict when ghc dynamically links haskell packages (linked with ghc built-in libffi) and any external library which uses nixpkgs `libffi`. Closes https://github.com/NixOS/nixpkgs/pull/55208.
This commit is contained in:
parent
7f32b3db30
commit
a7c774300b
@ -6,6 +6,9 @@
|
|||||||
|
|
||||||
, libiconv ? null, ncurses
|
, libiconv ? null, ncurses
|
||||||
|
|
||||||
|
, # GHC can be built with system libffi or a bundled one.
|
||||||
|
libffi ? null
|
||||||
|
|
||||||
, useLLVM ? !stdenv.targetPlatform.isx86 || (stdenv.targetPlatform.isMusl && stdenv.hostPlatform != stdenv.targetPlatform)
|
, useLLVM ? !stdenv.targetPlatform.isx86 || (stdenv.targetPlatform.isMusl && stdenv.hostPlatform != stdenv.targetPlatform)
|
||||||
, # LLVM is conceptually a run-time-only depedendency, but for
|
, # LLVM is conceptually a run-time-only depedendency, but for
|
||||||
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
|
# non-x86, we need LLVM to bootstrap later stages, so it becomes a
|
||||||
@ -65,6 +68,7 @@ let
|
|||||||
|
|
||||||
# Splicer will pull out correct variations
|
# Splicer will pull out correct variations
|
||||||
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
|
libDeps = platform: stdenv.lib.optional enableTerminfo [ ncurses ]
|
||||||
|
++ [libffi]
|
||||||
++ stdenv.lib.optional (!enableIntegerSimple) gmp
|
++ stdenv.lib.optional (!enableIntegerSimple) gmp
|
||||||
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
|
++ stdenv.lib.optional (platform.libc != "glibc" && !targetPlatform.isWindows) libiconv;
|
||||||
|
|
||||||
@ -149,6 +153,7 @@ stdenv.mkDerivation (rec {
|
|||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--datadir=$doc/share/doc/ghc"
|
"--datadir=$doc/share/doc/ghc"
|
||||||
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
|
"--with-curses-includes=${ncurses.dev}/include" "--with-curses-libraries=${ncurses.out}/lib"
|
||||||
|
] ++ stdenv.lib.optionals (libffi != null) ["--with-system-libffi" "--with-ffi-includes=${libffi}/include" "--with-ffi-libraries=${libffi}/lib"
|
||||||
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && !enableIntegerSimple) [
|
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && !enableIntegerSimple) [
|
||||||
"--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
|
"--with-gmp-includes=${targetPackages.gmp.dev}/include" "--with-gmp-libraries=${targetPackages.gmp.out}/lib"
|
||||||
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
|
] ++ stdenv.lib.optional (targetPlatform == hostPlatform && hostPlatform.libc != "glibc" && !targetPlatform.isWindows) [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user