diff --git a/databases/rocksdb/Makefile b/databases/rocksdb/Makefile index 25b1c7115e11..aed108f78596 100644 --- a/databases/rocksdb/Makefile +++ b/databases/rocksdb/Makefile @@ -1,98 +1,93 @@ # Created by: Sunpoet Po-Chuan Hsieh PORTNAME= rocksdb -PORTVERSION= 6.11.6 +PORTVERSION= 6.22.1 DISTVERSIONPREFIX= v -PORTREVISION= 1 CATEGORIES= databases -PATCH_SITES= https://github.com/facebook/${PORTNAME}/commit/ -PATCHFILES= b937be377901afa32357b60eebbee80f14087180.patch:-p1 - MAINTAINER?= sunpoet@FreeBSD.org COMMENT?= Persistent key-value store for fast storage environments LICENSE= APACHE20 GPLv2 LICENSE_COMB= dual LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE.Apache LICENSE_FILE_GPLv2= ${WRKSRC}/COPYING BROKEN_DragonFly= does not build on DragonFly BSD using GCC with -Werror BROKEN_armv6?= does not build: db/c.cc:2281:44: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long long') to 'size_t' (aka 'unsigned int') BROKEN_armv7?= does not build: /nxb-bin/usr/bin/ld: undefined reference to symbol `__gnu_Unwind_Find_exidx@@FBSD_1.4' (try adding -lc) #'` BROKEN_FreeBSD_12_powerpc64= does not build: util/crc32c.cc:435:22: 'arch_ppc_probe' was not declared in this scope BUILD_DEPENDS= bash:shells/bash LIB_DEPENDS= libgflags.so:devel/gflags \ libsnappy.so:archivers/snappy -OPTIONS_DEFINE= DEBUG LZ4 ZSTD -OPTIONS_DEFAULT=LZ4 - USES= compiler:c++11-lib gmake localbase:ldflags perl5 USE_PERL5= build ALL_TARGET= shared_lib static_lib all CFLAGS+= -DOS_FREEBSD CONFIGURE_ARGS= make_config.mk CONFIGURE_ENV= PORTABLE=0 ROCKSDB_ROOT=${WRKSRC} CONFIGURE_SCRIPT= build_tools/build_detect_platform HAS_CONFIGURE= yes MAKE_ENV= CXX=${CXX} INSTALL_PATH=${STAGEDIR}${PREFIX} USE_RTTI=1 USE_CXXSTD= c++11 USE_LDCONFIG= yes TEST_TARGET= check PLIST_SUB= PORTVERSION=${PORTVERSION} SHLIB_VER=${PORTVERSION:R} PORTDATA= make_config.mk GH_ACCOUNT= facebook USE_GITHUB= yes BENCHMARKS= cache_bench db_bench memtablerep_bench persistent_cache_bench range_del_aggregator_bench table_reader_bench TOOLS= blob_dump db_repl_stress db_sanity_test db_stress ldb rocksdb_dump rocksdb_undump sst_dump trace_analyzer write_stress +OPTIONS_DEFINE= DEBUG LZ4 ZSTD +OPTIONS_DEFAULT=LZ4 + DEBUG_MAKE_ENV= DEBUG_LEVEL=2 DEBUG_MAKE_ENV_OFF= DEBUG_LEVEL=0 LZ4_LIB_DEPENDS= liblz4.so:archivers/liblz4 LZ4_MAKE_ENV_OFF= ROCKSDB_DISABLE_LZ4=yes ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd ZSTD_MAKE_ENV_OFF= ROCKSDB_DISABLE_ZSTD=yes .if !defined(LITE) CONFLICTS_INSTALL= rocksdb-lite PLIST_SUB+= LITE="@comment " .else PKGNAMESUFFIX= -lite CONFLICTS_INSTALL= rocksdb CFLAGS+= -DROCKSDB_LITE=1 MAKE_ENV+= LIBNAME=librocksdb${PKGNAMESUFFIX} DISABLE_JEMALLOC=1 PLIST_SUB+= LITE="" .endif .include .if ${CHOSEN_COMPILER_TYPE} == clang -CXXFLAGS+= -Wno-inconsistent-missing-override -Wno-unused-variable +CXXFLAGS+= -Wno-inconsistent-missing-override -Wno-unused-parameter -Wno-unused-variable # Clang 8 detects shadow enums and stops the build. This workaround adds -Wno-error=shadow to bypass it. .if ${COMPILER_VERSION} >= 80 CXXFLAGS+= -Wno-error=shadow .endif .endif post-patch: .if (${ARCH} == amd64 || ${ARCH} == i386) && !empty(CFLAGS:M-march=*) - @${REINPLACE_CMD} -e 's| -march=native| ${CFLAGS:M-march=*}|' \ - ${WRKSRC}/build_tools/build_detect_platform + @${REINPLACE_CMD} -e 's| -march=native| ${CFLAGS:M-march=*}|' ${WRKSRC}/build_tools/build_detect_platform .else @${REINPLACE_CMD} -e 's| -march=native||' ${WRKSRC}/build_tools/build_detect_platform .endif post-install: ${MKDIR} ${STAGEDIR}${DATADIR}/ cd ${WRKSRC}/ && ${INSTALL_PROGRAM} ${BENCHMARKS} ${TOOLS} ${STAGEDIR}${PREFIX}/bin/ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/librocksdb${PKGNAMESUFFIX}.so - ${INSTALL_DATA} ${WRKSRC}/librocksdb${PKGNAMESUFFIX}_tools.a ${STAGEDIR}${PREFIX}/lib/ + ${INSTALL_DATA} ${WRKSRC}/librocksdb${PKGNAMESUFFIX}_tools.so ${STAGEDIR}${PREFIX}/lib/ ${INSTALL_DATA} ${WRKSRC}/make_config.mk ${STAGEDIR}${DATADIR}/ .include diff --git a/databases/rocksdb/distinfo b/databases/rocksdb/distinfo index fc5f73414123..dcac9108b02a 100644 --- a/databases/rocksdb/distinfo +++ b/databases/rocksdb/distinfo @@ -1,5 +1,3 @@ -TIMESTAMP = 1606857109 -SHA256 (facebook-rocksdb-v6.11.6_GH0.tar.gz) = 7ff7cb277cad1dc4d1516c61470816e21c7c6e4dbb9a6e517dd590f2f2732b56 -SIZE (facebook-rocksdb-v6.11.6_GH0.tar.gz) = 6210689 -SHA256 (b937be377901afa32357b60eebbee80f14087180.patch) = 05ec8d1d8710e954f43f528de012feb26ca3f1a46e77994b9591882ce2d64060 -SIZE (b937be377901afa32357b60eebbee80f14087180.patch) = 12681 +TIMESTAMP = 1634000442 +SHA256 (facebook-rocksdb-v6.22.1_GH0.tar.gz) = 2df8f34a44eda182e22cf84dee7a14f17f55d305ff79c06fb3cd1e5f8831e00d +SIZE (facebook-rocksdb-v6.22.1_GH0.tar.gz) = 9129964 diff --git a/databases/rocksdb/files/patch-CMakeLists.txt b/databases/rocksdb/files/patch-CMakeLists.txt index eeefd6074532..31790f595624 100644 --- a/databases/rocksdb/files/patch-CMakeLists.txt +++ b/databases/rocksdb/files/patch-CMakeLists.txt @@ -1,14 +1,14 @@ ---- CMakeLists.txt.orig 2021-10-10 13:48:40 UTC +--- CMakeLists.txt.orig 2021-06-25 21:15:04 UTC +++ CMakeLists.txt -@@ -521,6 +521,11 @@ if(HAVE_AUXV_GETAUXVAL) +@@ -612,6 +612,11 @@ if(HAVE_AUXV_GETAUXVAL) add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT) endif() +check_cxx_symbol_exists(elf_aux_info sys/auxv.h HAVE_ELF_AUX_INFO) +if(HAVE_ELF_AUX_INFO) + add_definitions(-DROCKSDB_AUXV_GETAUXVAL_PRESENT) +endif() + include_directories(${PROJECT_SOURCE_DIR}) include_directories(${PROJECT_SOURCE_DIR}/include) if(WITH_FOLLY_DISTRIBUTED_MUTEX) diff --git a/databases/rocksdb/files/patch-Makefile b/databases/rocksdb/files/patch-Makefile index 5f1c2c3585ae..347153273ec8 100644 --- a/databases/rocksdb/files/patch-Makefile +++ b/databases/rocksdb/files/patch-Makefile @@ -1,34 +1,38 @@ ---- Makefile.orig 2020-05-27 23:38:10 UTC +--- Makefile.orig 2021-06-25 21:15:04 UTC +++ Makefile -@@ -207,14 +207,14 @@ AM_LINK = $(AM_V_CCLD)$(CXX) $^ $(EXEC_LDFLAGS) -o $@ +@@ -231,16 +231,16 @@ AM_SHARE = $(AM_V_CCLD) $(CXX) $(PLATFORM_SHARED_LDFLA # Detect what platform we're building on. # Export some common variables that might have been passed as Make variables # instead of environment variables. -dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; \ +- export CXXFLAGS="$(EXTRA_CXXFLAGS)"; \ +- export LDFLAGS="$(EXTRA_LDFLAGS)"; \ - export COMPILE_WITH_ASAN="$(COMPILE_WITH_ASAN)"; \ - export COMPILE_WITH_TSAN="$(COMPILE_WITH_TSAN)"; \ - export COMPILE_WITH_UBSAN="$(COMPILE_WITH_UBSAN)"; \ - export PORTABLE="$(PORTABLE)"; \ - export ROCKSDB_NO_FBCODE="$(ROCKSDB_NO_FBCODE)"; \ - export USE_CLANG="$(USE_CLANG)"; \ - "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk")) +#dummy := $(shell (export ROCKSDB_ROOT="$(CURDIR)"; \ ++# export CXXFLAGS="$(EXTRA_CXXFLAGS)"; \ ++# export LDFLAGS="$(EXTRA_LDFLAGS)"; \ +# export COMPILE_WITH_ASAN="$(COMPILE_WITH_ASAN)"; \ +# export COMPILE_WITH_TSAN="$(COMPILE_WITH_TSAN)"; \ +# export COMPILE_WITH_UBSAN="$(COMPILE_WITH_UBSAN)"; \ +# export PORTABLE="$(PORTABLE)"; \ +# export ROCKSDB_NO_FBCODE="$(ROCKSDB_NO_FBCODE)"; \ +# export USE_CLANG="$(USE_CLANG)"; \ +# "$(CURDIR)/build_tools/build_detect_platform" "$(CURDIR)/make_config.mk")) # this file is generated by the previous line to set build flags and sources include make_config.mk - export JAVAC_ARGS -@@ -779,7 +779,7 @@ endif # PLATFORM_SHARED_EXT - blackbox_crash_test_with_txn whitebox_crash_test_with_txn + +@@ -715,7 +715,7 @@ endif # PLATFORM_SHARED_EXT + blackbox_crash_test_with_ts whitebox_crash_test_with_ts -all: $(LIBRARY) $(BENCHMARKS) tools tools_lib test_libs $(TESTS) +all: $(LIBRARY) $(BENCHMARKS) tools tools_lib test_libs # $(TESTS) - all_but_some_tests: $(LIBRARY) $(BENCHMARKS) tools tools_lib test_libs $(SUBSET) + all_but_some_tests: $(LIBRARY) $(BENCHMARKS) tools tools_lib test_libs $(ROCKSDBTESTS_SUBSET) diff --git a/databases/rocksdb/files/patch-build_tools-build_detect_platform b/databases/rocksdb/files/patch-build_tools-build_detect_platform index 1984674f19ec..0eae538be82a 100644 --- a/databases/rocksdb/files/patch-build_tools-build_detect_platform +++ b/databases/rocksdb/files/patch-build_tools-build_detect_platform @@ -1,113 +1,124 @@ Remove -fno-builtin-memcmp and -ltcmalloc ---- build_tools/build_detect_platform.orig 2020-05-27 23:38:10 UTC +--- build_tools/build_detect_platform.orig 2021-06-25 21:15:04 UTC +++ build_tools/build_detect_platform -@@ -126,7 +126,7 @@ PLATFORM_SHARED_VERSIONED=true +@@ -145,7 +145,7 @@ PLATFORM_SHARED_VERSIONED=true # 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" " "` -# On GCC, we pick libc's memcmp over GCC's memcmp via -fno-builtin-memcmp +# On GCC, we pick libc's memcmp over GCC's memcmp via case "$TARGET_OS" in Darwin) PLATFORM=OS_MACOSX -@@ -147,7 +147,7 @@ case "$TARGET_OS" in +@@ -166,7 +166,7 @@ case "$TARGET_OS" in PLATFORM=OS_LINUX COMMON_FLAGS="$COMMON_FLAGS -DOS_LINUX" if [ -z "$USE_CLANG" ]; then - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp" + COMMON_FLAGS="$COMMON_FLAGS" else PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic" fi -@@ -174,34 +174,34 @@ EOF +@@ -196,21 +196,21 @@ EOF ;; SunOS) PLATFORM=OS_SOLARIS - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_SOLARIS -m64" + COMMON_FLAGS="$COMMON_FLAGS -D_REENTRANT -DOS_SOLARIS -m64" PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lrt -static-libstdc++ -static-libgcc -m64" # PORT_FILES=port/sunos/sunos_specific.cc ;; AIX) PLATFORM=OS_AIX CC=gcc - COMMON_FLAGS="$COMMON_FLAGS -maix64 -pthread -fno-builtin-memcmp -D_REENTRANT -DOS_AIX -D__STDC_FORMAT_MACROS" + COMMON_FLAGS="$COMMON_FLAGS -maix64 -pthread -D_REENTRANT -DOS_AIX -D__STDC_FORMAT_MACROS" PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -pthread -lpthread -lrt -maix64 -static-libstdc++ -static-libgcc" # PORT_FILES=port/aix/aix_specific.cc ;; FreeBSD) PLATFORM=OS_FREEBSD CXX=clang++ - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD" + COMMON_FLAGS="$COMMON_FLAGS -D_REENTRANT -DOS_FREEBSD" PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread" # PORT_FILES=port/freebsd/freebsd_specific.cc ;; +@@ -218,7 +218,7 @@ EOF + PLATFORM=OS_GNU_KFREEBSD + COMMON_FLAGS="$COMMON_FLAGS -DOS_GNU_KFREEBSD" + if [ -z "$USE_CLANG" ]; then +- COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp" ++ COMMON_FLAGS="$COMMON_FLAGS" + else + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic" + fi +@@ -227,14 +227,14 @@ EOF + ;; NetBSD) PLATFORM=OS_NETBSD - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_NETBSD" + COMMON_FLAGS="$COMMON_FLAGS -D_REENTRANT -DOS_NETBSD" PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread -lgcc_s" # PORT_FILES=port/netbsd/netbsd_specific.cc ;; OpenBSD) PLATFORM=OS_OPENBSD CXX=clang++ - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_OPENBSD" + COMMON_FLAGS="$COMMON_FLAGS -D_REENTRANT -DOS_OPENBSD" PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -pthread" # PORT_FILES=port/openbsd/openbsd_specific.cc FIND=gfind -@@ -209,7 +209,7 @@ EOF +@@ -242,7 +242,7 @@ EOF ;; DragonFly) PLATFORM=OS_DRAGONFLYBSD - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_DRAGONFLYBSD" + COMMON_FLAGS="$COMMON_FLAGS -D_REENTRANT -DOS_DRAGONFLYBSD" PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -lpthread" # PORT_FILES=port/dragonfly/dragonfly_specific.cc ;; -@@ -219,7 +219,7 @@ EOF +@@ -252,7 +252,7 @@ EOF PLATFORM_CXXFLAGS="-std=gnu++11" COMMON_FLAGS="$COMMON_FLAGS -DCYGWIN" if [ -z "$USE_CLANG" ]; then - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp" + COMMON_FLAGS="$COMMON_FLAGS" else PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -latomic" fi -@@ -228,7 +228,7 @@ EOF +@@ -261,7 +261,7 @@ EOF ;; OS_ANDROID_CROSSCOMPILE) PLATFORM=OS_ANDROID - COMMON_FLAGS="$COMMON_FLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_ANDROID -DROCKSDB_PLATFORM_POSIX" + COMMON_FLAGS="$COMMON_FLAGS -D_REENTRANT -DOS_ANDROID -DROCKSDB_PLATFORM_POSIX" PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS " # All pthread features are in the Android C library # PORT_FILES=port/android/android.cc CROSS_COMPILE=true -@@ -410,9 +410,9 @@ EOF +@@ -451,9 +451,9 @@ EOF if ! test $JEMALLOC && ! test $ROCKSDB_DISABLE_TCMALLOC; then # jemalloc is not available. Let's try tcmalloc - if echo 'int main() {}' | $CXX $CFLAGS -x c++ - -o /dev/null \ + if echo 'int main() {}' | $CXX $PLATFORM_CXXFLAGS -x c++ - -o /dev/null \ - -ltcmalloc 2>/dev/null; then - PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS -ltcmalloc" - JAVA_LDFLAGS="$JAVA_LDFLAGS -ltcmalloc" + 2>/dev/null; then + PLATFORM_LDFLAGS="$PLATFORM_LDFLAGS" + JAVA_LDFLAGS="$JAVA_LDFLAGS" fi fi -@@ -558,8 +558,8 @@ EOF +@@ -599,8 +599,8 @@ EOF fi # TODO(tec): Fix -Wshorten-64-to-32 errors on FreeBSD and enable the warning. -# -Wshorten-64-to-32 breaks compilation on FreeBSD i386 -if ! [ "$TARGET_OS" = FreeBSD -a "$TARGET_ARCHITECTURE" = i386 ]; then +# -Wshorten-64-to-32 breaks compilation on FreeBSD i386 and aarch64 +if ! { [ "$TARGET_OS" = FreeBSD ] && [ "$TARGET_ARCHITECTURE" = i386 -o "$TARGET_ARCHITECTURE" = "arm64" ]; }; then # Test whether -Wshorten-64-to-32 is available - $CXX $CFLAGS -x c++ - -o /dev/null -Wshorten-64-to-32 2>/dev/null </dev/null <Next() >= -- std::numeric_limits::max() * error_probability) { -+ static_cast(std::numeric_limits::max()) * -+ error_probability) { - return false; - } - if (rnd->Next() % 2) { -@@ -114,7 +115,8 @@ struct StressTestIterator : public InternalIterator { - - void MaybeMutate() { - if (rnd->Next() >= -- std::numeric_limits::max() * mutation_probability) { -+ static_cast(std::numeric_limits::max()) * -+ mutation_probability) { - return; - } - do { -@@ -126,8 +128,9 @@ struct StressTestIterator : public InternalIterator { - if (data->hidden.empty()) { - hide_probability = 1; - } -- bool do_hide = -- rnd->Next() < std::numeric_limits::max() * hide_probability; -+ bool do_hide = rnd->Next() < -+ static_cast(std::numeric_limits::max()) * -+ hide_probability; - if (do_hide) { - // Hide a random entry. - size_t idx = rnd->Next() % data->entries.size(); ---- db/db_options_test.cc.orig 2020-07-16 00:54:15 UTC -+++ db/db_options_test.cc -@@ -39,7 +39,7 @@ class DBOptionsTest : public DBTestBase { - std::unordered_map options_map; - StringToMap(options_str, &options_map); - std::unordered_map mutable_map; -- for (const auto opt : db_options_type_info) { -+ for (const auto& opt : db_options_type_info) { - if (opt.second.IsMutable() && opt.second.ShouldSerialize()) { - mutable_map[opt.first] = options_map[opt.first]; - } -@@ -57,7 +57,7 @@ class DBOptionsTest : public DBTestBase { - std::unordered_map options_map; - StringToMap(options_str, &options_map); - std::unordered_map mutable_map; -- for (const auto opt : cf_options_type_info) { -+ for (const auto& opt : cf_options_type_info) { - if (opt.second.IsMutable() && opt.second.ShouldSerialize()) { - mutable_map[opt.first] = options_map[opt.first]; - } ---- env/env_test.cc.orig 2020-07-16 00:54:15 UTC -+++ env/env_test.cc -@@ -1047,7 +1047,7 @@ TEST_P(EnvPosixTestWithParam, RandomAccessUniqueIDConc - - // Collect and check whether the IDs are unique. - std::unordered_set ids; -- for (const std::string fname : fnames) { -+ for (const std::string& fname : fnames) { - std::unique_ptr file; - std::string unique_id; - ASSERT_OK(env_->NewRandomAccessFile(fname, &file, soptions)); -@@ -1061,7 +1061,7 @@ TEST_P(EnvPosixTestWithParam, RandomAccessUniqueIDConc - } - - // Delete the files -- for (const std::string fname : fnames) { -+ for (const std::string& fname : fnames) { - ASSERT_OK(env_->DeleteFile(fname)); - } - ---- options/options_helper.cc.orig 2020-07-16 00:54:15 UTC -+++ options/options_helper.cc -@@ -656,7 +656,7 @@ Status GetStringFromStruct( - std::string* opt_string) { - assert(opt_string); - opt_string->clear(); -- for (const auto iter : type_info) { -+ for (const auto& iter : type_info) { - const auto& opt_info = iter.second; - // If the option is no longer used in rocksdb and marked as deprecated, - // we skip it in the serialization. ---- table/table_test.cc.orig 2020-07-16 00:54:15 UTC -+++ table/table_test.cc -@@ -228,7 +228,7 @@ class BlockConstructor: public Constructor { - block_ = nullptr; - BlockBuilder builder(table_options.block_restart_interval); - -- for (const auto kv : kv_map) { -+ for (const auto& kv : kv_map) { - builder.Add(kv.first, kv.second); - } - // Open the block -@@ -352,7 +352,7 @@ class TableConstructor: public Constructor { - TablePropertiesCollectorFactory::Context::kUnknownColumnFamily, - file_writer_.get())); - -- for (const auto kv : kv_map) { -+ for (const auto& kv : kv_map) { - if (convert_to_internal_key_) { - ParsedInternalKey ikey(kv.first, kMaxSequenceNumber, kTypeValue); - std::string encoded; -@@ -487,7 +487,7 @@ class MemTableConstructor: public Constructor { - kMaxSequenceNumber, 0 /* column_family_id */); - memtable_->Ref(); - int seq = 1; -- for (const auto kv : kv_map) { -+ for (const auto& kv : kv_map) { - memtable_->Add(seq, kTypeValue, kv.first, kv.second); - seq++; - } -@@ -548,7 +548,7 @@ class DBConstructor: public Constructor { - delete db_; - db_ = nullptr; - NewDB(); -- for (const auto kv : kv_map) { -+ for (const auto& kv : kv_map) { - WriteBatch batch; - batch.Put(kv.first, kv.second); - EXPECT_TRUE(db_->Write(WriteOptions(), &batch).ok()); -@@ -1224,7 +1224,7 @@ class FileChecksumTestHelper { - } - - Status WriteKVAndFlushTable() { -- for (const auto kv : kv_map_) { -+ for (const auto& kv : kv_map_) { - if (convert_to_internal_key_) { - ParsedInternalKey ikey(kv.first, kMaxSequenceNumber, kTypeValue); - std::string encoded; ---- tools/ldb_cmd_test.cc.orig 2020-07-16 00:54:15 UTC -+++ tools/ldb_cmd_test.cc -@@ -76,7 +76,7 @@ TEST_F(LdbCmdTest, HexToStringBadInputs) { - const vector badInputs = { - "0xZZ", "123", "0xx5", "0x111G", "0x123", "Ox12", "0xT", "0x1Q1", - }; -- for (const auto badInput : badInputs) { -+ for (const auto& badInput : badInputs) { - try { - ROCKSDB_NAMESPACE::LDBCommand::HexToString(badInput); - std::cerr << "Should fail on bad hex value: " << badInput << "\n"; diff --git a/databases/rocksdb/files/patch-db-db_test_util.cc b/databases/rocksdb/files/patch-db-db_test_util.cc new file mode 100644 index 000000000000..472503e88f1f --- /dev/null +++ b/databases/rocksdb/files/patch-db-db_test_util.cc @@ -0,0 +1,120 @@ +--- db/db_test_util.cc.orig 2021-06-25 21:15:04 UTC ++++ db/db_test_util.cc +@@ -95,9 +95,11 @@ DBTestBase::DBTestBase(const std::string path, bool en + } + + DBTestBase::~DBTestBase() { ++#ifndef NDEBUG + ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing(); + ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency({}); + ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearAllCallBacks(); ++#endif + Close(); + Options options; + options.db_paths.emplace_back(dbname_, 0); +@@ -347,6 +349,7 @@ Options DBTestBase::GetOptions( + Options options = default_options; + BlockBasedTableOptions table_options; + bool set_block_based_table_factory = true; ++#ifndef NDEBUG + #if !defined(OS_MACOSX) && !defined(OS_WIN) && !defined(OS_SOLARIS) && \ + !defined(OS_AIX) + ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearCallBack( +@@ -354,6 +357,7 @@ Options DBTestBase::GetOptions( + ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->ClearCallBack( + "NewWritableFile:O_DIRECT"); + #endif ++#endif + + bool can_allow_mmap = IsMemoryMappedAccessSupported(); + switch (option_config) { +@@ -408,7 +412,9 @@ Options DBTestBase::GetOptions( + options.use_direct_reads = true; + options.use_direct_io_for_flush_and_compaction = true; + options.compaction_readahead_size = 2 * 1024 * 1024; ++#ifndef NDEBUG + SetupSyncPointsToMockDirectIO(); ++#endif + break; + } + #endif // ROCKSDB_LITE +@@ -1124,6 +1130,7 @@ std::string DBTestBase::FilesPerLevel(int cf) { + + #endif // !ROCKSDB_LITE + ++#ifndef NDEBUG + std::vector DBTestBase::GetBlobFileNumbers() { + VersionSet* const versions = dbfull()->TEST_GetVersionSet(); + assert(versions); +@@ -1148,6 +1155,7 @@ std::vector DBTestBase::GetBlobFileNumbers() + + return result; + } ++#endif + + size_t DBTestBase::CountFiles() { + size_t count = 0; +@@ -1230,6 +1238,7 @@ void DBTestBase::FillLevels(const std::string& smalles + } + + void DBTestBase::MoveFilesToLevel(int level, int cf) { ++#ifndef NDEBUG + for (int l = 0; l < level; ++l) { + if (cf > 0) { + EXPECT_OK(dbfull()->TEST_CompactRange(l, nullptr, nullptr, handles_[cf])); +@@ -1237,13 +1246,16 @@ void DBTestBase::MoveFilesToLevel(int level, int cf) { + EXPECT_OK(dbfull()->TEST_CompactRange(l, nullptr, nullptr)); + } + } ++#endif + } + + #ifndef ROCKSDB_LITE + void DBTestBase::DumpFileCounts(const char* label) { + fprintf(stderr, "---\n%s:\n", label); ++#ifndef NDEBUG + fprintf(stderr, "maxoverlap: %" PRIu64 "\n", + dbfull()->TEST_MaxNextLevelOverlappingBytes()); ++#endif + for (int level = 0; level < db_->NumberLevels(); level++) { + int num = NumTableFilesAtLevel(level); + if (num > 0) { +@@ -1284,10 +1296,12 @@ void DBTestBase::GenerateNewFile(int cf, Random* rnd, + ASSERT_OK(Put(cf, Key(*key_idx), rnd->RandomString((i == 99) ? 1 : 990))); + (*key_idx)++; + } ++#ifndef NDEBUG + if (!nowait) { + ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable()); + ASSERT_OK(dbfull()->TEST_WaitForCompact()); + } ++#endif + } + + // this will generate non-overlapping files since it keeps increasing key_idx +@@ -1296,10 +1310,12 @@ void DBTestBase::GenerateNewFile(Random* rnd, int* key + ASSERT_OK(Put(Key(*key_idx), rnd->RandomString((i == 99) ? 1 : 990))); + (*key_idx)++; + } ++#ifndef NDEBUG + if (!nowait) { + ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable()); + ASSERT_OK(dbfull()->TEST_WaitForCompact()); + } ++#endif + } + + const int DBTestBase::kNumKeysByGenerateNewRandomFile = 51; +@@ -1309,10 +1325,12 @@ void DBTestBase::GenerateNewRandomFile(Random* rnd, bo + ASSERT_OK(Put("key" + rnd->RandomString(7), rnd->RandomString(2000))); + } + ASSERT_OK(Put("key" + rnd->RandomString(7), rnd->RandomString(200))); ++#ifndef NDEBUG + if (!nowait) { + ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable()); + ASSERT_OK(dbfull()->TEST_WaitForCompact()); + } ++#endif + } + + std::string DBTestBase::IterStatus(Iterator* iter) { diff --git a/databases/rocksdb/files/patch-memory-arena.cc b/databases/rocksdb/files/patch-memory-arena.cc index 1a7ea39671bf..db76c877c68f 100644 --- a/databases/rocksdb/files/patch-memory-arena.cc +++ b/databases/rocksdb/files/patch-memory-arena.cc @@ -1,11 +1,11 @@ ---- memory/arena.cc.orig 2018-01-31 01:15:39 UTC +--- memory/arena.cc.orig 2021-06-25 21:15:04 UTC +++ memory/arena.cc -@@ -33,7 +33,7 @@ const size_t Arena::kInlineSize; +@@ -29,7 +29,7 @@ const size_t Arena::kInlineSize; const size_t Arena::kMinBlockSize = 4096; const size_t Arena::kMaxBlockSize = 2u << 30; -static const int kAlignUnit = alignof(max_align_t); +static const int kAlignUnit = alignof(std::max_align_t); size_t OptimizeBlockSize(size_t block_size) { // Make sure block_size is in optimal range diff --git a/databases/rocksdb/files/patch-port-stack_trace.cc b/databases/rocksdb/files/patch-port-stack_trace.cc new file mode 100644 index 000000000000..3b83846c5101 --- /dev/null +++ b/databases/rocksdb/files/patch-port-stack_trace.cc @@ -0,0 +1,20 @@ +--- port/stack_trace.cc.orig 2021-06-25 21:15:04 UTC ++++ port/stack_trace.cc +@@ -135,7 +135,7 @@ void PrintStack(int first_frames_to_skip) { + void* frames[kMaxFrames]; + + auto num_frames = backtrace(frames, kMaxFrames); +- PrintStack(&frames[first_frames_to_skip], num_frames - first_frames_to_skip); ++ PrintStack(&frames[first_frames_to_skip], (int) (num_frames - first_frames_to_skip)); + } + + void PrintAndFreeStack(void* callstack, int num_frames) { +@@ -148,7 +148,7 @@ void* SaveStack(int* num_frames, int first_frames_to_s + void* frames[kMaxFrames]; + + auto count = backtrace(frames, kMaxFrames); +- *num_frames = count - first_frames_to_skip; ++ *num_frames = (int) (count - first_frames_to_skip); + void* callstack = malloc(sizeof(void*) * *num_frames); + memcpy(callstack, &frames[first_frames_to_skip], sizeof(void*) * *num_frames); + return callstack; diff --git a/databases/rocksdb/files/patch-util_crc32c.cc b/databases/rocksdb/files/patch-util_crc32c.cc index a57cbf2803fe..7325d476b4b2 100644 --- a/databases/rocksdb/files/patch-util_crc32c.cc +++ b/databases/rocksdb/files/patch-util_crc32c.cc @@ -1,51 +1,24 @@ ---- util/crc32c.cc.orig 2021-10-10 17:19:37 UTC +--- util/crc32c.cc.orig 2021-06-25 21:15:04 UTC +++ util/crc32c.cc -@@ -463,6 +463,21 @@ static int arch_ppc_probe(void) { +@@ -488,6 +488,21 @@ static int arch_ppc_probe(void) { return arch_ppc_crc32; } +#elif __FreeBSD__ +#include +#include +#include +static int arch_ppc_probe(void) { + unsigned long cpufeatures; + arch_ppc_crc32 = 0; + +#if defined(__powerpc64__) + elf_aux_info(AT_HWCAP2, &cpufeatures, sizeof(cpufeatures)); + if (cpufeatures & PPC_FEATURE2_HAS_VEC_CRYPTO) arch_ppc_crc32 = 1; +#endif /* __powerpc64__ */ + + return arch_ppc_crc32; +} #endif // __linux__ static bool isAltiVec() { -@@ -474,7 +489,7 @@ static bool isAltiVec() { - } - #endif - --#if defined(__linux__) && defined(HAVE_ARM64_CRC) -+#if (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) - uint32_t ExtendARMImpl(uint32_t crc, const char *buf, size_t size) { - return crc32c_arm64(crc, (const unsigned char *)buf, size); - } -@@ -494,7 +509,7 @@ std::string IsFastCrc32Supported() { - has_fast_crc = false; - arch = "PPC"; - #endif --#elif defined(__linux__) && defined(HAVE_ARM64_CRC) -+#elif (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) - if (crc32c_runtime_check()) { - has_fast_crc = true; - arch = "Arm64"; -@@ -1226,7 +1241,7 @@ uint32_t crc32c_3way(uint32_t crc, const char* buf, si - static inline Function Choose_Extend() { - #ifdef HAVE_POWER8 - return isAltiVec() ? ExtendPPCImpl : ExtendImpl; --#elif defined(__linux__) && defined(HAVE_ARM64_CRC) -+#elif (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) - if(crc32c_runtime_check()) { - return ExtendARMImpl; - } else { diff --git a/databases/rocksdb/files/patch-util_crc32c__arm64.cc b/databases/rocksdb/files/patch-util_crc32c__arm64.cc deleted file mode 100644 index bc2a2a775b6b..000000000000 --- a/databases/rocksdb/files/patch-util_crc32c__arm64.cc +++ /dev/null @@ -1,30 +0,0 @@ ---- util/crc32c_arm64.cc.orig 2021-10-10 13:50:13 UTC -+++ util/crc32c_arm64.cc -@@ -5,9 +5,11 @@ - - #include "util/crc32c_arm64.h" - --#if defined(__linux__) && defined(HAVE_ARM64_CRC) -+#if (defined(__FreeBSD__) || defined(__linux__)) && defined(HAVE_ARM64_CRC) - -+#if !defined(__FreeBSD__) - #include -+#endif - #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT - #include - #endif -@@ -37,7 +39,14 @@ - - uint32_t crc32c_runtime_check(void) { - #ifdef ROCKSDB_AUXV_GETAUXVAL_PRESENT -+#if defined(__FreeBSD__) -+ uint64_t auxv; -+ int result = elf_aux_info(AT_HWCAP, &auxv, sizeof auxv); -+ if (result != 0) -+ return 0; -+#else - uint64_t auxv = getauxval(AT_HWCAP); -+#endif - return (auxv & HWCAP_CRC32) != 0; - #else - return 0; diff --git a/databases/rocksdb/pkg-plist b/databases/rocksdb/pkg-plist index 56d57e31ef6d..6492d406ead8 100644 --- a/databases/rocksdb/pkg-plist +++ b/databases/rocksdb/pkg-plist @@ -1,112 +1,124 @@ bin/blob_dump bin/cache_bench bin/db_bench bin/db_repl_stress bin/db_sanity_test bin/db_stress bin/ldb bin/memtablerep_bench bin/persistent_cache_bench bin/range_del_aggregator_bench bin/rocksdb_dump bin/rocksdb_undump bin/sst_dump bin/table_reader_bench bin/trace_analyzer bin/write_stress include/rocksdb/advanced_options.h include/rocksdb/c.h include/rocksdb/cache.h +include/rocksdb/cache_bench_tool.h include/rocksdb/cleanable.h include/rocksdb/compaction_filter.h include/rocksdb/compaction_job_stats.h include/rocksdb/comparator.h +include/rocksdb/compression_type.h include/rocksdb/concurrent_task_limiter.h +include/rocksdb/configurable.h include/rocksdb/convenience.h +include/rocksdb/customizable.h +include/rocksdb/data_structure.h include/rocksdb/db.h include/rocksdb/db_bench_tool.h include/rocksdb/db_dump_tool.h include/rocksdb/db_stress_tool.h include/rocksdb/env.h include/rocksdb/env_encryption.h include/rocksdb/experimental.h include/rocksdb/file_checksum.h include/rocksdb/file_system.h include/rocksdb/filter_policy.h include/rocksdb/flush_block_policy.h +include/rocksdb/functor_wrapper.h include/rocksdb/io_status.h include/rocksdb/iostats_context.h include/rocksdb/iterator.h include/rocksdb/ldb_tool.h include/rocksdb/listener.h include/rocksdb/memory_allocator.h include/rocksdb/memtablerep.h include/rocksdb/merge_operator.h include/rocksdb/metadata.h include/rocksdb/options.h include/rocksdb/perf_context.h include/rocksdb/perf_level.h include/rocksdb/persistent_cache.h include/rocksdb/rate_limiter.h include/rocksdb/rocksdb_namespace.h +include/rocksdb/secondary_cache.h include/rocksdb/slice.h include/rocksdb/slice_transform.h include/rocksdb/snapshot.h include/rocksdb/sst_dump_tool.h include/rocksdb/sst_file_manager.h include/rocksdb/sst_file_reader.h include/rocksdb/sst_file_writer.h +include/rocksdb/sst_partitioner.h include/rocksdb/statistics.h include/rocksdb/stats_history.h include/rocksdb/status.h +include/rocksdb/system_clock.h include/rocksdb/table.h include/rocksdb/table_properties.h include/rocksdb/thread_status.h include/rocksdb/threadpool.h include/rocksdb/trace_reader_writer.h include/rocksdb/transaction_log.h include/rocksdb/types.h include/rocksdb/universal_compaction.h +include/rocksdb/utilities/backup_engine.h include/rocksdb/utilities/backupable_db.h include/rocksdb/utilities/checkpoint.h include/rocksdb/utilities/convenience.h include/rocksdb/utilities/db_ttl.h include/rocksdb/utilities/debug.h include/rocksdb/utilities/env_librados.h include/rocksdb/utilities/env_mirror.h include/rocksdb/utilities/info_log_finder.h include/rocksdb/utilities/ldb_cmd.h include/rocksdb/utilities/ldb_cmd_execute_result.h include/rocksdb/utilities/leveldb_options.h include/rocksdb/utilities/lua/rocks_lua_custom_library.h include/rocksdb/utilities/lua/rocks_lua_util.h include/rocksdb/utilities/memory_util.h include/rocksdb/utilities/object_registry.h include/rocksdb/utilities/optimistic_transaction_db.h include/rocksdb/utilities/option_change_migration.h +include/rocksdb/utilities/options_type.h include/rocksdb/utilities/options_util.h include/rocksdb/utilities/sim_cache.h include/rocksdb/utilities/stackable_db.h include/rocksdb/utilities/table_properties_collectors.h include/rocksdb/utilities/transaction.h include/rocksdb/utilities/transaction_db.h include/rocksdb/utilities/transaction_db_mutex.h include/rocksdb/utilities/utility_db.h include/rocksdb/utilities/write_batch_with_index.h include/rocksdb/version.h include/rocksdb/wal_filter.h include/rocksdb/write_batch.h include/rocksdb/write_batch_base.h include/rocksdb/write_buffer_manager.h %%LITE%%lib/librocksdb-lite.a %%LITE%%lib/librocksdb-lite.so %%LITE%%lib/librocksdb-lite.so.6 %%LITE%%lib/librocksdb-lite.so.%%SHLIB_VER%% %%LITE%%lib/librocksdb-lite.so.%%PORTVERSION%% -%%LITE%%lib/librocksdb-lite_tools.a +%%LITE%%lib/librocksdb-lite_tools.so lib/librocksdb.a lib/librocksdb.so lib/librocksdb.so.6 lib/librocksdb.so.%%SHLIB_VER%% lib/librocksdb.so.%%PORTVERSION%% -lib/librocksdb_tools.a +lib/librocksdb_tools.so +libdata/pkgconfig/rocksdb.pc