%define shver 2 %{!?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 Name: libsvm Version: 3.18 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: 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 %define libdir_libsvm %{_libdir}/libsvm %if 0%{?rhel} <= 5 %define moc_path %{_libdir}/qt4/bin/moc %define with_vendor "fedora" %else %define moc_path %{_bindir}/moc-qt4 %endif %ifnarch ppc ppc64 %define no_java FALSE %if 0%{?rhel} <= 6 %define java_dependency java %else %define java_dependency java-headless %endif %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. %if "%{NO_JAVA}" == "FALSE" %package java Summary: Java tools and interfaces for libsvm Group: Development/Libraries BuildRequires: java-devel >= 1.5.0 BuildRequires: jpackage-utils Requires: %{java_dependency} >= 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 %if 0%{?with_vendor} desktop-file-install --delete-original --vendor=%{with_vendor} \ --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 %eles 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 %endif # 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 - 3.18-3 - EPEL5 desktop files need vendor. * Mon Apr 28 2014 Ding-Yi Chen - 3.18-2 - Fixed Bug 1090844 - libsvm-java has unresolved dependencies on epel6 testing * Tue Apr 22 2014 Ding-Yi Chen - 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 - 3.17-4 - Use Requires: java-headless rebuild (#1067528) * Sat Aug 03 2013 Fedora Release Engineering - 3.17-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild * Thu Apr 25 2013 Jon Ciesla - 3.17-2 - Drop desktop vendor tag. * Sat Apr 13 2013 Ding-Yi Chen - 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 - 3.12-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild * Thu Jul 19 2012 Fedora Release Engineering - 3.12-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild * Wed Apr 04 2012 Ding-Yi Chen - 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 - 3.11-3 - Fixed Bug 646154 - libsvm-python's pth is not set correctly * Fri Jun 17 2011 Ding-Yi Chen - 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 - 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 * Tue 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 * Mon 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 * Thu 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) * Wed Sep 26 2007 Ding-Yi Chen - 2.84-6 - Add defattr to each subpackage - Move libsvm.so to libsvm * Mon 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