nixpkgs/pkgs/development/libraries/haskell/ghc-mod/default.nix
John Wiegley f9ebbc80a1 haskell-ghc-mod: patch ghc-process.el to avoid hanging
@peti I've determined that the hang which this fixes does not happen all
of the time (in fact, I've been using ghc-mod for weeks without seeing
it once).  But today it happened again, and it made me realize I had
undone this patch locally.  I'm committing it now because it fixes the
problem completely for me, and certainly cannot hurt.
2014-06-26 22:55:25 -07:00

60 lines
2 KiB
Nix

{ cabal, Cabal, convertible, deepseq, doctest, emacs, filepath
, ghcSybUtils, hlint, hspec, ioChoice, syb, time, transformers
}:
cabal.mkDerivation (self: {
pname = "ghc-mod";
version = "4.1.3";
sha256 = "0n7nbjbiiphlasqfcxx15fa8axwd9csq2nh3r0wvkrgpsazdlw8c";
isLibrary = true;
isExecutable = true;
buildDepends = [
Cabal convertible deepseq filepath ghcSybUtils hlint ioChoice syb
time transformers
];
testDepends = [
Cabal convertible deepseq doctest filepath ghcSybUtils hlint hspec
ioChoice syb time transformers
];
buildTools = [ emacs ];
doCheck = false;
configureFlags = "--datasubdir=${self.pname}-${self.version}";
postInstall = ''
cd $out/share/$pname-$version
sed -i -e 's/"-b" "\\n" "-l"/"-l" "-b" "\\"\\\\n\\""/' ghc-process.el
make
rm Makefile
cd ..
ensureDir "$out/share/emacs"
mv $pname-$version emacs/site-lisp
mv $out/bin/ghc-mod $out/bin/.ghc-mod-wrapped
cat - > $out/bin/ghc-mod <<EOF
#! ${self.stdenv.shell}
COMMAND=\$1
shift
eval exec $out/bin/.ghc-mod-wrapped \$COMMAND \$( ${self.ghc.GHCGetPackages} ${self.ghc.version} | tr " " "\n" | tail -n +2 | paste -d " " - - | sed 's/.*/-g "&"/' | tr "\n" " ") "\$@"
EOF
chmod +x $out/bin/ghc-mod
mv $out/bin/ghc-modi $out/bin/.ghc-modi-wrapped
cat - > $out/bin/ghc-modi <<EOF
#! ${self.stdenv.shell}
COMMAND=\$1
shift
eval exec $out/bin/.ghc-modi-wrapped \$COMMAND \$( ${self.ghc.GHCGetPackages} ${self.ghc.version} | tr " " "\n" | tail -n +2 | paste -d " " - - | sed 's/.*/-g "&"/' | tr "\n" " ") "\$@"
EOF
chmod +x $out/bin/ghc-modi
'';
meta = {
homepage = "http://www.mew.org/~kazu/proj/ghc-mod/";
description = "Happy Haskell Programming";
license = self.stdenv.lib.licenses.bsd3;
platforms = self.ghc.meta.platforms;
maintainers = [
self.stdenv.lib.maintainers.andres
self.stdenv.lib.maintainers.bluescreen303
self.stdenv.lib.maintainers.ocharles
];
};
})