diff --git a/libsvm-2.84-4.patch b/libsvm-2.84-4.patch
deleted file mode 100644
index 895770a..0000000
--- a/libsvm-2.84-4.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-diff -up ./Makefile.orig ./Makefile
---- ./Makefile.orig 2007-08-30 15:29:42.000000000 +1000
-+++ ./Makefile 2007-08-30 15:30:25.000000000 +1000
-@@ -1,7 +1,31 @@
- CXXC = g++
- CFLAGS = -Wall -O3
-+MAKE = make
-
--all: svm-train svm-predict svm-scale
-+ifndef DESTDIR
-+INSTDIR=/usr
-+else
-+INSTDIR=${DESTDIR}/usr
-+endif
-+
-+export INSTDIR
-+
-+PROCESSOR=$(shell /bin/uname -p)
-+ifeq "${PROCESSOR}" "x86_64"
-+X86_64=64
-+else
-+X86_64=
-+endif
-+
-+ifndef LIBDIR
-+LIB_INSTDIR=${INSTDIR}/lib${X86_64}
-+else
-+LIB_INSTDIR=${INSTDIR}/..${LIBDIR}
-+endif
-+
-+export LIB_INSTDIR
-+
-+all: svm-train svm-predict svm-scale svm-python
-
- svm-predict: svm-predict.c svm.o
- $(CXXC) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
-@@ -11,5 +35,45 @@ svm-scale: svm-scale.c
- $(CXXC) $(CFLAGS) svm-scale.c -o svm-scale
- svm.o: svm.cpp svm.h
- $(CXXC) $(CFLAGS) -c svm.cpp
-+svm-python:
-+ ${MAKE} -C python
-+
-+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}/libsvm
-+# install package libsvm-devel
-+ install -m 644 svm.o ${LIB_INSTDIR}/libsvm
-+ mkdir -p ${INSTDIR}/include/libsvm
-+ install -m 644 svm.h ${INSTDIR}/include/libsvm
-+ mkdir -p ${INSTDIR}/share/libsvm/src
-+ 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
-+ cp -R java ${INSTDIR}/share/libsvm/src
-+ cp -R svm-toy ${INSTDIR}/share/libsvm/src
-+# cp -R tools ${INSTDIR}/share/libsvm/src
-+# cp -R windows ${INSTDIR}/share/libsvm/src
-+ mkdir -p ${INSTDIR}/share/libsvm/examples
-+ install -m 644 heart_scale ${INSTDIR}/share/libsvm/examples
-+# install package libsvm-python
-+ ${MAKE} -C python install
-+
-+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
-+
- clean:
- rm -f *~ svm.o svm-train svm-predict svm-scale
-+ ${MAKE} -C python clean
-+
-diff -up ./python/Makefile.orig ./python/Makefile
---- ./python/Makefile.orig 2007-08-30 15:29:49.000000000 +1000
-+++ ./python/Makefile 2007-08-30 16:03:46.000000000 +1000
-@@ -2,7 +2,14 @@ CC = g++
- SWIG ?= swig
-
- #Windows: see ../README ../Makefile.win
--PYTHON_INCLUDEDIR ?= /usr/include/python2.4
-+PYTHON_TEMP:=${shell mktemp}
-+PYTHON_VERSION:=${shell python -V 2> ${PYTHON_TEMP} ; cat ${PYTHON_TEMP} | awk 'BEGIN {FS= "[ .]"} {printf("%s.%s",$$2,$$3)}'; rm -f ${PYTHON_TEMP}}
-+ifndef PYTHON_INCLUDEDIR
-+
-+PYTHON_INCLUDEDIR?= /usr/include/python${PYTHON_VERSION}
-+
-+endif
-+PYTHON_TARGETDIR=${LIB_INSTDIR}/python${PYTHON_VERSION}/site-packages/libsvm
-
- CFLAGS = -O3 -I$(PYTHON_INCLUDEDIR) -I..
- LDFLAGS = -shared
-@@ -28,3 +35,19 @@ clean:
-
- moreclean: 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 ./tools/grid.py.orig ./tools/grid.py
---- ./tools/grid.py.orig 2007-08-30 15:30:17.000000000 +1000
-+++ ./tools/grid.py 2007-08-30 15:30:25.000000000 +1000
-@@ -11,7 +11,7 @@ from string import find, split, join, at
-
- 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 -up ./tools/easy.py.orig ./tools/easy.py
---- ./tools/easy.py.orig 2007-08-30 15:30:04.000000000 +1000
-+++ ./tools/easy.py 2007-08-30 15:30:25.000000000 +1000
-@@ -11,10 +11,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 = sys.argv[0].replace("easy.py","grid.py")
- gnuplot_exe = "/usr/bin/gnuplot"
- else:
- # example for windows
diff --git a/libsvm-2.84-5.patch b/libsvm-2.84-5.patch
new file mode 100644
index 0000000..be92108
--- /dev/null
+++ b/libsvm-2.84-5.patch
@@ -0,0 +1,239 @@
+diff -up ./Makefile.orig ./Makefile
+--- ./Makefile.orig 2007-09-25 10:07:29.000000000 +1000
++++ ./Makefile 2007-09-25 14:30:10.000000000 +1000
+@@ -1,8 +1,39 @@
+ CXXC = g++
+ CFLAGS = -Wall -O3
++MAKE = make
++LIBSVM_VER =2.84
++export LIBSVM_VER
+
+-all: svm-train svm-predict svm-scale
++ifndef DESTDIR
++INSTDIR=/usr
++else
++INSTDIR=${DESTDIR}/usr
++endif
+
++export INSTDIR
++
++PROCESSOR=$(shell /bin/uname -p)
++ifeq "${PROCESSOR}" "x86_64"
++X86_64=64
++else
++X86_64=
++endif
++
++ifndef LIBDIR
++LIB_INSTDIR=${INSTDIR}/lib${X86_64}
++else
++LIB_INSTDIR=${INSTDIR}/..${LIBDIR}
++endif
++
++export LIB_INSTDIR
++
++all: svm-train svm-predict svm-scale svm-python svm-java svm-lib
++
++svm-lib: svm-share.o
++ $(CXXC) -shared -Wl,-soname,libsvm.so \
++ -o libsvm.so.${LIBSVM_VER} svm-share.o -lm
++svm-share.o: svm.cpp svm.h
++ $(CXXC) -g -fPIC $(CFLAGS) -c svm.cpp -o svm-share.o
+ svm-predict: svm-predict.c svm.o
+ $(CXXC) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
+ svm-train: svm-train.c svm.o
+@@ -11,5 +42,53 @@ svm-scale: svm-scale.c
+ $(CXXC) $(CFLAGS) svm-scale.c -o svm-scale
+ svm.o: svm.cpp svm.h
+ $(CXXC) $(CFLAGS) -c svm.cpp
++svm-python:
++ ${MAKE} -C python
++svm-java:
++ ${MAKE} -C java
++
++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}/libsvm
++ install -m 644 libsvm.so.2.84 ${LIB_INSTDIR}/libsvm
++ cd ${LIB_INSTDIR}/libsvm; ln -s libsvm.so.${LIBSVM_VER} libsvm.so
++ ldconfig -n ${LIB_INSTDIR}/libsvm
++# install package libsvm-devel
++ install -m 644 svm.o ${LIB_INSTDIR}/libsvm
++ mkdir -p ${INSTDIR}/include/libsvm
++ install -m 644 svm.h ${INSTDIR}/include/libsvm
++ mkdir -p ${INSTDIR}/share/libsvm/src
++ 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
++ cp -R java ${INSTDIR}/share/libsvm/src
++ cp -R svm-toy ${INSTDIR}/share/libsvm/src
++# cp -R tools ${INSTDIR}/share/libsvm/src
++# cp -R windows ${INSTDIR}/share/libsvm/src
++ mkdir -p ${INSTDIR}/share/libsvm/examples
++ install -m 644 heart_scale ${INSTDIR}/share/libsvm/examples
++# install package libsvm-python
++ ${MAKE} -C python install
++ ${MAKE} -C java install
++
++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
++ ${MAKE} -C java uninstall
++
+ clean:
+ rm -f *~ svm.o svm-train svm-predict svm-scale
++ ${MAKE} -C python clean
++ ${MAKE} -C java clean
++
+diff -up ./java/libsvm/svm_model.java.orig ./java/libsvm/svm_model.java
+--- ./java/libsvm/svm_model.java.orig 2007-09-26 10:19:43.000000000 +1000
++++ ./java/libsvm/svm_model.java 2007-09-26 10:27:36.000000000 +1000
+@@ -4,6 +4,7 @@
+ package libsvm;
+ public class svm_model implements java.io.Serializable
+ {
++ static final long serialVersionUID = 2709444323471798245L;
+ svm_parameter param; // parameter
+ int nr_class; // number of classes, = 2 in regression/one class svm
+ int l; // total #SV
+diff -up ./java/libsvm/svm_node.java.orig ./java/libsvm/svm_node.java
+--- ./java/libsvm/svm_node.java.orig 2007-09-26 10:19:51.000000000 +1000
++++ ./java/libsvm/svm_node.java 2007-09-26 10:27:25.000000000 +1000
+@@ -1,6 +1,7 @@
+ package libsvm;
+ public class svm_node implements java.io.Serializable
+ {
++ static final long serialVersionUID = 2709444323471798245L;
+ public int index;
+ public double value;
+ }
+diff -up ./java/libsvm/svm_problem.java.orig ./java/libsvm/svm_problem.java
+--- ./java/libsvm/svm_problem.java.orig 2007-09-26 10:20:42.000000000 +1000
++++ ./java/libsvm/svm_problem.java 2007-09-26 10:26:05.000000000 +1000
+@@ -1,6 +1,7 @@
+ package libsvm;
+ public class svm_problem implements java.io.Serializable
+ {
++ static final long serialVersionUID = -4451389443706847272L;
+ public int l;
+ public double[] y;
+ public svm_node[][] x;
+diff -up ./java/libsvm/svm_parameter.java.orig ./java/libsvm/svm_parameter.java
+--- ./java/libsvm/svm_parameter.java.orig 2007-09-26 10:20:23.000000000 +1000
++++ ./java/libsvm/svm_parameter.java 2007-09-26 10:25:14.000000000 +1000
+@@ -1,6 +1,7 @@
+ package libsvm;
+ public class svm_parameter implements Cloneable,java.io.Serializable
+ {
++ static final long serialVersionUID = 2709444323471798245L;
+ /* svm_type */
+ public static final int C_SVC = 0;
+ public static final int NU_SVC = 1;
+diff -up ./java/libsvm/svm.m4.orig ./java/libsvm/svm.m4
+diff -up ./java/Makefile.orig ./java/Makefile
+--- ./java/Makefile.orig 2007-09-25 11:10:21.000000000 +1000
++++ ./java/Makefile 2007-09-26 12:42:50.000000000 +1000
+@@ -1,15 +1,17 @@
+ .SUFFIXES: .class .java
+-FILES = libsvm/svm.class libsvm/svm_model.class libsvm/svm_node.class \
+- libsvm/svm_parameter.class libsvm/svm_problem.class \
++FILES = libsvm/svm_node.class libsvm/svm_parameter.class \
++ libsvm/svm_model.class libsvm/svm_problem.class libsvm/svm.class\
+ svm_train.class svm_predict.class svm_toy.class
+
+-#JAVAC = jikes
+-#JAVAC_FLAGS = -target 1.1 -source 1.3
+-JAVAC = javac
+-JAVAC_FLAGS =
++JAVA_TARGETDIR=${LIB_INSTDIR}/java/libsvm
++JAVAC = ecj
++#JAVAC_FLAGS = -target 1.3 -source 1.3
++CLASSPATH = .
++#JAVAC_FLAGS = --classpath=${CLASSPATH}
++JAVAC_FLAGS = -classpath ${CLASSPATH}
+
+ all: $(FILES)
+- jar cvf libsvm.jar *.class libsvm/*.class
++ gjar cvf libsvm.jar *.class libsvm/*.class
+
+ .java.class:
+ $(JAVAC) $(JAVAC_FLAGS) $<
+@@ -17,8 +19,20 @@ all: $(FILES)
+ libsvm/svm.java: libsvm/svm.m4
+ m4 libsvm/svm.m4 > libsvm/svm.java
+
++javadoc:
++ javadoc -d docs *.java libsvm/*.java
++
++install:
++ mkdir -p ${JAVA_TARGETDIR}
++ install -m 644 libsvm.jar ${JAVA_TARGETDIR}
++ install -m 644 test_applet.html ${JAVA_TARGETDIR}
++# cp -R docs ${JAVA_TARGETDIR}
++uninstall:
++ rm -fr ${JAVA_TARGETDIR}
++
+ 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 2007-09-25 11:08:29.000000000 +1000
++++ ./java/test_applet.html 2007-09-25 11:42:29.000000000 +1000
+@@ -1 +1,3 @@
+-
++
++
++
+diff -up ./python/Makefile.orig ./python/Makefile
+--- ./python/Makefile.orig 2007-09-25 10:07:34.000000000 +1000
++++ ./python/Makefile 2007-09-25 11:10:43.000000000 +1000
+@@ -2,7 +2,14 @@ CC = g++
+ SWIG ?= swig
+
+ #Windows: see ../README ../Makefile.win
+-PYTHON_INCLUDEDIR ?= /usr/include/python2.4
++PYTHON_TEMP:=${shell mktemp}
++PYTHON_VERSION:=${shell python -V 2> ${PYTHON_TEMP} ; cat ${PYTHON_TEMP} | awk 'BEGIN {FS= "[ .]"} {printf("%s.%s",$$2,$$3)}'; rm -f ${PYTHON_TEMP}}
++ifndef PYTHON_INCLUDEDIR
++
++PYTHON_INCLUDEDIR?= /usr/include/python${PYTHON_VERSION}
++
++endif
++PYTHON_TARGETDIR=${LIB_INSTDIR}/python${PYTHON_VERSION}/site-packages/libsvm
+
+ CFLAGS = -O3 -I$(PYTHON_INCLUDEDIR) -I..
+ LDFLAGS = -shared
+@@ -28,3 +35,19 @@ clean:
+
+ moreclean: 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 --git a/libsvm.spec b/libsvm.spec
index e32609a..50ef755 100644
--- a/libsvm.spec
+++ b/libsvm.spec
@@ -1,6 +1,6 @@
Name: libsvm
Version: 2.84
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: A Library for Support Vector Machines
Group: Development/Libraries
@@ -10,7 +10,7 @@ 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: ChangeLog
#Source1: http://www.csie.ntu.edu.tw/~cjlin/libsvm/log
-Patch0: libsvm-2.84-4.patch
+Patch0: libsvm-2.84-5.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: glibc-devel dos2unix
@@ -45,6 +45,19 @@ Python tools and interfaces for libsvm.
Install this package if you want to develop
programs with libsvm in Python.
+%package java
+Summary: Java tools and interfaces for libsvm.
+Group: Development/Libraries
+BuildRequires: eclipse-ecj >= 3, libgcj >= 4
+Requires: eclipse-ecj >= 3
+Requires: %{name} = %{version}-%{release}
+
+%description java
+Java tools and interfaces for libsvm.
+Install this package if you want to develop
+programs with libsvm in Java.
+
+
%prep
%setup -q
%patch0 -p0 -b .bak
@@ -58,13 +71,14 @@ make all DESTDIR=%{_builddir} LIBDIR=%{_libdir}
dos2unix -o %{_builddir}/%{name}-%{version}/FAQ.html
mv %{_builddir}/%{name}-%{version}/python/README %{_builddir}/%{name}-%{version}/python/README-Python
mv %{_builddir}/%{name}-%{version}/tools/README %{_builddir}/%{name}-%{version}/tools/README-Tools
+cp %{_builddir}/%{name}-%{version}/README %{_builddir}/%{name}-%{version}/java/README-Java
+
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir}
-
%clean
rm -rf $RPM_BUILD_ROOT
@@ -86,8 +100,17 @@ rm -rf $RPM_BUILD_ROOT
%doc python/README-Python tools/README-Tools
%{libsvm_python_dir}
+%files java
+%doc java/README-Java
+#%{_libdir}/java/libsvm/docs
+%{_libdir}/java/libsvm/libsvm.jar
+%{_libdir}/java/libsvm/test_applet.html
%changelog
+* Thu Aug 30 2007 Ding-Yi Chen - 2.84-5
+- Split out libsvm-java
+- Add libsvm.so
+
* Thu Aug 30 2007 Ding-Yi Chen - 2.84-4
- Refined description.
- Fix the /tmp/python.ver problem