diff --git a/.gitignore b/.gitignore
index 288995a..f223af3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,4 @@ libsvm-3.91.tar.gz
/LibSVM-svm-toy-48.png
/libsvm-svm-toy-gtk.desktop
/libsvm-svm-toy-qt.desktop
+/libsvm-3.20.tar.gz
diff --git a/libsvm-3.17.pom b/libsvm-3.17.pom
new file mode 100644
index 0000000..511b1b2
--- /dev/null
+++ b/libsvm-3.17.pom
@@ -0,0 +1,36 @@
+
+ 4.0.0
+ tw.edu.ntu.csie
+ libsvm
+ 3.20
+ jar
+ LIBSVM
+ A Library for Support Vector Machines
+ http://www.csie.ntu.edu.tw/~cjlin/libsvm/
+
+
+ BSD 3-Clause License
+ http://www.csie.ntu.edu.tw/~cjlin/libsvm/COPYRIGHT
+
+
+
+ http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz
+ http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz
+
+
+
+ chih-jen.lin
+ Chih-Jen Lin
+ cjlin@csie.ntu.edu.tw
+
+
+
+ 1.5
+ 1.5
+ UTF-8
+
+
+ java
+
+
diff --git a/libsvm-3.18.javaDir.patch b/libsvm-3.18.javaDir.patch
deleted file mode 100644
index ed7cf4b..0000000
--- a/libsvm-3.18.javaDir.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-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.18.packageMain.patch b/libsvm-3.18.packageMain.patch
deleted file mode 100644
index dee23cd..0000000
--- a/libsvm-3.18.packageMain.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-diff -up ./Makefile.packageMain ./Makefile
---- ./Makefile.packageMain 2013-03-31 17:06:44.000000000 +1000
-+++ ./Makefile 2013-04-13 22:59:43.796601417 +1000
-@@ -1,11 +1,45 @@
- CXX ?= g++
--CFLAGS = -Wall -Wconversion -O3 -fPIC
-+CFLAGS = ${RPM_CFLAGS} -Wall -Wconversion -O3 -fPIC
- SHVER = 2
-+export SHVER
- OS = $(shell uname)
-+MAKE = make
-+DOT_LIBS=.
-+LIBS= -L${DOT_LIBS} -lsvm
-+export LIBSVM_VER
-+IS_64:=$(shell /bin/uname -i | awk '/64/ {print 64}')
-+PREFIXDIR?= /usr
-+export PREFIXDIR
-
--all: svm-train svm-predict svm-scale
-+LIBDIR?=${PREFIXDIR}/lib${IS_64}
-+export LIBDIR
-
--lib: svm.o
-+DATADIR?=${PREFIXDIR}/share
-+export DATADIR
-+
-+BINDIR?=${PREFIXDIR}/bin
-+export BINDIR
-+
-+INCLUDEDIR_INSTALL:=${DESTDIR}/${PREFIXDIR}/include
-+export INCLUDEDIR_INSTALL
-+
-+LIBDIR_INSTALL:=${DESTDIR}/${LIBDIR}
-+export LIBDIR_INSTALL
-+
-+DATADIR_INSTALL:=${DESTDIR}/${DATADIR}
-+export DATA_INSTALL
-+
-+BINDIR_INSTALL:=${DESTDIR}/${BINDIR}
-+export BINDIR_INSTALL
-+
-+all: lib svm-train svm-predict svm-scale svm-python svm-java svm-toy-gtk svm-toy-qt
-+
-+lib: libsvm.so.$(SHVER) libsvm.so
-+
-+libsvm.so: libsvm.so.$(SHVER)
-+ ln -sf libsvm.so.$(SHVER) libsvm.so
-+
-+libsvm.so.$(SHVER): svm.o
- if [ "$(OS)" = "Darwin" ]; then \
- SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,libsvm.so.$(SHVER)"; \
- else \
-@@ -14,12 +48,72 @@ lib: svm.o
- $(CXX) $${SHARED_LIB_FLAG} svm.o -o libsvm.so.$(SHVER)
-
- svm-predict: svm-predict.c svm.o
-- $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
-+ $(CXX) $(CFLAGS) svm-predict.c $(LIBS) -o svm-predict -lm
- svm-train: svm-train.c svm.o
-- $(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm
-+ $(CXX) $(CFLAGS) svm-train.c $(LIBS) -o svm-train -lm
- svm-scale: svm-scale.c
- $(CXX) $(CFLAGS) svm-scale.c -o svm-scale
- 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 ${BINDIR_INSTALL}
-+ install -m 755 svm-train ${BINDIR_INSTALL}
-+ install -m 755 svm-predict ${BINDIR_INSTALL}
-+ install -m 755 svm-scale ${BINDIR_INSTALL}
-+ mkdir -p ${LIBDIR_INSTALL}
-+ install -m 755 libsvm.so.$(SHVER) ${LIBDIR_INSTALL}
-+# install package libsvm-devel
-+ mkdir -p ${INCLUDEDIR_INSTALL}/libsvm
-+ install -m 644 svm.h ${INCLUDEDIR_INSTALL}/libsvm
-+ mkdir -p ${DATADIR_INSTALL}/libsvm/src/java/libsvm
-+ install -m 644 *.h ${DATADIR_INSTALL}/libsvm/src
-+ install -m 644 *.c ${DATADIR_INSTALL}/libsvm/src
-+ install -m 644 *.cpp ${DATADIR_INSTALL}/libsvm/src
-+ install -m 644 Makefile ${DATADIR_INSTALL}/libsvm/src
-+ifneq ("${NO_JAVA}","NO_JAVA")
-+ install -m 644 java/*.java ${DATADIR_INSTALL}/libsvm/src/java
-+ install -m 644 java/Makefile ${DATADIR_INSTALL}/libsvm/src/java
-+ install -m 644 java/libsvm/*.java ${DATADIR_INSTALL}/libsvm/src/java/libsvm
-+ install -m 644 java/libsvm/*.m4 ${DATADIR_INSTALL}/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 ${BINDIR_INSTALL}
-+ install -m 755 svm-toy/qt/svm-toy-qt ${BINDIR_INSTALL}
-+# install examples
-+ mkdir -p ${DATADIR_INSTALL}/libsvm/examples
-+ install -m 644 heart_scale ${DATADIR_INSTALL}/libsvm/examples
-+uninstall:
-+ rm -f ${BINDIR_INSTALL}/svm-train
-+ rm -f ${BINDIR_INSTALL}/svm-predict
-+ rm -f ${BINDIR_INSTALL}/svm-scale
-+ rm -fr ${DATADIR_INSTALL}/libsvm
-+ rm -f ${INCLUDEDIR_INSTALL}/libsvm/svm.h
-+ rm -f ${LIBDIR_INSTALL}/libsvm.so*
-+ ${MAKE} -C python uninstall
-+ifneq ("${NO_JAVA}","NO_JAVA")
-+ ${MAKE} -C java uninstall
-+endif
-+ rm -f ${BINDIR_INSTALL}/svm-toy-gtk
-+ rm -f ${BINDIR_INSTALL}/svm-toy-qt
-+
diff --git a/libsvm-3.18.pythonDir.patch b/libsvm-3.18.pythonDir.patch
deleted file mode 100644
index ff0991d..0000000
--- a/libsvm-3.18.pythonDir.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-diff -up ./python/Makefile.pythonDir ./python/Makefile
---- ./python/Makefile.pythonDir 2011-05-10 09:35:15.000000000 +1000
-+++ ./python/Makefile 2011-11-08 09:49:54.280501207 +1000
-@@ -1,4 +1,20 @@
-+PYTHONDIR_NAME ?= python${PYTHON_VERSION}/site-packages/libsvm
-+PYTHONDIR?=${LIBDIR}/${PYTHONDIR_NAME}
-+PYTHONDIR_INSTALL=${DESTDIR}/${PYTHONDIR}
-+SVM_TOOLS:= $(notdir $(wildcard ../tools/*.py))
-+
- all = lib
-
--lib:
-+all: lib
-+
-+lib: ../svm.cpp ../svm.h
- make -C .. lib
-+
-+install: all
-+ mkdir -p ${PYTHONDIR_INSTALL}
-+ install -m 755 *.py ${PYTHONDIR_INSTALL}
-+ install -m 755 ../tools/*.py ${PYTHONDIR_INSTALL}
-+ $(foreach toolPy,$(SVM_TOOLS),ln -s ${PYTHONDIR}/$(toolPy) ${BINDIR_INSTALL}/svm-$(toolPy);)
-+
-+uninstall:
-+ rm -fr ${LIBDIR}/${PYTHON_PATH} $(addprefix ${BINDIR_INSTALL}/svm-,$(SVM_TOOLS))
diff --git a/libsvm-3.18.svm-toy.patch b/libsvm-3.18.svm-toy.patch
deleted file mode 100644
index d2a9274..0000000
--- a/libsvm-3.18.svm-toy.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-diff -up ./svm-toy/gtk/Makefile.svm-toy ./svm-toy/gtk/Makefile
---- ./svm-toy/gtk/Makefile.svm-toy 2011-05-11 12:15:45.000000000 +1000
-+++ ./svm-toy/gtk/Makefile 2012-04-04 17:02:28.366615284 +1000
-@@ -1,10 +1,12 @@
- CC? = gcc
- CXX? = g++
--CFLAGS = -Wall -O3 -g `pkg-config --cflags gtk+-2.0`
--LIBS = `pkg-config --libs gtk+-2.0`
-+CFLAGS = -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)
-+
-+svm-toy-gtk: main.o interface.o callbacks.o ${LOCAL_LIBDIR}/svm.o
-+ $(CXX) $(CFLAGS) main.o interface.o callbacks.o $(LIBS) -o $@
-
- main.o: main.c
- $(CC) $(CFLAGS) -c main.c
-@@ -15,8 +17,8 @@ interface.o: interface.c interface.h
- callbacks.o: callbacks.cpp callbacks.h
- $(CXX) $(CFLAGS) -c callbacks.cpp
-
--../../svm.o: ../../svm.cpp ../../svm.h
-- make -C ../.. svm.o
-+${LOCAL_LIBDIR}/svm.o: ${LOCAL_LIBDIR}/svm.cpp ${LOCAL_LIBDIR}/svm.h
-+ make -C ${LOCAL_LIBDIR} 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 ${LOCAL_LIBDIR}/svm.o
-diff -up ./svm-toy/qt/Makefile.svm-toy ./svm-toy/qt/Makefile
---- ./svm-toy/qt/Makefile.svm-toy 2011-05-11 12:15:45.000000000 +1000
-+++ ./svm-toy/qt/Makefile 2012-04-04 17:02:28.366615284 +1000
-@@ -1,17 +1,22 @@
- CXX? = g++
--CFLAGS = -Wall -O3 -I$(INCLUDE) -I$(INCLUDE)/QtGui -lQtGui
--INCLUDE = /usr/include/qt4
--MOC = /usr/bin/moc-qt4
-+SHVER?=2
-+CFLAGS = -Wall -O3 `pkg-config --cflags --libs QtGui`
-+MOC=${MOC_PATH}
-+LOCAL_LIBDIR=../..
-+LIBS = -L${LOCAL_LIBDIR} -lsvm
-+LIBSVM_SO_SHVER=${LOCAL_LIBDIR}/libsvm.so.$(SHVER)
-
--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 $(LIBSVM_SO_SHVER)
-+ $(CXX) $(CFLAGS) svm-toy.cpp ${LIBS} -o $@
-
- svm-toy.moc: svm-toy.cpp
- $(MOC) svm-toy.cpp -o svm-toy.moc
-
--../../svm.o: ../../svm.cpp ../../svm.h
-- make -C ../.. svm.o
-+$(LIBSVM_SO_SHVER): ${LOCAL_LIBDIR}/svm.cpp ${LOCAL_LIBDIR}/svm.h
-+ make -C ${LOCAL_LIBDIR} lib
-
- clean:
-- rm -f *~ svm-toy svm-toy.moc ../../svm.o
-+ rm -f *~ svm-toy svm-toy.moc $(LIBSVM_SO_SHVER)
-
diff --git a/libsvm-3.18.toolsDir.patch b/libsvm-3.18.toolsDir.patch
deleted file mode 100644
index a303895..0000000
--- a/libsvm-3.18.toolsDir.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff -up ./tools/easy.py.toolsDir ./tools/easy.py
---- ./tools/easy.py.toolsDir 2013-03-31 17:06:49.000000000 +1000
-+++ ./tools/easy.py 2013-04-13 23:17:53.399526910 +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/svm-grid.py"
- gnuplot_exe = "/usr/bin/gnuplot"
- else:
- # example for windows
-@@ -47,7 +47,7 @@ if len(sys.argv) > 2:
-
- cmd = '{0} -s "{1}" "{2}" > "{3}"'.format(svmscale_exe, range_file, train_pathname, scaled_file)
- print('Scaling training data...')
--Popen(cmd, shell = True, stdout = PIPE).communicate()
-+Popen(cmd, shell = True, stdout = PIPE).communicate()
-
- cmd = '{0} -svmtrain "{1}" -gnuplot "{2}" "{3}"'.format(grid_py, svmtrain_exe, gnuplot_exe, scaled_file)
- print('Cross validation...')
-@@ -70,10 +70,10 @@ print('Output model: {0}'.format(model_f
- if len(sys.argv) > 2:
- cmd = '{0} -r "{1}" "{2}" > "{3}"'.format(svmscale_exe, range_file, test_pathname, scaled_test_file)
- print('Scaling testing data...')
-- Popen(cmd, shell = True, stdout = PIPE).communicate()
-+ Popen(cmd, shell = True, stdout = PIPE).communicate()
-
- cmd = '{0} "{1}" "{2}" "{3}"'.format(svmpredict_exe, scaled_test_file, model_file, predict_test_file)
- print('Testing...')
-- Popen(cmd, shell = True).communicate()
-+ Popen(cmd, shell = True).communicate()
-
- print('Output prediction: {0}'.format(predict_test_file))
-diff -up ./tools/grid.py.toolsDir ./tools/grid.py
---- ./tools/grid.py.toolsDir 2013-03-31 17:06:50.000000000 +1000
-+++ ./tools/grid.py 2013-04-13 23:18:53.964522769 +1000
-@@ -18,7 +18,7 @@ class GridOption:
- def __init__(self, dataset_pathname, options):
- dirname = os.path.dirname(__file__)
- if sys.platform != 'win32':
-- self.svmtrain_pathname = os.path.join(dirname, '../svm-train')
-+ self.svmtrain_pathname = '/usr/bin/svm-train'
- self.gnuplot_pathname = '/usr/bin/gnuplot'
- else:
- # example for windows
diff --git a/libsvm-3.20.javaDir.patch b/libsvm-3.20.javaDir.patch
new file mode 100644
index 0000000..ed7cf4b
--- /dev/null
+++ b/libsvm-3.20.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.20.packageMain.patch b/libsvm-3.20.packageMain.patch
new file mode 100644
index 0000000..dee23cd
--- /dev/null
+++ b/libsvm-3.20.packageMain.patch
@@ -0,0 +1,128 @@
+diff -up ./Makefile.packageMain ./Makefile
+--- ./Makefile.packageMain 2013-03-31 17:06:44.000000000 +1000
++++ ./Makefile 2013-04-13 22:59:43.796601417 +1000
+@@ -1,11 +1,45 @@
+ CXX ?= g++
+-CFLAGS = -Wall -Wconversion -O3 -fPIC
++CFLAGS = ${RPM_CFLAGS} -Wall -Wconversion -O3 -fPIC
+ SHVER = 2
++export SHVER
+ OS = $(shell uname)
++MAKE = make
++DOT_LIBS=.
++LIBS= -L${DOT_LIBS} -lsvm
++export LIBSVM_VER
++IS_64:=$(shell /bin/uname -i | awk '/64/ {print 64}')
++PREFIXDIR?= /usr
++export PREFIXDIR
+
+-all: svm-train svm-predict svm-scale
++LIBDIR?=${PREFIXDIR}/lib${IS_64}
++export LIBDIR
+
+-lib: svm.o
++DATADIR?=${PREFIXDIR}/share
++export DATADIR
++
++BINDIR?=${PREFIXDIR}/bin
++export BINDIR
++
++INCLUDEDIR_INSTALL:=${DESTDIR}/${PREFIXDIR}/include
++export INCLUDEDIR_INSTALL
++
++LIBDIR_INSTALL:=${DESTDIR}/${LIBDIR}
++export LIBDIR_INSTALL
++
++DATADIR_INSTALL:=${DESTDIR}/${DATADIR}
++export DATA_INSTALL
++
++BINDIR_INSTALL:=${DESTDIR}/${BINDIR}
++export BINDIR_INSTALL
++
++all: lib svm-train svm-predict svm-scale svm-python svm-java svm-toy-gtk svm-toy-qt
++
++lib: libsvm.so.$(SHVER) libsvm.so
++
++libsvm.so: libsvm.so.$(SHVER)
++ ln -sf libsvm.so.$(SHVER) libsvm.so
++
++libsvm.so.$(SHVER): svm.o
+ if [ "$(OS)" = "Darwin" ]; then \
+ SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,libsvm.so.$(SHVER)"; \
+ else \
+@@ -14,12 +48,72 @@ lib: svm.o
+ $(CXX) $${SHARED_LIB_FLAG} svm.o -o libsvm.so.$(SHVER)
+
+ svm-predict: svm-predict.c svm.o
+- $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
++ $(CXX) $(CFLAGS) svm-predict.c $(LIBS) -o svm-predict -lm
+ svm-train: svm-train.c svm.o
+- $(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm
++ $(CXX) $(CFLAGS) svm-train.c $(LIBS) -o svm-train -lm
+ svm-scale: svm-scale.c
+ $(CXX) $(CFLAGS) svm-scale.c -o svm-scale
+ 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 ${BINDIR_INSTALL}
++ install -m 755 svm-train ${BINDIR_INSTALL}
++ install -m 755 svm-predict ${BINDIR_INSTALL}
++ install -m 755 svm-scale ${BINDIR_INSTALL}
++ mkdir -p ${LIBDIR_INSTALL}
++ install -m 755 libsvm.so.$(SHVER) ${LIBDIR_INSTALL}
++# install package libsvm-devel
++ mkdir -p ${INCLUDEDIR_INSTALL}/libsvm
++ install -m 644 svm.h ${INCLUDEDIR_INSTALL}/libsvm
++ mkdir -p ${DATADIR_INSTALL}/libsvm/src/java/libsvm
++ install -m 644 *.h ${DATADIR_INSTALL}/libsvm/src
++ install -m 644 *.c ${DATADIR_INSTALL}/libsvm/src
++ install -m 644 *.cpp ${DATADIR_INSTALL}/libsvm/src
++ install -m 644 Makefile ${DATADIR_INSTALL}/libsvm/src
++ifneq ("${NO_JAVA}","NO_JAVA")
++ install -m 644 java/*.java ${DATADIR_INSTALL}/libsvm/src/java
++ install -m 644 java/Makefile ${DATADIR_INSTALL}/libsvm/src/java
++ install -m 644 java/libsvm/*.java ${DATADIR_INSTALL}/libsvm/src/java/libsvm
++ install -m 644 java/libsvm/*.m4 ${DATADIR_INSTALL}/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 ${BINDIR_INSTALL}
++ install -m 755 svm-toy/qt/svm-toy-qt ${BINDIR_INSTALL}
++# install examples
++ mkdir -p ${DATADIR_INSTALL}/libsvm/examples
++ install -m 644 heart_scale ${DATADIR_INSTALL}/libsvm/examples
++uninstall:
++ rm -f ${BINDIR_INSTALL}/svm-train
++ rm -f ${BINDIR_INSTALL}/svm-predict
++ rm -f ${BINDIR_INSTALL}/svm-scale
++ rm -fr ${DATADIR_INSTALL}/libsvm
++ rm -f ${INCLUDEDIR_INSTALL}/libsvm/svm.h
++ rm -f ${LIBDIR_INSTALL}/libsvm.so*
++ ${MAKE} -C python uninstall
++ifneq ("${NO_JAVA}","NO_JAVA")
++ ${MAKE} -C java uninstall
++endif
++ rm -f ${BINDIR_INSTALL}/svm-toy-gtk
++ rm -f ${BINDIR_INSTALL}/svm-toy-qt
++
diff --git a/libsvm-3.20.pythonDir.patch b/libsvm-3.20.pythonDir.patch
new file mode 100644
index 0000000..ff0991d
--- /dev/null
+++ b/libsvm-3.20.pythonDir.patch
@@ -0,0 +1,25 @@
+diff -up ./python/Makefile.pythonDir ./python/Makefile
+--- ./python/Makefile.pythonDir 2011-05-10 09:35:15.000000000 +1000
++++ ./python/Makefile 2011-11-08 09:49:54.280501207 +1000
+@@ -1,4 +1,20 @@
++PYTHONDIR_NAME ?= python${PYTHON_VERSION}/site-packages/libsvm
++PYTHONDIR?=${LIBDIR}/${PYTHONDIR_NAME}
++PYTHONDIR_INSTALL=${DESTDIR}/${PYTHONDIR}
++SVM_TOOLS:= $(notdir $(wildcard ../tools/*.py))
++
+ all = lib
+
+-lib:
++all: lib
++
++lib: ../svm.cpp ../svm.h
+ make -C .. lib
++
++install: all
++ mkdir -p ${PYTHONDIR_INSTALL}
++ install -m 755 *.py ${PYTHONDIR_INSTALL}
++ install -m 755 ../tools/*.py ${PYTHONDIR_INSTALL}
++ $(foreach toolPy,$(SVM_TOOLS),ln -s ${PYTHONDIR}/$(toolPy) ${BINDIR_INSTALL}/svm-$(toolPy);)
++
++uninstall:
++ rm -fr ${LIBDIR}/${PYTHON_PATH} $(addprefix ${BINDIR_INSTALL}/svm-,$(SVM_TOOLS))
diff --git a/libsvm-3.20.svm-toy.patch b/libsvm-3.20.svm-toy.patch
new file mode 100644
index 0000000..d2a9274
--- /dev/null
+++ b/libsvm-3.20.svm-toy.patch
@@ -0,0 +1,66 @@
+diff -up ./svm-toy/gtk/Makefile.svm-toy ./svm-toy/gtk/Makefile
+--- ./svm-toy/gtk/Makefile.svm-toy 2011-05-11 12:15:45.000000000 +1000
++++ ./svm-toy/gtk/Makefile 2012-04-04 17:02:28.366615284 +1000
+@@ -1,10 +1,12 @@
+ CC? = gcc
+ CXX? = g++
+-CFLAGS = -Wall -O3 -g `pkg-config --cflags gtk+-2.0`
+-LIBS = `pkg-config --libs gtk+-2.0`
++CFLAGS = -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)
++
++svm-toy-gtk: main.o interface.o callbacks.o ${LOCAL_LIBDIR}/svm.o
++ $(CXX) $(CFLAGS) main.o interface.o callbacks.o $(LIBS) -o $@
+
+ main.o: main.c
+ $(CC) $(CFLAGS) -c main.c
+@@ -15,8 +17,8 @@ interface.o: interface.c interface.h
+ callbacks.o: callbacks.cpp callbacks.h
+ $(CXX) $(CFLAGS) -c callbacks.cpp
+
+-../../svm.o: ../../svm.cpp ../../svm.h
+- make -C ../.. svm.o
++${LOCAL_LIBDIR}/svm.o: ${LOCAL_LIBDIR}/svm.cpp ${LOCAL_LIBDIR}/svm.h
++ make -C ${LOCAL_LIBDIR} 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 ${LOCAL_LIBDIR}/svm.o
+diff -up ./svm-toy/qt/Makefile.svm-toy ./svm-toy/qt/Makefile
+--- ./svm-toy/qt/Makefile.svm-toy 2011-05-11 12:15:45.000000000 +1000
++++ ./svm-toy/qt/Makefile 2012-04-04 17:02:28.366615284 +1000
+@@ -1,17 +1,22 @@
+ CXX? = g++
+-CFLAGS = -Wall -O3 -I$(INCLUDE) -I$(INCLUDE)/QtGui -lQtGui
+-INCLUDE = /usr/include/qt4
+-MOC = /usr/bin/moc-qt4
++SHVER?=2
++CFLAGS = -Wall -O3 `pkg-config --cflags --libs QtGui`
++MOC=${MOC_PATH}
++LOCAL_LIBDIR=../..
++LIBS = -L${LOCAL_LIBDIR} -lsvm
++LIBSVM_SO_SHVER=${LOCAL_LIBDIR}/libsvm.so.$(SHVER)
+
+-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 $(LIBSVM_SO_SHVER)
++ $(CXX) $(CFLAGS) svm-toy.cpp ${LIBS} -o $@
+
+ svm-toy.moc: svm-toy.cpp
+ $(MOC) svm-toy.cpp -o svm-toy.moc
+
+-../../svm.o: ../../svm.cpp ../../svm.h
+- make -C ../.. svm.o
++$(LIBSVM_SO_SHVER): ${LOCAL_LIBDIR}/svm.cpp ${LOCAL_LIBDIR}/svm.h
++ make -C ${LOCAL_LIBDIR} lib
+
+ clean:
+- rm -f *~ svm-toy svm-toy.moc ../../svm.o
++ rm -f *~ svm-toy svm-toy.moc $(LIBSVM_SO_SHVER)
+
diff --git a/libsvm-3.20.toolsDir.patch b/libsvm-3.20.toolsDir.patch
new file mode 100644
index 0000000..a303895
--- /dev/null
+++ b/libsvm-3.20.toolsDir.patch
@@ -0,0 +1,52 @@
+diff -up ./tools/easy.py.toolsDir ./tools/easy.py
+--- ./tools/easy.py.toolsDir 2013-03-31 17:06:49.000000000 +1000
++++ ./tools/easy.py 2013-04-13 23:17:53.399526910 +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/svm-grid.py"
+ gnuplot_exe = "/usr/bin/gnuplot"
+ else:
+ # example for windows
+@@ -47,7 +47,7 @@ if len(sys.argv) > 2:
+
+ cmd = '{0} -s "{1}" "{2}" > "{3}"'.format(svmscale_exe, range_file, train_pathname, scaled_file)
+ print('Scaling training data...')
+-Popen(cmd, shell = True, stdout = PIPE).communicate()
++Popen(cmd, shell = True, stdout = PIPE).communicate()
+
+ cmd = '{0} -svmtrain "{1}" -gnuplot "{2}" "{3}"'.format(grid_py, svmtrain_exe, gnuplot_exe, scaled_file)
+ print('Cross validation...')
+@@ -70,10 +70,10 @@ print('Output model: {0}'.format(model_f
+ if len(sys.argv) > 2:
+ cmd = '{0} -r "{1}" "{2}" > "{3}"'.format(svmscale_exe, range_file, test_pathname, scaled_test_file)
+ print('Scaling testing data...')
+- Popen(cmd, shell = True, stdout = PIPE).communicate()
++ Popen(cmd, shell = True, stdout = PIPE).communicate()
+
+ cmd = '{0} "{1}" "{2}" "{3}"'.format(svmpredict_exe, scaled_test_file, model_file, predict_test_file)
+ print('Testing...')
+- Popen(cmd, shell = True).communicate()
++ Popen(cmd, shell = True).communicate()
+
+ print('Output prediction: {0}'.format(predict_test_file))
+diff -up ./tools/grid.py.toolsDir ./tools/grid.py
+--- ./tools/grid.py.toolsDir 2013-03-31 17:06:50.000000000 +1000
++++ ./tools/grid.py 2013-04-13 23:18:53.964522769 +1000
+@@ -18,7 +18,7 @@ class GridOption:
+ def __init__(self, dataset_pathname, options):
+ dirname = os.path.dirname(__file__)
+ if sys.platform != 'win32':
+- self.svmtrain_pathname = os.path.join(dirname, '../svm-train')
++ self.svmtrain_pathname = '/usr/bin/svm-train'
+ self.gnuplot_pathname = '/usr/bin/gnuplot'
+ else:
+ # example for windows
diff --git a/libsvm.spec b/libsvm.spec
index 602ed7d..e1996c1 100644
--- a/libsvm.spec
+++ b/libsvm.spec
@@ -3,10 +3,12 @@
%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
%define libdir_libsvm %{_libdir}/libsvm
%define libsvm_python_dir %{python_sitearch}/libsvm
+%global maven_group_id tw.edu.ntu.csie
+%global pom_file_version 3.17
Name: libsvm
-Version: 3.18
-Release: 6%{?dist}
+Version: 3.20
+Release: 1%{?dist}
Summary: A Library for Support Vector Machines
Group: Development/Libraries
@@ -18,6 +20,7 @@ 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
+Source6: http://central.maven.org/maven2/tw/edu/ntu/csie/libsvm/%{pom_file_version}/libsvm-%{pom_file_version}.pom
Patch0: %{name}-%{version}.packageMain.patch
Patch1: %{name}-%{version}.pythonDir.patch
Patch2: %{name}-%{version}.javaDir.patch
@@ -26,6 +29,7 @@ Patch4: %{name}-%{version}.toolsDir.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: grep
+%global pom_file_name "JPP.%{maven_group_id}-%{name}.pom"
%if 0%{?rhel} != 0 && 0%{?rhel} <= 5
%define moc_path %{_libdir}/qt4/bin/moc
%define with_vendor "fedora"
@@ -131,6 +135,23 @@ cp %{SOURCE4} .
cp %{SOURCE5} %{name}-svm-toy-gtk-48.png
cp %{SOURCE5} %{name}-svm-toy-qt-48.png
+
+%if "%{no_java}" == "FALSE"
+# Update the POM file, which is stuck on version 3.17
+# pom_xpath_set does not work in rpm-4.11.1
+# as it generated something like
+#
+#
+# 3.20
+#
+#
+#
+%{__sed} -e 's/%{pom_file_version}/%{version}/' %{SOURCE6} > %{name}.pom
+%{__sed} -i 's|http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz|https://github.com/cjlin1/libsvm|' %{name}.pom
+%{__sed} -i 's|http://www.csie.ntu.edu.tw/~cjlin/cgi-bin/libsvm.cgi?+http://www.csie.ntu.edu.tw/~cjlin/libsvm+tar.gz|scm:git:https://github.com/cjlin1/libsvm.git|' %{name}.pom
+
+%endif
+
%build
%{__sed} -i 's/\r//' FAQ.html
%{__sed} -i 's/\r//' ChangeLog
@@ -142,38 +163,54 @@ 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
-
+rm -rf %{buildroot}
+make install DESTDIR=%{buildroot} LIBDIR=%{_libdir} PYTHON_VERSION="%{pyver}" LIBSVM_VER="%{version}" NO_JAVA="%{no_java}" JAVA_TARGET_DIR="%{buildroot}/%{_javadir}"
+rm -rf %{buildroot}%{_datadir}/%{name}/src
+mkdir -p %{buildroot}/%{_datadir}/icons/hicolor/48x48/apps/
+cp %{name}-svm-toy-gtk-48.png %{buildroot}/%{_datadir}/icons/hicolor/48x48/apps/
+cp %{name}-svm-toy-qt-48.png %{buildroot}/%{_datadir}/icons/hicolor/48x48/apps/
+mkdir -p %{buildroot}/%{_datadir}/applications
+cp %{name}-svm-toy-gtk.desktop %{buildroot}/%{_datadir}/applications
+cp %{name}-svm-toy-qt.desktop %{buildroot}/%{_datadir}/applications
+
+%__ln_s %{name}.so.%{shver} %{buildroot}/%{_libdir}/%{name}.so
# [Bug 521194] Python: 'import libsvm' doesn't work
+mkdir -p %{buildroot}/%{libsvm_python_dir}
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
+ > %{buildroot}/%{libsvm_python_dir}/__init__.py
%if 0%{?with_vendor:1}
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
+ --dir=%{buildroot}%{_datadir}/applications \
+ %{buildroot}/%{_datadir}/applications/%{name}-svm-toy-gtk.desktop \
+ %{buildroot}/%{_datadir}/applications/%{name}-svm-toy-qt.desktop
%else
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
+ --dir=%{buildroot}%{_datadir}/applications \
+ %{buildroot}/%{_datadir}/applications/%{name}-svm-toy-gtk.desktop \
+ %{buildroot}/%{_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
+echo 'libsvm' > %{buildroot}/%{python_sitearch}/libsvm.pth
+
+
+# Java
+%if "%{no_java}" == "FALSE"
+## Move jars to correct directory
+mkdir -p %{buildroot}/%{_javadir}/%{maven_group_id}
+mv %{buildroot}/%{_javadir}/%{name}.jar %{buildroot}/%{_javadir}/%{maven_group_id}/%{name}-%{version}.jar
+ln -s %{name}-%{version}.jar %{buildroot}/%{_javadir}/%{maven_group_id}/%{name}.jar
+ln -s %{_javadir}/%{maven_group_id}/%{name}.jar %{buildroot}/%{_javadir}/%{name}.jar
+
+## Install the Java POM
+mkdir -p %{buildroot}%{_mavenpomdir}
+cp -p %{name}.pom %{buildroot}%{_mavenpomdir}/%{pom_file_name}
+%add_maven_depmap %{pom_file_name} %{maven_group_id}/%{name}.jar
+%endif
+
%post -p /sbin/ldconfig
@@ -194,7 +231,7 @@ fi
%clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
%files
@@ -221,11 +258,11 @@ rm -rf $RPM_BUILD_ROOT
%{python_sitearch}/libsvm.pth
%if "%{no_java}" == "FALSE"
-%files java
+%files java -f .mfiles
%defattr(-,root,root,-)
%doc java/README-Java java/test_applet.html
%{_javadir}/%{name}.jar
-#%{_datadir}/javadoc/%{name}-%{version}
+%{_javadir}/%{maven_group_id}/%{name}-%{version}.jar
%endif
%files svm-toy-gtk
@@ -244,6 +281,12 @@ rm -rf $RPM_BUILD_ROOT
%changelog
+* Tue Jan 20 2015 Ding-Yi Chen - 3.20-1
+- Upstream update to 3.20
+
+* Fri Dec 19 2014 Jerry James - 3.18-7
+- Install maven POM and depmaps (bz 1175898)
+
* Sun Aug 17 2014 Fedora Release Engineering - 3.18-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
diff --git a/log b/log
index 056a560..4c7d592 100644
--- a/log
+++ b/log
@@ -212,7 +212,6 @@ i subroutines to get SVs
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
-<<<<<<< HEAD
3.12: 2012/04/01
svm-toy: support loading/saving of regression data
@@ -259,4 +258,4 @@ i subroutines to get SVs
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
+ handle the problem where output variables are not specified
\ No newline at end of file
diff --git a/sources b/sources
index 4a9b52a..2aa72d2 100644
--- a/sources
+++ b/sources
@@ -1,6 +1,2 @@
b1543809993e2653dd2787f62c3c390a guide.pdf
-bba35e2cf9d14e158009ef8b90fd840a libsvm-3.18.tar.gz
-95918671ee5435803a1646e1ad2f3317 log
-0bc4868057a7c1c422f91a798f14a562 LibSVM-svm-toy-48.png
-398721fc66bb0903d46c685e9a3cba27 libsvm-svm-toy-gtk.desktop
-9a518db15afe9224e3a04695c82d7142 libsvm-svm-toy-qt.desktop
+5f088e5f89da1c65b642300c9c5ea772 libsvm-3.20.tar.gz