summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 47e614cbda74fcffa0bdb5d9db24de74784f9dab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# Maintainer : Daniel Bermond < gmail-com: danielbermond >
# Contributor: saxonbeta <saxonbeta at gmail>
# Contributor: Pierre Gueth <pierre.gueth at gmail>
# Contributor: Daniel YC Lin <dlin.tw at gmail>
# Contributor: Tim Huetz <tim at huetz biz>

pkgname=libsvm
pkgver=3.24
_srcver="${pkgver/./}"
pkgrel=1
pkgdesc='A library for Support Vector Machines classification (includes binaries and bindings for python and java)'
arch=('x86_64')
url='https://www.csie.ntu.edu.tw/~cjlin/libsvm/'
license=('BSD')
depends=('gcc-libs')
makedepends=('qt5-base' 'python')
optdepends=('qt5-base: for Qt5 interface with svm-toy'
            'python: for python modules and python CLI tools'
            'gnuplot: for using svm-easy.py'
            'java-runtime: for java bindings')
source=("${pkgname}-${pkgver}.tar.gz"::"https://github.com/cjlin1/libsvm/archive/v${_srcver}.tar.gz"
        '001-libsvm-fix-qt-headers-path.patch'
        '002-libsvm-use-archlinux-flags.patch'
        '003-libsvm-fix-tools-path.patch')
sha256sums=('3ba1ac74ee08c4dd57d3a9e4a861ffb57dab88c6a33fd53eac472fc84fbb2a8f'
            '01d28d48ca955921cff3ee39e6235fbcbe6f13587c056b05797388afc0c45432'
            'ba986c03199445ec0a9d1d113f54753e61f691ad4c66cad80b1f7d6ccf0c2d17'
            '58338a8eac252459c665eb6f1f03f4b86cd541b2c6942357329be022f3bb6fce')

prepare() {
    cd "${pkgname}-${_srcver}"
    
    patch -Np1 -i "${srcdir}/001-libsvm-fix-qt-headers-path.patch"
    patch -Np1 -i "${srcdir}/002-libsvm-use-archlinux-flags.patch"
    patch -Np1 -i "${srcdir}/003-libsvm-fix-tools-path.patch"
}

build() {
    cd "${pkgname}-${_srcver}"
    
    printf '%s\n' '  -> Building library and CLI binaries...'
    make lib all
    
    printf '%s\n' '  -> Building Qt5 interface...'
    make -C svm-toy/qt
}

package() {
    cd "${pkgname}-${_srcver}"
    
    local _pyver
    local _sover
    _pyver="$(python -c 'import sys; print("%s.%s" %sys.version_info[0:2])')"
    _sover="$(find . -maxdepth 1 -type f -regextype posix-basic -regex '.*/libsvm.so.[0-9]*$' | awk -F'.' '{ print $NF }')"
    
    # binaries
    install -D -m755 svm-predict        -t "${pkgdir}/usr/bin"
    install -D -m755 svm-scale          -t "${pkgdir}/usr/bin"
    install -D -m755 svm-train          -t "${pkgdir}/usr/bin"
    install -D -m755 svm-toy/qt/svm-toy -t "${pkgdir}/usr/bin"
    
    # library
    install -D -m755 "libsvm.so.${_sover}" -t "${pkgdir}/usr/lib"
    ln -s "libsvm.so.${_sover}" "${pkgdir}/usr/lib/libsvm.so"
    
    # header
    install -D -m644 svm.h -t "${pkgdir}/usr/include/libsvm"
    
    # python modules
    ## NOTE: 'grid.py' can be used either as a python module or a CLI/tool
    ## https://github.com/cjlin1/libsvm/blob/v324/tools/README#L163-L164
    install -D -m644 python/commonutil.py -t "${pkgdir}/usr/lib/python${_pyver}/site-packages/libsvm"
    install -D -m644 python/svm.py        -t "${pkgdir}/usr/lib/python${_pyver}/site-packages/libsvm"
    install -D -m644 python/svmutil.py    -t "${pkgdir}/usr/lib/python${_pyver}/site-packages/libsvm"
    ln -s ../../../../bin/svm-grid.py        "${pkgdir}/usr/lib/python${_pyver}/site-packages/libsvm/grid.py"
    printf '' | install -D -m644 /dev/stdin  "${pkgdir}/usr/lib/python${_pyver}/site-packages/libsvm/__init__.py"
    
    # python CLI/tools
    install -D -m755 tools/checkdata.py "${pkgdir}/usr/bin/svm-checkdata.py"
    install -D -m755 tools/easy.py      "${pkgdir}/usr/bin/svm-easy.py"
    install -D -m755 tools/grid.py      "${pkgdir}/usr/bin/svm-grid.py"
    install -D -m755 tools/subset.py    "${pkgdir}/usr/bin/svm-subset.py"
    
    # java
    install -D -m644 java/libsvm.jar -t "${pkgdir}/usr/share/java"
    
    # license
    install -D -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}