mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-19 08:36:41 +01:00
fd7a6ea0af
enableShared in generic-builder.nix should default to what the GHC compiler was compiled with. Add a passthru to all of the GHC compilers to hold the value of enableShared. If enableShared is not set in the GHC we just use false as the default value for enableSharedLibraries. Note: I may have missed some compilers. Only GHC & GHCJS are covered by this commit but this shouldn’t break evaluation of anything else.
100 lines
2.5 KiB
Nix
100 lines
2.5 KiB
Nix
{ stdenv
|
|
, callPackage
|
|
, fetchgit
|
|
, ghcjsSrcJson ? null
|
|
, ghcjsSrc ? fetchgit (builtins.fromJSON (builtins.readFile ghcjsSrcJson))
|
|
, bootPkgs
|
|
, alex
|
|
, happy
|
|
, stage0
|
|
, haskellLib
|
|
, cabal-install
|
|
, nodejs
|
|
, makeWrapper
|
|
, xorg
|
|
, gmp
|
|
, pkgconfig
|
|
, gcc
|
|
, lib
|
|
, nodePackages
|
|
, ghcjsDepOverrides ? (_:_:{})
|
|
}:
|
|
|
|
let
|
|
passthru = {
|
|
configuredSrc = callPackage ./configured-ghcjs-src.nix {
|
|
inherit ghcjsSrc alex happy;
|
|
inherit (bootPkgs) ghc;
|
|
};
|
|
genStage0 = callPackage ./mk-stage0.nix { inherit (passthru) configuredSrc; };
|
|
bootPkgs = bootPkgs.extend (lib.foldr lib.composeExtensions (_:_:{}) [
|
|
(self: _: import stage0 {
|
|
inherit (passthru) configuredSrc;
|
|
inherit (self) callPackage;
|
|
})
|
|
|
|
(callPackage ./common-overrides.nix { inherit haskellLib alex happy; })
|
|
ghcjsDepOverrides
|
|
]);
|
|
|
|
targetPrefix = "";
|
|
inherit bootGhcjs;
|
|
inherit (bootGhcjs) version;
|
|
isGhcjs = true;
|
|
|
|
enableShared = true;
|
|
|
|
socket-io = nodePackages."socket.io";
|
|
|
|
# Relics of the old GHCJS build system
|
|
stage1Packages = [];
|
|
mkStage2 = _: {};
|
|
|
|
haskellCompilerName = "ghcjs-${bootGhcjs.version}";
|
|
};
|
|
|
|
bootGhcjs = haskellLib.justStaticExecutables passthru.bootPkgs.ghcjs;
|
|
libexec = "${bootGhcjs}/libexec/${builtins.replaceStrings ["darwin" "i686"] ["osx" "i386"] stdenv.system}-${passthru.bootPkgs.ghc.name}/${bootGhcjs.name}";
|
|
|
|
in stdenv.mkDerivation {
|
|
name = bootGhcjs.name;
|
|
src = passthru.configuredSrc;
|
|
nativeBuildInputs = [
|
|
bootGhcjs
|
|
passthru.bootPkgs.ghc
|
|
cabal-install
|
|
nodejs
|
|
makeWrapper
|
|
xorg.lndir
|
|
gmp
|
|
pkgconfig
|
|
] ++ lib.optionals stdenv.isDarwin [
|
|
gcc # https://github.com/ghcjs/ghcjs/issues/663
|
|
];
|
|
dontConfigure = true;
|
|
dontInstall = true;
|
|
buildPhase = ''
|
|
export HOME=$TMP
|
|
mkdir $HOME/.cabal
|
|
touch $HOME/.cabal/config
|
|
cd lib/boot
|
|
|
|
mkdir -p $out/bin
|
|
mkdir -p $out/libexec
|
|
lndir ${libexec} $out/bin
|
|
|
|
wrapProgram $out/bin/ghcjs --add-flags "-B$out/libexec"
|
|
wrapProgram $out/bin/haddock-ghcjs --add-flags "-B$out/libexec"
|
|
wrapProgram $out/bin/ghcjs-pkg --add-flags "--global-package-db=$out/libexec/package.conf.d"
|
|
|
|
env PATH=$out/bin:$PATH $out/bin/ghcjs-boot -j1 --with-ghcjs-bin $out/bin
|
|
'';
|
|
|
|
# We hard code -j1 as a temporary workaround for
|
|
# https://github.com/ghcjs/ghcjs/issues/654
|
|
# enableParallelBuilding = true;
|
|
|
|
inherit passthru;
|
|
|
|
meta.platforms = passthru.bootPkgs.ghc.meta.platforms;
|
|
}
|