1{ lib 2, stdenv 3, buildPythonPackage 4, fetchPypi 5 6# build-system 7, cmake 8, ninja 9, pathspec 10, pyproject-metadata 11, scikit-build-core 12 13# dependencies 14, llvmPackages 15, numpy 16, scipy 17, scikit-learn 18, pythonOlder 19 20# optionals: gpu 21, boost 22, cudatoolkit 23, ocl-icd 24, opencl-headers 25, gpuSupport ? stdenv.isLinux 26}: 27 28buildPythonPackage rec { 29 pname = "lightgbm"; 30 version = "4.1.0"; 31 format = "pyproject"; 32 33 disabled = pythonOlder "3.7"; 34 35 src = fetchPypi { 36 inherit pname version; 37 hash = "sha256-vuWd0mmpOwk/LGENSmaDp+qHxj0+o1xiISPOLAILKrw="; 38 }; 39 40 nativeBuildInputs = [ 41 cmake 42 ninja 43 pathspec 44 pyproject-metadata 45 scikit-build-core 46 ]; 47 48 dontUseCmakeConfigure = true; 49 50 buildInputs = (lib.optionals stdenv.cc.isClang [ 51 llvmPackages.openmp 52 ]) ++ (lib.optionals gpuSupport [ 53 boost 54 cudatoolkit 55 ocl-icd 56 opencl-headers 57 ]); 58 59 propagatedBuildInputs = [ 60 numpy 61 scipy 62 scikit-learn 63 ]; 64 65 pypaBuildFlags = lib.optionalString gpuSupport "--config-setting=cmake.define.USE_CUDA=ON"; 66 67 postConfigure = '' 68 export HOME=$(mktemp -d) 69 ''; 70 71 # The pypi package doesn't distribute the tests from the GitHub 72 # repository. It contains c++ tests which don't seem to wired up to 73 # `make check`. 74 doCheck = false; 75 76 pythonImportsCheck = [ 77 "lightgbm" 78 ]; 79 80 meta = { 81 description = "A fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework"; 82 homepage = "https://github.com/Microsoft/LightGBM"; 83 changelog = "https://github.com/microsoft/LightGBM/releases/tag/v${version}"; 84 license = lib.licenses.mit; 85 maintainers = with lib.maintainers; [ teh ]; 86 }; 87}