at 17.09-beta 40 lines 1.3 kB view raw
1{ stdenv, writeText, fetchFromGitHub, ocaml, ocamlbuild, ocplib-endian, sexplib, findlib, ppx_tools 2, async ? null, lwt ? null 3}: 4 5assert stdenv.lib.versionAtLeast ocaml.version "4.01"; 6 7let param = 8 if stdenv.lib.versionAtLeast ocaml.version "4.02" 9 then { version = "2.3.2"; sha256 = "1fykack86hvvqhwngddyxxqlwm3xjljfaszsjbdrvjlrd1nlg079"; } 10 else { version = "1.9.0"; sha256 = "1c1j21zgmxi9spq23imy7byn50qr7hlds1cfpzxlsx9dp309jngy"; }; 11in 12 13let opt = b: "--${if b != null then "en" else "dis"}able"; in 14 15stdenv.mkDerivation { 16 name = "ocaml${ocaml.version}-cstruct-${param.version}"; 17 18 src = fetchFromGitHub { 19 owner = "mirage"; 20 repo = "ocaml-cstruct"; 21 rev = "v${param.version}"; 22 inherit (param) sha256; 23 }; 24 25 configureFlags = [ "${opt lwt}-lwt" "${opt async}-async" "${opt ppx_tools}-ppx" ]; 26 27 buildInputs = [ ocaml findlib ocamlbuild ppx_tools lwt async ]; 28 propagatedBuildInputs = [ ocplib-endian sexplib ]; 29 30 createFindlibDestdir = true; 31 dontStrip = true; 32 33 meta = with stdenv.lib; { 34 homepage = https://github.com/mirage/ocaml-cstruct; 35 description = "Map OCaml arrays onto C-like structs"; 36 license = stdenv.lib.licenses.isc; 37 maintainers = [ maintainers.vbgl maintainers.ericbmerritt ]; 38 platforms = ocaml.meta.platforms or []; 39 }; 40}