From bad208a3e6f6c9db2be6945dd6c14c40e78e63ca 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. (cherry picked from commit 9b3a2e66b141733fe7cb5372f64d30b66445cccd) --- 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 55b2b03c893..95df3c97747 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";