diff --git a/pkgs/development/ocaml-modules/ppxlib/default.nix b/pkgs/development/ocaml-modules/ppxlib/default.nix index bbaf9e27cf4d..8821e5621295 100644 --- a/pkgs/development/ocaml-modules/ppxlib/default.nix +++ b/pkgs/development/ocaml-modules/ppxlib/default.nix @@ -1,23 +1,30 @@ -{ stdenv, fetchFromGitHub, buildDunePackage -, version ? "0.8.1" +{ lib, fetchFromGitHub, buildDunePackage, ocaml +, legacy ? false , ocaml-compiler-libs, ocaml-migrate-parsetree, ppx_derivers, stdio }: -let sha256 = - { "0.8.1" = "0vm0jajmg8135scbg0x60ivyy5gzv4abwnl7zls2mrw23ac6kml6"; - "0.12.0" = "1cg0is23c05k1rc94zcdz452p9zn11dpqxm1pnifwx5iygz3w0a1"; - }."${version}" -; in +let param = + if legacy then { + version = "0.8.1"; + sha256 = "0vm0jajmg8135scbg0x60ivyy5gzv4abwnl7zls2mrw23ac6kml6"; + } else { + version = "0.12.0"; + sha256 = "1cg0is23c05k1rc94zcdz452p9zn11dpqxm1pnifwx5iygz3w0a1"; + }; in + +if lib.versionAtLeast ocaml.version "4.10" && legacy +then throw "ppxlib-${param.version} is not available for OCaml ${ocaml.version}" +else buildDunePackage rec { pname = "ppxlib"; - inherit version; + inherit (param) version; src = fetchFromGitHub { owner = "ocaml-ppx"; repo = pname; rev = version; - inherit sha256; + inherit (param) sha256; }; propagatedBuildInputs = [ @@ -26,8 +33,8 @@ buildDunePackage rec { meta = { description = "Comprehensive ppx tool set"; - license = stdenv.lib.licenses.mit; - maintainers = [ stdenv.lib.maintainers.vbgl ]; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.vbgl ]; inherit (src.meta) homepage; }; } diff --git a/pkgs/top-level/ocaml-packages.nix b/pkgs/top-level/ocaml-packages.nix index eafd45217071..2ab0e100adab 100644 --- a/pkgs/top-level/ocaml-packages.nix +++ b/pkgs/top-level/ocaml-packages.nix @@ -413,9 +413,7 @@ let js_of_ocaml-ppx = callPackage ../development/tools/ocaml/js_of_ocaml/ppx.nix {}; - js_of_ocaml-ppx_deriving_json = callPackage ../development/tools/ocaml/js_of_ocaml/ppx_deriving_json.nix { - ppxlib = ppxlib.override { version = "0.12.0"; }; - }; + js_of_ocaml-ppx_deriving_json = callPackage ../development/tools/ocaml/js_of_ocaml/ppx_deriving_json.nix { }; js_of_ocaml-tyxml = callPackage ../development/tools/ocaml/js_of_ocaml/tyxml.nix {}; @@ -815,7 +813,9 @@ let ppx_deriving_protobuf = callPackage ../development/ocaml-modules/ppx_deriving_protobuf {}; - ppx_deriving_rpc = callPackage ../development/ocaml-modules/ppx_deriving_rpc {}; + ppx_deriving_rpc = callPackage ../development/ocaml-modules/ppx_deriving_rpc { + ppxlib = ppxlib.override { legacy = true; }; + }; ppx_deriving_yojson = callPackage ../development/ocaml-modules/ppx_deriving_yojson {}; @@ -824,7 +824,6 @@ let ppx_import = callPackage ../development/ocaml-modules/ppx_import {}; ppx_irmin = callPackage ../development/ocaml-modules/irmin/ppx.nix { - ppxlib = ppxlib.override { version = "0.12.0"; }; }; ppx_sqlexpr = callPackage ../development/ocaml-modules/sqlexpr/ppx.nix {}; @@ -965,20 +964,21 @@ let janeStreet = if lib.versionOlder "4.08" ocaml.version then import ../development/ocaml-modules/janestreet/0.13.nix { - inherit ctypes janePackage num octavius re; + inherit ctypes janePackage num octavius ppxlib re; inherit (pkgs) openssl; - ppxlib = ppxlib.override { version = "0.12.0"; }; } else if lib.versionOlder "4.07" ocaml.version then import ../development/ocaml-modules/janestreet/0.12.nix { - inherit ctypes janePackage num octavius ppxlib re; + inherit ctypes janePackage num octavius re; inherit (pkgs) openssl; + ppxlib = ppxlib.override { legacy = true; }; } else import ../development/ocaml-modules/janestreet { inherit janePackage ocamlbuild angstrom ctypes cryptokit; inherit magic-mime num ocaml-migrate-parsetree octavius ounit; - inherit ppx_deriving re ppxlib; + inherit ppx_deriving re; inherit (pkgs) openssl; + ppxlib = ppxlib.override { legacy = true; }; }; janeStreet_0_9_0 = import ../development/ocaml-modules/janestreet/old.nix {