databases/rocksdb-jni: New port: Java (JNI) interface to RocksDB

This commit is contained in:
Yuri Victorovich
2024-10-04 12:23:49 -07:00
parent 009c251da4
commit 579b9452fc
5 changed files with 142 additions and 0 deletions

View File

@@ -893,6 +893,7 @@
SUBDIR += replibyte
SUBDIR += retcl
SUBDIR += rocksdb
SUBDIR += rocksdb-jni
SUBDIR += rqlite
SUBDIR += rrdman
SUBDIR += rrdmerge

View File

@@ -0,0 +1,69 @@
PORTNAME= rocksdb-jni
DISTVERSIONPREFIX= v
DISTVERSION= 9.6.1
CATEGORIES= databases java
MASTER_SITES= https://rocksdb-deps.s3-us-west-2.amazonaws.com/jars/:deps
DISTFILES= assertj-core-2.9.0.jar:deps \
cglib-3.3.0.jar:deps \
hamcrest-2.2.jar:deps \
junit-4.13.1.jar:deps \
mockito-all-1.10.19.jar:deps
EXTRACT_ONLY= ${GH_ACCOUNT}-${GH_PROJECT}-${DISTVERSIONFULL}_GH0${EXTRACT_SUFX}
MAINTAINER= yuri@FreeBSD.org
COMMENT= Java (JNI) interface to RocksDB
WWW= https://rocksdb.org/
LICENSE= APACHE20 GPLv2
LICENSE_COMB= dual
LICENSE_FILE_APACHE20= ${WRKSRC}/../LICENSE.Apache
LICENSE_FILE_GPLv2= ${WRKSRC}/../COPYING
BUILD_DEPENDS= rocksdb>0:databases/rocksdb \
googletest>0:devel/googletest
USES= cmake compiler:c++17-lang localbase
USE_GITHUB= yes
GH_ACCOUNT= facebook
GH_PROJECT= rocksdb
USE_JAVA= yes
JAVA_BUILD= yes
JAVA_RUN= yes
JAVA_VERSION= 21
WRKSRC_SUBDIR= java
CMAKE_ARGS= -DCMAKE_PROJECT_VERSION=${DISTVERSION} \
-DJAVA_INCLUDE_PATH=${JAVA_HOME}/include
CXXFLAGS+= -I${WRKSRC}/.. \
-DOS_FREEBSD \
-DROCKSDB_PLATFORM_POSIX
#MAKE_ENV+= JAVA_HOME=${JAVA_HOME}
BINARY_ALIAS= java=${JAVA_HOME}/bin/java
PLIST_FILES= ${JAVAJARDIR}/rocksdb-${PORTVERSION}.jar \
${JAVAJARDIR}/rocksdbjni-${PORTVERSION}-javadoc.jar \
${JAVAJARDIR}/rocksdbjni-${PORTVERSION}-sources.jar \
${JAVAJARDIR}/rocksdbjni_classes.jar \
${JAVAJARDIR}/rocksdbjni_test_classes.jar
post-extract:
@${MKDIR} ${WRKSRC}/test-libs && \
${RLN} ${DISTDIR}/assertj-core-2.9.0.jar ${WRKSRC}/test-libs && \
${RLN} ${DISTDIR}/cglib-3.3.0.jar ${WRKSRC}/test-libs && \
${RLN} ${DISTDIR}/hamcrest-2.2.jar ${WRKSRC}/test-libs && \
${RLN} ${DISTDIR}/junit-4.13.1.jar ${WRKSRC}/test-libs && \
${RLN} ${DISTDIR}/mockito-all-1.10.19.jar ${WRKSRC}/test-libs
do-install:
${INSTALL_DATA} ${BUILD_WRKSRC}/rocksdb-${PORTVERSION}.jar ${STAGEDIR}${JAVAJARDIR}
${INSTALL_DATA} ${BUILD_WRKSRC}/rocksdbjni-${PORTVERSION}-sources.jar ${STAGEDIR}${JAVAJARDIR}
${INSTALL_DATA} ${BUILD_WRKSRC}/rocksdbjni-${PORTVERSION}-javadoc.jar ${STAGEDIR}${JAVAJARDIR}
${INSTALL_DATA} ${BUILD_WRKSRC}/rocksdbjni_classes.jar ${STAGEDIR}${JAVAJARDIR}
${INSTALL_DATA} ${BUILD_WRKSRC}/rocksdbjni_test_classes.jar ${STAGEDIR}${JAVAJARDIR}
.include <bsd.port.mk>

View File

