diff --git a/sci-libs/libsvm/Manifest b/sci-libs/libsvm/Manifest index e972b57ae7a5..35bab6f57f81 100644 --- a/sci-libs/libsvm/Manifest +++ b/sci-libs/libsvm/Manifest @@ -1 +1,2 @@ DIST libsvm-3.3.tar.gz 910001 BLAKE2B 69364210998e496e333c6a87a66ad3f1515f2b3e98fe7bc579e8aee6d4df0473a4282f979d4f7d1729ce7080fd8b009ce830caab0ac37b57fafff0d2686e86e0 SHA512 705cdebffce0d9ea053cf51b2bfd46303d306b7a2c34ee46065f19e1227459fbdbe6fde6e4769935a0c225da831ec137fb9c0c28fbc2efa06724a94bdd76500d +DIST libsvm-3.37.tar.gz 943582 BLAKE2B 6b085d8473242d35d7416baecba887fedb432a803b47e99dccee9f46859d6e22f63fc487df3448fd535aa8673b22d529bdb28fc23a53326eb74361dd72431ec5 SHA512 c5ecee6e46dc4b16995af16ab90330aa0804155787301fb6046d790828634d809b90f85675d252020ae7ca60ca2c19cd9eaa3ac53ac50f2674d76ac2b12001cc diff --git a/sci-libs/libsvm/files/libsvm-3.37-makefile.patch b/sci-libs/libsvm/files/libsvm-3.37-makefile.patch new file mode 100644 index 000000000000..62685d406c6b --- /dev/null +++ b/sci-libs/libsvm/files/libsvm-3.37-makefile.patch @@ -0,0 +1,44 @@ +diff --git a/Makefile b/Makefile +index 1bc5d4e..a8a46a9 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,28 +1,30 @@ + CXX ?= g++ +-CFLAGS = -Wall -Wconversion -O3 -fPIC ++CFLAGS ?= -Wall -Wconversion ++CXXFLAGS ?= $(CFLAGS) + SHVER = 4 + OS = $(shell uname) + ifeq ($(OS),Darwin) +- SHARED_LIB_FLAG = -dynamiclib -Wl,-install_name,libsvm.so.$(SHVER) ++ SHARED_LIB_FLAG = -dynamiclib -Wl,-install_name,libsvm.so.$(SHVER) -fPIC + else +- SHARED_LIB_FLAG = -shared -Wl,-soname,libsvm.so.$(SHVER) ++ SHARED_LIB_FLAG = -shared -Wl,-soname,libsvm.so.$(SHVER) -fPIC + endif + + # Uncomment the following lines to enable parallelization with OpenMP + # CFLAGS += -fopenmp + # SHARED_LIB_FLAG += -fopenmp + +-all: svm-train svm-predict svm-scale ++all: svm-train svm-predict svm-scale lib + + lib: svm.o +- $(CXX) $(SHARED_LIB_FLAG) svm.o -o libsvm.so.$(SHVER) ++ $(CXX) $(LDFLAGS) $(SHARED_LIB_FLAG) svm.o -o libsvm.so.$(SHVER) ++ ln -s libsvm.so.$(SHVER) libsvm.so + svm-predict: svm-predict.c svm.o +- $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm ++ $(CXX) $(CFLAGS) $(LDFLAGS) svm-predict.c svm.o -o svm-predict -lm + svm-train: svm-train.c svm.o +- $(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm ++ $(CXX) $(CFLAGS) $(LDFLAGS) svm-train.c svm.o -o svm-train -lm + svm-scale: svm-scale.c +- $(CXX) $(CFLAGS) svm-scale.c -o svm-scale ++ $(CXX) $(CFLAGS) $(LDFLAGS) svm-scale.c -o svm-scale + svm.o: svm.cpp svm.h +- $(CXX) $(CFLAGS) -c svm.cpp ++ $(CXX) $(CXXFLAGS) -c svm.cpp + clean: + rm -f *~ svm.o svm-train svm-predict svm-scale libsvm.so.$(SHVER) diff --git a/sci-libs/libsvm/libsvm-3.37.ebuild b/sci-libs/libsvm/libsvm-3.37.ebuild new file mode 100644 index 000000000000..e62fecfabda9 --- /dev/null +++ b/sci-libs/libsvm/libsvm-3.37.ebuild @@ -0,0 +1,111 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..14} ) + +inherit java-pkg-opt-2 python-r1 toolchain-funcs + +DESCRIPTION="Library for Support Vector Machines" +HOMEPAGE="https://www.csie.ntu.edu.tw/~cjlin/libsvm/" +SRC_URI="https://www.csie.ntu.edu.tw/~cjlin/libsvm/${PN}-${PV/0}.tar.gz" +S="${WORKDIR}/${PN}-${PV/0}" + +LICENSE="BSD" +SLOT="0/2" +KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" +IUSE="java openmp python tools" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )" + +DEPEND=" + java? ( >=virtual/jdk-1.8:* ) + python? ( ${PYTHON_DEPS} ) +" +RDEPEND=" + java? ( >=virtual/jre-1.8:* ) + python? ( ${PYTHON_DEPS} ) + tools? ( sci-visualization/gnuplot ) +" + +PATCHES=( + "${FILESDIR}"/${PN}-3.37-makefile.patch +) + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +src_prepare() { + default + java-pkg_clean + + sed -i -e "s@\.\./@${EPREFIX}/usr/bin/@g" tools/*.py \ + || die "Failed to fix paths in python files" + sed -i -e "s|./grid.py|${EPREFIX}/usr/bin/svm-grid|g" tools/*.py \ + || die "Failed to fix paths for svm-grid" + sed -i -e 's/grid.py/svm-grid/g' tools/grid.py \ + || die "Failed to rename grid.py to svm-grid" +} + +src_configure() { + use java && export JAVAC_FLAGS="$(java-pkg_javac-args)" + if use openmp; then + export OPENMP_CFLAGS="-fopenmp -DOPENMP" + export OPENMP_LIBS="-fopenmp" + fi + + tc-export CXX CC +} + +src_compile() { + default + use java && emake -C java +} + +src_install() { + dobin svm-train svm-predict svm-scale + dolib.so *.so* + doheader svm.h + + DOCS=( README ) + + if use tools; then + local t + for t in tools/*.py; do + python_foreach_impl python_newscript ${t} svm-$(basename ${t} .py) + done + + mv tools/README{,.tools} || die + DOCS+=( tools/README.tools ) + + docinto examples + dodoc heart_scale + dodoc -r svm-toy + docompress -x /usr/share/doc/${PF}/examples + fi + + if use python ; then + installation() { + touch python/__init__.py || die + python_moduleinto libsvm + python_domodule python/*.py + } + python_foreach_impl installation + + mv python/README{,.python} || die + DOCS+=( python/README.python ) + fi + + HTML_DOCS=( FAQ.html ) + if use java; then + java-pkg_dojar java/libsvm.jar + HTML_DOCS+=( java/test_applet.html ) + fi + + einstalldocs +}