diff --git a/.gitignore b/.gitignore
index ce11a88..1ad2fca 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
guide.pdf
libsvm-2.91.tar.gz
+/guide.pdf
+/libsvm-3.0.tar.gz
diff --git a/libsvm-2.91.patch b/libsvm-2.91.patch
deleted file mode 100644
index 9867ae9..0000000
--- a/libsvm-2.91.patch
+++ /dev/null
@@ -1,379 +0,0 @@
-diff -up ./java/Makefile.orig ./java/Makefile
---- ./java/Makefile.orig 2009-02-18 10:41:04.000000000 +1000
-+++ ./java/Makefile 2010-04-07 11:28:04.000000000 +1000
-@@ -4,13 +4,21 @@ FILES = libsvm/svm.class libsvm/svm_mode
- libsvm/svm_print_interface.class \
- svm_train.class svm_predict.class svm_toy.class svm_scale.class
-
-+JAVA_DOC_DIR=${INSTDIR}/share/javadoc/libsvm-${LIBSVM_VER}
-+CLASSPATH = .
- #JAVAC = jikes
--JAVAC_FLAGS = -target 1.5 -source 1.5
-+JAVAC_FLAGS = -target 1.5 -source 1.5 -classpath ${CLASSPATH}
-+ifndef JAVAC
- JAVAC = javac
-+endif
- # JAVAC_FLAGS =
-
-+ifndef JAR
-+JAR=jar
-+endif
-+
- all: $(FILES)
-- jar cvf libsvm.jar *.class libsvm/*.class
-+ ${JAR} cvf libsvm.jar *.class libsvm/*.class
-
- .java.class:
- $(JAVAC) $(JAVAC_FLAGS) $<
-@@ -18,8 +26,23 @@ all: $(FILES)
- libsvm/svm.java: libsvm/svm.m4
- m4 libsvm/svm.m4 > libsvm/svm.java
-
-+javadoc: docs/index.html
-+
-+docs/index.html: $(FILES)
-+ javadoc -d docs *.java libsvm/*.java
-+
-+install:
-+ mkdir -p ${JAVA_TARGET_DIR}
-+ install -m 644 libsvm.jar ${JAVA_TARGET_DIR}
-+# mkdir -p ${JAVA_DOC_DIR}
-+# cd docs; cp -R * ${JAVA_DOC_DIR}
-+uninstall:
-+ rm -fr ${JAVA_TARGETDIR}
-+# rm -fr ${JAVA_DOC_DIR}
-+
- clean:
- rm -f libsvm/*.class *.class *.jar libsvm/*~ *~ libsvm/svm.java
-+ rm -rf docs
-
- dist: clean all
- rm *.class libsvm/*.class
-diff -up ./java/test_applet.html.orig ./java/test_applet.html
---- ./java/test_applet.html.orig 2003-07-12 14:07:32.000000000 +1000
-+++ ./java/test_applet.html 2010-04-07 11:28:04.000000000 +1000
-@@ -1 +1,3 @@
--
-+
-+
-+
-diff -up ./Makefile.orig ./Makefile
---- ./Makefile.orig 2010-03-19 00:54:02.000000000 +1000
-+++ ./Makefile 2010-04-07 11:28:04.000000000 +1000
-@@ -1,11 +1,39 @@
- CXX ?= g++
--CFLAGS = -Wall -Wconversion -O3 -fPIC
-+CFLAGS = ${RPM_CFLAGS} -Wall -Wconversion -O3 -fPIC
- SHVER = 1
-+MAKE = make
-+DOT_LIBS=.libs
-+LIBS= -L${DOT_LIBS} -lsvm
-+export LIBSVM_VER
-+
-+ifndef DESTDIR
-+INSTDIR=/usr
-+else
-+INSTDIR=${DESTDIR}/usr
-+endif
-
--all: svm-train svm-predict svm-scale
-+export INSTDIR
-+
-+IS_64=$(shell /bin/uname -i | awk '/64/ {print 64}')
-+
-+ifndef LIBDIR
-+LIB_INSTDIR=${INSTDIR}/lib${IS_64}
-+else
-+LIB_INSTDIR=${INSTDIR}/..${LIBDIR}
-+endif
-+
-+ifndef LIBDIR
-+LIBDIR=/usr/lib${IS_64}
-+endif
-+
-+export LIBDIR
-+export LIB_INSTDIR
-+
-+all: lib svm-train svm-predict svm-scale svm-python svm-java svm-toy-gtk svm-toy-qt
-
- lib: svm.o
-- $(CXX) -shared -dynamiclib svm.o -o libsvm.so.$(SHVER)
-+ $(CXX) -shared -Wl,-soname,libsvm.so.$(SHVER) svm.o -o libsvm.so.$(SHVER)
-+ ln -sf libsvm.so.$(SHVER) libsvm.so
-
- svm-predict: svm-predict.c svm.o
- $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
-@@ -16,4 +44,65 @@ svm-scale: svm-scale.c
- svm.o: svm.cpp svm.h
- $(CXX) $(CFLAGS) -c svm.cpp
- clean:
-- rm -f *~ svm.o svm-train svm-predict svm-scale libsvm.so.$(SHVER)
-+ rm -f *~ svm.o svm-train svm-predict svm-scale svm-toy/gtk/svm-toy-gtk svm-toy/qt/svm-toy-qt
-+ ${MAKE} -C python clean
-+ ${MAKE} -C java clean
-+svm-python:
-+ ${MAKE} -C python
-+
-+svm-java:
-+ifneq ("${NO_JAVA}","NO_JAVA")
-+ ${MAKE} -C java
-+endif
-+svm-toy-gtk:
-+ ${MAKE} -C svm-toy/gtk
-+
-+svm-toy-qt:
-+ ${MAKE} -C svm-toy/qt
-+
-+install: all
-+ mkdir -p ${INSTDIR}/bin
-+ install -m 755 svm-train ${INSTDIR}/bin
-+ install -m 755 svm-predict ${INSTDIR}/bin
-+ install -m 755 svm-scale ${INSTDIR}/bin
-+ mkdir -p ${LIB_INSTDIR}
-+ install -m 755 libsvm.so.$(SHVER) ${LIB_INSTDIR}
-+# install package libsvm-devel
-+ mkdir -p ${INSTDIR}/include/libsvm
-+ install -m 644 svm.h ${INSTDIR}/include/libsvm
-+ mkdir -p ${INSTDIR}/share/libsvm/src/java/libsvm
-+ install -m 644 *.h ${INSTDIR}/share/libsvm/src
-+ install -m 644 *.c ${INSTDIR}/share/libsvm/src
-+ install -m 644 *.cpp ${INSTDIR}/share/libsvm/src
-+ install -m 644 Makefile ${INSTDIR}/share/libsvm/src
-+ifneq ("${NO_JAVA}","NO_JAVA")
-+ install -m 644 java/*.java ${INSTDIR}/share/libsvm/src/java
-+ install -m 644 java/Makefile ${INSTDIR}/share/libsvm/src/java
-+ install -m 644 java/libsvm/*.java ${INSTDIR}/share/libsvm/src/java/libsvm
-+ install -m 644 java/libsvm/*.m4 ${INSTDIR}/share/libsvm/src/java/libsvm
-+# install package libsvm-java
-+ ${MAKE} -C java install
-+endif
-+# install package libsvm-python
-+ ${MAKE} -C python install
-+# install package svm-toy
-+ install -m 755 svm-toy/gtk/svm-toy-gtk ${INSTDIR}/bin
-+ install -m 755 svm-toy/qt/svm-toy-qt ${INSTDIR}/bin
-+# install examples
-+ mkdir -p ${INSTDIR}/share/libsvm/examples
-+ install -m 644 heart_scale ${INSTDIR}/share/libsvm/examples
-+uninstall:
-+ rm -f ${INSTDIR}/bin/svm-train
-+ rm -f ${INSTDIR}/bin/svm-predict
-+ rm -f ${INSTDIR}/bin/svm-scale
-+ rm -fr ${INSTDIR}/libsvm/examples
-+ rm -f ${INSTDIR}/include/libsvm/svm.h
-+ rm -f ${LIB_INSTDIR}/libsvm/svm.o
-+ rm -fr ${INSTDIR}/libsvm/src
-+ rm -fr ${INSTDIR}/libsvm
-+ ${MAKE} -C python uninstall
-+ifneq ("${NO_JAVA}","NO_JAVA")
-+ ${MAKE} -C java uninstall
-+endif
-+ rm -f ${INSTDIR}/bin/svm-toy-gtk
-+ rm -f ${INSTDIR}/bin/svm-toy-qt
-diff -up ./python/Makefile.orig ./python/Makefile
---- ./python/Makefile.orig 2010-03-19 01:57:28.000000000 +1000
-+++ ./python/Makefile 2010-04-07 11:28:04.000000000 +1000
-@@ -1,4 +1,15 @@
--all = lib
-+PYTHON_PATH ?= python${PYTHON_VERSION}/site-packages/libsvm
-+PYTHON_TARGETDIR=${LIB_INSTDIR}/${PYTHON_PATH}
-+
-+all: lib
-
- lib: ../svm.cpp ../svm.h
- cd ..; make lib; cd -
-+
-+install: all
-+ mkdir -p ${PYTHON_TARGETDIR}
-+ install -m 755 *.py ${PYTHON_TARGETDIR}
-+ install -m 755 ../tools/*.py ${PYTHON_TARGETDIR}
-+
-+uninstall:
-+ rm -fr ${LIBDIR}/${PYTHON_PATH}
-diff -up ./python_old/Makefile.orig ./python_old/Makefile
---- ./python_old/Makefile.orig 2009-09-16 23:37:45.000000000 +1000
-+++ ./python_old/Makefile 2010-04-07 11:28:04.000000000 +1000
-@@ -2,9 +2,11 @@ CXX ?= g++
- SWIG ?= swig
-
- #Windows: see ../README ../Makefile.win
--PYTHON_INCLUDEDIR ?= /usr/include/python2.5
-+PYTHON_INCLUDEDIR ?= /usr/include/python${PYTHON_VERSION}
-+PYTHON_TARGETDIR=${LIB_INSTDIR}/python${PYTHON_VERSION}/site-packages/libsvm
-
- CFLAGS = -O3 -I$(PYTHON_INCLUDEDIR) -I..
-+
- LDFLAGS = -shared
- # Mac OS
- # LDFLAGS = -framework Python -bundle
-@@ -28,3 +30,16 @@ clean:
-
- cleaner: clean
- rm -f svmc_wrap.c
-+
-+install: all
-+ mkdir -p ${PYTHON_TARGETDIR}
-+ install -m 755 cross_validation.py ${PYTHON_TARGETDIR}
-+ install -m 644 svm.py ${PYTHON_TARGETDIR}
-+ install -m 755 svm_test.py ${PYTHON_TARGETDIR}
-+ install -m 755 test_cross_validation.py ${PYTHON_TARGETDIR}
-+ install -m 644 *.i ${PYTHON_TARGETDIR}
-+ install -m 755 *.so ${PYTHON_TARGETDIR}
-+ install -m 755 ../tools/*.py ${PYTHON_TARGETDIR}
-+
-+uninstall:
-+ rm -fr ${LIBDIR}/python${PYTHON_VERSION}/site-packages/libsvm
-diff -up ./svm-toy/gtk/callbacks.cpp.orig ./svm-toy/gtk/callbacks.cpp
---- ./svm-toy/gtk/callbacks.cpp.orig 2006-03-04 17:40:12.000000000 +1000
-+++ ./svm-toy/gtk/callbacks.cpp 2010-04-07 11:28:04.000000000 +1000
-@@ -2,6 +2,7 @@
- #include
- #include
- #include
-+#include
- #include "callbacks.h"
- #include "interface.h"
- #include "../../svm.h"
-diff -up ./svm-toy/gtk/Makefile.orig ./svm-toy/gtk/Makefile
---- ./svm-toy/gtk/Makefile.orig 2007-10-14 16:29:12.000000000 +1000
-+++ ./svm-toy/gtk/Makefile 2010-04-07 11:28:04.000000000 +1000
-@@ -2,21 +2,27 @@ CC? = gcc
- CXX? = g++
- CFLAGS = -Wall -O3 -g `gtk-config --cflags`
- LIBS = `gtk-config --libs`
-+COPT = -Wall -O3 -g `pkg-config --cflags --libs gtk+-2.0`
-+LOCAL_LIBDIR=../../
-+LIBS= -L${LOCAL_LIBDIR} -lsvm
-
--svm-toy: main.o interface.o callbacks.o ../../svm.o
-- $(CXX) $(CFLAGS) main.o interface.o callbacks.o ../../svm.o -o svm-toy $(LIBS)
-+
-+all: svm-toy-gtk
-+
-+svm-toy-gtk: main.o interface.o callbacks.o
-+ $(CXX) $(COPT) main.o interface.o callbacks.o ${LIBS} -o svm-toy-gtk
-
- main.o: main.c
-- $(CC) $(CFLAGS) -c main.c
-+ $(CC) $(COPT) -c main.c
-
- interface.o: interface.c interface.h
-- $(CC) $(CFLAGS) -c interface.c
-+ $(CC) $(COPT) -c interface.c
-
- callbacks.o: callbacks.cpp callbacks.h
-- $(CXX) $(CFLAGS) -c callbacks.cpp
-+ $(CXX) $(COPT) -c callbacks.cpp
-
--../../svm.o:
-- cd ../..; make svm.o
-+#../../svm.o:
-+# cd ../..; make svm.o
-
- clean:
-- rm -f *~ callbacks.o svm-toy main.o interface.o callbacks.o ../../svm.o
-+ rm -f *~ callbacks.o svm-toy-gtk main.o interface.o callbacks.o
-diff -up ./svm-toy/qt/Makefile.orig ./svm-toy/qt/Makefile
---- ./svm-toy/qt/Makefile.orig 2008-12-19 16:42:05.000000000 +1000
-+++ ./svm-toy/qt/Makefile 2010-04-07 11:28:04.000000000 +1000
-@@ -1,17 +1,21 @@
- CXX? = g++
--CFLAGS = -Wall -O3 -I$(INCLUDE) -I$(INCLUDE)/QtGui -lQtGui
-+CFLAGS = -Wall -O3
-+FLAGS:=${CFLAGS} `pkg-config --cflags --libs QtGui`
-+LOCAL_LIBDIR=../../
-+LIBS= -L${LOCAL_LIBDIR} -lsvm
-+
- INCLUDE = /usr/include/qt4
--MOC = /usr/bin/moc-qt4
-
--svm-toy: svm-toy.cpp svm-toy.moc ../../svm.o
-- $(CXX) $(CFLAGS) svm-toy.cpp ../../svm.o -o svm-toy
-+MOC=${MOC_PATH}
-+
-+all: svm-toy-qt
-+
-+svm-toy-qt: svm-toy.cpp svm-toy.moc
-+ $(CXX) $(FLAGS) svm-toy.cpp ${LIBS} -o svm-toy-qt
-
- svm-toy.moc: svm-toy.cpp
- $(MOC) svm-toy.cpp -o svm-toy.moc
-
--../../svm.o:
-- cd ../..; make svm.o
--
- clean:
-- rm -f *~ svm-toy svm-toy.moc ../../svm.o
-+ rm -f *~ svm-toy-qt svm-toy.moc ../../svm.o
-
-diff -up ./tools/easy.py.orig ./tools/easy.py
---- ./tools/easy.py.orig 2009-05-14 15:09:29.000000000 +1000
-+++ ./tools/easy.py 2010-04-07 11:28:04.000000000 +1000
-@@ -2,6 +2,7 @@
-
- import sys
- import os
-+from distutils.sysconfig import get_python_lib
- from subprocess import *
-
- if len(sys.argv) <= 1:
-@@ -12,10 +13,10 @@ if len(sys.argv) <= 1:
-
- is_win32 = (sys.platform == 'win32')
- if not is_win32:
-- svmscale_exe = "../svm-scale"
-- svmtrain_exe = "../svm-train"
-- svmpredict_exe = "../svm-predict"
-- grid_py = "./grid.py"
-+ svmscale_exe = "/usr/bin/svm-scale"
-+ svmtrain_exe = "/usr/bin/svm-train"
-+ svmpredict_exe = "/usr/bin/svm-predict"
-+ grid_py = get_python_lib(1)+"/libsvm/grid.py"
- gnuplot_exe = "/usr/bin/gnuplot"
- else:
- # example for windows
-diff -up ./tools/grid.py.orig ./tools/grid.py
---- ./tools/grid.py.orig 2009-11-20 22:29:46.000000000 +1000
-+++ ./tools/grid.py 2010-04-07 14:14:21.000000000 +1000
-@@ -17,7 +17,7 @@ else:
-
- is_win32 = (sys.platform == 'win32')
- if not is_win32:
-- svmtrain_exe = "../svm-train"
-+ svmtrain_exe = "/usr/bin/svm-train"
- gnuplot_exe = "/usr/bin/gnuplot"
- else:
- # example for windows
-@@ -158,10 +158,10 @@ def redraw(db,best_param,tofile=False):
- gnuplot.write(("set label \"C = %s gamma = %s\""
- " at screen 0.5,0.8 center\n" % (2**best_log2c, 2**best_log2g)).encode())
- gnuplot.write("splot \"-\" with lines\n".encode())
--
-
-
--
-+
-+
- db.sort(key = lambda x:(x[0], -x[1]))
-
- prevc = db[0][0]
-@@ -222,9 +222,9 @@ class Worker(Thread):
- if rate is None: raise "get no rate"
- except:
- # we failed, let others do that and we just quit
--
-+
- traceback.print_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2])
--
-+
- self.job_queue.put((cexp,gexp))
- print('worker %s quit.' % self.name)
- break
-@@ -331,7 +331,6 @@ def main():
-
- result_file = open(out_filename, 'w')
-
--
- db = []
- best_rate = -1
- best_c1,best_g1 = None,None
diff --git a/libsvm-3.0.javaDir.patch b/libsvm-3.0.javaDir.patch
new file mode 100644
index 0000000..056374b
--- /dev/null
+++ b/libsvm-3.0.javaDir.patch
@@ -0,0 +1,59 @@
+diff -up ./java/Makefile.javaDir ./java/Makefile
+--- ./java/Makefile.javaDir 2009-02-18 10:41:04.000000000 +1000
++++ ./java/Makefile 2010-11-08 10:59:11.229518442 +1000
+@@ -4,13 +4,21 @@ FILES = libsvm/svm.class libsvm/svm_mode
+ libsvm/svm_print_interface.class \
+ svm_train.class svm_predict.class svm_toy.class svm_scale.class
+
++JAVA_DOC_DIR=${INSTDIR}/share/javadoc/libsvm-${LIBSVM_VER}
++CLASSPATH = .
+ #JAVAC = jikes
+-JAVAC_FLAGS = -target 1.5 -source 1.5
++JAVAC_FLAGS = -target 1.5 -source 1.5 -classpath ${CLASSPATH}
++ifndef JAVAC
+ JAVAC = javac
++endif
+ # JAVAC_FLAGS =
+
++ifndef JAR
++JAR=jar
++endif
++
+ all: $(FILES)
+- jar cvf libsvm.jar *.class libsvm/*.class
++ ${JAR} cvf libsvm.jar *.class libsvm/*.class
+
+ .java.class:
+ $(JAVAC) $(JAVAC_FLAGS) $<
+@@ -18,8 +26,23 @@ all: $(FILES)
+ libsvm/svm.java: libsvm/svm.m4
+ m4 libsvm/svm.m4 > libsvm/svm.java
+
++javadoc: docs/index.html
++
++docs/index.html: $(FILES)
++ javadoc -d docs *.java libsvm/*.java
++
++install:
++ mkdir -p ${JAVA_TARGET_DIR}
++ install -m 644 libsvm.jar ${JAVA_TARGET_DIR}
++# mkdir -p ${JAVA_DOC_DIR}
++# cd docs; cp -R * ${JAVA_DOC_DIR}
++uninstall:
++ rm -fr ${JAVA_TARGETDIR}
++# rm -fr ${JAVA_DOC_DIR}
++
+ clean:
+ rm -f libsvm/*.class *.class *.jar libsvm/*~ *~ libsvm/svm.java
++ rm -rf docs
+
+ dist: clean all
+ rm *.class libsvm/*.class
+diff -up ./java/test_applet.html.javaDir ./java/test_applet.html
+--- ./java/test_applet.html.javaDir 2003-07-12 14:07:32.000000000 +1000
++++ ./java/test_applet.html 2010-11-08 10:59:11.229518442 +1000
+@@ -1 +1,3 @@
+-
++
++
++
diff --git a/libsvm-3.0.packageMain.patch b/libsvm-3.0.packageMain.patch
new file mode 100644
index 0000000..fb6a009
--- /dev/null
+++ b/libsvm-3.0.packageMain.patch
@@ -0,0 +1,114 @@
+diff -up ./Makefile.packageMain ./Makefile
+--- ./Makefile.packageMain 2010-09-12 22:11:10.000000000 +1000
++++ ./Makefile 2010-11-08 11:04:38.423570586 +1000
+@@ -1,11 +1,40 @@
+ CXX ?= g++
+-CFLAGS = -Wall -Wconversion -O3 -fPIC
++CFLAGS = ${RPM_CFLAGS} -Wall -Wconversion -O3 -fPIC
+ SHVER = 2
++MAKE = make
++DOT_LIBS=.libs
++LIBS= -L${DOT_LIBS} -lsvm
++export LIBSVM_VER
++
++ifndef DESTDIR
++ INSTDIR=/usr
++else
++ INSTDIR=${DESTDIR}/usr
++endif
++
++export INSTDIR
++
++IS_64=$(shell /bin/uname -i | awk '/64/ {print 64}')
++
++ifndef LIBDIR
++ LIB_INSTDIR=${INSTDIR}/lib${IS_64}
++else
++ LIB_INSTDIR=${INSTDIR}/..${LIBDIR}
++endif
++
++ifndef LIBDIR
++ LIBDIR=/usr/lib${IS_64}
++endif
++
++export LIBDIR
++export LIB_INSTDIR
++
++all: lib svm-train svm-predict svm-scale svm-python svm-java svm-toy-gtk svm-toy-qt
+
+-all: svm-train svm-predict svm-scale
+
+ lib: svm.o
+- $(CXX) -shared -dynamiclib svm.o -o libsvm.so.$(SHVER)
++ $(CXX) -shared -Wl,-soname,libsvm.so.$(SHVER) svm.o -o libsvm.so.$(SHVER)
++ ln -sf libsvm.so.$(SHVER) libsvm.so
+
+ svm-predict: svm-predict.c svm.o
+ $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
+@@ -16,4 +45,65 @@ svm-scale: svm-scale.c
+ svm.o: svm.cpp svm.h
+ $(CXX) $(CFLAGS) -c svm.cpp
+ clean:
+- rm -f *~ svm.o svm-train svm-predict svm-scale libsvm.so.$(SHVER)
++ rm -f *~ svm.o svm-train svm-predict svm-scale svm-toy/gtk/svm-toy-gtk svm-toy/qt/svm-toy-qt
++ ${MAKE} -C python clean
++ ${MAKE} -C java clean
++svm-python:
++ ${MAKE} -C python
++
++svm-java:
++ifneq ("${NO_JAVA}","NO_JAVA")
++ ${MAKE} -C java
++endif
++svm-toy-gtk:
++ ${MAKE} -C svm-toy/gtk
++
++svm-toy-qt:
++ ${MAKE} -C svm-toy/qt
++
++install: all
++ mkdir -p ${INSTDIR}/bin
++ install -m 755 svm-train ${INSTDIR}/bin
++ install -m 755 svm-predict ${INSTDIR}/bin
++ install -m 755 svm-scale ${INSTDIR}/bin
++ mkdir -p ${LIB_INSTDIR}
++ install -m 755 libsvm.so.$(SHVER) ${LIB_INSTDIR}
++# install package libsvm-devel
++ mkdir -p ${INSTDIR}/include/libsvm
++ install -m 644 svm.h ${INSTDIR}/include/libsvm
++ mkdir -p ${INSTDIR}/share/libsvm/src/java/libsvm
++ install -m 644 *.h ${INSTDIR}/share/libsvm/src
++ install -m 644 *.c ${INSTDIR}/share/libsvm/src
++ install -m 644 *.cpp ${INSTDIR}/share/libsvm/src
++ install -m 644 Makefile ${INSTDIR}/share/libsvm/src
++ifneq ("${NO_JAVA}","NO_JAVA")
++ install -m 644 java/*.java ${INSTDIR}/share/libsvm/src/java
++ install -m 644 java/Makefile ${INSTDIR}/share/libsvm/src/java
++ install -m 644 java/libsvm/*.java ${INSTDIR}/share/libsvm/src/java/libsvm
++ install -m 644 java/libsvm/*.m4 ${INSTDIR}/share/libsvm/src/java/libsvm
++# install package libsvm-java
++ ${MAKE} -C java install
++endif
++# install package libsvm-python
++ ${MAKE} -C python install
++# install package svm-toy
++ install -m 755 svm-toy/gtk/svm-toy-gtk ${INSTDIR}/bin
++ install -m 755 svm-toy/qt/svm-toy-qt ${INSTDIR}/bin
++# install examples
++ mkdir -p ${INSTDIR}/share/libsvm/examples
++ install -m 644 heart_scale ${INSTDIR}/share/libsvm/examples
++uninstall:
++ rm -f ${INSTDIR}/bin/svm-train
++ rm -f ${INSTDIR}/bin/svm-predict
++ rm -f ${INSTDIR}/bin/svm-scale
++ rm -fr ${INSTDIR}/libsvm/examples
++ rm -f ${INSTDIR}/include/libsvm/svm.h
++ rm -f ${LIB_INSTDIR}/libsvm/svm.o
++ rm -fr ${INSTDIR}/libsvm/src
++ rm -fr ${INSTDIR}/libsvm
++ ${MAKE} -C python uninstall
++ifneq ("${NO_JAVA}","NO_JAVA")
++ ${MAKE} -C java uninstall
++endif
++ rm -f ${INSTDIR}/bin/svm-toy-gtk
++ rm -f ${INSTDIR}/bin/svm-toy-qt
diff --git a/libsvm-3.0.pythonDir.patch b/libsvm-3.0.pythonDir.patch
new file mode 100644
index 0000000..2471a06
--- /dev/null
+++ b/libsvm-3.0.pythonDir.patch
@@ -0,0 +1,22 @@
+diff -up ./python/Makefile.pythonDir ./python/Makefile
+--- ./python/Makefile.pythonDir 2010-06-16 14:04:46.000000000 +1000
++++ ./python/Makefile 2010-11-08 11:07:55.950510378 +1000
+@@ -1,4 +1,16 @@
+-all = lib
++PYTHON_PATH ?= python${PYTHON_VERSION}/site-packages/libsvm
++PYTHON_TARGETDIR=${LIB_INSTDIR}/${PYTHON_PATH}
+
+-lib:
++all: lib
++
++lib: ../svm.cpp ../svm.h
+ cd ..; make lib; cd -
++
++install: all
++ mkdir -p ${PYTHON_TARGETDIR}
++ install -m 755 *.py ${PYTHON_TARGETDIR}
++ install -m 755 ../tools/*.py ${PYTHON_TARGETDIR}
++
++uninstall:
++ rm -fr ${LIBDIR}/${PYTHON_PATH}all = lib
++
diff --git a/libsvm-3.0.svm-toy.patch b/libsvm-3.0.svm-toy.patch
new file mode 100644
index 0000000..5faade5
--- /dev/null
+++ b/libsvm-3.0.svm-toy.patch
@@ -0,0 +1,70 @@
+diff -up ./svm-toy/gtk/callbacks.cpp.svm-toy ./svm-toy/gtk/callbacks.cpp
+--- ./svm-toy/gtk/callbacks.cpp.svm-toy 2010-09-12 22:11:10.000000000 +1000
++++ ./svm-toy/gtk/callbacks.cpp 2010-11-08 12:04:22.564509303 +1000
+@@ -3,6 +3,7 @@
+ #include
+ #include
+ #include
++#include
+ #include "callbacks.h"
+ #include "interface.h"
+ #include "../../svm.h"
+diff -up ./svm-toy/gtk/Makefile.svm-toy ./svm-toy/gtk/Makefile
+--- ./svm-toy/gtk/Makefile.svm-toy 2010-09-12 22:11:10.000000000 +1000
++++ ./svm-toy/gtk/Makefile 2010-11-08 12:05:58.925509978 +1000
+@@ -1,10 +1,11 @@
+ CC? = gcc
+ CXX? = g++
+-CFLAGS = -Wall -O3 -g `pkg-config --libs gtk+-2.0`
+-LIBS = `pkg-config --libs gtk+-2.0`
++CFLAGS = -Wall -O3 -g `pkg-config --cflags --libs gtk+-2.0`
++LOCAL_LIBDIR=../../
++LIBS = `pkg-config --libs gtk+-2.0` -L${LOCAL_LIBDIR} -lsvm
+
+-svm-toy: main.o interface.o callbacks.o ../../svm.o
+- $(CXX) $(CFLAGS) main.o interface.o callbacks.o ../../svm.o -o svm-toy $(LIBS)
++svm-toy-gtk: main.o interface.o callbacks.o
++ $(CXX) $(CFLAGS) main.o interface.o callbacks.o $(LIBS) -o $@
+
+ main.o: main.c
+ $(CC) $(CFLAGS) -c main.c
+@@ -15,8 +16,5 @@ interface.o: interface.c interface.h
+ callbacks.o: callbacks.cpp callbacks.h
+ $(CXX) $(CFLAGS) -c callbacks.cpp
+
+-../../svm.o:
+- cd ../..; make svm.o
+-
+ clean:
+- rm -f *~ callbacks.o svm-toy main.o interface.o callbacks.o ../../svm.o
++ rm -f *~ callbacks.o svm-toy main.o interface.o callbacks.o
+diff -up ./svm-toy/qt/Makefile.svm-toy ./svm-toy/qt/Makefile
+--- ./svm-toy/qt/Makefile.svm-toy 2008-12-19 16:42:05.000000000 +1000
++++ ./svm-toy/qt/Makefile 2010-11-08 12:05:43.978510797 +1000
+@@ -1,17 +1,18 @@
+ CXX? = g++
+-CFLAGS = -Wall -O3 -I$(INCLUDE) -I$(INCLUDE)/QtGui -lQtGui
++CFLAGS = -Wall -O3 -I$(INCLUDE) `pkg-config --cflags --libs QtGui`
+ INCLUDE = /usr/include/qt4
+-MOC = /usr/bin/moc-qt4
++MOC=${MOC_PATH}
++LOCAL_LIBDIR=../../
++LIBS = `pkg-config --libs gtk+-2.0` -L${LOCAL_LIBDIR} -lsvm
+
+-svm-toy: svm-toy.cpp svm-toy.moc ../../svm.o
+- $(CXX) $(CFLAGS) svm-toy.cpp ../../svm.o -o svm-toy
++all: svm-toy-qt
++
++svm-toy-qt: svm-toy.cpp svm-toy.moc
++ $(CXX) $(CFLAGS) svm-toy.cpp ${LIBS} -o $@
+
+ svm-toy.moc: svm-toy.cpp
+ $(MOC) svm-toy.cpp -o svm-toy.moc
+
+-../../svm.o:
+- cd ../..; make svm.o
+-
+ clean:
+- rm -f *~ svm-toy svm-toy.moc ../../svm.o
++ rm -f *~ svm-toy svm-toy.moc
+
diff --git a/libsvm-3.0.toolsDir.patch b/libsvm-3.0.toolsDir.patch
new file mode 100644
index 0000000..1d3d69f
--- /dev/null
+++ b/libsvm-3.0.toolsDir.patch
@@ -0,0 +1,30 @@
+diff -up ./tools/easy.py.toolsDir ./tools/easy.py
+--- ./tools/easy.py.toolsDir 2010-11-08 11:42:36.754570359 +1000
++++ ./tools/easy.py 2010-11-08 11:53:23.724570788 +1000
+@@ -12,10 +12,10 @@ if len(sys.argv) <= 1:
+
+ is_win32 = (sys.platform == 'win32')
+ if not is_win32:
+- svmscale_exe = "../svm-scale"
+- svmtrain_exe = "../svm-train"
+- svmpredict_exe = "../svm-predict"
+- grid_py = "./grid.py"
++ svmscale_exe = "/usr/bin/svm-scale"
++ svmtrain_exe = "/usr/bin/svm-train"
++ svmpredict_exe = "/usr/bin/svm-predict"
++ grid_py = "/usr/bin/grid.py"
+ gnuplot_exe = "/usr/bin/gnuplot"
+ else:
+ # example for windows
+diff -up ./tools/grid.py.toolsDir ./tools/grid.py
+--- ./tools/grid.py.toolsDir 2010-11-08 11:42:36.756570467 +1000
++++ ./tools/grid.py 2010-11-08 11:52:59.144511925 +1000
+@@ -17,7 +17,7 @@ else:
+
+ is_win32 = (sys.platform == 'win32')
+ if not is_win32:
+- svmtrain_exe = "../svm-train"
++ svmtrain_exe = "/usr/bin/svm-train"
+ gnuplot_exe = "/usr/bin/gnuplot"
+ else:
+ # example for windows
diff --git a/libsvm.spec b/libsvm.spec
index c2072fe..7f4cc8d 100644
--- a/libsvm.spec
+++ b/libsvm.spec
@@ -1,19 +1,23 @@
Name: libsvm
-Version: 2.91
-Release: 2%{?dist}
+Version: 3.0
+Release: 1%{?dist}
Summary: A Library for Support Vector Machines
Group: Development/Libraries
License: BSD
URL: http://www.csie.ntu.edu.tw/~cjlin/libsvm/
-Source0: %{name}-2.91.tar.gz
+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
+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
%{!?pyver: %define pyver %(python -c 'import sys; print(sys.version[0:3])')}
@@ -33,7 +37,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
%define no_java FALSE
%else
%define no_java NO_JAVA
-Obsoletes: libsvm-java
+Obsoletes: libsvm-java < 2.88-1
%endif
%description
@@ -83,7 +87,7 @@ programs with libsvm in Java.
%endif
%package svm-toy-gtk
-Summary: GTK version of svm-toy (libsvm demostration program)
+Summary: GTK version of svm-toy (libsvm demonstration program)
Group: Development/Libraries
BuildRequires: gtk2-devel
BuildRequires: desktop-file-utils
@@ -91,11 +95,11 @@ Requires: gtk2
Requires: %{name} = %{version}-%{release}
%description svm-toy-gtk
-svm-toy is a libsvm demostration program which has a gtk-GUI to
+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 demostration program)
+Summary: QT version of svm-toy (libsvm demonstration program)
Group: Development/Libraries
BuildRequires: desktop-file-utils
BuildRequires: pkgconfig
@@ -105,12 +109,16 @@ Requires: qt4
Requires: %{name} = %{version}-%{release}
%description svm-toy-qt
-svm-toy is a libsvm demostration program which has a qt-GUI to
+svm-toy is a libsvm demonstration program which has a qt-GUI to
display the derived separating hyperplane.
%prep
%setup -q
-%patch0 -p0 -b .orig
+%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} .
@@ -185,7 +193,7 @@ rm -rf $RPM_BUILD_ROOT
%{_bindir}/svm-train
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/examples
-%{_libdir}/%{name}.so.1
+%{_libdir}/%{name}.so.2
%files devel
@@ -223,6 +231,15 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* 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
diff --git a/log b/log
index 607ab9d..9d41631 100644
--- a/log
+++ b/log
@@ -178,10 +178,15 @@ file updated.
Java: able to load model from a BufferedReader directly
fix grid.py so -log2c can be run under python 2.6 or after
+3.0: 2010/09/13
+ 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
------------------
Future plan:
?.?:
- old python interface is removed
-
+ merge matlab interface to core libsvm
update make.m of matlab interface to use max(...)
\ No newline at end of file
diff --git a/sources b/sources
index d04a0f0..f04e60f 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
aae7a8f7e357e86e1c893b706bb02a63 guide.pdf
-aec07b9142ce585c95854ed379538154 libsvm-2.91.tar.gz
+016e29668aae8aa6eaeb125c9e23d834 libsvm-3.0.tar.gz