From 9b3a2e66b141733fe7cb5372f64d30b66445cccd Mon Sep 17 00:00:00 2001 From: Simon Bruder Date: Sun, 16 May 2021 16:42:44 +0200 Subject: [PATCH] vapoursynth: improve plugin dependency resolution Some python packages (e.g. functools32) are conditionally disabled for certain interpreter versions by having them return null instead of a derivation. `getRecursivePropagatedBuildInputs` fails if such a package is part of the dependency tree. This commit makes it only recurse into derivations and ignore everything else. This also deduplicates the final plugin list to improve startup time. --- pkgs/development/libraries/vapoursynth/plugin-interface.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/development/libraries/vapoursynth/plugin-interface.nix b/pkgs/development/libraries/vapoursynth/plugin-interface.nix index 55b2b03c893e..95df3c97747f 100644 --- a/pkgs/development/libraries/vapoursynth/plugin-interface.nix +++ b/pkgs/development/libraries/vapoursynth/plugin-interface.nix @@ -8,10 +8,11 @@ plugins: let getRecursivePropagatedBuildInputs = pkgs: lib.flatten (map - (pkg: pkg.propagatedBuildInputs ++ (getRecursivePropagatedBuildInputs pkg.propagatedBuildInputs)) + (pkg: let cleanPropagatedBuildInputs = lib.filter lib.isDerivation pkg.propagatedBuildInputs; + in cleanPropagatedBuildInputs ++ (getRecursivePropagatedBuildInputs cleanPropagatedBuildInputs)) pkgs); - deepPlugins = plugins ++ (getRecursivePropagatedBuildInputs plugins); + deepPlugins = lib.unique (plugins ++ (getRecursivePropagatedBuildInputs plugins)); pluginsEnv = buildEnv { name = "vapoursynth-plugins-env";