summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/ocaml-modules/rope/default.nix38
1 files changed, 27 insertions, 11 deletions
diff --git a/pkgs/development/ocaml-modules/rope/default.nix b/pkgs/development/ocaml-modules/rope/default.nix
index a62c321a4e8..dfb8c56c23e 100644
--- a/pkgs/development/ocaml-modules/rope/default.nix
+++ b/pkgs/development/ocaml-modules/rope/default.nix
@@ -1,18 +1,34 @@
-{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, benchmark }:
+{ stdenv, fetchurl, ocaml, findlib, ocamlbuild, jbuilder, benchmark }:
 
-let version = "0.5"; in
+let param =
+  if stdenv.lib.versionAtLeast ocaml.version "4.03"
+  then {
+    version = "0.6";
+    url = " https://github.com/Chris00/ocaml-rope/releases/download/0.6/rope-0.6.tbz";
+    sha256 = "06pkbnkad2ck50jn59ggwv154yd9vb01abblihvam6p27m4za1pc";
+    buildInputs = [ jbuilder ];
+    extra = {
+      unpackCmd = "tar -xjf $curSrc";
+      buildPhase = "jbuilder build -p rope";
+      inherit (jbuilder) installPhase;
+    };
+  } else {
+    version = "0.5";
+    url = "https://forge.ocamlcore.org/frs/download.php/1156/rope-0.5.tar.gz";
+    sha256 = "05fr2f5ch2rqhyaj06rv5218sbg99p1m9pq5sklk04hpslxig21f";
+    buildInputs = [ ocamlbuild ];
+    extra = { createFindlibDestdir = true; };
+  };
+in
 
-stdenv.mkDerivation {
-  name = "ocaml${ocaml.version}-rope-${version}";
+stdenv.mkDerivation ({
+  name = "ocaml${ocaml.version}-rope-${param.version}";
 
-  src = fetchzip {
-    url = "https://forge.ocamlcore.org/frs/download.php/1156/rope-${version}.tar.gz";
-    sha256 = "1i8kzg19jrapl30mq8m91vy09z0r0dl4bnpw24ga96w8pxqf9qhd";
+  src = fetchurl {
+    inherit (param) url sha256;
   };
 
-  buildInputs = [ ocaml findlib ocamlbuild benchmark ];
-
-  createFindlibDestdir = true;
+  buildInputs = [ ocaml findlib benchmark ] ++ param.buildInputs;
 
   meta = {
     homepage = http://rope.forge.ocamlcore.org/;
@@ -21,4 +37,4 @@ stdenv.mkDerivation {
     license = stdenv.lib.licenses.lgpl21;
     maintainers = with stdenv.lib.maintainers; [ volth ];
   };
-}
+} // param.extra)