about summary refs log tree commit diff
path: root/pkgs/development/ocaml-modules
diff options
context:
space:
mode:
authorJules Aguillon <jules@j3s.fr>2023-07-04 14:05:47 +0200
committerVincent Laporte <vbgl@users.noreply.github.com>2024-01-02 13:38:23 +0100
commitb722b9ddffa719177373d0f1f299c8528e5fed85 (patch)
tree53dd52a407e988f38722accd0fd39a618bf066f6 /pkgs/development/ocaml-modules
parentfb353d7ce61f74cd0eec385a9537a87832c1c390 (diff)
downloadnixlib-b722b9ddffa719177373d0f1f299c8528e5fed85.tar
nixlib-b722b9ddffa719177373d0f1f299c8528e5fed85.tar.gz
nixlib-b722b9ddffa719177373d0f1f299c8528e5fed85.tar.bz2
nixlib-b722b9ddffa719177373d0f1f299c8528e5fed85.tar.lz
nixlib-b722b9ddffa719177373d0f1f299c8528e5fed85.tar.xz
nixlib-b722b9ddffa719177373d0f1f299c8528e5fed85.tar.zst
nixlib-b722b9ddffa719177373d0f1f299c8528e5fed85.zip
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.
Diffstat (limited to 'pkgs/development/ocaml-modules')
-rw-r--r--pkgs/development/ocaml-modules/logs/default.nix19
1 files 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;