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