From 7c83a7a700deeb26daa953f06e63e4de6ba03ee0 Mon Sep 17 00:00:00 2001 From: He Rengui Date: Fri, 7 May 2021 10:16:14 +0800 Subject: [PATCH] =?UTF-8?q?rocksdb=E6=B7=BB=E5=8A=A0java=20API=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8Dc++=E5=8A=A8=E6=80=81=E5=BA=93=E4=BD=BF?= =?UTF-8?q?=E7=94=A8ldd=E6=9F=A5=E8=AF=A2=E6=98=BE=E7=A4=BA=E6=9C=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E7=AC=A6=E5=8F=B7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: He Rengui (cherry picked from commit a952ab93ca794681b899c6975614b6148d16946d) --- rocksdb.spec | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/rocksdb.spec b/rocksdb.spec index 4b2fa20..dc444cd 100644 --- a/rocksdb.spec +++ b/rocksdb.spec @@ -1,12 +1,12 @@ Name: rocksdb Version: 6.8.1 -Release: 1 +Release: 2 Summary: A Persistent Key-Value Store for Flash and RAM Storage License: GPLv2 and Apache 2.0 License URL: https://github.com/facebook/rocksdb.git -BuildRequires: gcc make rpm-build gcc-c++ gtest-devel +BuildRequires: gcc make rpm-build gcc-c++ gtest-devel maven java-1.8.0-openjdk-devel # enable debuginfo pacakges by default, then we need gdb package BuildRequires: gdb @@ -34,7 +34,15 @@ Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Development files for rocksdb - +%package -n %{name}jni +Summary: A Java JNI driver to rocksdb +# rocksdbjni.jar contains a shared object, that requires some packages +Requires: java-1.8.0-openjdk glibc snappy zlib bzip2 lz4 zstd libstdc++ + +%description -n %{name}jni +RocksDB JNI gives you a Java interface to the RocksDB C++ library which is an +embeddable persistent key-value store for fast storage. + %prep %autosetup @@ -44,15 +52,26 @@ rm build_tools/gnu_parallel %build export CFLAGS="%{optflags}" -export EXTRA_CXXFLAGS=" -std=c++11 %{optflags}" -make %{?_smp_mflags} shared_lib +# librocksdb*.so* has undefined symbols dlopen and so on, “-ldl” needs to be added here +export EXTRA_CXXFLAGS=" -std=c++11 %{optflags} -ldl" +%make_build shared_lib +# build rocksdbjni +export JAVA_HOME=%{_jvmdir}/java-1.8.0-openjdk +export EXTRA_CXXFLAGS="${EXTRA_CXXFLAGS} -I${JAVA_HOME}/include/ -I${JAVA_HOME}/include/linux" +sed -i 's#\(^DEBUG_LEVEL.*=\).*$#\10#' Makefile +PORTABLE=1 %make_build rocksdbjava %install make install-shared \ INSTALL_PREFIX=%{buildroot}\ LIB_INSTALL_DIR=%{_libdir}\ INCLUDE_INSTALL_DIR=%{_includedir} - + +# install rocksdbjni +install -d -p -m 0755 %{buildroot}%{_javadir}/%{name}jni +install -D -m 0644 java/target/%{name}jni-%{version}-linux$(getconf LONG_BIT).jar \ + %{buildroot}%{_javadir}/%{name}jni/%{name}jni.jar + %post -p /sbin/ldconfig %postun -p /sbin/ldconfig @@ -68,6 +87,14 @@ make install-shared \ %{_libdir}/librocksdb.so %{_includedir}/* +%files -n %{name}jni +%dir %{_javadir}/%{name}jni +%{_javadir}/%{name}jni/%{name}jni.jar + %changelog +* Thu May 06 2021 herengui - 6.8.1-2 +- add java-api: rocksdbjni +- fix undefined symbol issue for c++ API + * Thu May 28 2020 openEuler Buildteam - 6.8.1-1 - Package init -- Gitee