RocksDB zstd encryption; cache tuning; readonly open mode

This commit is contained in:
Thomas Krijnen
2025-09-03 11:11:55 +02:00
parent a831884ee6
commit 59a5bf2344
15 changed files with 170 additions and 79 deletions
+38 -5
View File
@@ -84,6 +84,7 @@ option(USD_SUPPORT "Build IfcConvert with USD support (requires pixar's USD libr
option(CITYJSON_SUPPORT "Build IfcConvert with CityJSON support (requires CityJSON library)." OFF)
option(WITH_RELATIONSHIP_VALIDATION "Build IfcConvert with option to validate geometrical relationships." OFF)
option(WITH_ROCKSDB "Support a RocksDB key-value store as a file backend in IfcOpenShell" OFF)
option(WITH_ZSTD "Use Zstd compression in RocksDB writes" OFF)
option(USERSPACE_PYTHON_PREFIX "Installs IfcPython for the current user only instead of system-wide." OFF)
option(ADD_COMMIT_SHA "Add commit sha and branch in version number, warning results in many rebuilds, requires git" OFF)
@@ -315,6 +316,8 @@ endif(USD_SUPPORT)
if (WITH_ROCKSDB)
UNIFY_ENVVARS_AND_CACHE(ROCKSDB_INCLUDE_DIR)
UNIFY_ENVVARS_AND_CACHE(ROCKSDB_LIBRARY_DIR)
UNIFY_ENVVARS_AND_CACHE(ZSTD_INCLUDE_DIR)
UNIFY_ENVVARS_AND_CACHE(ZSTD_LIBRARY_DIR)
if("${ROCKSDB_INCLUDE_DIR}" STREQUAL "")
find_path(ROCKSDB_INCLUDE_DIR rocksdb/db.h
@@ -342,9 +345,39 @@ if (WITH_ROCKSDB)
message(FATAL_ERROR "Unable to find rocksdb library in: ${ROCKSDB_LIBRARY_DIR}")
endif()
# @todo IFOPSH_ prefix?
add_definitions(-DWITH_ROCKSDB)
set(SWIG_DEFINES ${SWIG_DEFINES} -DWITH_ROCKSDB)
add_definitions(-DIFOPSH_WITH_ROCKSDB)
set(SWIG_DEFINES ${SWIG_DEFINES} -DIFOPSH_WITH_ROCKSDB)
if (WITH_ZSTD)
if("${ZSTD_INCLUDE_DIR}" STREQUAL "")
find_path(ZSTD_INCLUDE_DIR zstd.h
PATHS
/usr/include
/usr/local/include
REQUIRED
)
if(ZSTD_INCLUDE_DIR)
message(STATUS "Found zstd include files in: ${ZSTD_INCLUDE_DIR}")
else()
message(FATAL_ERROR "Unable to find zstd include directory, specify ZSTD_INCLUDE_DIR manually.")
endif()
else()
set(ZSTD_INCLUDE_DIR ${ZSTD_INCLUDE_DIR} CACHE FILEPATH "zstd header files")
message(STATUS "Looking for zstd include files in: ${ZSTD_INCLUDE_DIR}")
endif()
find_library(ZSTD_LIBRARY
NAMES zstd zstd_static
PATHS ${ZSTD_LIBRARY_DIR})
if(ZSTD_LIBRARY)
message(STATUS "zstd library ${ZSTD_LIBRARY} found in: ${ZSTD_LIBRARY_DIR}")
else()
message(FATAL_ERROR "Unable to find rocksdb library in: ${ZSTD_LIBRARY_DIR}")
endif()
add_definitions(-DIFOPSH_WITH_ROCKSDB_ZSTD)
set(SWIG_DEFINES ${SWIG_DEFINES} -DIFOPSH_WITH_ROCKSDB_ZSTD)
endif()
if(WIN32)
set(RPCRT_LIBRARIES "rpcrt4.lib" "shlwapi.lib")
@@ -898,7 +931,7 @@ endif()
include_directories(${INCLUDE_DIRECTORIES} ${OCC_INCLUDE_DIR} ${OPENCOLLADA_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS} ${LIBXML2_INCLUDE_DIR} ${JSON_INCLUDE_DIR} ${HDF5_INCLUDE_DIR}
${EIGEN_DIR} ${CGAL_INCLUDE_DIR} ${GMP_INCLUDE_DIR} ${MPFR_INCLUDE_DIR} ${USD_INCLUDE_DIR}
${TBB_INCLUDE_DIR} ${ROCKSDB_INCLUDE_DIR}
${TBB_INCLUDE_DIR} ${ROCKSDB_INCLUDE_DIR} ${ZSTD_INCLUDE_DIR}
)
if(NOT SCHEMA_VERSIONS)
@@ -1061,7 +1094,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
endif()
add_library(IfcParse ${IFCPARSE_FILES})
target_link_libraries(IfcParse ${ROCKSDB_LIBRARY} ${RPCRT_LIBRARIES} ${STDCPPFS})
target_link_libraries(IfcParse ${ROCKSDB_LIBRARY} ${ZSTD_LIBRARY} ${RPCRT_LIBRARIES} ${STDCPPFS})
set_target_properties(IfcParse PROPERTIES COMPILE_FLAGS -DIFC_PARSE_EXPORTS VERSION "${PROJECT_VERSION}" SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
if(WASM_BUILD)