1{ stdenv, fetchzip, ocaml, findlib, jbuilder, cppo, easy-format, biniou }:
2let
3 pname = "yojson";
4 param =
5 if stdenv.lib.versionAtLeast ocaml.version "4.02" then {
6 version = "1.4.0";
7 sha256 = "0rzn4yihfi0psd2qmgrx5fvwpby87sqx4zws3ijf49f7wbpycccv";
8 buildInputs = [ jbuilder ];
9 extra = { inherit (jbuilder) installPhase; };
10 } else {
11 version = "1.2.3";
12 sha256 = "10dvkndgwanvw4agbjln7kgb1n9s6lii7jw82kwxczl5rd1sgmvl";
13 buildInputs = [];
14 extra = {
15 createFindlibDestdir = true;
16
17 makeFlags = "PREFIX=$(out)";
18
19 preBuild = "mkdir $out/bin";
20 };
21 };
22in
23stdenv.mkDerivation ({
24
25 name = "ocaml${ocaml.version}-${pname}-${param.version}";
26
27 src = fetchzip {
28 url = "https://github.com/mjambon/${pname}/archive/v${param.version}.tar.gz";
29 inherit (param) sha256;
30 };
31
32 buildInputs = [ ocaml findlib ] ++ param.buildInputs;
33
34 propagatedBuildInputs = [ cppo easy-format biniou ];
35
36 meta = with stdenv.lib; {
37 description = "An optimized parsing and printing library for the JSON format";
38 homepage = "http://mjambon.com/${pname}.html";
39 license = licenses.bsd3;
40 maintainers = [ maintainers.vbgl ];
41 platforms = ocaml.meta.platforms or [];
42 };
43} // param.extra)