Blob Blame History Raw
Name:           libsvm
Version:        2.89
Release:        3%{?dist}
Summary:        A Library for Support Vector Machines

Group:          Development/Libraries
License:        BSD
URL:            http://www.csie.ntu.edu.tw/~cjlin/libsvm/
Source0:        %{name}-%{version}.tar.gz
#Source0:        http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/%{name}+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}.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root

%{!?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
%define moc_path %{_libdir}/qt4/bin/moc
%endif
%ifnarch ppc ppc64
%define no_java FALSE
%else
%define no_java NO_JAVA
%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-1.6.0-openjdk-devel
Requires: jre >= 1.6.0
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 demostration 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 demostration program which has a gtk-GUI to 
display the derived separating hyperplane.

%package svm-toy-qt
Summary:    QT version of svm-toy (libsvm demostration 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 demostration program which has a qt-GUI to 
display the derived separating hyperplane.

%prep
%setup -q 
%patch0 -p0 -b .orig
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}"
ln -sf %{name}.so.1 ${RPM_BUILD_ROOT}%{_libdir}/%{name}.so
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

# [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 --vendor=fedora \
  --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 \



%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.1


%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}

%ifnarch ppc ppc64
%files java
%defattr(-,root,root,-)
%doc java/README-Java 
%{_datadir}/%{name}/java
#%{_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/fedora-%{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/fedora-%{name}-svm-toy-qt.desktop


%changelog
* Mon 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

* Thu 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

* Tue 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

* Wed 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) 

* Thu Sep 26 2007 Ding-Yi Chen <dchen@redhat.com> - 2.84-6
- Add defattr to each subpackage
- Move libsvm.so to libsvm

* Thu 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