93 lines
2 KiB
Nix
93 lines
2 KiB
Nix
{ lib
|
||
, buildPythonPackage
|
||
, fetchFromGitHub
|
||
, click
|
||
, mutagen
|
||
, nmslib
|
||
, peewee
|
||
, regex
|
||
, scikit-learn
|
||
, unidecode
|
||
, pythonRelaxDepsHook
|
||
, setuptools-scm
|
||
}:
|
||
let
|
||
lb_matching_tools = buildPythonPackage rec {
|
||
pname = "listenbrainz-matching-tools";
|
||
# ensure this matches ListenBrainz-Content-Resolver’s requirements.txt entry
|
||
version = "2023-07-19.0";
|
||
|
||
src = fetchFromGitHub {
|
||
owner = "metabrainz";
|
||
repo = pname;
|
||
rev = "v-${version}";
|
||
sha256 = "sha256-SOUNw1kmXm8j7iZAROf+pVJao5eFjgNmgrtYMO09upA=";
|
||
};
|
||
|
||
propagatedBuildInputs = [
|
||
regex
|
||
];
|
||
|
||
nativeBuildInputs = [
|
||
setuptools-scm
|
||
];
|
||
|
||
SETUPTOOLS_SCM_PRETEND_VERSION = version;
|
||
};
|
||
in
|
||
buildPythonPackage rec {
|
||
pname = "ListenBrainz-Content-Resolver";
|
||
# FIXME
|
||
# This should actually reflect the real version.
|
||
# As there currently are no tagged versions,
|
||
# this needs to be forged,
|
||
# because pythonRelaxDepsHook has problems with unstable-YYYY-MM-DD as a version.
|
||
version = "1.0.0";
|
||
|
||
src = fetchFromGitHub {
|
||
owner = "metabrainz";
|
||
repo = pname;
|
||
rev = "50d55485d43fe3bdf2fb3a4546b3c0031edf85ee";
|
||
sha256 = "sha256-mm8zHF87S13bzeSfWKHgO/cU3ulvA7I8h5EFsnBIVMo=";
|
||
};
|
||
|
||
postPatch = ''
|
||
# Make model discoverable by setuptools’ find_packages
|
||
touch lb_content_resolver/model/__init__.py
|
||
'';
|
||
|
||
propagatedBuildInputs = [
|
||
click
|
||
lb_matching_tools
|
||
mutagen
|
||
nmslib
|
||
peewee
|
||
regex
|
||
scikit-learn
|
||
unidecode
|
||
];
|
||
nativeBuildInputs = [
|
||
pythonRelaxDepsHook
|
||
setuptools-scm
|
||
];
|
||
|
||
pythonRelaxDeps = true;
|
||
|
||
SETUPTOOLS_SCM_PRETEND_VERSION = version;
|
||
|
||
doCheck = false;
|
||
|
||
postInstall = ''
|
||
mkdir -p $out/bin
|
||
cp $src/resolve.py $out/bin/${pname}
|
||
'';
|
||
|
||
meta = with lib; {
|
||
description = "Resolver for ListenBrainz playlists from JSPF to local playlists";
|
||
homepage = "https://github.com/metabrainz/listenbrainz-content-resolver";
|
||
license = licenses.gpl2Only;
|
||
maintainers = with maintainers; [ sbruder ];
|
||
platforms = platforms.linux;
|
||
};
|
||
}
|