Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 lib,
3 stdenv,
4 ocaml_oasis,
5 ocaml,
6 findlib,
7 ocamlbuild,
8}:
9
10{
11 pname,
12 version,
13 nativeBuildInputs ? [ ],
14 meta ? {
15 platforms = ocaml.meta.platforms or [ ];
16 },
17 minimumOCamlVersion ? null,
18 createFindlibDestdir ? true,
19 dontStrip ? true,
20 ...
21}@args:
22
23if args ? minimumOCamlVersion && lib.versionOlder ocaml.version args.minimumOCamlVersion then
24 throw "${pname}-${version} is not available for OCaml ${ocaml.version}"
25else
26
27 stdenv.mkDerivation (
28 args
29 // {
30 name = "ocaml${ocaml.version}-${pname}-${version}";
31
32 nativeBuildInputs = [
33 ocaml
34 findlib
35 ocamlbuild
36 ocaml_oasis
37 ]
38 ++ nativeBuildInputs;
39
40 inherit createFindlibDestdir;
41 inherit dontStrip;
42
43 strictDeps = true;
44
45 buildPhase = ''
46 runHook preBuild
47 oasis setup
48 ocaml setup.ml -configure --prefix $OCAMLFIND_DESTDIR --exec-prefix $out
49 ocaml setup.ml -build
50 runHook postBuild
51 '';
52
53 checkPhase = ''
54 runHook preCheck
55 ocaml setup.ml -test
56 runHook postCheck
57 '';
58
59 installPhase = ''
60 runHook preInstall
61 mkdir -p $out
62 ocaml setup.ml -install
63 runHook postInstall
64 '';
65
66 }
67 )