nixpkgs/pkgs/development/tools/haskell/ghcjs/default.nix

88 lines
3.8 KiB
Nix
Raw Normal View History

{ nodejs, cabal, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm
, testFramework, testFrameworkHunit, testFrameworkQuickcheck2, time
, zlib, aeson, attoparsec, bzlib, dataDefault, ghcPaths, hashable
, haskellSrcExts, haskellSrcMeta, lens, optparseApplicative_0_11_0_1
, parallel, safe, shelly, split, stringsearch, syb, systemFileio
, systemFilepath, tar, terminfo, textBinary, unorderedContainers
, vector, wlPprintText, yaml, fetchgit, Cabal, CabalGhcjs, cabalInstall
, regexPosix, alex, happy, git, gnumake, gcc, autoconf, patch
, automake, libtool, cabalInstallGhcjs, gmp, base16Bytestring
2014-10-09 14:54:27 +00:00
, cryptohash, executablePath, transformersCompat, haddockApi
, haddock, hspec, xhtml, primitive, cacert, pkgs, ghc
}:
cabal.mkDerivation (self: rec {
pname = "ghcjs";
version = "0.1.0";
src = fetchgit {
url = git://github.com/ghcjs/ghcjs.git;
2014-11-30 09:12:35 +00:00
rev = "5c2d279982466e076223fcbe1e1096e22956e5a9";
sha256 = "0bc37b4e8bd039208a126fea39850c99459265cb273ac7237939cdbaee6ef71f";
};
shims = fetchgit {
url = git://github.com/ghcjs/shims.git;
2014-10-09 14:54:27 +00:00
rev = "5e11d33cb74f8522efca0ace8365c0dc994b10f6";
sha256 = "64be139022e6f662086103fca3838330006d38e6454bd3f7b66013031a47278e";
};
isLibrary = true;
isExecutable = true;
jailbreak = true;
noHaddock = true;
2014-11-17 06:08:11 +00:00
doCheck = false;
ghcjsPrim = cabal.mkDerivation (self: {
pname = "ghcjs-prim";
version = "0.1.0.0";
src = fetchgit {
url = git://github.com/ghcjs/ghcjs-prim.git;
2014-10-09 14:54:27 +00:00
rev = "915f263c06b7f4a246c6e02ecdf2b9a0550ed967";
sha256 = "34dd58b6e2d0ce780da46b509fc2701c28a7b2182f8d700b53a80981ac8bcf86";
};
buildDepends = [ primitive ];
});
buildDepends = [
filepath HTTP mtl network random stm time zlib aeson attoparsec
bzlib dataDefault ghcPaths hashable haskellSrcExts haskellSrcMeta
lens optparseApplicative_0_11_0_1 parallel safe shelly split
stringsearch syb systemFileio systemFilepath tar terminfo textBinary
unorderedContainers vector wlPprintText yaml
alex happy git gnumake gcc autoconf automake libtool patch gmp
2014-11-17 06:08:11 +00:00
base16Bytestring cryptohash executablePath haddockApi
transformersCompat QuickCheck haddock hspec xhtml
2014-11-17 06:08:11 +00:00
ghcjsPrim regexPosix
];
buildTools = [ nodejs git ];
testDepends = [
HUnit testFramework testFrameworkHunit
];
postConfigure = ''
echo Patching ghcjs with absolute paths to the Nix store
sed -i -e "s|getAppUserDataDirectory \"ghcjs\"|return \"$out/share/ghcjs\"|" \
src/Compiler/Info.hs
sed -i -e "s|str = \\[\\]|str = [\"--prefix=$out\", \"--libdir=$prefix/lib/$compiler\", \"--libsubdir=$pkgid\"]|" \
src-bin/Boot.hs
'';
2014-08-25 22:46:52 +00:00
libdir = "/share/ghcjs/${pkgs.stdenv.system}-${version}-${ghc.ghc.version}";
postInstall = ''
export HOME=$(pwd)
export GIT_SSL_CAINFO="${cacert}/etc/ca-bundle.crt"
git clone git://github.com/ghcjs/ghcjs-boot.git
cd ghcjs-boot
2014-12-01 10:53:38 +00:00
git checkout 8bf2861c0c776eec42e0a1833f220e36681e810c
git submodule update --init --recursive
( cd boot ; chmod u+w . ; ln -s .. ghcjs-boot )
chmod -R u+w . # because fetchgit made it read-only
2014-08-25 22:46:52 +00:00
local GHCJS_LIBDIR=$out${libdir}
2014-12-01 10:53:38 +00:00
mkdir -p $GHCJS_LIBDIR
cp -R ${shims} $GHCJS_LIBDIR/shims
${cabalInstallGhcjs}/bin/cabal-js update
PATH=$out/bin:${CabalGhcjs}/bin:$PATH LD_LIBRARY_PATH=${gmp}/lib:${gcc.gcc}/lib64:$LD_LIBRARY_PATH \
env -u GHC_PACKAGE_PATH $out/bin/ghcjs-boot --dev --with-cabal ${cabalInstallGhcjs}/bin/cabal-js --with-gmp-includes ${gmp}/include --with-gmp-libraries ${gmp}/lib
'';
meta = {
homepage = "https://github.com/ghcjs/ghcjs";
description = "GHCJS is a Haskell to JavaScript compiler that uses the GHC API";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
maintainers = [ self.stdenv.lib.maintainers.jwiegley ];
};
})