From 649be346994ef4b3400620edb5d619ab93c4b3fe Mon Sep 17 00:00:00 2001 From: Ding-Yi Chen Date: Apr 10 2012 00:32:47 +0000 Subject: Merge branch 'master' into el6 --- diff --git a/.gitignore b/.gitignore index 4373f69..0ab1e09 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ libsvm-2.91.tar.gz /libsvm-3.0.tar.gz /libsvm-3.1.tar.gz /libsvm-3.11.tar.gz +/libsvm-3.12.tar.gz diff --git a/libsvm-3.11.javaDir.patch b/libsvm-3.11.javaDir.patch deleted file mode 100644 index ed7cf4b..0000000 --- a/libsvm-3.11.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.11.packageMain.patch b/libsvm-3.11.packageMain.patch deleted file mode 100644 index 5fbadbe..0000000 --- a/libsvm-3.11.packageMain.patch +++ /dev/null @@ -1,116 +0,0 @@ -diff -up ./Makefile.packageMain ./Makefile ---- ./Makefile.packageMain 2011-06-26 05:55:06.000000000 +1000 -+++ ./Makefile 2011-11-08 09:42:13.106501233 +1000 -@@ -1,11 +1,44 @@ - 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 - --all: svm-train svm-predict svm-scale -+IS_64:=$(shell /bin/uname -i | awk '/64/ {print 64}') -+ -+PREFIXDIR?= /usr -+export PREFIXDIR -+ -+LIBDIR?=${PREFIXDIR}/lib${IS_64} -+export LIBDIR -+ -+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: svm.o - $(CXX) -shared -dynamiclib -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 +49,64 @@ 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 ${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.11.pythonDir.patch b/libsvm-3.11.pythonDir.patch deleted file mode 100644 index ff0991d..0000000 --- a/libsvm-3.11.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.11.svm-toy.patch b/libsvm-3.11.svm-toy.patch deleted file mode 100644 index e8d4e69..0000000 --- a/libsvm-3.11.svm-toy.patch +++ /dev/null @@ -1,75 +0,0 @@ -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 2011-11-08 09:57:01.782500360 +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 2011-05-11 12:15:45.000000000 +1000 -+++ ./svm-toy/gtk/Makefile 2011-11-08 10:06:35.686501266 +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 2011-11-08 10:06:11.702501216 +1000 -@@ -1,17 +1,20 @@ - CXX? = g++ --CFLAGS = -Wall -O3 -I$(INCLUDE) -I$(INCLUDE)/QtGui -lQtGui --INCLUDE = /usr/include/qt4 --MOC = /usr/bin/moc-qt4 -+CFLAGS = -Wall -O3 `pkg-config --cflags --libs QtGui` -+MOC=${MOC_PATH} -+LOCAL_LIBDIR=../.. -+LIBS = -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 ${LOCAL_LIBDIR}/svm.o -+ $(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 -+${LOCAL_LIBDIR}/svm.o: ${LOCAL_LIBDIR}/svm.cpp ${LOCAL_LIBDIR}/svm.h -+ make -C ${LOCAL_LIBDIR} svm.o - - clean: -- rm -f *~ svm-toy svm-toy.moc ../../svm.o -+ rm -f *~ svm-toy svm-toy.moc ${LOCAL_LIBDIR}/svm.o - diff --git a/libsvm-3.11.toolsDir.patch b/libsvm-3.11.toolsDir.patch deleted file mode 100644 index 1f4c1d2..0000000 --- a/libsvm-3.11.toolsDir.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff -up ./tools/easy.py.toolsDir ./tools/easy.py ---- ./tools/easy.py.toolsDir 2010-12-31 15:51:25.000000000 +1000 -+++ ./tools/easy.py 2011-06-14 15:15:06.611622820 +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 2011-02-03 01:55:20.000000000 +1000 -+++ ./tools/grid.py 2011-06-14 14:56:11.817748117 +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-3.12.javaDir.patch b/libsvm-3.12.javaDir.patch new file mode 100644 index 0000000..ed7cf4b --- /dev/null +++ b/libsvm-3.12.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.12.packageMain.patch b/libsvm-3.12.packageMain.patch new file mode 100644 index 0000000..5d692ff --- /dev/null +++ b/libsvm-3.12.packageMain.patch @@ -0,0 +1,133 @@ +diff -up ./Makefile.packageMain ./Makefile +--- ./Makefile.packageMain 2012-01-02 01:10:52.000000000 +1000 ++++ ./Makefile 2012-04-05 11:14:42.683613523 +1000 +@@ -1,25 +1,121 @@ + 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 + +-all: svm-train svm-predict svm-scale ++IS_64:=$(shell /bin/uname -i | awk '/64/ {print 64}') + +-lib: svm.o ++PREFIXDIR?= /usr ++export PREFIXDIR ++ ++LIBDIR?=${PREFIXDIR}/lib${IS_64} ++export LIBDIR ++ ++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 -W1,-install_name,libsvm.so.$(SHVER)"; \ ++ SHARED_LIB_FLAG="-dynamiclib -Wl,-install_name,libsvm.so.$(SHVER)"; \ + else \ +- SHARED_LIB_FLAG="-shared -W1,-soname,libsvm.so.$(SHVER)"; \ ++ SHARED_LIB_FLAG="-shared -Wl,-soname,libsvm.so.$(SHVER)"; \ + fi; \ + $(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.12.pythonDir.patch b/libsvm-3.12.pythonDir.patch new file mode 100644 index 0000000..ff0991d --- /dev/null +++ b/libsvm-3.12.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.12.svm-toy.patch b/libsvm-3.12.svm-toy.patch new file mode 100644 index 0000000..d2a9274 --- /dev/null +++ b/libsvm-3.12.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.12.toolsDir.patch b/libsvm-3.12.toolsDir.patch new file mode 100644 index 0000000..1f4c1d2 --- /dev/null +++ b/libsvm-3.12.toolsDir.patch @@ -0,0 +1,52 @@ +diff -up ./tools/easy.py.toolsDir ./tools/easy.py +--- ./tools/easy.py.toolsDir 2010-12-31 15:51:25.000000000 +1000 ++++ ./tools/easy.py 2011-06-14 15:15:06.611622820 +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 2011-02-03 01:55:20.000000000 +1000 ++++ ./tools/grid.py 2011-06-14 14:56:11.817748117 +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 02d8e86..31f087d 100644 --- a/libsvm.spec +++ b/libsvm.spec @@ -1,14 +1,13 @@ %define shver 2 Name: libsvm -Version: 3.11 -Release: 3%{?dist} +Version: 3.12 +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}-%{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 +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 @@ -203,7 +202,6 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/%{name}/examples %{_libdir}/%{name}.so.%{shver} - %files devel %defattr(-,root,root,-) %doc README @@ -241,6 +239,13 @@ rm -rf $RPM_BUILD_ROOT %changelog +* 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 diff --git a/log b/log index dac608b..f37fc86 100644 --- a/log +++ b/log @@ -212,4 +212,9 @@ 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 - \ No newline at end of file + +3.12: 2012/04/01 + 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 \ No newline at end of file diff --git a/sources b/sources index 3a815ba..a61604a 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -aae7a8f7e357e86e1c893b706bb02a63 guide.pdf -44d2a3a611280ecd0d66aafe0d52233e libsvm-3.11.tar.gz +b1543809993e2653dd2787f62c3c390a guide.pdf +a1b1083fe69a4ac695da753f4c83ed42 libsvm-3.12.tar.gz