1{ lib, stdenv, fetchFromGitHub, fixDarwinDylibNames }:
2
3let
4 soVersion = "4";
5in stdenv.mkDerivation rec {
6 pname = "liblinear";
7 version = "2.43";
8
9 src = fetchFromGitHub {
10 owner = "cjlin1";
11 repo = "liblinear";
12 rev = "v${builtins.replaceStrings ["."] [""] version}";
13 sha256 = "sha256-qcSMuWHJgsapWs1xgxv3fKSXcx18q8cwyIn3E4RCGKA=";
14 };
15
16 postPatch = ''
17 substituteInPlace blas/Makefile \
18 --replace "ar rcv" "${stdenv.cc.targetPrefix}ar rcv" \
19 --replace "ranlib" "${stdenv.cc.targetPrefix}ranlib"
20 '';
21
22 outputs = [ "bin" "dev" "out" ];
23
24 nativeBuildInputs = lib.optionals stdenv.isDarwin [ fixDarwinDylibNames ];
25
26 buildFlags = [ "lib" "predict" "train" ];
27
28 installPhase = ''
29 ${if stdenv.isDarwin then ''
30 install -D liblinear.so.${soVersion} $out/lib/liblinear.${soVersion}.dylib
31 ln -s $out/lib/liblinear.${soVersion}.dylib $out/lib/liblinear.dylib
32 '' else ''
33 install -Dt $out/lib liblinear.so.${soVersion}
34 ln -s $out/lib/liblinear.so.${soVersion} $out/lib/liblinear.so
35 ''}
36 install -D train $bin/bin/liblinear-train
37 install -D predict $bin/bin/liblinear-predict
38 install -Dm444 -t $dev/include linear.h
39 '';
40
41 meta = with lib; {
42 description = "A library for large linear classification";
43 homepage = "https://www.csie.ntu.edu.tw/~cjlin/liblinear/";
44 license = licenses.bsd3;
45 maintainers = [ ];
46 platforms = platforms.unix;
47 };
48}