58 lines
1.8 KiB
Nix
58 lines
1.8 KiB
Nix
{ buildPythonPackage, fetchFromGitHub, lib, pythonOlder
|
|
, clang_12, python
|
|
, graphviz, matplotlib, numpy, pandas, plotly, scipy, six
|
|
, withCuda ? false, cudatoolkit }:
|
|
|
|
buildPythonPackage rec {
|
|
pname = "catboost";
|
|
version = "1.1.1";
|
|
|
|
disabled = pythonOlder "3.4";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "catboost";
|
|
repo = "catboost";
|
|
rev = "refs/tags/v${version}";
|
|
sha256 = "sha256-bqnUHTTRan/spA5y4LRt/sIUYpP3pxzdN/4wHjzgZVY=";
|
|
};
|
|
|
|
nativeBuildInputs = [ clang_12 ];
|
|
|
|
propagatedBuildInputs = [ graphviz matplotlib numpy pandas scipy plotly six ]
|
|
++ lib.optionals withCuda [ cudatoolkit ];
|
|
|
|
patches = [
|
|
./nix-support.patch
|
|
];
|
|
|
|
postPatch = ''
|
|
# substituteInPlace is too slow for these large files, and the target has lots of numbers in it that change often.
|
|
sed -e 's|\$(YMAKE_PYTHON3-.*)/python3|${python.interpreter}|' -i make/*.makefile
|
|
'';
|
|
|
|
preBuild = ''
|
|
cd catboost/python-package
|
|
'';
|
|
setupPyBuildFlags = [ "--with-ymake=no" ];
|
|
CUDA_ROOT = lib.optional withCuda cudatoolkit;
|
|
enableParallelBuilding = true;
|
|
|
|
# Tests use custom "ya" tool, not yet supported.
|
|
dontUseSetuptoolsCheck = true;
|
|
pythonImportsCheck = [ "catboost" ];
|
|
|
|
meta = with lib; {
|
|
description = "High-performance library for gradient boosting on decision trees.";
|
|
longDescription = ''
|
|
A fast, scalable, high performance Gradient Boosting on Decision Trees
|
|
library, used for ranking, classification, regression and other machine
|
|
learning tasks for Python, R, Java, C++. Supports computation on CPU and GPU.
|
|
'';
|
|
license = licenses.asl20;
|
|
platforms = [ "x86_64-linux" ];
|
|
homepage = "https://catboost.ai";
|
|
maintainers = with maintainers; [ PlushBeaver ];
|
|
# _catboost.pyx.cpp:226822:19: error: use of undeclared identifier '_PyGen_Send'
|
|
broken = withCuda;
|
|
};
|
|
}
|