summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/ocaml-modules/janestreet/ppx_optcomp-113_33_01.nix34
-rw-r--r--pkgs/top-level/ocaml-packages.nix6
2 files changed, 39 insertions, 1 deletions
diff --git a/pkgs/development/ocaml-modules/janestreet/ppx_optcomp-113_33_01.nix b/pkgs/development/ocaml-modules/janestreet/ppx_optcomp-113_33_01.nix
new file mode 100644
index 00000000000..05e7f40eb68
--- /dev/null
+++ b/pkgs/development/ocaml-modules/janestreet/ppx_optcomp-113_33_01.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchzip, ocaml, findlib, ocamlbuild, opam, topkg, oasis
+, ppx_core, ppx_tools
+}:
+
+let
+  param = {
+    "4.03" = {
+      version = "113.33.00+4.03";
+      sha256 = "1fkz6n40l4ck8bcr548d2yp08zc9fjv42zldlh0cj3ammhiz3gap";
+    };
+    "4.04" = {
+      version = "113.33.01+4.03";
+      sha256 = "1caw5dfgh5rw8mcgar0hdn485j1rqlnkbfb8wd0wdl5zhkg8jk3d";
+    };
+  }."${ocaml.meta.branch}";
+in
+
+stdenv.mkDerivation {
+  name = "ocaml${ocaml.version}-ppx_optcomp-${param.version}";
+  src = fetchzip {
+    url = "http://github.com/janestreet/ppx_optcomp/archive/${param.version}.tar.gz";
+    inherit (param) sha256;
+  };
+
+  buildInputs = [ ocaml findlib ocamlbuild opam oasis ppx_tools ];
+  propagatedBuildInputs = [ ppx_core ];
+
+  inherit (topkg) installPhase;
+
+  meta = {
+    license = stdenv.lib.licenses.asl20;
+    inherit (ocaml.meta) platforms;
+  };
+}
diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix
index d955f284914..218cb12e69e 100644
--- a/pkgs/top-level/ocaml-packages.nix
+++ b/pkgs/top-level/ocaml-packages.nix
@@ -559,7 +559,11 @@ let
       then callPackage ../development/ocaml-modules/janestreet/ppx_core-113_33_01.nix {}
       else callPackage ../development/ocaml-modules/janestreet/ppx-core.nix {};
 
-    ppx_optcomp = callPackage ../development/ocaml-modules/janestreet/ppx-optcomp.nix {};
+    ppx_optcomp =
+      if lib.versionOlder "4.03" ocaml.version
+      then callPackage ../development/ocaml-modules/janestreet/ppx_optcomp-113_33_01.nix {
+        oasis = ocaml_oasis; }
+      else callPackage ../development/ocaml-modules/janestreet/ppx-optcomp.nix {};
 
     ppx_driver = callPackage ../development/ocaml-modules/janestreet/ppx-driver.nix {};