catboost: init at 1.2.2
This commit is contained in:
parent
5058dcfbfb
commit
08b7a46402
3 changed files with 153 additions and 0 deletions
113
pkgs/development/libraries/catboost/default.nix
Normal file
113
pkgs/development/libraries/catboost/default.nix
Normal file
|
@ -0,0 +1,113 @@
|
|||
{ lib
|
||||
, config
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, cmake
|
||||
, libiconv
|
||||
, llvmPackages
|
||||
, ninja
|
||||
, openssl
|
||||
, python3Packages
|
||||
, ragel
|
||||
, yasm
|
||||
, zlib
|
||||
, cudaSupport ? config.cudaSupport
|
||||
, cudaPackages ? {}
|
||||
, pythonSupport ? false
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "catboost";
|
||||
version = "1.2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "catboost";
|
||||
repo = "catboost";
|
||||
rev = "refs/tags/v${finalAttrs.version}";
|
||||
hash = "sha256-A1zCIqPOW21dHKBQHRtS+/sstZ2o6F8k71lmJFGn0+g=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./remove-conan.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace cmake/common.cmake \
|
||||
--replace "\''${RAGEL_BIN}" "${ragel}/bin/ragel" \
|
||||
--replace "\''${YASM_BIN}" "${yasm}/bin/yasm"
|
||||
|
||||
shopt -s globstar
|
||||
for cmakelists in **/CMakeLists.*; do
|
||||
sed -i "s/OpenSSL::OpenSSL/OpenSSL::SSL/g" $cmakelists
|
||||
${lib.optionalString (lib.versionOlder cudaPackages.cudaVersion "11.8") ''
|
||||
sed -i 's/-gencode=arch=compute_89,code=sm_89//g' $cmakelists
|
||||
sed -i 's/-gencode=arch=compute_90,code=sm_90//g' $cmakelists
|
||||
''}
|
||||
done
|
||||
'';
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
llvmPackages.bintools
|
||||
ninja
|
||||
(python3Packages.python.withPackages (ps: with ps; [ six ]))
|
||||
ragel
|
||||
yasm
|
||||
] ++ lib.optionals cudaSupport (with cudaPackages; [
|
||||
cuda_nvcc
|
||||
]);
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
zlib
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
libiconv
|
||||
] ++ lib.optionals cudaSupport (with cudaPackages; [
|
||||
cuda_cudart
|
||||
cuda_cccl
|
||||
libcublas
|
||||
]);
|
||||
|
||||
env = {
|
||||
CUDAHOSTCXX = lib.optionalString cudaSupport "${stdenv.cc}/bin/cc";
|
||||
NIX_CFLAGS_LINK = lib.optionalString stdenv.isLinux "-fuse-ld=lld";
|
||||
NIX_LDFLAGS = "-lc -lm";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BINARY_DIR=$out"
|
||||
"-DCMAKE_POSITION_INDEPENDENT_CODE=on"
|
||||
"-DCATBOOST_COMPONENTS=app;libs${lib.optionalString pythonSupport ";python-package"}"
|
||||
] ++ lib.optionals cudaSupport [
|
||||
"-DHAVE_CUDA=on"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir $dev
|
||||
cp -r catboost $dev
|
||||
install -Dm555 catboost/app/catboost -t $out/bin
|
||||
install -Dm444 catboost/libs/model_interface/static/lib/libmodel_interface-static-lib.a -t $out/lib
|
||||
install -Dm444 catboost/libs/model_interface/libcatboostmodel${stdenv.hostPlatform.extensions.sharedLibrary} -t $out/lib
|
||||
install -Dm444 catboost/libs/train_interface/libcatboost${stdenv.hostPlatform.extensions.sharedLibrary} -t $out/lib
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
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 = platforms.unix;
|
||||
homepage = "https://catboost.ai";
|
||||
maintainers = with maintainers; [ PlushBeaver ];
|
||||
mainProgram = "catboost";
|
||||
};
|
||||
})
|
34
pkgs/development/libraries/catboost/remove-conan.patch
Normal file
34
pkgs/development/libraries/catboost/remove-conan.patch
Normal file
|
@ -0,0 +1,34 @@
|
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index becd2ad03c..7e3c8c99b1 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -27,7 +27,6 @@ cmake_policy(SET CMP0104 OLD)
|
||||
|
||||
include(cmake/archive.cmake)
|
||||
include(cmake/common.cmake)
|
||||
-include(cmake/conan.cmake)
|
||||
include(cmake/cuda.cmake)
|
||||
include(cmake/cython.cmake)
|
||||
include(cmake/fbs.cmake)
|
||||
@@ -37,21 +36,6 @@ include(cmake/recursive_library.cmake)
|
||||
include(cmake/swig.cmake)
|
||||
include(cmake/global_vars.cmake)
|
||||
|
||||
-if (CMAKE_CROSSCOMPILING)
|
||||
- include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
|
||||
-else()
|
||||
- conan_cmake_autodetect(settings)
|
||||
- conan_cmake_install(
|
||||
- PATH_OR_REFERENCE ${CMAKE_SOURCE_DIR}
|
||||
- INSTALL_FOLDER ${CMAKE_BINARY_DIR}
|
||||
- BUILD missing
|
||||
- REMOTE conancenter
|
||||
- SETTINGS ${settings}
|
||||
- ENV "CONAN_CMAKE_GENERATOR=${CMAKE_GENERATOR}"
|
||||
- CONF "tools.cmake.cmaketoolchain:generator=${CMAKE_GENERATOR}"
|
||||
- )
|
||||
-endif()
|
||||
-
|
||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND NOT HAVE_CUDA)
|
||||
include(CMakeLists.linux-x86_64.txt)
|
||||
elseif (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND HAVE_CUDA)
|
|
@ -20899,6 +20899,12 @@ with pkgs;
|
|||
|
||||
captive-browser = callPackage ../applications/networking/browsers/captive-browser { };
|
||||
|
||||
catboost = callPackage ../development/libraries/catboost {
|
||||
# catboost requires clang 12+ for build
|
||||
# after bumping the default version of llvm, check for compatibility with the cuda backend and pin it.
|
||||
inherit (llvmPackages_12) stdenv;
|
||||
};
|
||||
|
||||
ndn-cxx = callPackage ../development/libraries/ndn-cxx { };
|
||||
|
||||
ndn-tools = callPackage ../tools/networking/ndn-tools { };
|
||||
|
|
Loading…
Reference in a new issue