nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at fix-function-merge 55 lines 1.7 kB view raw
1{ lib, stdenv, fetchurl, ocaml, findlib, ocamlbuild 2, topkg, result, lwt, cmdliner, fmt 3, fmtSupport ? lib.versionAtLeast ocaml.version "4.08" 4, js_of_ocaml 5, jsooSupport ? true 6, lwtSupport ? true 7, cmdlinerSupport ? true 8}: 9let 10 pname = "logs"; 11 webpage = "https://erratique.ch/software/${pname}"; 12 13 optional_deps = [ 14 { pkg = js_of_ocaml; enable_flag = "--with-js_of_ocaml"; enabled = jsooSupport; } 15 { pkg = fmt; enable_flag = "--with-fmt"; enabled = fmtSupport; } 16 { pkg = lwt; enable_flag = "--with-lwt"; enabled = lwtSupport; } 17 { pkg = cmdliner; enable_flag = "--with-cmdliner"; enabled = cmdlinerSupport; } 18 ]; 19 enable_flags = 20 lib.concatMap (d: [ d.enable_flag (lib.boolToString d.enabled)]) optional_deps; 21 optional_buildInputs = 22 map (d: d.pkg) (lib.filter (d: d.enabled) optional_deps); 23in 24 25if lib.versionOlder ocaml.version "4.03" 26then throw "logs is not available for OCaml ${ocaml.version}" 27else 28 29stdenv.mkDerivation rec { 30 name = "ocaml${ocaml.version}-${pname}-${version}"; 31 version = "0.7.0"; 32 33 src = fetchurl { 34 url = "${webpage}/releases/${pname}-${version}.tbz"; 35 sha256 = "1jnmd675wmsmdwyb5mx5b0ac66g4c6gpv5s4mrx2j6pb0wla1x46"; 36 }; 37 38 nativeBuildInputs = [ ocaml findlib ocamlbuild topkg ]; 39 buildInputs = [ topkg ] ++ optional_buildInputs; 40 propagatedBuildInputs = [ result ]; 41 42 strictDeps = true; 43 44 buildPhase = "${topkg.run} build ${lib.escapeShellArgs enable_flags}"; 45 46 inherit (topkg) installPhase; 47 48 meta = with lib; { 49 description = "Logging infrastructure for OCaml"; 50 homepage = webpage; 51 inherit (ocaml.meta) platforms; 52 maintainers = [ maintainers.sternenseemann ]; 53 license = licenses.isc; 54 }; 55}