at master 2.3 kB view raw
1{ 2 lib, 3 config, 4 stdenv, 5 pkgs, 6 buildPythonPackage, 7 fetchPypi, 8 9 # build-system 10 scikit-build-core, 11 12 # nativeBuildInputs 13 cmake, 14 ninja, 15 pathspec, 16 pyproject-metadata, 17 writableTmpDirAsHomeHook, 18 19 # buildInputs 20 llvmPackages, 21 boost, 22 ocl-icd, 23 opencl-headers, 24 25 # dependencies 26 numpy, 27 scipy, 28 29 # optional-dependencies 30 cffi, 31 dask, 32 pandas, 33 pyarrow, 34 scikit-learn, 35 36 # optionals: gpu 37 gpuSupport ? stdenv.hostPlatform.isLinux && !cudaSupport, 38 cudaSupport ? config.cudaSupport, 39 cudaPackages, 40}: 41 42assert gpuSupport -> !cudaSupport; 43assert cudaSupport -> !gpuSupport; 44 45buildPythonPackage rec { 46 inherit (pkgs.lightgbm) 47 pname 48 version 49 patches 50 ; 51 pyproject = true; 52 53 src = fetchPypi { 54 inherit pname version; 55 hash = "sha256-yxxZcg61aTicC6dNFPUjUbVzr0ifIwAyocnzFPi6t/4="; 56 }; 57 58 build-system = [ 59 scikit-build-core 60 ]; 61 62 nativeBuildInputs = [ 63 cmake 64 ninja 65 pathspec 66 pyproject-metadata 67 writableTmpDirAsHomeHook 68 ] 69 ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ]; 70 71 dontUseCmakeConfigure = true; 72 73 buildInputs = 74 (lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ]) 75 ++ (lib.optionals gpuSupport [ 76 boost 77 ocl-icd 78 opencl-headers 79 ]) 80 ++ lib.optionals cudaSupport [ 81 cudaPackages.cuda_nvcc 82 cudaPackages.cuda_cudart 83 ]; 84 85 dependencies = [ 86 numpy 87 scipy 88 ]; 89 90 cmakeFlags = [ 91 (lib.cmakeBool "USE_GPU" gpuSupport) 92 (lib.cmakeBool "USE_CUDA" cudaSupport) 93 ]; 94 95 optional-dependencies = { 96 arrow = [ 97 cffi 98 pyarrow 99 ]; 100 dask = [ 101 dask 102 pandas 103 ] 104 ++ dask.optional-dependencies.array 105 ++ dask.optional-dependencies.dataframe 106 ++ dask.optional-dependencies.distributed; 107 pandas = [ pandas ]; 108 scikit-learn = [ scikit-learn ]; 109 }; 110 111 # No python tests 112 doCheck = false; 113 114 pythonImportsCheck = [ "lightgbm" ]; 115 116 meta = { 117 description = "Fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework"; 118 homepage = "https://github.com/Microsoft/LightGBM"; 119 changelog = "https://github.com/microsoft/LightGBM/releases/tag/v${version}"; 120 license = lib.licenses.mit; 121 maintainers = with lib.maintainers; [ teh ]; 122 }; 123}