mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-18 11:44:07 +00:00
b722b9ddff
These are optional dependencies for the library. Making them optional is useful to reduce the size of other packages. By default, the dependencies are all provided and the output is unchanged.
56 lines
1.6 KiB
Nix
56 lines
1.6 KiB
Nix
{ lib, stdenv, fetchurl, ocaml, findlib, ocamlbuild
|
|
, topkg, result, lwt, cmdliner, fmt
|
|
, fmtSupport ? lib.versionAtLeast ocaml.version "4.08"
|
|
, js_of_ocaml
|
|
, jsooSupport ? true
|
|
, lwtSupport ? true
|
|
, cmdlinerSupport ? true
|
|
}:
|
|
let
|
|
pname = "logs";
|
|
webpage = "https://erratique.ch/software/${pname}";
|
|
|
|
optional_deps = [
|
|
{ pkg = js_of_ocaml; enable_flag = "--with-js_of_ocaml"; enabled = jsooSupport; }
|
|
{ pkg = fmt; enable_flag = "--with-fmt"; enabled = fmtSupport; }
|
|
{ pkg = lwt; enable_flag = "--with-lwt"; enabled = lwtSupport; }
|
|
{ pkg = cmdliner; enable_flag = "--with-cmdliner"; enabled = cmdlinerSupport; }
|
|
];
|
|
enable_flags =
|
|
lib.concatMap (d: [ d.enable_flag (lib.boolToString d.enabled)]) optional_deps;
|
|
optional_buildInputs =
|
|
map (d: d.pkg) (lib.filter (d: d.enabled) optional_deps);
|
|
in
|
|
|
|
if lib.versionOlder ocaml.version "4.03"
|
|
then throw "logs is not available for OCaml ${ocaml.version}"
|
|
else
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "ocaml${ocaml.version}-${pname}-${version}";
|
|
version = "0.7.0";
|
|
|
|
src = fetchurl {
|
|
url = "${webpage}/releases/${pname}-${version}.tbz";
|
|
sha256 = "1jnmd675wmsmdwyb5mx5b0ac66g4c6gpv5s4mrx2j6pb0wla1x46";
|
|
};
|
|
|
|
nativeBuildInputs = [ ocaml findlib ocamlbuild topkg ];
|
|
buildInputs = [ topkg ] ++ optional_buildInputs;
|
|
propagatedBuildInputs = [ result ];
|
|
|
|
strictDeps = true;
|
|
|
|
buildPhase = "${topkg.run} build ${lib.escapeShellArgs enable_flags}";
|
|
|
|
inherit (topkg) installPhase;
|
|
|
|
meta = with lib; {
|
|
description = "Logging infrastructure for OCaml";
|
|
homepage = webpage;
|
|
inherit (ocaml.meta) platforms;
|
|
maintainers = [ maintainers.sternenseemann ];
|
|
license = licenses.isc;
|
|
};
|
|
}
|