mirror of
https://github.com/urbit/shrub.git
synced 2024-12-25 04:52:06 +03:00
d72db74492
By way of ensuring the lmdb package's cabal extra-libraries field is ignored and our lmdb overlay is used. Don't ask.
91 lines
2.5 KiB
Nix
91 lines
2.5 KiB
Nix
{ lib, stdenv, darwin, haskell-nix, lmdb, gmp, zlib, libffi, brass
|
|
, enableStatic ? stdenv.hostPlatform.isStatic }:
|
|
|
|
haskell-nix.stackProject {
|
|
compiler-nix-name = "ghc884";
|
|
index-state = "2020-09-24T00:00:00Z";
|
|
|
|
# This is incredibly difficult to get right, almost everything goes wrong.
|
|
# See: https://github.com/input-output-hk/haskell.nix/issues/496
|
|
src = haskell-nix.haskellLib.cleanSourceWith {
|
|
# Otherwise this depends on the name in the parent directory, which
|
|
# reduces caching, and is particularly bad on Hercules.
|
|
# See: https://github.com/hercules-ci/support/issues/40
|
|
name = "urbit-hs";
|
|
src = ../../../pkg/hs;
|
|
};
|
|
|
|
modules = [{
|
|
# This corresponds to the set of packages (boot libs) that ship with GHC.
|
|
# We declare them yere to ensure any dependency gets them from GHC itself
|
|
# rather than trying to re-install them into the package database.
|
|
nonReinstallablePkgs = [
|
|
"Cabal"
|
|
"Win32"
|
|
"array"
|
|
"base"
|
|
"binary"
|
|
"bytestring"
|
|
"containers"
|
|
"deepseq"
|
|
"directory"
|
|
"filepath"
|
|
"ghc"
|
|
"ghc-boot"
|
|
"ghc-boot-th"
|
|
"ghc-compact"
|
|
"ghc-heap"
|
|
"ghc-prim"
|
|
"ghci"
|
|
"ghcjs-prim"
|
|
"ghcjs-th"
|
|
"haskeline"
|
|
"hpc"
|
|
"integer-gmp"
|
|
"integer-simple"
|
|
"mtl"
|
|
"parsec"
|
|
"pretty"
|
|
"process"
|
|
"rts"
|
|
"stm"
|
|
"template-haskell"
|
|
"terminfo"
|
|
"text"
|
|
"time"
|
|
"transformers"
|
|
"unix"
|
|
"xhtml"
|
|
];
|
|
|
|
# Override various project-local flags and build configuration.
|
|
packages = {
|
|
urbit-king.components.exes.urbit-king = {
|
|
enableStatic = enableStatic;
|
|
enableShared = !enableStatic;
|
|
|
|
configureFlags = lib.optionals enableStatic [
|
|
"--ghc-option=-optl=-L${lmdb}/lib"
|
|
"--ghc-option=-optl=-L${gmp}/lib"
|
|
"--ghc-option=-optl=-L${libffi}/lib"
|
|
"--ghc-option=-optl=-L${zlib}/lib"
|
|
] ++ lib.optionals (enableStatic && stdenv.isDarwin)
|
|
[ "--ghc-option=-optl=-L${darwin.libiconv}/lib" ];
|
|
|
|
postInstall = lib.optionalString (enableStatic && stdenv.isDarwin) ''
|
|
find "$out/bin" -type f -exec \
|
|
install_name_tool -change \
|
|
${stdenv.cc.libc}/lib/libSystem.B.dylib \
|
|
/usr/lib/libSystem.B.dylib {} \;
|
|
'';
|
|
};
|
|
|
|
urbit-king.components.tests.urbit-king-tests.testFlags =
|
|
[ "--brass-pill=${brass.lfs}" ];
|
|
|
|
lmdb.components.library.libs = lib.mkForce [ lmdb ];
|
|
};
|
|
}];
|
|
}
|
|
|