diff --git a/.cvsignore b/.cvsignore index 0b08845..bd505ff 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ guide.pdf -libsvm-2.89.tar.gz +libsvm-2.9.tar.gz diff --git a/import.log b/import.log index cdc99e7..4cfddaf 100644 --- a/import.log +++ b/import.log @@ -4,3 +4,4 @@ libsvm-2_88-2_fc9:HEAD:libsvm-2.88-2.fc9.src.rpm:1226365469 libsvm-2_89-1_fc10:HEAD:libsvm-2.89-1.fc10.src.rpm:1238738697 libsvm-2_89-3_fc11:HEAD:libsvm-2.89-3.fc11.src.rpm:1253083141 libsvm-2_89-4_fc11:HEAD:libsvm-2.89-4.fc11.src.rpm:1253235532 +libsvm-2_90-1_fc11:HEAD:libsvm-2.90-1.fc11.src.rpm:1257316908 diff --git a/libsvm-2.89.patch b/libsvm-2.90.patch similarity index 66% rename from libsvm-2.89.patch rename to libsvm-2.90.patch index 5673758..7fe6126 100644 --- a/libsvm-2.89.patch +++ b/libsvm-2.90.patch @@ -1,6 +1,6 @@ diff -up ./java/Makefile.orig ./java/Makefile --- ./java/Makefile.orig 2009-02-18 10:41:04.000000000 +1000 -+++ ./java/Makefile 2009-09-18 10:13:04.000000000 +1000 ++++ ./java/Makefile 2009-11-04 14:13:41.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 @@ -51,18 +51,19 @@ diff -up ./java/Makefile.orig ./java/Makefile 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 2009-09-18 10:10:34.000000000 +1000 ++++ ./java/test_applet.html 2009-11-04 14:13:41.000000000 +1000 @@ -1 +1,3 @@ - + + + diff -up ./Makefile.orig ./Makefile ---- ./Makefile.orig 2008-09-15 14:36:48.000000000 +1000 -+++ ./Makefile 2009-09-18 10:10:34.000000000 +1000 +--- ./Makefile.orig 2009-07-01 07:13:50.000000000 +1000 ++++ ./Makefile 2009-11-04 14:13:41.000000000 +1000 @@ -1,11 +1,40 @@ - CXX? = g++ +-CXX ?= g++ -CFLAGS = -Wall -Wconversion -O3 -fPIC ++CXX ? = g++ +CFLAGS = ${RPM_CFLAGS} -Wall -Wconversion -O3 -fPIC SHVER = 1 +MAKE = make @@ -172,9 +173,11 @@ diff -up ./Makefile.orig ./Makefile + + diff -up ./python/Makefile.orig ./python/Makefile ---- ./python/Makefile.orig 2008-12-10 09:05:08.000000000 +1000 -+++ ./python/Makefile 2009-09-18 10:10:34.000000000 +1000 -@@ -2,9 +2,11 @@ CXX? = g++ +--- ./python/Makefile.orig 2009-09-16 23:37:45.000000000 +1000 ++++ ./python/Makefile 2009-11-04 14:15:06.000000000 +1000 +@@ -1,10 +1,12 @@ +-CXX ?= g++ ++CXX ? = g++ SWIG ?= swig #Windows: see ../README ../Makefile.win @@ -187,8 +190,8 @@ diff -up ./python/Makefile.orig ./python/Makefile LDFLAGS = -shared # Mac OS # LDFLAGS = -framework Python -bundle -@@ -15,16 +17,31 @@ svmc.so: svmc_wrap.o svm.o - $(CXX) $(LDFLAGS) -o svmc.so svmc_wrap.o svm.o +@@ -15,16 +17,31 @@ svmc.so: svmc_wrap.o ../svm.o + $(CXX) $(LDFLAGS) -o svmc.so svmc_wrap.o ../svm.o svmc_wrap.o: svmc_wrap.c ../svm.h - $(CXX) $(CFLAGS) -fPIC -c svmc_wrap.c @@ -197,14 +200,15 @@ diff -up ./python/Makefile.orig ./python/Makefile svmc_wrap.c: svmc.i $(SWIG) -python -noproxy svmc.i - svm.o: ../svm.cpp ../svm.h -- $(CXX) $(CFLAGS) -fPIC -c ../svm.cpp -+ $(CXX) $(CFLAGS_PYTHON) -fPIC -c ../svm.cpp + ../svm.o: ../svm.cpp ../svm.h +- cd ..; $(CXX) $(CFLAGS) -fPIC -c svm.cpp ++ cd ..; $(CXX) $(CFLAGS_PYTHON) -fPIC -c svm.cpp clean: - rm -f *~ *.o *.so *.pyc *.pyo svm.o + rm -f *~ *.o *.so *.pyc *.pyo - moreclean: clean +-cleaner: clean ++cleaner: clean rm -f svmc_wrap.c + + @@ -223,7 +227,7 @@ diff -up ./python/Makefile.orig ./python/Makefile + 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 2009-09-18 10:10:34.000000000 +1000 ++++ ./svm-toy/gtk/callbacks.cpp 2009-11-04 14:13:41.000000000 +1000 @@ -2,6 +2,7 @@ #include #include @@ -234,7 +238,7 @@ diff -up ./svm-toy/gtk/callbacks.cpp.orig ./svm-toy/gtk/callbacks.cpp #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 2009-09-18 10:10:34.000000000 +1000 ++++ ./svm-toy/gtk/Makefile 2009-11-04 14:13:41.000000000 +1000 @@ -2,21 +2,27 @@ CC? = gcc CXX? = g++ CFLAGS = -Wall -O3 -g `gtk-config --cflags` @@ -273,7 +277,7 @@ diff -up ./svm-toy/gtk/Makefile.orig ./svm-toy/gtk/Makefile + 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 2009-09-18 10:10:34.000000000 +1000 ++++ ./svm-toy/qt/Makefile 2009-11-04 14:13:41.000000000 +1000 @@ -1,17 +1,21 @@ CXX? = g++ -CFLAGS = -Wall -O3 -I$(INCLUDE) -I$(INCLUDE)/QtGui -lQtGui @@ -305,8 +309,8 @@ diff -up ./svm-toy/qt/Makefile.orig ./svm-toy/qt/Makefile + rm -f *~ svm-toy-qt svm-toy.moc ../../svm.o diff -up ./tools/easy.py.orig ./tools/easy.py ---- ./tools/easy.py.orig 2009-01-14 07:13:26.000000000 +1000 -+++ ./tools/easy.py 2009-09-18 10:10:34.000000000 +1000 +--- ./tools/easy.py.orig 2009-05-14 15:09:29.000000000 +1000 ++++ ./tools/easy.py 2009-11-04 14:13:41.000000000 +1000 @@ -2,6 +2,7 @@ import sys @@ -331,9 +335,17 @@ diff -up ./tools/easy.py.orig ./tools/easy.py else: # example for windows diff -up ./tools/grid.py.orig ./tools/grid.py ---- ./tools/grid.py.orig 2008-08-08 20:41:11.000000000 +1000 -+++ ./tools/grid.py 2009-09-18 10:10:34.000000000 +1000 -@@ -11,7 +11,7 @@ from subprocess import * +--- ./tools/grid.py.orig 2009-05-14 15:09:29.000000000 +1000 ++++ ./tools/grid.py 2009-11-04 14:13:41.000000000 +1000 +@@ -1,7 +1,5 @@ + #!/usr/bin/env python + +- +- + import os, sys, traceback + import getpass + from threading import Thread +@@ -17,7 +15,7 @@ else: is_win32 = (sys.platform == 'win32') if not is_win32: @@ -342,11 +354,107 @@ diff -up ./tools/grid.py.orig ./tools/grid.py gnuplot_exe = "/usr/bin/gnuplot" else: # example for windows -@@ -88,6 +88,7 @@ Usage: grid.py [-log2c begin,end,step] [ +@@ -74,7 +72,7 @@ Usage: grid.py [-log2c begin,end,step] [ + i = i + 1 + fold = argv[i] + elif argv[i] in ('-c','-g'): +- print("Option -c and -g are renamed.") ++ print "Option -c and -g are renamed." + print(usage) + sys.exit(1) + elif argv[i] == '-svmtrain': +@@ -93,7 +91,8 @@ Usage: grid.py [-log2c begin,end,step] [ + pass_through_options.append(argv[i]) i = i + 1 - pass_through_string = join(pass_through_options," ") +- pass_through_string = " ".join(pass_through_options) ++ pass_through_string = " ".join(pass_through_options," ") + print 'dataset_pathname=%s' % dataset_pathname assert os.path.exists(svmtrain_exe),"svm-train executable not found" assert os.path.exists(gnuplot_exe),"gnuplot executable not found" assert os.path.exists(dataset_pathname),"dataset not found" +@@ -127,7 +126,9 @@ def permute_sequence(seq): + + def redraw(db,best_param,tofile=False): + if len(db) == 0: return +- begin_level = round(max(x[2] for x in db)) - 3 ++ begin_level = round(max(x[2] for x in db)) - 3 ++ ++ begin_level = round(max(map(lambda(x):x[2],db))) - 3 + step_size = 0.5 + + best_log2c,best_log2g,best_rate = best_param +@@ -158,12 +159,12 @@ 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] + for line in db: + if prevc != line[0]: +@@ -222,9 +223,7 @@ 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 +@@ -251,8 +250,8 @@ class SSHWorker(Worker): + svmtrain_exe,c,g,fold,pass_through_string,dataset_pathname) + result = Popen(cmdline,shell=True,stdout=PIPE).stdout + for line in result.readlines(): +- if str(line).find("Cross") != -1: +- return float(line.split()[-1][0:-1]) ++ if find(line,"Cross") != -1: ++ return float(split(line)[-1][0:-1]) + + class TelnetWorker(Worker): + def __init__(self,name,job_queue,result_queue,host,username,password): +@@ -302,7 +301,6 @@ def main(): + + job_queue._put = job_queue.queue.appendleft + +- + # fire telnet workers + + if telnet_workers: +@@ -328,10 +326,8 @@ def main(): + + done_jobs = {} + +- + result_file = open(out_filename, 'w') + +- + db = [] + best_rate = -1 + best_c1,best_g1 = None,None +@@ -343,13 +339,14 @@ def main(): + done_jobs[(c1,g1)] = rate + result_file.write('%s %s %s\n' %(c1,g1,rate)) + result_file.flush() ++ print "[%s] %s %s %s" % (worker,c1,g1,rate), + if (rate > best_rate) or (rate==best_rate and g1==best_g1 and c1 - 2.90-1 +- Upstream update to 2.9, change to 2.90 for conveniently update. + + tools/*.py can be run under python 3.0 + + svm_set_quiet() in python interface to disable outputs + + check gamma < 0 + + internal functions to be static + * Fri Sep 18 2009 Ding-Yi Chen - 2.89-4 - Fixed [Bug 524108] put libsvm.jar into _javadir + Move livsvm.jar to _javadir diff --git a/log b/log index 15da1b9..330b6e3 100644 --- a/log +++ b/log @@ -157,4 +157,17 @@ file updated. issue a warning when -h 0 may be faster 2.89: 2009/04/01 - todo: python 2.6, java 1.6, openMP, fast input \ No newline at end of file + reduce input/loading time of svm-train/svm-predict by half + pointer function so users can specify their own outputs + remove info_flush() + a extern variable libsvm_version + svm-train -q option (disable outputs) + svm-scale: warning if more nonzero produced + easy.py: popel.communiate() to avoid some deadlock (if lots of + outputs when #classes is large) + +2.9: 2009/11/? + tools/*.py can be run under python 3.0 + svm_set_quiet() in python interface to disable outputs + check gamma < 0 + internal functions to be static \ No newline at end of file diff --git a/sources b/sources index 3321f93..ad1329e 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ aae7a8f7e357e86e1c893b706bb02a63 guide.pdf -71975f20d37b30eb13a3ec8897f4f546 libsvm-2.89.tar.gz +c48109c825d8326d71c8c8564589736d libsvm-2.9.tar.gz