diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-11-21 16:12:21 +0100 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-11-21 16:12:48 +0100 |
commit | 048a4cd441a59cbf89defb18bb45c9f0b4429b35 (patch) | |
tree | f8f5850ff05521ab82d65745894714a8796cbfb6 /pkgs/tools/audio/beets | |
parent | 030c5028b07afcedce7c5956015c629486cc79d9 (diff) | |
parent | 4c2d05dd6435d449a3651a6dd314d9411b5f8146 (diff) | |
download | nixpkgs-rootfs.tar nixpkgs-rootfs.tar.gz nixpkgs-rootfs.tar.bz2 nixpkgs-rootfs.tar.lz nixpkgs-rootfs.tar.xz nixpkgs-rootfs.tar.zst nixpkgs-rootfs.zip |
Signed-off-by: Alyssa Ross <hi@alyssa.is>
Diffstat (limited to 'pkgs/tools/audio/beets')
-rw-r--r-- | pkgs/tools/audio/beets/common.nix | 70 | ||||
-rw-r--r-- | pkgs/tools/audio/beets/default.nix | 29 | ||||
-rw-r--r-- | pkgs/tools/audio/beets/patches/fix-pillow10-compat.patch | 13 | ||||
-rw-r--r-- | pkgs/tools/audio/beets/patches/unstable-bash-completion-always-print.patch | 46 |
4 files changed, 82 insertions, 76 deletions
diff --git a/pkgs/tools/audio/beets/common.nix b/pkgs/tools/audio/beets/common.nix index 440606bdd83..37faff29c72 100644 --- a/pkgs/tools/audio/beets/common.nix +++ b/pkgs/tools/audio/beets/common.nix @@ -26,6 +26,8 @@ , extraPatches ? [ ] , pluginOverrides ? { } , disableAllPlugins ? false +, disabledTests ? [] +, extraNativeBuildInputs ? [] # tests , runCommand @@ -52,12 +54,6 @@ python3Packages.buildPythonApplication { patches = extraPatches; - postPatch = '' - # https://github.com/beetbox/beets/pull/4868 - substituteInPlace beets/util/artresizer.py \ - --replace "Image.ANTIALIAS" "Image.Resampling.LANCZOS" - ''; - propagatedBuildInputs = with python3Packages; [ confuse gst-python @@ -76,7 +72,7 @@ python3Packages.buildPythonApplication { nativeBuildInputs = [ gobject-introspection sphinxHook - ]; + ] ++ extraNativeBuildInputs; buildInputs = [ ] ++ (with gst_all_1; [ @@ -93,24 +89,6 @@ python3Packages.buildPythonApplication { cp extra/_beet $out/share/zsh/site-functions/ ''; - doInstallCheck = true; - - installCheckPhase = '' - runHook preInstallCheck - - tmphome="$(mktemp -d)" - - EDITOR="${writeScript "beetconfig.sh" '' - #!${runtimeShell} - cat > "$1" <<CFG - plugins: ${lib.concatStringsSep " " (attrNames enabledPlugins)} - CFG - ''}" HOME="$tmphome" "$out/bin/beet" config -e - EDITOR=true HOME="$tmphome" "$out/bin/beet" config -e - - runHook postInstallCheck - ''; - makeWrapperArgs = [ "--set GI_TYPELIB_PATH \"$GI_TYPELIB_PATH\"" "--set GST_PLUGIN_SYSTEM_PATH_1_0 \"$GST_PLUGIN_SYSTEM_PATH_1_0\"" @@ -118,17 +96,17 @@ python3Packages.buildPythonApplication { ]; nativeCheckInputs = with python3Packages; [ - pytest + pytestCheckHook mock rarfile responses ] ++ pluginWrapperBins; disabledTestPaths = lib.flatten (attrValues (lib.mapAttrs (n: v: v.testPaths ++ [ "test/test_${n}.py" ]) disabledPlugins)); + inherit disabledTests; - checkPhase = '' - runHook preCheck - + # Perform extra "sanity checks", before running pytest tests. + preCheck = '' # Check for undefined plugins find beetsplug -mindepth 1 \ \! -path 'beetsplug/__init__.py' -a \ @@ -140,19 +118,13 @@ python3Packages.buildPythonApplication { export BEETS_TEST_SHELL="${bashInteractive}/bin/bash --norc" export HOME="$(mktemp -d)" - args=" -m pytest -r fEs" - eval "disabledTestPaths=($disabledTestPaths)" - for path in ''${disabledTestPaths[@]}; do - if [ -e "$path" ]; then - args+=" --ignore $path" - else - echo "Skipping non-existent test path '$path'" - fi - done - - python $args - - runHook postCheck + env EDITOR="${writeScript "beetconfig.sh" '' + #!${runtimeShell} + cat > "$1" <<CFG + plugins: ${lib.concatStringsSep " " (attrNames enabledPlugins)} + CFG + ''}" "$out/bin/beet" config -e + env EDITOR=true "$out/bin/beet" config -e ''; @@ -160,19 +132,17 @@ python3Packages.buildPythonApplication { passthru.tests.gstreamer = runCommand "beets-gstreamer-test" { meta.timeout = 60; - } - '' - set -euo pipefail - export HOME=$(mktemp -d) - mkdir $out + } '' + set -euo pipefail + export HOME=$(mktemp -d) + mkdir $out - cat << EOF > $out/config.yaml + cat << EOF > $out/config.yaml replaygain: backend: gstreamer EOF - echo $out/config.yaml - ${beets}/bin/beet -c $out/config.yaml > /dev/null + ${beets}/bin/beet -c $out/config.yaml > /dev/null ''; meta = with lib; { diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix index 7f5c3bbceae..c78ccced9a8 100644 --- a/pkgs/tools/audio/beets/default.nix +++ b/pkgs/tools/audio/beets/default.nix @@ -2,6 +2,7 @@ , callPackage , fetchFromGitHub , fetchpatch +, python3Packages }: /* ** To customize the enabled beets plugins, use the pluginOverrides input to the @@ -20,6 +21,7 @@ lib.makeExtensible (self: { beets = self.beets-stable; beets-stable = callPackage ./common.nix rec { + inherit python3Packages; version = "1.6.0"; src = fetchFromGitHub { owner = "beetbox"; @@ -41,27 +43,46 @@ lib.makeExtensible (self: { # https://github.com/beetbox/beets/pull/4839 # The upstream patch does not apply on 1.6.0, as the related code has been refactored since ./patches/fix-embedart-imagick-7.1.1-12.patch + # Pillow 10 compatibility fix, a backport of + # https://github.com/beetbox/beets/pull/4868, which doesn't apply now + ./patches/fix-pillow10-compat.patch + ]; + disabledTests = [ + # This issue is present on this version alone, and can be removed on the + # next stable version version bump. Since this is fixed in branch master, + # we don't have a bug ticket open for this. As of writing, it also seems + # hard to find a patch that can be backported to v1.6.0 that would fix + # the failure, as the master branch has gone through too many changes + # now. + "test_get_single_item_by_path" ]; }; beets-minimal = self.beets.override { disableAllPlugins = true; }; beets-unstable = callPackage ./common.nix { - version = "unstable-2023-07-05"; + inherit python3Packages; + version = "unstable-2023-10-26"; src = fetchFromGitHub { owner = "beetbox"; repo = "beets"; - rev = "9481402b3c20739ca0b879d19adbfca22ccd6a44"; - hash = "sha256-AKmozMNVchysoQcUWd90Ic6bQBKQgylVn0E3i85dGb8="; + rev = "6655760732100f5387fad2d2890c015ee5039981"; + hash = "sha256-Nz9BHtacYpJMLmB3f9WFg6GvMa+BuUhiNbJ9cyannek="; }; extraPatches = [ # Bash completion fix for Nix ./patches/unstable-bash-completion-always-print.patch ]; pluginOverrides = { - # unstable has a new plugin, so we register it here. + # unstable has new plugins, so we register them here. limit = { builtin = true; }; + substitute = { builtin = true; }; + advancedrewrite = { builtin = true; }; + autobpm = { builtin = true; }; }; + extraNativeBuildInputs = [ + python3Packages.pydata-sphinx-theme + ]; }; alternatives = callPackage ./plugins/alternatives.nix { beets = self.beets-minimal; }; diff --git a/pkgs/tools/audio/beets/patches/fix-pillow10-compat.patch b/pkgs/tools/audio/beets/patches/fix-pillow10-compat.patch new file mode 100644 index 00000000000..f85eec20156 --- /dev/null +++ b/pkgs/tools/audio/beets/patches/fix-pillow10-compat.patch @@ -0,0 +1,13 @@ +diff --git i/beets/util/artresizer.py w/beets/util/artresizer.py +index 8683e228..6f99c79e 100644 +--- i/beets/util/artresizer.py ++++ w/beets/util/artresizer.py +@@ -72,7 +72,7 @@ def pil_resize(maxwidth, path_in, path_out=None, quality=0, max_filesize=0): + try: + im = Image.open(util.syspath(path_in)) + size = maxwidth, maxwidth +- im.thumbnail(size, Image.ANTIALIAS) ++ im.thumbnail(size, Image.Resampling.LANCZOS) + + if quality == 0: + # Use PIL's default quality. diff --git a/pkgs/tools/audio/beets/patches/unstable-bash-completion-always-print.patch b/pkgs/tools/audio/beets/patches/unstable-bash-completion-always-print.patch index 395f40f92c9..96b17511757 100644 --- a/pkgs/tools/audio/beets/patches/unstable-bash-completion-always-print.patch +++ b/pkgs/tools/audio/beets/patches/unstable-bash-completion-always-print.patch @@ -1,34 +1,36 @@ -diff --git a/beets/ui/commands.py b/beets/ui/commands.py -index 1377ad0c..e178eeae 100755 ---- a/beets/ui/commands.py -+++ b/beets/ui/commands.py -@@ -1831,20 +1831,6 @@ default_commands.append(config_cmd) +diff --git i/beets/ui/commands.py w/beets/ui/commands.py +index ad4f7821..5077191d 100755 +--- i/beets/ui/commands.py ++++ w/beets/ui/commands.py +@@ -2381,22 +2381,6 @@ default_commands.append(config_cmd) def print_completion(*args): for line in completion_script(default_commands + plugins.commands()): - print_(line, end='') + print_(line, end="") - if not any(os.path.isfile(syspath(p)) for p in BASH_COMPLETION_PATHS): -- log.warning('Warning: Unable to find the bash-completion package. ' -- 'Command line completion might not work.') +- log.warning( +- "Warning: Unable to find the bash-completion package. " +- "Command line completion might not work." +- ) - - -BASH_COMPLETION_PATHS = [ -- b'/etc/bash_completion', -- b'/usr/share/bash-completion/bash_completion', -- b'/usr/local/share/bash-completion/bash_completion', +- b"/etc/bash_completion", +- b"/usr/share/bash-completion/bash_completion", +- b"/usr/local/share/bash-completion/bash_completion", - # SmartOS -- b'/opt/local/share/bash-completion/bash_completion', +- b"/opt/local/share/bash-completion/bash_completion", - # Homebrew (before bash-completion2) -- b'/usr/local/etc/bash_completion', +- b"/usr/local/etc/bash_completion", -] def completion_script(commands): -diff --git a/test/test_ui.py b/test/test_ui.py -index f66917dc..f3d934c6 100644 ---- a/test/test_ui.py -+++ b/test/test_ui.py -@@ -1310,12 +1310,7 @@ class CompletionTest(_common.TestCase, TestHelper): - stdout=subprocess.PIPE, env=env) +diff --git i/test/test_ui.py w/test/test_ui.py +index cae86148..faf266a8 100644 +--- i/test/test_ui.py ++++ w/test/test_ui.py +@@ -1434,12 +1434,7 @@ class CompletionTest(_common.TestCase, TestHelper): + ) # Load bash_completion library. - for path in commands.BASH_COMPLETION_PATHS: @@ -36,8 +38,8 @@ index f66917dc..f3d934c6 100644 - bash_completion = path - break - else: -- self.skipTest('bash-completion script not found') -+ self.skipTest('bash-completion script not found') +- self.skipTest("bash-completion script not found") ++ self.skipTest("bash-completion script not found") try: - with open(util.syspath(bash_completion), 'rb') as f: + with open(util.syspath(bash_completion), "rb") as f: tester.stdin.writelines(f) |