about summary refs log tree commit diff
diff options
context:
space:
mode:
authorK900 <me@0upti.me>2024-05-10 16:44:25 +0300
committerK900 <me@0upti.me>2024-05-10 16:50:00 +0300
commit896763c24002ba756e03bf009d4fd6bb5597027d (patch)
treede53dab43b4c9368679988d87bd6f84a0eb2c5ef
parent9064e5d4825d12ed9cb3d1d2540341cccf933ed0 (diff)
kdePackages.mkKdeDerivation: add duplicate dependency detection
-rw-r--r--pkgs/kde/lib/mk-kde-derivation.nix16
1 files changed, 15 insertions, 1 deletions
diff --git a/pkgs/kde/lib/mk-kde-derivation.nix b/pkgs/kde/lib/mk-kde-derivation.nix
index 975d2e4af93ab..2a983782a4170 100644
--- a/pkgs/kde/lib/mk-kde-derivation.nix
+++ b/pkgs/kde/lib/mk-kde-derivation.nix
@@ -88,6 +88,20 @@ in
     # but cross is currently very broken anyway, so we can figure this out later.
     deps = map (dep: self.${dep}) filteredDepNames;
 
+    traceDuplicateDeps = attrName: attrValue:
+      let
+        pretty = lib.generators.toPretty {};
+        duplicates = builtins.filter (dep: (builtins.elem (lib.getName dep) filteredDepNames)) attrValue;
+      in
+        if duplicates != []
+        then lib.warn "Duplicate dependencies in ${attrName} of package ${pname}: ${pretty duplicates}"
+        else lib.id;
+
+    traceAllDuplicateDeps = lib.flip lib.pipe [
+      (traceDuplicateDeps "extraBuildInputs" extraBuildInputs)
+      (traceDuplicateDeps "extraPropagatedBuildInputs" extraPropagatedBuildInputs)
+    ];
+
     defaultArgs = {
       inherit version src;
 
@@ -128,4 +142,4 @@ in
 
     pos = builtins.unsafeGetAttrPos "pname" args;
   in
-    stdenv.mkDerivation (defaultArgs // cleanArgs // { inherit meta pos; })
+    traceAllDuplicateDeps (stdenv.mkDerivation (defaultArgs // cleanArgs // { inherit meta pos; }))