From b722b9ddffa719177373d0f1f299c8528e5fed85 Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Tue, 4 Jul 2023 14:05:47 +0200 Subject: [PATCH] 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. --- .../ocaml-modules/logs/default.nix | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/pkgs/development/ocaml-modules/logs/default.nix b/pkgs/development/ocaml-modules/logs/default.nix index 0b8ffed91e49..bd7326883829 100644 --- a/pkgs/development/ocaml-modules/logs/default.nix +++ b/pkgs/development/ocaml-modules/logs/default.nix @@ -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;