about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix b/nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix
new file mode 100644
index 000000000000..8de78092bd84
--- /dev/null
+++ b/nixpkgs/pkgs/applications/science/machine-learning/shogun/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, lib, fetchFromGitHub, fetchpatch, ccache, cmake, ctags, swig
+# data, compression
+, bzip2, curl, hdf5, json_c, lzma, lzo, protobuf, snappy
+# maths
+, openblasCompat, eigen, nlopt, lp_solve, colpack
+# libraries
+, libarchive, libxml2
+# extra support
+, pythonSupport ? true, pythonPackages ? null
+, opencvSupport ? false, opencv ? null
+}:
+
+assert pythonSupport -> pythonPackages != null;
+assert opencvSupport -> opencv != null;
+
+stdenv.mkDerivation rec {
+  pname = "shogun";
+  version = "6.0.0";
+  name = pname + "-" + version;
+
+  src = fetchFromGitHub {
+    owner = pname + "-toolbox";
+    repo = pname;
+    rev = pname + "_" + version;
+    sha256 = "0f2zwzvn5apvwypkfkq371xp7c5bdb4g1fwqfh8c2d57ysjxhmgf";
+    fetchSubmodules = true;
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "Fix-meta-example-parser-bug-in-parallel-builds.patch";
+      url = "https://github.com/shogun-toolbox/shogun/commit/ecd6a8f11ac52748e89d27c7fab7f43c1de39f05.patch";
+      sha256 = "1hrwwrj78sxhwcvgaz7n4kvh5y9snfcc4jf5xpgji5hjymnl311n";
+    })
+    (fetchpatch {
+      url = "https://github.com/awild82/shogun/commit/365ce4c4c700736d2eec8ba6c975327a5ac2cd9b.patch";
+      sha256 = "158hqv4xzw648pmjbwrhxjp7qcppqa7kvriif87gn3zdn711c49s";
+    })
+  ];
+
+  CCACHE_DIR=".ccache";
+
+  buildInputs = with lib; [
+      openblasCompat bzip2 ccache cmake colpack curl ctags eigen hdf5 json_c lp_solve lzma lzo
+      protobuf nlopt snappy swig (libarchive.dev) libxml2
+    ]
+    ++ optionals (pythonSupport) (with pythonPackages; [ python ply numpy ])
+    ++ optional  (opencvSupport) opencv;
+
+  cmakeFlags = with lib; []
+    ++ (optional (pythonSupport) "-DPythonModular=ON")
+    ++ (optional (opencvSupport) "-DOpenCV=ON")
+    ;
+
+  # Previous attempts to fix parallel builds (see patch above) were not entirely successful.
+  # Sporadic build failures still exist. Dislable parallel builds for now.
+  enableParallelBuilding = false;
+
+  meta = with stdenv.lib; {
+    description = "A toolbox which offers a wide range of efficient and unified machine learning methods";
+    homepage = "http://shogun-toolbox.org/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ edwtjo ];
+  };
+}