diff options
| author | Thierry Thomas <thierry@FreeBSD.org> | 2026-07-12 16:02:00 +0000 |
|---|---|---|
| committer | Thierry Thomas <thierry@FreeBSD.org> | 2026-08-02 08:11:10 +0000 |
| commit | 7932b158a543476c90138973465f2040109bed1b (patch) | |
| tree | 1ecbd741d9226e69be5c61b2914b6d5c1e216c6b | |
| parent | 2125268a397c4d269666acb6eea706e3cbd640e6 (diff) | |
databases/rocksdb: add cmake config files
Also add dependencies on googletest and onetbb: when built outside
poudriere they are detected and compilation fails.
PR: 296732
Approved by: maintainer’s time-out
| -rw-r--r-- | databases/rocksdb/Makefile | 17 | ||||
| -rw-r--r-- | databases/rocksdb/files/RocksDBTargets-release.cmake.in | 29 | ||||
| -rw-r--r-- | databases/rocksdb/files/RocksDBTargets.cmake | 113 | ||||
| -rw-r--r-- | databases/rocksdb/files/patch-build_tools-build_detect_platform | 23 | ||||
| -rw-r--r-- | databases/rocksdb/files/patch-cmake_RocksDBConfig.cmake.in | 85 | ||||
| -rw-r--r-- | databases/rocksdb/pkg-plist | 13 |
6 files changed, 268 insertions, 12 deletions
diff --git a/databases/rocksdb/Makefile b/databases/rocksdb/Makefile index 65ecf0a64252..37b0cd018fba 100644 --- a/databases/rocksdb/Makefile +++ b/databases/rocksdb/Makefile @@ -1,6 +1,7 @@ PORTNAME= rocksdb PORTVERSION= 11.1.2 DISTVERSIONPREFIX= v +PORTREVISION= 1 CATEGORIES= databases MAINTAINER= sunpoet@FreeBSD.org @@ -19,6 +20,8 @@ BROKEN_armv7= does not build: /nxb-bin/usr/bin/ld: undefined reference to symbol BUILD_DEPENDS= bash:shells/bash LIB_DEPENDS= libgflags.so:devel/gflags \ + libtbb.so:devel/onetbb \ + libgtest.so:devel/googletest \ libsnappy.so:archivers/snappy USES= compiler:c++20-lang gmake localbase:ldflags perl5 @@ -30,7 +33,8 @@ CONFIGURE_ARGS= make_config.mk CONFIGURE_ENV= PORTABLE=0 ROCKSDB_DISABLE_PG=1 ROCKSDB_ROOT=${WRKSRC} CONFIGURE_SCRIPT= build_tools/build_detect_platform HAS_CONFIGURE= yes -MAKE_ENV= CXX=${CXX} INSTALL_PATH=${STAGEDIR}${PREFIX} USE_RTTI=1 V=1 +MAKE_ENV= CXX=${CXX} INSTALL_PATH=${STAGEDIR}${PREFIX} USE_RTTI=1 V=1 \ + DISABLE_WARNING_AS_ERROR=yes USE_CXXSTD= c++20 USE_LDCONFIG= yes TEST_TARGET= check @@ -67,6 +71,17 @@ post-patch: @${REINPLACE_CMD} -e 's| -march=native||' ${WRKSRC}/build_tools/build_detect_platform .endif +post-stage: + # To be removed when this ports uses cmake + ${MKDIR} ${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/modules + ${INSTALL_DATA} ${WRKSRC}/cmake/RocksDBConfig.cmake.in \ + ${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/RocksDBConfig.cmake + ${INSTALL_DATA} ${FILESDIR}/RocksDBTargets.cmake \ + ${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/ + ${SED} -e 's|%%VERSION%%|${PORTVERSION}|;s|%%VER%%|${PORTVERSION:R:R}|' \ + ${FILESDIR}/RocksDBTargets-release.cmake.in > ${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/RocksDBTargets-release.cmake + ${INSTALL_DATA} ${WRKSRC}/cmake/modules/* ${STAGEDIR}${PREFIX}/lib/cmake/rocksdb/modules/ + post-install: ${MKDIR} ${STAGEDIR}${DATADIR}/ cd ${WRKSRC}/ && ${INSTALL_PROGRAM} ${BENCHMARKS} ${TOOLS} ${STAGEDIR}${PREFIX}/bin/ diff --git a/databases/rocksdb/files/RocksDBTargets-release.cmake.in b/databases/rocksdb/files/RocksDBTargets-release.cmake.in new file mode 100644 index 000000000000..8272426468df --- /dev/null +++ b/databases/rocksdb/files/RocksDBTargets-release.cmake.in @@ -0,0 +1,29 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "Release". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "RocksDB::rocksdb" for configuration "Release" +set_property(TARGET RocksDB::rocksdb APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(RocksDB::rocksdb PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/librocksdb.a" + ) + +list(APPEND _cmake_import_check_targets RocksDB::rocksdb ) +list(APPEND _cmake_import_check_files_for_RocksDB::rocksdb "${_IMPORT_PREFIX}/lib/librocksdb.a" ) + +# Import target "RocksDB::rocksdb-shared" for configuration "Release" +set_property(TARGET RocksDB::rocksdb-shared APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(RocksDB::rocksdb-shared PROPERTIES + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/librocksdb.so.%%VERSION%%" + IMPORTED_SONAME_RELEASE "librocksdb.so.%%VER%%" + ) + +list(APPEND _cmake_import_check_targets RocksDB::rocksdb-shared ) +list(APPEND _cmake_import_check_files_for_RocksDB::rocksdb-shared "${_IMPORT_PREFIX}/lib/librocksdb.so.%%VERSION%%" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/databases/rocksdb/files/RocksDBTargets.cmake b/databases/rocksdb/files/RocksDBTargets.cmake new file mode 100644 index 000000000000..c2b93bb377dc --- /dev/null +++ b/databases/rocksdb/files/RocksDBTargets.cmake @@ -0,0 +1,113 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) + message(FATAL_ERROR "CMake >= 2.8.12 required") +endif() +if(CMAKE_VERSION VERSION_LESS "2.8.12") + message(FATAL_ERROR "CMake >= 2.8.12 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.8.12...3.29) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_cmake_targets_defined "") +set(_cmake_targets_not_defined "") +set(_cmake_expected_targets "") +foreach(_cmake_expected_target IN ITEMS RocksDB::rocksdb RocksDB::rocksdb-shared) + list(APPEND _cmake_expected_targets "${_cmake_expected_target}") + if(TARGET "${_cmake_expected_target}") + list(APPEND _cmake_targets_defined "${_cmake_expected_target}") + else() + list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") + endif() +endforeach() +unset(_cmake_expected_target) +if(_cmake_targets_defined STREQUAL _cmake_expected_targets) + unset(_cmake_targets_defined) + unset(_cmake_targets_not_defined) + unset(_cmake_expected_targets) + unset(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT _cmake_targets_defined STREQUAL "") + string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") + string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") +endif() +unset(_cmake_targets_defined) +unset(_cmake_targets_not_defined) +unset(_cmake_expected_targets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target RocksDB::rocksdb +add_library(RocksDB::rocksdb STATIC IMPORTED) + +set_target_properties(RocksDB::rocksdb PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" +) + +# Create imported target RocksDB::rocksdb-shared +add_library(RocksDB::rocksdb-shared SHARED IMPORTED) + +set_target_properties(RocksDB::rocksdb-shared PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" +) + +# Load information for each installed configuration. +file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/RocksDBTargets-*.cmake") +foreach(_cmake_config_file IN LISTS _cmake_config_files) + include("${_cmake_config_file}") +endforeach() +unset(_cmake_config_file) +unset(_cmake_config_files) + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(_cmake_target IN LISTS _cmake_import_check_targets) + if(CMAKE_VERSION VERSION_LESS "3.28" + OR NOT DEFINED _cmake_import_check_xcframework_for_${_cmake_target} + OR NOT IS_DIRECTORY "${_cmake_import_check_xcframework_for_${_cmake_target}}") + foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}") + if(NOT EXISTS "${_cmake_file}") + message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file + \"${_cmake_file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + endif() + unset(_cmake_file) + unset("_cmake_import_check_files_for_${_cmake_target}") +endforeach() +unset(_cmake_target) +unset(_cmake_import_check_targets) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/databases/rocksdb/files/patch-build_tools-build_detect_platform b/databases/rocksdb/files/patch-build_tools-build_detect_platform index cbf3251be4f3..e4cf4f7219bd 100644 --- a/databases/rocksdb/files/patch-build_tools-build_detect_platform +++ b/databases/rocksdb/files/patch-build_tools-build_detect_platform @@ -2,9 +2,9 @@ Remove -fno-builtin-memcmp and -ltcmalloc % sed -i .orig 's| -fno-builtin-memcmp||; s| -ltcmalloc||' build_tools/build_detect_platform ---- build_tools/build_detect_platform.orig 2022-02-17 23:56:08 UTC +--- build_tools/build_detect_platform.orig 2026-06-24 23:52:00 UTC +++ build_tools/build_detect_platform -@@ -145,7 +145,7 @@ PLATFORM_SHARED_VERSIONED=true +@@ -151,7 +151,7 @@ GENERIC_PORT_FILES=`cd "$ROCKSDB_ROOT"; find port -nam # generic port files (working on all platform by #ifdef) go directly in /port GENERIC_PORT_FILES=`cd "$ROCKSDB_ROOT"; find port -name '*.cc' | tr "\n" " "` @@ -13,7 +13,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc case "$TARGET_OS" in Darwin) PLATFORM=OS_MACOSX -@@ -166,7 +166,7 @@ case "$TARGET_OS" in +@@ -172,7 +172,7 @@ case "$TARGET_OS" in PLATFORM=OS_LINUX COMMON_FLAGS="$COMMON_FLAGS -DOS_LINUX" if [ -z "$USE_CLANG" ]; then @@ -22,7 +22,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc else PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic" fi -@@ -193,21 +193,21 @@ EOF +@@ -181,29 +181,29 @@ case "$TARGET_OS" in ;; SunOS) PLATFORM=OS_SOLARIS @@ -43,11 +43,12 @@ Remove -fno-builtin-memcmp and -ltcmalloc PLATFORM=OS_FREEBSD CXX=clang++ - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD" +- PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread" + COMMON_FLAGS="$COMMON_FLAGS -D_REENTRANT -DOS_FREEBSD" - PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread" ++ PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lgtest -lpthread" # PORT_FILES=port/freebsd/freebsd_specific.cc ;; -@@ -215,7 +215,7 @@ EOF + GNU/kFreeBSD) PLATFORM=OS_GNU_KFREEBSD COMMON_FLAGS="$COMMON_FLAGS -DOS_GNU_KFREEBSD" if [ -z "$USE_CLANG" ]; then @@ -56,7 +57,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc else PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic" fi -@@ -224,14 +224,14 @@ EOF +@@ -212,14 +212,14 @@ case "$TARGET_OS" in ;; NetBSD) PLATFORM=OS_NETBSD @@ -73,7 +74,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -pthread" # PORT_FILES=port/openbsd/openbsd_specific.cc FIND=gfind -@@ -239,7 +239,7 @@ EOF +@@ -227,7 +227,7 @@ case "$TARGET_OS" in ;; DragonFly) PLATFORM=OS_DRAGONFLYBSD @@ -82,7 +83,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread" # PORT_FILES=port/dragonfly/dragonfly_specific.cc ;; -@@ -249,7 +249,7 @@ EOF +@@ -237,7 +237,7 @@ case "$TARGET_OS" in PLATFORM_CXXFLAGS="-std=gnu++11" COMMON_FLAGS="$COMMON_FLAGS -DCYGWIN" if [ -z "$USE_CLANG" ]; then @@ -91,7 +92,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc else PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic" fi -@@ -258,7 +258,7 @@ EOF +@@ -246,7 +246,7 @@ case "$TARGET_OS" in ;; OS_ANDROID_CROSSCOMPILE) PLATFORM=OS_ANDROID @@ -100,7 +101,7 @@ Remove -fno-builtin-memcmp and -ltcmalloc PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS " # All pthread features are in the Android C library # PORT_FILES=port/android/android.cc CROSS_COMPILE=true -@@ -448,9 +448,9 @@ EOF +@@ -450,9 +450,9 @@ EOF if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then # jemalloc is not available. Let's try tcmalloc if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o test.o \ diff --git a/databases/rocksdb/files/patch-cmake_RocksDBConfig.cmake.in b/databases/rocksdb/files/patch-cmake_RocksDBConfig.cmake.in new file mode 100644 index 000000000000..5b6d9e79cc9c --- /dev/null +++ b/databases/rocksdb/files/patch-cmake_RocksDBConfig.cmake.in @@ -0,0 +1,85 @@ +--- cmake/RocksDBConfig.cmake.in.orig 2026-06-24 23:52:00 UTC ++++ cmake/RocksDBConfig.cmake.in +@@ -1,50 +1,71 @@ +-@PACKAGE_INIT@ ++# Generated for FreeBSD + ++get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) ++ ++macro(set_and_check _var _file) ++ set(${_var} "${_file}") ++ if(NOT EXISTS "${_file}") ++ message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") ++ endif() ++endmacro() ++ ++macro(check_required_components _NAME) ++ foreach(comp ${${_NAME}_FIND_COMPONENTS}) ++ if(NOT ${_NAME}_${comp}_FOUND) ++ if(${_NAME}_FIND_REQUIRED_${comp}) ++ set(${_NAME}_FOUND FALSE) ++ endif() ++ endif() ++ endforeach() ++endmacro() ++ ++#################################################################################### ++ + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/modules") + + include(CMakeFindDependencyMacro) + +-set(GFLAGS_USE_TARGET_NAMESPACE @GFLAGS_USE_TARGET_NAMESPACE@) ++set(GFLAGS_USE_TARGET_NAMESPACE ON) + +-if(@WITH_JEMALLOC@) ++if(OFF) + find_dependency(JeMalloc) + endif() + +-if(@WITH_GFLAGS@) ++if(OFF) + find_dependency(gflags CONFIG) + if(NOT gflags_FOUND) + find_dependency(gflags) + endif() + endif() + +-if(@WITH_SNAPPY@) ++if(OFF) + find_dependency(Snappy CONFIG) + if(NOT Snappy_FOUND) + find_dependency(Snappy) + endif() + endif() + +-if(@WITH_ZLIB@) ++if(OFF) + find_dependency(ZLIB) + endif() + +-if(@WITH_BZ2@) ++if(OFF) + find_dependency(BZip2) + endif() + +-if(@WITH_LZ4@) ++if(OFF) + find_dependency(lz4) + endif() + +-if(@WITH_ZSTD@) ++if(OFF) + find_dependency(zstd) + endif() + +-if(@WITH_NUMA@) ++if(OFF) + find_dependency(NUMA) + endif() + +-if(@WITH_TBB@) ++if(OFF) + find_dependency(TBB) + endif() + diff --git a/databases/rocksdb/pkg-plist b/databases/rocksdb/pkg-plist index b07b138ff940..8ce0c7848efd 100644 --- a/databases/rocksdb/pkg-plist +++ b/databases/rocksdb/pkg-plist @@ -131,6 +131,19 @@ include/rocksdb/wide_columns.h include/rocksdb/write_batch.h include/rocksdb/write_batch_base.h include/rocksdb/write_buffer_manager.h +lib/cmake/rocksdb/RocksDBConfig.cmake +lib/cmake/rocksdb/RocksDBTargets-release.cmake +lib/cmake/rocksdb/RocksDBTargets.cmake +lib/cmake/rocksdb/modules/CxxFlags.cmake +lib/cmake/rocksdb/modules/FindJeMalloc.cmake +lib/cmake/rocksdb/modules/FindNUMA.cmake +lib/cmake/rocksdb/modules/FindSnappy.cmake +lib/cmake/rocksdb/modules/FindTBB.cmake +lib/cmake/rocksdb/modules/Findgflags.cmake +lib/cmake/rocksdb/modules/Findlz4.cmake +lib/cmake/rocksdb/modules/Finduring.cmake +lib/cmake/rocksdb/modules/Findzstd.cmake +lib/cmake/rocksdb/modules/ReadVersion.cmake lib/librocksdb.a lib/librocksdb.so lib/librocksdb.so.11 |
