diff options
Diffstat (limited to 'pkgs/build-support/ocaml/oasis.nix')
-rw-r--r-- | pkgs/build-support/ocaml/oasis.nix | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/pkgs/build-support/ocaml/oasis.nix b/pkgs/build-support/ocaml/oasis.nix new file mode 100644 index 00000000000..74977486f2f --- /dev/null +++ b/pkgs/build-support/ocaml/oasis.nix @@ -0,0 +1,46 @@ +{ stdenv, ocaml_oasis, ocaml, findlib, ocamlbuild }: + +{ pname, version, buildInputs ? [], meta ? { platforms = ocaml.meta.platforms or []; }, + minimumOCamlVersion ? null, + createFindlibDestdir ? true, + dontStrip ? true, + ... +}@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 (args // { + name = "ocaml${ocaml.version}-${pname}-${version}"; + + buildInputs = [ ocaml findlib ocamlbuild ocaml_oasis ] ++ buildInputs; + + inherit createFindlibDestdir; + inherit dontStrip; + + buildPhase = '' + runHook preBuild + oasis setup + ocaml setup.ml -configure + ocaml setup.ml -build + runHook postBuild + ''; + + checkPhase = '' + runHook preCheck + ocaml setup.ml -test + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out + sed -i s+/usr/local+$out+g setup.ml + sed -i s+/usr/local+$out+g setup.data + prefix=$OCAMLFIND_DESTDIR ocaml setup.ml -install + runHook postInstall + ''; + +}) |