@@ -0,0 +1,13 @@
TIMESTAMP = 1728066229
SHA256 (assertj-core-2.9.0.jar) = 5e88ea3ecbe3c48aa1346fec76c84979fa9c8d22499f11479011691230e8babf
SIZE (assertj-core-2.9.0.jar) = 1096630
SHA256 (cglib-3.3.0.jar) = 9fe0c26d7464140ccdfe019ac687be1fb906122b508ab54beb810db0f09a9212
SIZE (cglib-3.3.0.jar) = 306864
SHA256 (hamcrest-2.2.jar) = 5e62846a89f05cd78cd9c1a553f340d002458380c320455dd1f8fc5497a8a1c1
SIZE (hamcrest-2.2.jar) = 123360
SHA256 (junit-4.13.1.jar) = c30719db974d6452793fe191b3638a5777005485bae145924044530ffa5f6122
SIZE (junit-4.13.1.jar) = 382708
SHA256 (mockito-all-1.10.19.jar) = d1a7a7ef14b3db5c0fc3e0a63a81b374b510afe85add9f7984b97911f4c70605
SIZE (mockito-all-1.10.19.jar) = 1234599
SHA256 (facebook-rocksdb-v9.6.1_GH0.tar.gz) = 98cf497c1d6d0a927142d2002a0b6b4816a0998c74fda9ae7b1bdaf6b784e895
SIZE (facebook-rocksdb-v9.6.1_GH0.tar.gz) = 13589860

View File

@@ -0,0 +1,52 @@
--- CMakeLists.txt.orig 2024-08-27 20:39:35 UTC
+++ CMakeLists.txt
@@ -542,9 +542,9 @@ include_directories(${JNI_INCLUDE_DIRS})
find_package(JNI)
include_directories(${JNI_INCLUDE_DIRS})
-include_directories(${PROJECT_SOURCE_DIR}/java)
+include_directories(${PROJECT_SOURCE_DIR})
-set(JAVA_TEST_LIBDIR ${PROJECT_SOURCE_DIR}/java/test-libs)
+set(JAVA_TEST_LIBDIR ${PROJECT_SOURCE_DIR}/test-libs)
set(JAVA_TMP_JAR ${JAVA_TEST_LIBDIR}/tmp.jar)
set(JAVA_JUNIT_JAR ${JAVA_TEST_LIBDIR}/junit-${JAVA_JUNIT_VERSION}.jar)
set(JAVA_HAMCR_JAR ${JAVA_TEST_LIBDIR}/hamcrest-${JAVA_HAMCR_VERSION}.jar)
@@ -561,7 +561,7 @@ endif()
set(JAVA_RUN_TESTCLASSPATH ${JAVA_JUNIT_JAR}:${JAVA_HAMCR_JAR}:${JAVA_MOCKITO_JAR}:${JAVA_CGLIB_JAR}:${JAVA_ASSERTJ_JAR})
endif()
-set(JNI_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/java/include)
+set(JNI_OUTPUT_DIR ${PROJECT_SOURCE_DIR}/include)
file(MAKE_DIRECTORY ${JNI_OUTPUT_DIR})
if(${Java_VERSION_MINOR} VERSION_LESS_EQUAL "7" AND ${Java_VERSION_MAJOR} STREQUAL "1")
@@ -602,8 +602,8 @@ add_jar(
GENERATE_NATIVE_HEADERS rocksdbjni_test_headers DESTINATION ${JNI_OUTPUT_DIR}
)
-if(NOT EXISTS ${PROJECT_SOURCE_DIR}/java/classes)
- file(MAKE_DIRECTORY ${PROJECT_SOURCE_DIR}/java/classes)
+if(NOT EXISTS ${PROJECT_SOURCE_DIR}/classes)
+ file(MAKE_DIRECTORY ${PROJECT_SOURCE_DIR}/classes)
endif()
if(NOT EXISTS ${JAVA_TEST_LIBDIR})
@@ -817,7 +817,7 @@ create_javadoc(rocksdb
set(ROCKSDB_JAVADOC_JAR rocksdbjni-${CMAKE_PROJECT_VERSION}-javadoc.jar)
create_javadoc(rocksdb
PACKAGES org.rocksdb org.rocksdb.util
- SOURCEPATH "${PROJECT_SOURCE_DIR}/java/src/main/java"
+ SOURCEPATH "${PROJECT_SOURCE_DIR}/src/main/java"
WINDOWTITLE "RocksDB Java API JavaDoc"
AUTHOR FALSE
USE FALSE
@@ -833,7 +833,7 @@ add_custom_target(rocksdb_sources_jar ALL
# Sources Jar
set(ROCKSDB_SOURCES_JAR rocksdbjni-${CMAKE_PROJECT_VERSION}-sources.jar)
add_custom_target(rocksdb_sources_jar ALL
- ${Java_JAR_EXECUTABLE} cvf ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_SOURCES_JAR} -C ${PROJECT_SOURCE_DIR}/java/src/main/java/ .
+ ${Java_JAR_EXECUTABLE} cvf ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_SOURCES_JAR} -C ${PROJECT_SOURCE_DIR}/src/main/java/ .
BYPRODUCTS ${CMAKE_CURRENT_BINARY_DIR}/${ROCKSDB_SOURCES_JAR}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)

View File

@@ -0,0 +1,7 @@
RocksDB is an embeddable persistent key-value store for fast storage. RocksDB
can also be the foundation for a client-server database but our current focus is
on embedded workloads.
RocksDB builds on LevelDB to be scalable to run on servers with many CPU cores,
to efficiently use fast storage, to support IO-bound, in-memory and write-once
workloads, and to be flexible to allow for innovation.