%define shver 2 Name: libsvm Version: 3.1 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: %{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}.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 Requires: java >= 1.5.0 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 --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.%{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 %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/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 * Fri Jun 17 2011 Ding-Yi Chen - 3.1-2 - Fix the build error on EL-5 * Tue Jun 14 2011 Ding-Yi Chen - 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 - 3.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Tue Dec 14 2010 Ding-Yi Chen - 3.0-2 - Fixed [Bug 661404] New: Wrong symbolic link libsvm.so * Mon Nov 08 2010 Ding-Yi Chen - 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 - 2.91-2 - Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild * Wed Apr 07 2010 Ding-Yi Chen - 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 - 2.90-2 - Obsoletes libsvm-java for ppc and ppc64. * Wed Nov 04 2009 Ding-Yi Chen - 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 - 2.89-4 - Fixed [Bug 524108] put libsvm.jar into _javadir + Move livsvm.jar to _javadir + Move test_applet.html to _datadir/doc/libsvm- - 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 - 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 - 2.89-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Fri Apr 03 2009 Ding-Yi Chen - 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 - 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 - 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 - 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 - 2.86-12 - Correct changelog date * Thu Apr 3 2008 Ding-Yi Chen - 2.86-11 - Fix the Qt path problem * Wed Apr 2 2008 Ding-Yi Chen - 2.86-4 - Support both Qt3 for F8 and earlier, and Qt4 for F9 * Tue Apr 1 2008 Ding-Yi Chen - 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 - 2.85-6 - Fix build error. * Mon Mar 10 2008 Ding-Yi Chen - 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 - 2.85-4 - Move gnuplot from BuildRequires to Requires * Thu Feb 07 2008 Ding-Yi Chen - 2.85-3 - Fix linker name (libsvm.so) - Linked to dynamic libraries * Tue Feb 05 2008 Ding-Yi Chen - 2.85-2 - Fix svm-toy-qt build error * Tue Feb 05 2008 Ding-Yi Chen - 2.85-1 - Fix svm-toy-gtk build error * Mon Feb 04 2008 Ding-Yi Chen - 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 - 2.84-9 - [Bug 254091] Comment 19 - Fix python/Makefile * Thu Dec 13 2007 Ding-Yi Chen - 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 - 2.84-7 - [Bug 254091] Review Request: libsvm - A Library for Support Vector Machines (Comment #12) * Thu Sep 26 2007 Ding-Yi Chen - 2.84-6 - Add defattr to each subpackage - Move libsvm.so to libsvm * Thu Sep 24 2007 Ding-Yi Chen - 2.84-5 - Split out libsvm-java - Add libsvm.so * Thu Aug 30 2007 Ding-Yi Chen - 2.84-4 - Refined description. - Fix the /tmp/python.ver problem * Mon Aug 27 2007 Ding-Yi Chen - 2.84-3 - Fix dependency problem * Mon Aug 27 2007 Ding-Yi Chen - 2.84-2 - Fix mock error - Support Python 2.4 and Python 2.5 * Mon Aug 27 2007 Ding-Yi Chen - 2.84-1 - Fix rpmlint error - Move python related files to libsvm-python * Fri Aug 17 2007 Ding-Yi Chen - 2.84-0 - initial packaging