ocamlPackages.logs: Optional dependency on lwt and cmdliner

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.
This commit is contained in:
Jules Aguillon 2023-07-04 14:05:47 +02:00 committed by Vincent Laporte
parent fb353d7ce6
commit b722b9ddff

View File

@ -3,10 +3,23 @@
, 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"
@ -23,14 +36,12 @@ stdenv.mkDerivation rec {
};
nativeBuildInputs = [ ocaml findlib ocamlbuild topkg ];
buildInputs = [ cmdliner lwt topkg ]
++ lib.optional fmtSupport fmt
++ lib.optional jsooSupport js_of_ocaml;
buildInputs = [ topkg ] ++ optional_buildInputs;
propagatedBuildInputs = [ result ];
strictDeps = true;
buildPhase = "${topkg.run} build --with-js_of_ocaml ${lib.boolToString jsooSupport} --with-fmt ${lib.boolToString fmtSupport}";
buildPhase = "${topkg.run} build ${lib.escapeShellArgs enable_flags}";
inherit (topkg) installPhase;