diff options
Diffstat (limited to 'pkgs/build-support/ocaml/dune.nix')
-rw-r--r-- | pkgs/build-support/ocaml/dune.nix | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/pkgs/build-support/ocaml/dune.nix b/pkgs/build-support/ocaml/dune.nix new file mode 100644 index 00000000000..7386b07f575 --- /dev/null +++ b/pkgs/build-support/ocaml/dune.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, ocaml, findlib, dune, opaline }: + +{ pname, version, buildInputs ? [], ... }@args: + +if args ? minimumOCamlVersion && + ! stdenv.lib.versionAtLeast ocaml.version args.minimumOCamlVersion +then throw "${pname}-${version} is not available for OCaml ${ocaml.version}" +else + +stdenv.mkDerivation ({ + + buildPhase = '' + runHook preBuild + dune build -p ${pname} + runHook postBuild + ''; + checkPhase = '' + runHook preCheck + dune runtest -p ${pname} + runHook postCheck + ''; + installPhase = '' + runHook preInstall + ${opaline}/bin/opaline -prefix $out -libdir $OCAMLFIND_DESTDIR + runHook postInstall + ''; + + meta.platform = ocaml.meta.platform; + +} // args // { + + name = "ocaml${ocaml.version}-${pname}-${version}"; + + buildInputs = [ ocaml dune findlib ] ++ buildInputs; + +}) |