about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorobadz <dav-github@odav.org>2016-04-09 03:25:04 +0100
committerobadz <dav-github@odav.org>2016-04-11 15:24:56 +0100
commit7f2163fc97d422bf19f71f09f4c813e49b1fcc8e (patch)
treee5309dc00b6a8cefe80d1fd935550d5e2fdb7a6c /pkgs/development
parente8b3532d26c15f308c4b597128da8b3b9554e932 (diff)
downloadnixlib-7f2163fc97d422bf19f71f09f4c813e49b1fcc8e.tar
nixlib-7f2163fc97d422bf19f71f09f4c813e49b1fcc8e.tar.gz
nixlib-7f2163fc97d422bf19f71f09f4c813e49b1fcc8e.tar.bz2
nixlib-7f2163fc97d422bf19f71f09f4c813e49b1fcc8e.tar.lz
nixlib-7f2163fc97d422bf19f71f09f4c813e49b1fcc8e.tar.xz
nixlib-7f2163fc97d422bf19f71f09f4c813e49b1fcc8e.tar.zst
nixlib-7f2163fc97d422bf19f71f09f4c813e49b1fcc8e.zip
haskellPackages.haste-compiler: fix so that it now builds and runs
Required adding:
haskellPackages.haste-Cabal, and
haskellPackages.haste-cabal-install
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix5
-rw-r--r--pkgs/development/tools/haskell/haste/haste-Cabal.nix35
-rw-r--r--pkgs/development/tools/haskell/haste/haste-cabal-install.nix46
-rw-r--r--pkgs/development/tools/haskell/haste/haste-compiler.nix32
4 files changed, 117 insertions, 1 deletions
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 1833ce3ffced..6dbbd40a6305 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -154,7 +154,6 @@ self: super: {
   gl = dontHaddock super.gl;
   groupoids = dontHaddock super.groupoids;
   hamlet = dontHaddock super.hamlet;
-  haste-compiler = dontHaddock super.haste-compiler;
   HaXml = dontHaddock super.HaXml;
   HDBC-odbc = dontHaddock super.HDBC-odbc;
   hoodle-core = dontHaddock super.hoodle-core;
@@ -964,4 +963,8 @@ self: super: {
   # https://github.com/danidiaz/pipes-transduce/issues/2
   pipes-transduce = super.pipes-transduce.override { foldl = self.foldl_1_1_6; };
 
+  # Haste stuff
+  haste-Cabal         = self.callPackage ../tools/haskell/haste/haste-Cabal.nix {};
+  haste-cabal-install = self.callPackage ../tools/haskell/haste/haste-cabal-install.nix { Cabal = self.haste-Cabal; HTTP = self.HTTP_4000_2_23; };
+  haste-compiler      = self.callPackage ../tools/haskell/haste/haste-compiler.nix { inherit overrideCabal; super-haste-compiler = super.haste-compiler; };
 }
diff --git a/pkgs/development/tools/haskell/haste/haste-Cabal.nix b/pkgs/development/tools/haskell/haste/haste-Cabal.nix
new file mode 100644
index 000000000000..45a60172e395
--- /dev/null
+++ b/pkgs/development/tools/haskell/haste/haste-Cabal.nix
@@ -0,0 +1,35 @@
+# Haste requires its own patched up version of Cabal that's not on hackage
+{ mkDerivation, array, base, binary, bytestring, containers
+, deepseq, directory, extensible-exceptions, filepath, old-time
+, pretty, process, QuickCheck, regex-posix, stdenv, tasty
+, tasty-hunit, tasty-quickcheck, time, unix
+, fetchFromGitHub
+}:
+
+mkDerivation {
+  pname = "Cabal";
+  version = "1.23.0.0";
+  src = fetchFromGitHub {
+    owner = "valderman";
+    repo = "cabal";
+    rev = "a1962987ba32d5e20090830f50c6afdc78dae005";
+    sha256 = "1gjmscfsikcvgkv6zricpfxvj23wxahndm784lg9cpxrc3pn5hvh";
+  };
+  libraryHaskellDepends = [
+    array base binary bytestring containers deepseq directory filepath
+      pretty process time unix
+  ];
+  testHaskellDepends = [
+    base bytestring containers directory extensible-exceptions filepath
+      old-time pretty process QuickCheck regex-posix tasty tasty-hunit
+      tasty-quickcheck unix
+  ];
+  prePatch = ''
+    rm -rf cabal-install
+    cd Cabal
+    '';
+  doCheck = false;
+  homepage = "http://www.haskell.org/cabal/";
+  description = "A framework for packaging Haskell software";
+  license = stdenv.lib.licenses.bsd3;
+}
diff --git a/pkgs/development/tools/haskell/haste/haste-cabal-install.nix b/pkgs/development/tools/haskell/haste/haste-cabal-install.nix
new file mode 100644
index 000000000000..dd140409173e
--- /dev/null
+++ b/pkgs/development/tools/haskell/haste/haste-cabal-install.nix
@@ -0,0 +1,46 @@
+# Haste requires its own patched up version of cabal-install that's not on hackage
+{ mkDerivation, array, base, bytestring, Cabal, containers
+, directory, extensible-exceptions, filepath, HTTP, mtl, network
+, network-uri, pretty, process, QuickCheck, random, regex-posix
+, stdenv, stm, tagged, tasty, tasty-hunit, tasty-quickcheck, time
+, unix, zlib
+, fetchFromGitHub
+}:
+
+mkDerivation {
+  pname = "cabal-install";
+  version = "1.23.0.0";
+  src = fetchFromGitHub {
+    owner = "valderman";
+    repo = "cabal";
+    rev = "a1962987ba32d5e20090830f50c6afdc78dae005";
+    sha256 = "1gjmscfsikcvgkv6zricpfxvj23wxahndm784lg9cpxrc3pn5hvh";
+  };
+  isLibrary = false;
+  isExecutable = true;
+  executableHaskellDepends = [
+    array base bytestring Cabal containers directory filepath HTTP mtl
+    network network-uri pretty process random stm time unix zlib
+  ];
+  testHaskellDepends = [
+    array base bytestring Cabal containers directory
+    extensible-exceptions filepath HTTP mtl network network-uri pretty
+    process QuickCheck random regex-posix stm tagged tasty tasty-hunit
+    tasty-quickcheck time unix zlib
+  ];
+  prePatch = ''
+    rm -rf Cabal
+    cd cabal-install
+  '';
+  postInstall = ''
+    mkdir $out/etc
+    mv bash-completion $out/etc/bash_completion.d
+
+    # Manually added by Nix maintainer
+    mv -v $out/etc/bash_completion.d/cabal $out/etc/bash_completion.d/haste-cabal
+  '';
+  doCheck = false;
+  homepage = "http://www.haskell.org/cabal/";
+  description = "The command-line interface for Cabal and Hackage";
+  license = stdenv.lib.licenses.bsd3;
+}
diff --git a/pkgs/development/tools/haskell/haste/haste-compiler.nix b/pkgs/development/tools/haskell/haste/haste-compiler.nix
new file mode 100644
index 000000000000..54a247af6284
--- /dev/null
+++ b/pkgs/development/tools/haskell/haste/haste-compiler.nix
@@ -0,0 +1,32 @@
+{ overrideCabal
+, super-haste-compiler
+}:
+
+overrideCabal super-haste-compiler (drv: {
+  configureFlags = [ "-f-portable" ];
+  prePatch = ''
+    # Get ghc libdir by invoking ghc and point to haste-cabal binary
+    substituteInPlace src/Haste/Environment.hs \
+      --replace \
+        'hasteGhcLibDir = hasteSysDir' \
+        'hasteGhcLibDir = head $ lines $ either (error . show) id $ unsafePerformIO $ shell $ run "ghc" ["--print-libdir"] ""' \
+      --replace \
+        'hasteCabalBinary = hasteBinDir </> "haste-cabal" ++ binaryExt' \
+        'hasteCabalBinary = "haste-cabal" ++ binaryExt'
+
+    # Don't try to download/install haste-cabal in haste-boot:
+    patch src/haste-boot.hs << EOF
+    @@ -178,10 +178,6 @@
+                             pkgSysLibDir, jsmodSysDir, pkgSysDir]
+
+           mkdir True (hasteCabalRootDir portableHaste)
+    -      case getHasteCabal cfg of
+    -        Download    -> installHasteCabal portableHaste tmpdir
+    -        Prebuilt fp -> copyHasteCabal portableHaste fp
+    -        Source mdir -> buildHasteCabal portableHaste (maybe "../cabal" id mdir)
+
+           -- Spawn off closure download in the background.
+           dir <- pwd -- use absolute path for closure to avoid dir changing race
+    EOF
+  '';
+})