From bce37e7542986dc823242bf04829c06901eb9676 Mon Sep 17 00:00:00 2001 From: sternenseemann <0rpkxez4ksa01gb3typccl0i@systemli.org> Date: Wed, 3 Mar 2021 15:16:31 +0100 Subject: [PATCH] beets: refactor external plugins into top-level package set Instead of managing external plugins in the beets derivation, we introduce a new top-level package set beetsExternalPlugins which the beets derivation receives as an input. This change doesn't affect how the beets derivation is built or overridden, so the change won't be noticed by users, but it makes hydra evaluate and build external plugins which should benefit users of those plugins and prevent future regressions as we have experienced (currently on master beets-alternatives fails to evaluate, but this wasn't picked up by ofborg nor hydra). --- pkgs/tools/audio/beets/default.nix | 24 ++++++++---------------- pkgs/top-level/all-packages.nix | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix index 56d3268ae2d..7fea4bd28d4 100644 --- a/pkgs/tools/audio/beets/default.nix +++ b/pkgs/tools/audio/beets/default.nix @@ -3,8 +3,8 @@ , runtimeShell , unstableGitUpdater -# Attributes needed for tests of the external plugins -, callPackage, beets +# external plugins package set +, beetsExternalPlugins , enableAbsubmit ? lib.elem stdenv.hostPlatform.system essentia-extractor.meta.platforms, essentia-extractor ? null , enableAcousticbrainz ? true @@ -116,15 +116,6 @@ let doInstallCheck = false; }); - pluginArgs = externalTestArgs // { inherit pythonPackages; }; - - plugins = { - alternatives = callPackage ./plugins/alternatives.nix pluginArgs; - check = callPackage ./plugins/check.nix pluginArgs; - copyartifacts = callPackage ./plugins/copyartifacts.nix pluginArgs; - extrafiles = callPackage ./plugins/extrafiles.nix pluginArgs; - }; - in pythonPackages.buildPythonApplication rec { pname = "beets"; # While there is a stable version, 1.4.9, it is more than 1000 commits behind @@ -169,7 +160,7 @@ in pythonPackages.buildPythonApplication rec { || enableSubsonicupdate || enableAcousticbrainz) pythonPackages.requests - ++ optional enableCheck plugins.check + ++ optional enableCheck beetsExternalPlugins.check ++ optional enableConvert ffmpeg ++ optional enableDiscogs pythonPackages.discogs_client ++ optional enableGmusic pythonPackages.gmusicapi @@ -179,9 +170,9 @@ in pythonPackages.buildPythonApplication rec { ++ optional enableSonosUpdate pythonPackages.soco ++ optional enableThumbnails pythonPackages.pyxdg ++ optional enableWeb pythonPackages.flask - ++ optional enableAlternatives plugins.alternatives - ++ optional enableCopyArtifacts plugins.copyartifacts - ++ optional enableExtraFiles plugins.extrafiles + ++ optional enableAlternatives beetsExternalPlugins.alternatives + ++ optional enableCopyArtifacts beetsExternalPlugins.copyartifacts + ++ optional enableExtraFiles beetsExternalPlugins.extrafiles ; buildInputs = [ @@ -289,7 +280,8 @@ in pythonPackages.buildPythonApplication rec { makeWrapperArgs = [ "--set GI_TYPELIB_PATH \"$GI_TYPELIB_PATH\"" "--set GST_PLUGIN_SYSTEM_PATH_1_0 \"$GST_PLUGIN_SYSTEM_PATH_1_0\"" ]; passthru = { - externalPlugins = plugins; + # FIXME: remove in favor of pkgs.beetsExternalPlugins + externalPlugins = beetsExternalPlugins; updateScript = unstableGitUpdater { url = "https://github.com/beetbox/beets"; }; }; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c9a43e63d35..becd662ad21 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3009,6 +3009,26 @@ in pythonPackages = python3Packages; }; + beetsExternalPlugins = + let + pluginArgs = { + # This is a stripped down beets for testing of the external plugins. + beets = (beets.override { + enableAlternatives = false; + enableCopyArtifacts = false; + enableExtraFiles = false; + }).overrideAttrs (lib.const { + doInstallCheck = false; + }); + pythonPackages = python3Packages; + }; + in lib.recurseIntoAttrs { + alternatives = callPackage ../tools/audio/beets/plugins/alternatives.nix pluginArgs; + check = callPackage ../tools/audio/beets/plugins/check.nix pluginArgs; + copyartifacts = callPackage ../tools/audio/beets/plugins/copyartifacts.nix pluginArgs; + extrafiles = callPackage ../tools/audio/beets/plugins/extrafiles.nix pluginArgs; + }; + bento4 = callPackage ../tools/video/bento4 { }; bepasty = callPackage ../tools/misc/bepasty { };