+36
-20
pkgs/development/libraries/libsvm/default.nix
+36
-20
pkgs/development/libraries/libsvm/default.nix
···
1
-
{lib, stdenv, fetchurl}:
1
+
{ lib
2
+
, stdenv
3
+
, fetchurl
4
+
, fixDarwinDylibNames
5
+
, llvmPackages
6
+
, withOpenMP ? true
7
+
}:
2
8
3
9
stdenv.mkDerivation rec {
4
10
pname = "libsvm";
5
-
version = "3.25";
11
+
version = "3.31";
6
12
7
13
src = fetchurl {
8
14
url = "https://www.csie.ntu.edu.tw/~cjlin/libsvm/libsvm-${version}.tar.gz";
9
-
sha256 = "sha256-UjUOiqdAsXbh13Pp3AjxNAIYw34BvsN6uQ2wEn5LteU=";
15
+
sha256 = "sha256-AKtWH0jfX8kqhCCa2P5Rmery5Rmzwnm6z8k1l4p1zx8=";
10
16
};
11
17
12
-
buildPhase = ''
13
-
make
14
-
make lib
15
-
'';
18
+
patches = lib.optionals withOpenMP [ ./openmp.patch ];
16
19
17
-
installPhase = let
18
-
libSuff = stdenv.hostPlatform.extensions.sharedLibrary;
19
-
in ''
20
-
install -D libsvm.so.2 $out/lib/libsvm.2${libSuff}
21
-
ln -s $out/lib/libsvm.2${libSuff} $out/lib/libsvm${libSuff}
22
-
install -Dt $out/bin/ svm-scale svm-train svm-predict
23
-
install -Dm644 -t $out/include svm.h
24
-
mkdir $out/include/libsvm
25
-
ln -s $out/include/svm.h $out/include/libsvm/svm.h
26
-
'';
20
+
buildInputs = lib.optionals (stdenv.cc.isClang && withOpenMP) [ llvmPackages.openmp ];
27
21
28
-
postFixup = lib.optionalString stdenv.isDarwin ''
29
-
install_name_tool -id libsvm.2.dylib $out/lib/libsvm.2.dylib;
30
-
'';
22
+
buildFlags = [ "lib" "all" ];
23
+
24
+
outputs = [ "out" "bin" "dev" ];
25
+
26
+
nativeBuildInputs = lib.optionals stdenv.isDarwin [ fixDarwinDylibNames ];
27
+
28
+
installPhase =
29
+
let
30
+
libSuff = stdenv.hostPlatform.extensions.sharedLibrary;
31
+
soVersion = "3";
32
+
in
33
+
''
34
+
runHook preInstall
35
+
36
+
install -D libsvm.so.${soVersion} $out/lib/libsvm.${soVersion}${libSuff}
37
+
ln -s $out/lib/libsvm.${soVersion}${libSuff} $out/lib/libsvm${libSuff}
38
+
39
+
install -Dt $bin/bin/ svm-scale svm-train svm-predict
40
+
41
+
install -Dm644 -t $dev/include svm.h
42
+
mkdir $dev/include/libsvm
43
+
ln -s $dev/include/svm.h $dev/include/libsvm/svm.h
44
+
45
+
runHook postInstall
46
+
'';
31
47
32
48
meta = with lib; {
33
49
description = "A library for support vector machines";
+13
pkgs/development/libraries/libsvm/openmp.patch
+13
pkgs/development/libraries/libsvm/openmp.patch
···
1
+
--- /Makefile 1970-01-01 01:00:01.000000000 +0100
2
+
+++ /Makefile 1970-01-01 01:00:01.000000000 +0100
3
+
@@ -9,8 +9,8 @@
4
+
endif
5
+
6
+
# Uncomment the following lines to enable parallelization with OpenMP
7
+
-# CFLAGS += -fopenmp
8
+
-# SHARED_LIB_FLAG += -fopenmp
9
+
+CFLAGS += -fopenmp
10
+
+SHARED_LIB_FLAG += -fopenmp
11
+
12
+
all: svm-train svm-predict svm-scale
13
+