Commit 8b86760e authored by Doron Behar's avatar Doron Behar
Browse files

python3.pkgs.beets: use fixed-point arguments

parent bc401518
Loading
Loading
Loading
Loading
+39 −38
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@
  stdenv,
  buildPythonPackage,
  fetchFromGitHub,
  beets,

  # build-system
  poetry-core,
@@ -106,22 +105,13 @@
  runCommand,
}:

let
  # Avoid using `rec`, so that using e.g `passthru` or any other attributes
  # defined inside, will have to be done via the beets argument, which can be
  # overriden. Until `finalAttrs` support reaches `buildPythonPackage`, there
  # is no way to avoid this. See:
  #
  # https://github.com/NixOS/nixpkgs/issues/258246
  version = "2.5.1";
in
buildPythonPackage {
buildPythonPackage (finalAttrs: {
  pname = "beets";
  version = "2.5.1";
  src = fetchFromGitHub {
    owner = "beetbox";
    repo = "beets";
    tag = "v${version}";
    tag = "v${finalAttrs.version}";
    hash = "sha256-H3jcEHyK13+RHVlV4zp+8M3LZ0Jc2FdmAbLpekGozLA=";
  };
  pyproject = true;
@@ -154,7 +144,9 @@ buildPythonPackage {
    typing-extensions
    lap
  ]
  ++ (lib.concatMap (p: p.propagatedBuildInputs) (lib.attrValues beets.passthru.plugins.enabled));
  ++ (lib.concatMap (p: p.propagatedBuildInputs) (
    lib.attrValues finalAttrs.finalPackage.passthru.plugins.enabled
  ));

  nativeBuildInputs = [
    gobject-introspection
@@ -195,7 +187,7 @@ buildPythonPackage {
  makeWrapperArgs = [
    "--set GI_TYPELIB_PATH \"$GI_TYPELIB_PATH\""
    "--set GST_PLUGIN_SYSTEM_PATH_1_0 \"$GST_PLUGIN_SYSTEM_PATH_1_0\""
    "--prefix PATH : ${lib.makeBinPath beets.passthru.plugins.wrapperBins}"
    "--prefix PATH : ${lib.makeBinPath finalAttrs.finalPackage.passthru.plugins.wrapperBins}"
  ];

  nativeCheckInputs = [
@@ -208,12 +200,12 @@ buildPythonPackage {
    pillow
    writableTmpDirAsHomeHook
  ]
  ++ beets.passthru.plugins.wrapperBins;
  ++ finalAttrs.finalPackage.passthru.plugins.wrapperBins;

  __darwinAllowLocalNetworking = true;

  disabledTestPaths =
    beets.passthru.plugins.disabledTestPaths
    finalAttrs.finalPackage.passthru.plugins.disabledTestPaths
    ++ [
      # touches network
      "test/plugins/test_aura.py"
@@ -255,14 +247,14 @@ buildPythonPackage {
      \( -name '*.py' -o -path 'beetsplug/*/__init__.py' \) -print \
      | sed -n -re 's|^beetsplug/([^/.]+).*|\1|p' \
      | sort -u > plugins_available
    ${diffPlugins (lib.attrNames beets.passthru.plugins.builtins) "plugins_available"}
    ${diffPlugins (lib.attrNames finalAttrs.finalPackage.passthru.plugins.builtins) "plugins_available"}

    export BEETS_TEST_SHELL="${lib.getExe bashInteractive} --norc"

    env EDITOR="${writeScript "beetconfig.sh" ''
      #!${runtimeShell}
      cat > "$1" <<CFG
      plugins: ${lib.concatStringsSep " " (lib.attrNames beets.passthru.plugins.enabled)}
      plugins: ${lib.concatStringsSep " " (lib.attrNames finalAttrs.finalPackage.passthru.plugins.enabled)}
      CFG
    ''}" "$out/bin/beet" config -e
    env EDITOR=true "$out/bin/beet" config -e
@@ -442,13 +434,17 @@ buildPythonPackage {
          testPaths = [ ];
        };
      };
      base = lib.mapAttrs (_: a: { builtin = true; } // a) beets.passthru.plugins.builtins;
      base = lib.mapAttrs (
        _: a: { builtin = true; } // a
      ) finalAttrs.finalPackage.passthru.plugins.builtins;
      overrides = lib.mapAttrs (
        plugName:
        lib.throwIf (beets.passthru.plugins.builtins.${plugName}.deprecated or false)
        lib.throwIf (finalAttrs.finalPackage.passthru.plugins.builtins.${plugName}.deprecated or false)
          "beets evaluation error: Plugin ${plugName} was enabled in pluginOverrides, but it has been removed. Remove the override to fix evaluation."
      ) pluginOverrides;
      all = lib.mapAttrs (
      all =
        lib.mapAttrs
          (
            n: a:
            {
              name = n;
@@ -459,13 +455,18 @@ buildPythonPackage {
              wrapperBins = [ ];
            }
            // a
      ) (lib.recursiveUpdate beets.passthru.plugins.base beets.passthru.plugins.overrides);
      enabled = lib.filterAttrs (_: p: p.enable) beets.passthru.plugins.all;
      disabled = lib.filterAttrs (_: p: !p.enable) beets.passthru.plugins.all;
          )
          (
            lib.recursiveUpdate finalAttrs.finalPackage.passthru.plugins.base finalAttrs.finalPackage.passthru.plugins.overrides
          );
      enabled = lib.filterAttrs (_: p: p.enable) finalAttrs.finalPackage.passthru.plugins.all;
      disabled = lib.filterAttrs (_: p: !p.enable) finalAttrs.finalPackage.passthru.plugins.all;
      disabledTestPaths = lib.flatten (
        lib.attrValues (lib.mapAttrs (_: v: v.testPaths) beets.passthru.plugins.disabled)
        lib.attrValues (lib.mapAttrs (_: v: v.testPaths) finalAttrs.finalPackage.passthru.plugins.disabled)
      );
      wrapperBins = lib.concatMap (p: p.wrapperBins) (
        lib.attrValues finalAttrs.finalPackage.passthru.plugins.enabled
      );
      wrapperBins = lib.concatMap (p: p.wrapperBins) (lib.attrValues beets.passthru.plugins.enabled);
    };
    tests = {
      gstreamer =
@@ -483,7 +484,7 @@ buildPythonPackage {
              backend: gstreamer
            EOF

            ${beets}/bin/beet -c $out/config.yaml > /dev/null
            ${finalAttrs.finalPackage}/bin/beet -c $out/config.yaml > /dev/null
          '';
    };
  };
@@ -501,4 +502,4 @@ buildPythonPackage {
    platforms = lib.platforms.linux ++ lib.platforms.darwin;
    mainProgram = "beet";
  };
}
})