You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libsvm/libsvm.spec

532 lines
18 KiB

%define shver 2
Name: libsvm
Version: 3.18
Release: 2%{?dist}
Summary: A Library for Support Vector Machines
Group: Development/Libraries
License: BSD
URL: http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Source0: http://www.csie.ntu.edu.tw/~cjlin/libsvm/%{name}-%{version}.tar.gz
Source1: http://www.csie.ntu.edu.tw/~cjlin/libsvm/log
Source2: http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf
Source3: libsvm-svm-toy-gtk.desktop
Source4: libsvm-svm-toy-qt.desktop
Source5: LibSVM-svm-toy-48.png
Patch0: %{name}-%{version}.packageMain.patch
Patch1: %{name}-%{version}.pythonDir.patch
Patch2: %{name}-%{version}.javaDir.patch
Patch3: %{name}-%{version}.svm-toy.patch
Patch4: %{name}-%{version}.toolsDir.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: grep
%{!?pyver: %define pyver %(python -c 'import sys; print(sys.version[0:3])')}
%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
%define libsvm_python_dir %{python_sitearch}/libsvm
%define javac javac
%define jar jar
%define libdir_libsvm %{_libdir}/libsvm
%if 0%{?fedora} >= 9
%define moc_path %{_bindir}/moc-qt4
%else
%if 0%{?rhel} >= 6
%define moc_path %{_bindir}/moc-qt4
%else
%define moc_path %{_libdir}/qt4/bin/moc
%endif
%endif
%ifnarch ppc ppc64
%define no_java FALSE
%else
%define no_java NO_JAVA
Obsoletes: libsvm-java < 2.88-1
%endif
%description
LIBSVM is an integrated software for support vector classification,
(C-SVC, nu-SVC ), regression (epsilon-SVR, nu-SVR) and distribution
estimation (one-class SVM ). It supports multi-class classification.
%package devel
Summary: Header file, object file, and source files of libsvm in C, C++ and Java
Group: Development/Libraries
BuildRequires: glibc-devel gawk
Requires: %{name} = %{version}-%{release}
%description devel
Header file, object file of libsvm in C, C++ and Java.
Install this package if you want to develop programs with libsvm.
%package python
Summary: Python tools and interfaces for libsvm
Group: Development/Libraries
BuildRequires: python-devel >= 2.4 gawk
#gnuplot is required by easy.py
Requires: %{name} = %{version}-%{release}
Requires: gnuplot
%description python
Python tools and interfaces for libsvm.
Install this package if you want to develop
programs with libsvm in Python.
%ifnarch ppc ppc64
%package java
Summary: Java tools and interfaces for libsvm
Group: Development/Libraries
BuildRequires: java-devel >= 1.5.0
BuildRequires: jpackage-utils
%if 0%{?rhel} <= 6
Requires: java >= 1.5.0
%else
Requires: java-headless >= 1.5.0
%endif
Requires: jpackage-utils
Requires: %{name} = %{version}-%{release}
%description java
Java tools and interfaces for libsvm.
Install this package if you want to develop
programs with libsvm in Java.
%endif
%package svm-toy-gtk
Summary: GTK version of svm-toy (libsvm demonstration program)
Group: Development/Libraries
BuildRequires: gtk2-devel
BuildRequires: desktop-file-utils
Requires: gtk2
Requires: %{name} = %{version}-%{release}
%description svm-toy-gtk
svm-toy is a libsvm demonstration program which has a gtk-GUI to
display the derived separating hyperplane.
%package svm-toy-qt
Summary: QT version of svm-toy (libsvm demonstration program)
Group: Development/Libraries
BuildRequires: desktop-file-utils
BuildRequires: pkgconfig
BuildRequires: qt4-devel
Requires: qt4
Requires: %{name} = %{version}-%{release}
%description svm-toy-qt
svm-toy is a libsvm demonstration program which has a qt-GUI to
display the derived separating hyperplane.
%prep
%setup -q
%patch0 -p0 -b .packageMain
%patch1 -p0 -b .pythonDir
%patch2 -p0 -b .javaDir
%patch3 -p0 -b .svm-toy
%patch4 -p0 -b .toolsDir
cp %{SOURCE1} ChangeLog
cp %{SOURCE2} .
cp %{SOURCE3} .
cp %{SOURCE4} .
cp %{SOURCE5} %{name}-svm-toy-gtk-48.png
cp %{SOURCE5} %{name}-svm-toy-qt-48.png
%build
%{__sed} -i 's/\r//' FAQ.html
%{__sed} -i 's/\r//' ChangeLog
make all RPM_CFLAGS="$RPM_OPT_FLAGS" PYTHON_VERSION="%{pyver}" JAVAC="%{javac}" JAR="%{jar}" LIBDIR="%{_libdir}" MOC_PATH="%{moc_path}" NO_JAVA="%{no_java}"
mv python/README python/README-Python
mv tools/README tools/README-Tools
cp README java/README-Java
cp README svm-toy/gtk
cp README svm-toy/qt
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir} PYTHON_VERSION="%{pyver}" LIBSVM_VER="%{version}" NO_JAVA="%{no_java}" JAVA_TARGET_DIR="${RPM_BUILD_ROOT}/%{_javadir}"
rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/src
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/48x48/apps/
cp %{name}-svm-toy-gtk-48.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/48x48/apps/
cp %{name}-svm-toy-qt-48.png $RPM_BUILD_ROOT/%{_datadir}/icons/hicolor/48x48/apps/
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications
cp %{name}-svm-toy-gtk.desktop $RPM_BUILD_ROOT/%{_datadir}/applications
cp %{name}-svm-toy-qt.desktop $RPM_BUILD_ROOT/%{_datadir}/applications
%__ln_s %{name}.so.%{shver} $RPM_BUILD_ROOT/%{_libdir}/%{name}.so
# [Bug 521194] Python: 'import libsvm' doesn't work
echo -e "# This file is not in the original libsvm tarball, but added for convenience of import libsvm.\n\
# This file is released under BSD license, just like the rest of the package.\n"\
> $RPM_BUILD_ROOT/%{libsvm_python_dir}/__init__.py
desktop-file-install --delete-original \
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications \
${RPM_BUILD_ROOT}/%{_datadir}/applications/%{name}-svm-toy-gtk.desktop \
${RPM_BUILD_ROOT}/%{_datadir}/applications/%{name}-svm-toy-qt.desktop \
# Fix Bug 646154 - libsvm-python's pth is not set correctly
echo 'libsvm' > $RPM_BUILD_ROOT/%{python_sitearch}/libsvm.pth
%post -p /sbin/ldconfig
%post svm-toy-gtk
touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
fi
%postun -p /sbin/ldconfig
%postun svm-toy-gtk
touch --no-create %{_datadir}/icons/hicolor
if [ -x %{_bindir}/gtk-update-icon-cache ]; then
%{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
fi
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc COPYRIGHT FAQ.html ChangeLog guide.pdf
%{_bindir}/svm-predict
%{_bindir}/svm-scale
%{_bindir}/svm-train
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/examples
%{_libdir}/%{name}.so.%{shver}
%files devel
%defattr(-,root,root,-)
%doc README
%{_includedir}/%{name}/
%{_libdir}/%{name}.so
%files python
%defattr(-,root,root,-)
%doc python/README-Python tools/README-Tools
%{libsvm_python_dir}
%{_bindir}/svm-*.py
%{python_sitearch}/libsvm.pth
%ifnarch ppc ppc64
%files java
%defattr(-,root,root,-)
%doc java/README-Java java/test_applet.html
%{_javadir}/%{name}.jar
#%{_datadir}/javadoc/%{name}-%{version}
%endif
%files svm-toy-gtk
%defattr(-,root,root,-)
%doc svm-toy/gtk/README
%{_bindir}/svm-toy-gtk
%{_datadir}/icons/hicolor/48x48/apps/%{name}-svm-toy-gtk-48.png
%{_datadir}/applications/*%{name}-svm-toy-gtk.desktop
%files svm-toy-qt
%defattr(-,root,root,-)
%doc svm-toy/qt/README
%{_bindir}/svm-toy-qt
%{_datadir}/icons/hicolor/48x48/apps/%{name}-svm-toy-qt-48.png
%{_datadir}/applications/*%{name}-svm-toy-qt.desktop
%changelog
* Mon Apr 28 2014 Ding-Yi Chen <dchen@redhat.com> - 3.18-2
- Fixed Bug 1090844 - libsvm-java has unresolved dependencies on epel6 testing
* Tue Apr 22 2014 Ding-Yi Chen <dchen@redhat.com> - 3.18-1
- Upstream update to 3.18
- svm.cpp and svm-scale.c: check return values of fscanf
- matlab interface: Makefile no longer handles octave
because make.m should be used
* Fri Mar 28 2014 Michael Simacek <msimacek@redhat.com> - 3.17-4
- Use Requires: java-headless rebuild (#1067528)
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.17-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Thu Apr 25 2013 Jon Ciesla <limburgher@gmail.com> - 3.17-2
- Drop desktop vendor tag.
* Sat Apr 13 2013 Ding-Yi Chen <dchen@redhat.com> - 3.17-1
- Upstream update from 3.13 to 3.17
svm.c and svm.h:
add sv_indices in model structure, so users can know which training instances are SVs
two library funs svm_get_sv_indices and svm_get_nr_sv are added
max_iter warning moved to stderr so -q won't disable it
svm-train.c:
usage modified to stress that multiclass is supported
svm-predict.c:
add -q for svm-predict
svm-scale.c:
issue a warning if feature indices do not start from 1
issue a warning for inconsistency between scaling-factor file and input file
tools:
subset.py is written to be much faster
fix the bug of not freeing sv_indices
tools/grid.py:
-null option: allow the search on C or g only
-resume option: resume tasks from an earlier run
can be called as a python module
python interface:
local package searched first
libsvm options can be str or list
param.show() becomes print(param)
tools/:
easy.py fails in 3.15. Fix it by modifying grid.py
svm.cpp:
if class labels are 1 and -1, ensure labels[0] = 1 and labels[1] = -1
initialize model->sv_indices as null in svm_load_model
if nr_fold > # data, change nr_fold to be # data and ro leave-one-out cv
matlab interface:
handle the problem where output variables are not specified
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.12-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.12-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Wed Apr 04 2012 Ding-Yi Chen <dchen@redhat.com> - 3.12-1
- Upstream update:
svm-toy: support loading/saving of regression data
python interface: handle the issue of the "0th" feature if using lists
tools/grid.py: not redrawing contour if c,g, cv doesn't change
add setlocale when saving and loading model so not affected by users' locale
* Thu Jan 12 2012 Ding-Yi Chen <dchen@redhat.com> - 3.11-3
- Fixed Bug 646154 - libsvm-python's pth is not set correctly
* Fri Jun 17 2011 Ding-Yi Chen <dchen@redhat.com> - 3.11-1
- Upstream update:
+ Set max number of iterations in the main loop of solvers
+ matlab:
new make.m for unix/mac/windows and for matlab/octave
+ matlab and python:
fix a problem that decision values returned by svmpredict is empty if number of classes = 1
* Fri Jun 17 2011 Ding-Yi Chen <dchen@redhat.com> - 3.1-2
- Fix the build error on EL-5
* Tue Jun 14 2011 Ding-Yi Chen <dchen@redhat.com> - 3.1-1
- svm tools is now installed in /usr/bin as svm-*.py
i.e. tools/easy.py is linked as svm-easy.py.
- Upstream update:
+ MATLAB interface:
+ Merge matlab interface to core libsvm
+ Using mexPrintf() when calling info() in MATLAB interface.
+ Both 32- and 64-bit windows binary files are provided
+ Java:
Math.random is replaced by Random in java interface
+ Python interface:
subroutines to get SVs
relative path to load *.dll and *.so
+ svm.cpp:
null pointer check before release memory in svm_free_model_content()
svm_destroy_model() no longer supported.
+ svm-train.c and svm-predict.c
Better format check in reading data labels
+ svm-toy:
fix the svm_toy dialog path
+ tools:
Using new string formatting/encoding in tools/*.py
clearer png output, fix grid.py legend
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Tue Dec 14 2010 Ding-Yi Chen <dchen@redhat.com> - 3.0-2
- Fixed [Bug 661404] New: Wrong symbolic link libsvm.so
* Mon Nov 08 2010 Ding-Yi Chen <dchen@redhat.com> - 3.0-1
- Fixed the spelling errors of svm-toy-gtk and svm-toy-qt
- Upstream update:
* Move model structure to svm.h
* Two functions for freeing a model (content or the whole model)
* QD from Qfloat to double (better precision because SSE on 64-bit machines less accurate than i387 on 32-bit
* exit status for checkdata.py
* old python interface (swig) is removed
* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 2.91-2
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
* Wed Apr 07 2010 Ding-Yi Chen <dchen@redhat.com> - 2.91-1
- Fixed Bug 564887 - FTBFS libsvm-2.90-3.fc13
- Upstream update:
* completely new python interface using ctype
* new way to set the print_string function
* Java: able to load model from a BufferedReader directly
* fix grid.py so -log2c can be run under python 2.6 or after
* Thu Nov 05 2009 Ding-Yi Chen <dchen@redhat.com> - 2.90-2
- Obsoletes libsvm-java for ppc and ppc64.
* Wed Nov 04 2009 Ding-Yi Chen <dchen@redhat.com> - 2.90-1
- Upstream update to 2.9, change to 2.90 for conveniently update.
+ tools/*.py can be run under python 3.0
+ svm_set_quiet() in python interface to disable outputs
+ check gamma < 0
+ internal functions to be static
* Fri Sep 18 2009 Ding-Yi Chen <dchen@redhat.com> - 2.89-4
- Fixed [Bug 524108] put libsvm.jar into _javadir
+ Move livsvm.jar to _javadir
+ Move test_applet.html to _datadir/doc/libsvm-<version>
- Buildrequire changed to java-devel>=1.5.0, jpackage-utils
- Require changed to java>=1.5.0, jpackage-utils
* Wed Sep 16 2009 Ding-Yi Chen <dchen@redhat.com> - 2.89-3
- Fix the building for EL-5
Note that libsvm-java on ppc and ppc64 for EL-5 is excluded,
as java-1.6.0-openjdk-devel for them do not exist yet.
- Change the Java buildrequires from java-sdk to java-1.6.0-openjdk-devel
- Fix [Bug 521194] Python: 'import libsvm' doesn't work.
By adding __init__.py to libsvm_python_dir
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.89-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Fri Apr 03 2009 Ding-Yi Chen <dchen@redhat.com> - 2.89-1
- Upstream Update to 2.89:
+ reduce input/loading time of svm-train/svm-predict by half
+ pointer function so users can specify their own outputs
+ remove info_flush()
+ a extern variable libsvm_version
+ svm-train -q option (disable outputs)
+ svm-scale: warning if more nonzero produced
+ easy.py: popel.communiate() to avoid some deadlock (if lots of
outputs when #classes is large)
* Mon Nov 10 2008 Ding-Yi Chen <dchen@redhat.com> - 2.88-2
- Fix java BuildRequire and Build
- javadoc have been removed because ppc and ppc64 do not have a
suitable package to build javadoc in F-8, nor does javadoc
provide much useful information.
* Wed Nov 05 2008 Ding-Yi Chen <dchen@redhat.com> - 2.88-0
- Note:
+ SO version now follows upstream, i.e. SHVER=1, as upstream start to build shared library now.
Be aware that previously SO version of libsvm.so is libsvm.so.2.86, which looks higher than
the current SO version libsvm.so.1.
+ Replaced java-1.5.0-gcj-devel with java-1.6.0-openjdk-devel.
+ java sub-package now have javadoc.
- Upstream update
+ From 2.87: 2008/10/13
* svm-toy/qt updated to qt4 from qt3
* fix a bug in svm-scale.c
* max feature index of -r file is considered
* Makefile: add make lib; add -Wconversion and -fPIC in Makefile
* Add "rb" in load_model of svm.cpp
* Simplify do_shrinking of svm.cpp
* Change the order of loops in reconstrict_gradient of svm.cpp
* save the number of kernel evaluations
* Add python/setup.py
+ From 2.88: 2008/10/30
* better gradient reconstructions
* issue a warning when -h 0 may be faster
* Tue Apr 29 2008 Ding-Yi Chen <dchen@redhat.com> - 2.86-13
- Fix svm-toy-qt clear button does not clear.
(from Hsiang-Fu Yu in National Taiwan University)
* Thu Apr 3 2008 Ding-Yi Chen <dchen@redhat.com> - 2.86-12
- Correct changelog date
* Thu Apr 3 2008 Ding-Yi Chen <dchen@redhat.com> - 2.86-11
- Fix the Qt path problem
* Wed Apr 2 2008 Ding-Yi Chen <dchen@redhat.com> - 2.86-4
- Support both Qt3 for F8 and earlier, and Qt4 for F9
* Tue Apr 1 2008 Ding-Yi Chen <dchen@redhat.com> - 2.86-0
- Upstream update to 2.86
- svm-scale for java
- version number in svm.h and svm.m4
- rename svmtrain.exe to svm-train.exe
- python: while 1 --> while True, Popen -> call
- show best parameters on the contour of grid.py
- LIBSVM_VER_MAJOR and LIBSVM_VER_MINOR are defined in libsvm.spec instead in
* Tue Mar 11 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-6
- Fix build error.
* Mon Mar 10 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-5
- [Bug 436392]: Fix by copy from right place.
- Add desktop files and icons for svm-toy-gtk and svm-toy-qt
* Mon Feb 11 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-4
- Move gnuplot from BuildRequires to Requires
* Thu Feb 07 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-3
- Fix linker name (libsvm.so)
- Linked to dynamic libraries
* Tue Feb 05 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-2
- Fix svm-toy-qt build error
* Tue Feb 05 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-1
- Fix svm-toy-gtk build error
* Mon Feb 04 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-0
- Upgrade to 2.85
- Include guide.pdf in main package
- Change the dependent from eclipse-ecj to java-1.5.0-gcj
- Add svm-toy-gtk
- Add svm-toy-qt
* Thu Dec 20 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-9
- [Bug 254091] Comment 19
- Fix python/Makefile
* Thu Dec 13 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-8
- Fix improper sed.
- Change ldconfig to /sbin/ldconfig
- Add gnuplot dependency for libsvm-python, as tools/easy.py needs it.
* Mon Dec 03 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-7
- [Bug 254091] Review Request: libsvm - A Library for Support Vector Machines (Comment #12)
* Wed Sep 26 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-6
- Add defattr to each subpackage
- Move libsvm.so to libsvm
* Mon Sep 24 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-5
- Split out libsvm-java
- Add libsvm.so
* Thu Aug 30 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-4
- Refined description.
- Fix the /tmp/python.ver problem
* Mon Aug 27 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-3
- Fix dependency problem
* Mon Aug 27 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-2
- Fix mock error
- Support Python 2.4 and Python 2.5
* Mon Aug 27 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-1
- Fix rpmlint error
- Move python related files to libsvm-python
* Fri Aug 17 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-0
- initial packaging