diff --git a/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix b/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix new file mode 100644 index 00000000000..33397e35aa6 --- /dev/null +++ b/pkgs/development/ocaml-modules/janestreet/buildOcamlJane.nix @@ -0,0 +1,30 @@ +{ buildOcaml, opam, js_build_tools, ocaml_oasis, fetchurl } : + +{ name, version ? "113.33.03", buildInputs ? [], + hash ? "", + minimumSupportedOcamlVersion ? "4.02", ... +}@args: + +buildOcaml (args // { + inherit name version minimumSupportedOcamlVersion; + src = fetchurl { + url = "https://github.com/janestreet/${name}/archive/${version}.tar.gz"; + sha256 = hash; + }; + + hasSharedObjects = true; + + buildInputs = [ ocaml_oasis js_build_tools opam ] ++ buildInputs; + + dontAddPrefix = true; + + configurePhase = "./configure --prefix $out"; + + buildPhase = "OCAML_TOPLEVEL_PATH=`ocamlfind query findlib`/.. make"; + + installPhase = '' + opam-installer -i --prefix $prefix --libdir `ocamlfind printconf destdir` --stubsdir `ocamlfind printconf destdir`/${name} ${name}.install + if [ -d $out/lib/${name} ]; then if [ "$(ls -A $out/lib/${name})" ]; then mv $out/lib/${name}/* `ocamlfind printconf destdir`/${name}; fi; rmdir $out/lib/${name}; fi + ''; + +}) diff --git a/pkgs/development/ocaml-modules/janestreet/ppx-core.nix b/pkgs/development/ocaml-modules/janestreet/ppx-core.nix new file mode 100644 index 00000000000..4f5bb87b767 --- /dev/null +++ b/pkgs/development/ocaml-modules/janestreet/ppx-core.nix @@ -0,0 +1,14 @@ +{stdenv, buildOcamlJane, ppx_tools}: + +buildOcamlJane rec { + name = "ppx_core"; + hash = "0df7vyai488lfkyh8szw2hvn22jsyrkfvq1b91j1s0g0y27nnfax"; + propagatedBuildInputs = + [ ppx_tools ]; + + meta = with stdenv.lib; { + description = "PPX standard library"; + maintainers = [ maintainers.maurer ]; + license = licenses.asl20; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 63642673465..a12f6c8740f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5504,6 +5504,11 @@ in # Jane Street js_build_tools = callPackage ../development/ocaml-modules/janestreet/js-build-tools.nix {}; + + buildOcamlJane = callPackage ../development/ocaml-modules/janestreet/buildOcamlJane.nix {}; + + ppx_core = callPackage ../development/ocaml-modules/janestreet/ppx-core.nix {}; + }; ocamlPackages = recurseIntoAttrs ocamlPackages_4_01_0;