From 3974c53827d125d006662ea3ccda8391b9a11932 Mon Sep 17 00:00:00 2001 From: Alexis Williams Date: Thu, 16 Oct 2025 16:27:15 -0700 Subject: [PATCH 1/4] croncpp: init at 2023.03.30 --- pkgs/by-name/cr/croncpp/package.nix | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 pkgs/by-name/cr/croncpp/package.nix diff --git a/pkgs/by-name/cr/croncpp/package.nix b/pkgs/by-name/cr/croncpp/package.nix new file mode 100644 index 0000000000000..db6430949da01 --- /dev/null +++ b/pkgs/by-name/cr/croncpp/package.nix @@ -0,0 +1,28 @@ +{ + stdenv, + lib, + fetchFromGitHub, + cmake, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "croncpp"; + version = "2023.03.30"; + + src = fetchFromGitHub { + owner = "mariusbancila"; + repo = "croncpp"; + tag = "v${finalAttrs.version}"; + hash = "sha256-SBjNzy54OGEMemBp+c1gaH90Dc7ySL915z4E64cBWTI="; + }; + + nativeBuildInputs = [ cmake ]; + + meta = with lib; { + description = "C++11/14/17 header-only cross-platform library for handling CRON expressions"; + homepage = "https://github.com/mariusbancila/croncpp"; + license = licenses.mit; + platforms = platforms.all; + maintainers = with maintainers; [ typedrat ]; + }; +}) From b3605e26ae5becc3706698342bde34b5ffc54dbf Mon Sep 17 00:00:00 2001 From: Alexis Williams Date: Thu, 16 Oct 2025 16:27:31 -0700 Subject: [PATCH 2/4] uni-algo: init at 1.2.0 --- pkgs/by-name/un/uni-algo/package.nix | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 pkgs/by-name/un/uni-algo/package.nix diff --git a/pkgs/by-name/un/uni-algo/package.nix b/pkgs/by-name/un/uni-algo/package.nix new file mode 100644 index 0000000000000..fcb105180de92 --- /dev/null +++ b/pkgs/by-name/un/uni-algo/package.nix @@ -0,0 +1,28 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "uni-algo"; + version = "1.2.0"; + + src = fetchFromGitHub { + owner = "uni-algo"; + repo = "uni-algo"; + tag = "v${finalAttrs.version}"; + hash = "sha256-IyQrL/DWDj87GplSGJC4iQJAzNURLh9TRko5l+EIfuU="; + }; + + nativeBuildInputs = [ cmake ]; + + meta = with lib; { + description = "Unicode Algorithms Implementation for C/C++"; + homepage = "https://github.com/uni-algo/uni-algo"; + license = licenses.mit; + platforms = platforms.all; + maintainers = with maintainers; [ typedrat ]; + }; +}) From c3f511b9e6780f7d7c920ab173420539d8fa8ef8 Mon Sep 17 00:00:00 2001 From: Alexis Williams Date: Thu, 16 Oct 2025 19:19:55 -0700 Subject: [PATCH 3/4] dragonflydb: 0.1.0 -> 1.34.2 --- .../dr/dragonflydb/external-libs.patch | 115 ++++ pkgs/by-name/dr/dragonflydb/fixes.patch | 132 ----- pkgs/by-name/dr/dragonflydb/glog.patch | 553 ------------------ .../dr/dragonflydb/helio-third-party.patch | 150 +++++ pkgs/by-name/dr/dragonflydb/package.nix | 244 ++++++-- 5 files changed, 460 insertions(+), 734 deletions(-) create mode 100644 pkgs/by-name/dr/dragonflydb/external-libs.patch delete mode 100644 pkgs/by-name/dr/dragonflydb/fixes.patch delete mode 100644 pkgs/by-name/dr/dragonflydb/glog.patch create mode 100644 pkgs/by-name/dr/dragonflydb/helio-third-party.patch diff --git a/pkgs/by-name/dr/dragonflydb/external-libs.patch b/pkgs/by-name/dr/dragonflydb/external-libs.patch new file mode 100644 index 0000000000000..368c0b2a139e8 --- /dev/null +++ b/pkgs/by-name/dr/dragonflydb/external-libs.patch @@ -0,0 +1,115 @@ +diff --git a/src/external_libs.cmake b/src/external_libs.cmake +index 62e6e879..8934777f 100644 +--- a/src/external_libs.cmake ++++ b/src/external_libs.cmake +@@ -1,7 +1,6 @@ + add_third_party( + lua +- GIT_REPOSITORY https://github.com/dragonflydb/lua +- GIT_TAG Dragonfly-5.4.6a ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/lua/. + CONFIGURE_COMMAND echo + BUILD_IN_SOURCE 1 + BUILD_COMMAND ${DFLY_TOOLS_MAKE} all +@@ -19,18 +18,16 @@ endif() + + add_third_party( + dconv +- URL https://github.com/google/double-conversion/archive/refs/tags/v3.3.0.tar.gz +- PATCH_COMMAND ${SED_REPL} "/static const std::ctype/d" +- /double-conversion/string-to-double.cc +- COMMAND ${SED_REPL} "/std::use_facet/double-conversion/string-to-double.cc +- COMMAND ${SED_REPL} "s/cType.tolower/std::tolower/g" /double-conversion/string-to-double.cc ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/dconv/. ++ PATCH_COMMAND echo ++ CMAKE_PASS_FLAGS "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + LIB libdouble-conversion.a + ) + + add_third_party( + reflex +- URL https://github.com/Genivia/RE-flex/archive/refs/tags/v5.2.2.tar.gz +- PATCH_COMMAND autoreconf -fi ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/reflex/. ++ PATCH_COMMAND echo + CONFIGURE_COMMAND /configure --disable-avx2 --prefix=${THIRD_PARTY_LIB_DIR}/reflex + CXX=${CMAKE_CXX_COMPILER} CC=${CMAKE_C_COMPILER} + ) +@@ -41,16 +38,14 @@ set(REFLEX "${THIRD_PARTY_LIB_DIR}/reflex/bin/reflex") + + add_third_party( + jsoncons +- GIT_REPOSITORY https://github.com/dragonflydb/jsoncons +- GIT_TAG Dragonfly.178 +- GIT_SHALLOW 1 ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/jsoncons/. + CMAKE_PASS_FLAGS "-DJSONCONS_BUILD_TESTS=OFF -DJSONCONS_HAS_POLYMORPHIC_ALLOCATOR=ON" + LIB "none" + ) + + add_third_party( + lz4 +- URL https://github.com/lz4/lz4/archive/refs/tags/v1.10.0.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/lz4/. + + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND echo skip +@@ -65,7 +60,7 @@ set(MIMALLOC_C_FLAGS "-O3 -g -DMI_STAT=1 -DNDEBUG") + file(MAKE_DIRECTORY ${MIMALLOC_INCLUDE_DIR}) + + ExternalProject_Add(mimalloc2_project +- URL https://github.com/microsoft/mimalloc/archive/refs/tags/v2.2.4.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/mimalloc224/. + DOWNLOAD_DIR ${THIRD_PARTY_DIR}/mimalloc2 + SOURCE_DIR ${THIRD_PARTY_DIR}/mimalloc2 + # INSTALL_DIR ${MIMALLOC_ROOT_DIR} +@@ -118,21 +113,21 @@ set_target_properties(TRDP::mimalloc2 PROPERTIES IMPORTED_LOCATION ${MIMALLOC_RO + + add_third_party( + croncpp +- URL https://github.com/mariusbancila/croncpp/archive/refs/tags/v2023.03.30.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/croncpp/. + LIB "none" + ) + + if (WITH_SEARCH) + add_third_party( + uni-algo +- URL https://github.com/uni-algo/uni-algo/archive/refs/tags/v1.0.0.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/uni-algo/. + + CMAKE_PASS_FLAGS "-DCMAKE_CXX_STANDARD:STRING=17" + ) + + add_third_party( + hnswlib +- URL https://github.com/nmslib/hnswlib/archive/refs/tags/v0.7.0.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/hnswlib/. + + BUILD_COMMAND echo SKIP + INSTALL_COMMAND cp -R /hnswlib ${THIRD_PARTY_LIB_DIR}/hnswlib/include/ +@@ -142,21 +137,20 @@ endif() + + add_third_party( + fast_float +- URL https://github.com/fastfloat/fast_float/archive/refs/tags/v5.2.0.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/fast_float/. + LIB "none" + ) + + add_third_party( + flatbuffers +- URL https://github.com/google/flatbuffers/archive/refs/tags/v23.5.26.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/flatbuffers/. + CMAKE_PASS_FLAGS "-DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_LIBCXX_WITH_CLANG=OFF + -DFLATBUFFERS_BUILD_FLATC=OFF" + ) + + add_third_party( + hdr_histogram +- GIT_REPOSITORY https://github.com/HdrHistogram/HdrHistogram_c/ +- GIT_TAG 652d51bcc36744fd1a6debfeb1a8a5f58b14022c ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/hdr_histogram/. + CMAKE_PASS_FLAGS "-DHDR_LOG_REQUIRED=OFF -DHDR_HISTOGRAM_BUILD_PROGRAMS=OFF + -DHDR_HISTOGRAM_INSTALL_SHARED=OFF" + LIB libhdr_histogram_static.a diff --git a/pkgs/by-name/dr/dragonflydb/fixes.patch b/pkgs/by-name/dr/dragonflydb/fixes.patch deleted file mode 100644 index d2992fbbaf824..0000000000000 --- a/pkgs/by-name/dr/dragonflydb/fixes.patch +++ /dev/null @@ -1,132 +0,0 @@ -diff --git a/helio/cmake/third_party.cmake b/helio/cmake/third_party.cmake -index aeb78d9..e9d4e6b 100644 ---- a/helio/cmake/third_party.cmake -+++ b/helio/cmake/third_party.cmake -@@ -143,7 +143,7 @@ endfunction() - - FetchContent_Declare( - gtest -- URL https://github.com/google/googletest/archive/release-1.11.0.zip -+ DOWNLOAD_COMMAND true - ) - - FetchContent_GetProperties(gtest) -@@ -154,7 +154,7 @@ endif () - - FetchContent_Declare( - benchmark -- URL https://github.com/google/benchmark/archive/v1.6.1.tar.gz -+ DOWNLOAD_COMMAND true - ) - - FetchContent_GetProperties(benchmark) -@@ -169,7 +169,7 @@ endif () - - FetchContent_Declare( - abseil_cpp -- URL https://github.com/abseil/abseil-cpp/archive/20211102.0.tar.gz -+ DOWNLOAD_COMMAND true - PATCH_COMMAND patch -p1 < "${CMAKE_CURRENT_LIST_DIR}/../patches/abseil-20211102.patch" - ) - -@@ -183,11 +183,7 @@ endif() - - FetchContent_Declare( - glog -- GIT_REPOSITORY https://github.com/romange/glog -- GIT_TAG Absl -- -- GIT_PROGRESS TRUE -- GIT_SHALLOW TRUE -+ DOWNLOAD_COMMAND true - ) - - FetchContent_GetProperties(glog) -@@ -233,10 +229,7 @@ endif() - - add_third_party( - gperf -- URL https://github.com/gperftools/gperftools/archive/gperftools-2.9.1.tar.gz -- #GIT_REPOSITORY https://github.com/gperftools/gperftools -- #GIT_TAG gperftools-2.9.1 -- GIT_SHALLOW TRUE -+ DOWNLOAD_COMMAND true - PATCH_COMMAND autoreconf -i # update runs every time for some reason - # CMAKE_PASS_FLAGS "-DGPERFTOOLS_BUILD_HEAP_PROFILER=OFF -DGPERFTOOLS_BUILD_HEAP_CHECKER=OFF \ - # -DGPERFTOOLS_BUILD_DEBUGALLOC=OFF -DBUILD_TESTING=OFF \ -@@ -260,11 +253,12 @@ else() - endif() - - add_third_party(mimalloc -- URL https://github.com/microsoft/mimalloc/archive/refs/tags/v2.0.5.tar.gz -+ DOWNLOAD_COMMAND true - - # Add -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-O0 to debug - CMAKE_PASS_FLAGS "-DCMAKE_BUILD_TYPE=Release -DMI_BUILD_SHARED=OFF -DMI_BUILD_TESTS=OFF \ -- -DMI_INSTALL_TOPLEVEL=ON -DMI_OVERRIDE=${MI_OVERRIDE} -DCMAKE_C_FLAGS=-g" -+ -DMI_INSTALL_TOPLEVEL=ON -DMI_OVERRIDE=${MI_OVERRIDE} -DCMAKE_C_FLAGS=-g \ -+ -DCMAKE_INSTALL_LIBDIR=${THIRD_PARTY_LIB_DIR}/mimalloc/lib" - - BUILD_COMMAND make -j4 mimalloc-static - INSTALL_COMMAND make install -@@ -274,7 +268,7 @@ add_third_party(mimalloc - ) - - add_third_party(jemalloc -- URL https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2 -+ URL REPLACEJEMALLOCURL - PATCH_COMMAND ./autogen.sh - CONFIGURE_COMMAND /configure --prefix=${THIRD_PARTY_LIB_DIR}/jemalloc --with-jemalloc-prefix=je_ --disable-libdl - ) -@@ -282,24 +276,23 @@ add_third_party(jemalloc - - add_third_party( - xxhash -- URL https://github.com/Cyan4973/xxHash/archive/v0.8.0.tar.gz -+ DOWNLOAD_COMMAND true - SOURCE_SUBDIR cmake_unofficial -- CMAKE_PASS_FLAGS "-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF" -+ CMAKE_PASS_FLAGS "-DCMAKE_POSITION_INDEPENDENT_CODE=ON -DBUILD_SHARED_LIBS=OFF \ -+ -DCMAKE_INSTALL_LIBDIR=${THIRD_PARTY_LIB_DIR}/xxhash/lib" - ) - - - add_third_party( - uring -- GIT_REPOSITORY https://github.com/axboe/liburing.git -- GIT_TAG liburing-2.1 -+ DOWNLOAD_COMMAND true - CONFIGURE_COMMAND /configure --prefix=${THIRD_PARTY_LIB_DIR}/uring - BUILD_IN_SOURCE 1 - ) - - add_third_party( - rapidjson -- GIT_REPOSITORY https://github.com/Tencent/rapidjson.git -- GIT_TAG 1a803826f1197b5e30703afe4b9c0e7dd48074f5 -+ DOWNLOAD_COMMAND true - CMAKE_PASS_FLAGS "-DRAPIDJSON_BUILD_TESTS=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF \ - -DRAPIDJSON_BUILD_DOC=OFF" - LIB "none" -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 0dc0824..d5b38b3 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -1,6 +1,6 @@ - add_third_party( - lua -- URL https://github.com/lua/lua/archive/refs/tags/v5.4.4.tar.gz -+ URL REPLACELUAURL - PATCH_COMMAND patch -p1 -i "${CMAKE_SOURCE_DIR}/patches/lua-v5.4.4.patch" - CONFIGURE_COMMAND echo - BUILD_IN_SOURCE 1 -@@ -11,7 +11,8 @@ add_third_party( - - add_third_party( - dconv -- URL https://github.com/google/double-conversion/archive/refs/tags/v3.2.0.tar.gz -+ DOWNLOAD_COMMAND true -+ CMAKE_PASS_FLAGS "-DCMAKE_INSTALL_LIBDIR=${THIRD_PARTY_LIB_DIR}/dconv/lib" - LIB libdouble-conversion.a - ) - diff --git a/pkgs/by-name/dr/dragonflydb/glog.patch b/pkgs/by-name/dr/dragonflydb/glog.patch deleted file mode 100644 index 2fb9c0733b875..0000000000000 --- a/pkgs/by-name/dr/dragonflydb/glog.patch +++ /dev/null @@ -1,553 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 846b4448..b4900ead 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -39,6 +39,7 @@ option (PRINT_UNSYMBOLIZED_STACK_TRACES - "Print file offsets in traces instead of symbolizing" OFF) - option (WITH_CUSTOM_PREFIX "Enable support for user-generated message prefixes" ON) - option (WITH_GFLAGS "Use gflags" ON) -+option (WITH_ABSL "Use absl flags" OFF) - option (WITH_GTEST "Use Google Test" ON) - option (WITH_PKGCONFIG "Enable pkg-config support" ON) - option (WITH_SYMBOLIZE "Enable symbolize module" ON) -@@ -87,6 +88,13 @@ if (WITH_GFLAGS) - endif (gflags_FOUND) - endif (WITH_GFLAGS) - -+if (WITH_ABSL) -+ set (HAVE_ABSL_FLAGS 1) -+ set (ac_cv_have_abslflags 1) -+else (WITH_ABSL) -+set (ac_cv_have_abslflags 0) -+endif (WITH_ABSL) -+ - find_package (Threads) - find_package (Unwind) - -@@ -1025,7 +1033,7 @@ write_basic_package_version_file ( - ${CMAKE_CURRENT_BINARY_DIR}/glog-config-version.cmake - COMPATIBILITY SameMajorVersion) - --export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake) -+# export (TARGETS glog NAMESPACE glog:: FILE glog-targets.cmake) - export (PACKAGE glog) - - get_filename_component (_PREFIX "${CMAKE_INSTALL_PREFIX}" ABSOLUTE) -diff --git a/src/base/commandlineflags.h b/src/base/commandlineflags.h -index bcb12dea..1c9d9294 100644 ---- a/src/base/commandlineflags.h -+++ b/src/base/commandlineflags.h -@@ -57,6 +57,25 @@ - - #include - -+#else -+#ifdef HAVE_ABSL_FLAGS -+#include -+ -+#define FLAG(name) absl::GetFlag(FLAGS_##name) -+ -+#define DEFINE_bool(name, value, meaning) \ -+ ABSL_FLAG(bool, name, value, meaning) -+ -+#define DEFINE_int32(name, value, meaning) \ -+ ABSL_FLAG(GOOGLE_NAMESPACE::int32, name, value, meaning) -+ -+#define DEFINE_uint32(name, value, meaning) \ -+ ABSL_FLAG(GOOGLE_NAMESPACE::uint32, name, value, meaning) -+ -+#define DEFINE_string(name, value, meaning) \ -+ ABSL_FLAG(std::string, name, value, meaning) -+ -+ - #else - - #include -@@ -108,6 +127,7 @@ - } \ - using fLS::FLAGS_##name - -+#endif - #endif // HAVE_LIB_GFLAGS - - // Define GLOG_DEFINE_* using DEFINE_* . By using these macros, we -diff --git a/src/base/mutex.h b/src/base/mutex.h -index e82c597f..a58c1412 100644 ---- a/src/base/mutex.h -+++ b/src/base/mutex.h -@@ -319,11 +319,6 @@ class WriterMutexLock { - void operator=(const WriterMutexLock&); - }; - --// Catch bug where variable name is omitted, e.g. MutexLock (&mu); --#define MutexLock(x) COMPILE_ASSERT(0, mutex_lock_decl_missing_var_name) --#define ReaderMutexLock(x) COMPILE_ASSERT(0, rmutex_lock_decl_missing_var_name) --#define WriterMutexLock(x) COMPILE_ASSERT(0, wmutex_lock_decl_missing_var_name) -- - } // namespace MUTEX_NAMESPACE - - using namespace MUTEX_NAMESPACE; -diff --git a/src/config.h.cmake.in b/src/config.h.cmake.in -index b225b7ec..a4c58c96 100644 ---- a/src/config.h.cmake.in -+++ b/src/config.h.cmake.in -@@ -34,6 +34,8 @@ - /* define if you have google gflags library */ - #cmakedefine HAVE_LIB_GFLAGS - -+#cmakedefine HAVE_ABSL_FLAGS -+ - /* define if you have google gmock library */ - #cmakedefine HAVE_LIB_GMOCK - -diff --git a/src/glog/logging.h.in b/src/glog/logging.h.in -index 95a573b1..54cd838f 100644 ---- a/src/glog/logging.h.in -+++ b/src/glog/logging.h.in -@@ -89,6 +89,10 @@ - #include - #endif - -+#if @ac_cv_have_abslflags@ -+#include -+#endif -+ - #if @ac_cv_cxx11_atomic@ && __cplusplus >= 201103L - #include - #elif defined(GLOG_OS_WINDOWS) -@@ -395,6 +399,14 @@ typedef void(*CustomPrefixCallback)(std::ostream& s, const LogMessageInfo& l, vo - #undef DECLARE_uint32 - #endif - -+#if @ac_cv_have_abslflags@ -+#define DECLARE_VARIABLE 1 -+#define DECLARE_bool(name) ABSL_DECLARE_FLAG(bool, name) -+#define DECLARE_int32(name) ABSL_DECLARE_FLAG(@ac_google_namespace@::int32, name) -+#define DECLARE_uint32(name) ABSL_DECLARE_FLAG(@ac_google_namespace@::uint32, name) -+#define DECLARE_string(name) ABSL_DECLARE_FLAG(std::string, name) -+#endif -+ - #ifndef DECLARE_VARIABLE - #define DECLARE_VARIABLE(type, shorttype, name, tn) \ - namespace fL##shorttype { \ -diff --git a/src/glog/vlog_is_on.h.in b/src/glog/vlog_is_on.h.in -index 7526fc34..16e60f46 100644 ---- a/src/glog/vlog_is_on.h.in -+++ b/src/glog/vlog_is_on.h.in -@@ -64,6 +64,14 @@ - #include - - #if defined(__GNUC__) -+ -+#if @ac_cv_have_abslflags@ -+ extern int32_t absl_proxy_v; -+ #define VLEVEL (@ac_google_namespace@::absl_proxy_v) -+#else -+ #define VLEVEL (FLAGS_v) -+#endif -+ - // We emit an anonymous static int* variable at every VLOG_IS_ON(n) site. - // (Normally) the first time every VLOG_IS_ON(n) site is hit, - // we determine what variable will dynamically control logging at this site: -@@ -74,7 +82,7 @@ - __extension__ \ - ({ static @ac_google_namespace@::SiteFlag vlocal__ = {NULL, NULL, 0, NULL}; \ - @ac_google_namespace@::int32 verbose_level__ = (verboselevel); \ -- (vlocal__.level == NULL ? @ac_google_namespace@::InitVLOG3__(&vlocal__, &FLAGS_v, \ -+ (vlocal__.level == NULL ? @ac_google_namespace@::InitVLOG3__(&vlocal__, &VLEVEL, \ - __FILE__, verbose_level__) : *vlocal__.level >= verbose_level__); \ - }) - #else -diff --git a/src/logging.cc b/src/logging.cc -index 4028ccc0..fc618d3a 100644 ---- a/src/logging.cc -+++ b/src/logging.cc -@@ -103,7 +103,9 @@ using std::fdopen; - #endif - - // There is no thread annotation support. -+#ifndef EXCLUSIVE_LOCKS_REQUIRED - #define EXCLUSIVE_LOCKS_REQUIRED(mu) -+#endif - - static bool BoolFromEnv(const char *varname, bool defval) { - const char* const valstr = getenv(varname); -@@ -351,8 +353,9 @@ static const char* GetAnsiColorCode(GLogColor color) { - - // Safely get max_log_size, overriding to 1 if it somehow gets defined as 0 - static uint32 MaxLogSize() { -- return (FLAGS_max_log_size > 0 && FLAGS_max_log_size < 4096 -- ? FLAGS_max_log_size -+ uint32 maxlogsize = FLAG(max_log_size); -+ return (maxlogsize > 0 && maxlogsize < 4096 -+ ? maxlogsize - : 1); - } - -@@ -721,7 +724,7 @@ inline void LogDestination::SetStderrLogging(LogSeverity min_severity) { - // Prevent any subtle race conditions by wrapping a mutex lock around - // all this stuff. - MutexLock l(&log_mutex); -- FLAGS_stderrthreshold = min_severity; -+ absl::SetFlag(&FLAGS_stderrthreshold, min_severity); - } - - inline void LogDestination::LogToStderr() { -@@ -747,8 +750,8 @@ static void ColoredWriteToStderrOrStdout(FILE* output, LogSeverity severity, - const char* message, size_t len) { - bool is_stdout = (output == stdout); - const GLogColor color = (LogDestination::terminal_supports_color() && -- ((!is_stdout && FLAGS_colorlogtostderr) || -- (is_stdout && FLAGS_colorlogtostdout))) -+ ((!is_stdout && FLAG(colorlogtostderr)) || -+ (is_stdout && FLAG(colorlogtostdout)))) - ? SeverityToColor(severity) - : COLOR_DEFAULT; - -@@ -789,7 +792,7 @@ static void ColoredWriteToStdout(LogSeverity severity, const char* message, - FILE* output = stdout; - // We also need to send logs to the stderr when the severity is - // higher or equal to the stderr threshold. -- if (severity >= FLAGS_stderrthreshold) { -+ if (severity >= FLAG(stderrthreshold)) { - output = stderr; - } - ColoredWriteToStderrOrStdout(output, severity, message, len); -@@ -808,7 +811,7 @@ static void WriteToStderr(const char* message, size_t len) { - - inline void LogDestination::MaybeLogToStderr(LogSeverity severity, - const char* message, size_t message_len, size_t prefix_len) { -- if ((severity >= FLAGS_stderrthreshold) || FLAGS_alsologtostderr) { -+ if ((severity >= FLAG(stderrthreshold)) || FLAG(alsologtostderr)) { - ColoredWriteToStderr(severity, message, message_len); - #ifdef GLOG_OS_WINDOWS - (void) prefix_len; -@@ -835,8 +838,8 @@ inline void LogDestination::MaybeLogToStderr(LogSeverity severity, - inline void LogDestination::MaybeLogToEmail(LogSeverity severity, - const char* message, size_t len) { - if (severity >= email_logging_severity_ || -- severity >= FLAGS_logemaillevel) { -- string to(FLAGS_alsologtoemail); -+ severity >= FLAG(logemaillevel)) { -+ string to(FLAG(alsologtoemail)); - if (!addresses_.empty()) { - if (!to.empty()) { - to += ","; -@@ -862,7 +865,7 @@ inline void LogDestination::MaybeLogToLogfile(LogSeverity severity, - time_t timestamp, - const char* message, - size_t len) { -- const bool should_flush = severity > FLAGS_logbuflevel; -+ const bool should_flush = severity > FLAG(logbuflevel); - LogDestination* destination = log_destination(severity); - destination->logger_->Write(should_flush, timestamp, message, len); - } -@@ -871,9 +874,9 @@ inline void LogDestination::LogToAllLogfiles(LogSeverity severity, - time_t timestamp, - const char* message, - size_t len) { -- if (FLAGS_logtostdout) { // global flag: never log to file -+ if (FLAG(logtostdout)) { // global flag: never log to file - ColoredWriteToStdout(severity, message, len); -- } else if (FLAGS_logtostderr) { // global flag: never log to file -+ } else if (FLAG(logtostderr)) { // global flag: never log to file - ColoredWriteToStderr(severity, message, len); - } else { - for (int i = severity; i >= 0; --i) { -@@ -1032,25 +1035,25 @@ void LogFileObject::FlushUnlocked(){ - bytes_since_flush_ = 0; - } - // Figure out when we are due for another flush. -- const int64 next = (FLAGS_logbufsecs -+ const int64 next = (FLAG(logbufsecs) - * static_cast(1000000)); // in usec - next_flush_time_ = CycleClock_Now() + UsecToCycles(next); - } - - bool LogFileObject::CreateLogfile(const string& time_pid_string) { - string string_filename = base_filename_; -- if (FLAGS_timestamp_in_logfile_name) { -+ if (FLAG(timestamp_in_logfile_name)) { - string_filename += time_pid_string; - } - string_filename += filename_extension_; - const char* filename = string_filename.c_str(); - //only write to files, create if non-existant. - int flags = O_WRONLY | O_CREAT; -- if (FLAGS_timestamp_in_logfile_name) { -+ if (FLAG(timestamp_in_logfile_name)) { - //demand that the file is unique for our timestamp (fail if it exists). - flags = flags | O_EXCL; - } -- int fd = open(filename, flags, FLAGS_logfile_mode); -+ int fd = open(filename, flags, FLAG(logfile_mode)); - if (fd == -1) return false; - #ifdef HAVE_FCNTL - // Mark the file close-on-exec. We don't really care if this fails -@@ -1083,7 +1086,7 @@ bool LogFileObject::CreateLogfile(const string& time_pid_string) { - file_ = fdopen(fd, "a"); // Make a FILE*. - if (file_ == NULL) { // Man, we're screwed! - close(fd); -- if (FLAGS_timestamp_in_logfile_name) { -+ if (FLAG(timestamp_in_logfile_name)) { - unlink(filename); // Erase the half-baked evidence: an unusable log file, only if we just created it. - } - return false; -@@ -1125,8 +1128,8 @@ bool LogFileObject::CreateLogfile(const string& time_pid_string) { - - // Make an additional link to the log file in a place specified by - // FLAGS_log_link, if indicated -- if (!FLAGS_log_link.empty()) { -- linkpath = FLAGS_log_link + "/" + linkname; -+ if (!FLAG(log_link).empty()) { -+ linkpath = FLAG(log_link) + "/" + linkname; - unlink(linkpath.c_str()); // delete old one if it exists - if (symlink(filename, linkpath.c_str()) != 0) { - // silently ignore failures -@@ -1165,7 +1168,7 @@ void LogFileObject::Write(bool force_flush, - rollover_attempt_ = 0; - - struct ::tm tm_time; -- if (FLAGS_log_utc_time) { -+ if (FLAG(log_utc_time)) { - gmtime_r(×tamp, &tm_time); - } else { - localtime_r(×tamp, &tm_time); -@@ -1253,14 +1256,14 @@ void LogFileObject::Write(bool force_flush, - << ' ' - << setw(2) << tm_time.tm_hour << ':' - << setw(2) << tm_time.tm_min << ':' -- << setw(2) << tm_time.tm_sec << (FLAGS_log_utc_time ? " UTC\n" : "\n") -+ << setw(2) << tm_time.tm_sec << (FLAG(log_utc_time) ? " UTC\n" : "\n") - << "Running on machine: " - << LogDestination::hostname() << '\n'; - - if(!g_application_fingerprint.empty()) { - file_header_stream << "Application fingerprint: " << g_application_fingerprint << '\n'; - } -- const char* const date_time_format = FLAGS_log_year_in_prefix -+ const char* const date_time_format = FLAG(log_year_in_prefix) - ? "yyyymmdd hh:mm:ss.uuuuuu" - : "mmdd hh:mm:ss.uuuuuu"; - file_header_stream << "Running duration (h:mm:ss): " -@@ -1284,7 +1287,7 @@ void LogFileObject::Write(bool force_flush, - // greater than 4096, thereby indicating an error. - errno = 0; - fwrite(message, 1, message_len, file_); -- if ( FLAGS_stop_logging_if_full_disk && -+ if ( FLAG(stop_logging_if_full_disk) && - errno == ENOSPC ) { // disk full, stop writing to disk - stop_writing = true; // until the disk is - return; -@@ -1307,7 +1310,7 @@ void LogFileObject::Write(bool force_flush, - FlushUnlocked(); - #ifdef GLOG_OS_LINUX - // Only consider files >= 3MiB -- if (FLAGS_drop_log_memory && file_length_ >= (3U << 20U)) { -+ if (FLAG(drop_log_memory) && file_length_ >= (3U << 20U)) { - // Don't evict the most recent 1-2MiB so as not to impact a tailer - // of the log file and to avoid page rounding issue on linux < 4.7 - uint32 total_drop_length = -@@ -1348,7 +1351,7 @@ void LogCleaner::Disable() { - } - - void LogCleaner::UpdateCleanUpTime() { -- const int64 next = (FLAGS_logcleansecs -+ const int64 next = (FLAG(logcleansecs) - * 1000000); // in usec - next_cleanup_time_ = CycleClock_Now() + UsecToCycles(next); - } -@@ -1664,7 +1667,7 @@ void LogMessage::Init(const char* file, - // I20201018 160715 f5d4fbb0 logging.cc:1153] - // (log level, GMT year, month, date, time, thread_id, file basename, line) - // We exclude the thread_id for the default thread. -- if (FLAGS_log_prefix && (line != kNoLogPrefix)) { -+ if (FLAG(log_prefix) && (line != kNoLogPrefix)) { - std::ios saved_fmt(NULL); - saved_fmt.copyfmt(stream()); - stream().fill('0'); -@@ -1672,7 +1675,7 @@ void LogMessage::Init(const char* file, - if (custom_prefix_callback == NULL) { - #endif - stream() << LogSeverityNames[severity][0]; -- if (FLAGS_log_year_in_prefix) { -+ if (FLAG(log_year_in_prefix)) { - stream() << setw(4) << 1900 + logmsgtime_.year(); - } - stream() << setw(2) << 1 + logmsgtime_.month() -@@ -1703,11 +1706,11 @@ void LogMessage::Init(const char* file, - } - data_->num_prefix_chars_ = data_->stream_.pcount(); - -- if (!FLAGS_log_backtrace_at.empty()) { -+ if (!FLAG(log_backtrace_at).empty()) { - char fileline[128]; - snprintf(fileline, sizeof(fileline), "%s:%d", data_->basename_, line); - #ifdef HAVE_STACKTRACE -- if (FLAGS_log_backtrace_at == fileline) { -+ if (FLAG(log_backtrace_at) == fileline) { - string stacktrace; - DumpStackTraceToString(&stacktrace); - stream() << " (stacktrace:\n" << stacktrace << ") "; -@@ -1746,7 +1749,7 @@ ostream& LogMessage::stream() { - // Flush buffered message, called by the destructor, or any other function - // that needs to synchronize the log. - void LogMessage::Flush() { -- if (data_->has_been_flushed_ || data_->severity_ < FLAGS_minloglevel) { -+ if (data_->has_been_flushed_ || data_->severity_ < FLAG(minloglevel)) { - return; - } - -@@ -1808,7 +1811,7 @@ static char fatal_message[256]; - void ReprintFatalMessage() { - if (fatal_message[0]) { - const size_t n = strlen(fatal_message); -- if (!FLAGS_logtostderr) { -+ if (!FLAG(logtostderr)) { - // Also write to stderr (don't color to avoid terminal checks) - WriteToStderr(fatal_message, n); - } -@@ -1837,8 +1840,8 @@ void LogMessage::SendToLog() EXCLUSIVE_LOCKS_REQUIRED(log_mutex) { - // global flag: never log to file if set. Also -- don't log to a - // file if we haven't parsed the command line flags to get the - // program name. -- if (FLAGS_logtostderr || FLAGS_logtostdout || !IsGoogleLoggingInitialized()) { -- if (FLAGS_logtostdout) { -+ if (FLAG(logtostderr) || FLAG(logtostdout) || !IsGoogleLoggingInitialized()) { -+ if (FLAG(logtostdout)) { - ColoredWriteToStdout(data_->severity_, data_->message_text_, - data_->num_chars_to_log_); - } else { -@@ -1891,7 +1894,7 @@ void LogMessage::SendToLog() EXCLUSIVE_LOCKS_REQUIRED(log_mutex) { - fatal_time = logmsgtime_.timestamp(); - } - -- if (!FLAGS_logtostderr && !FLAGS_logtostdout) { -+ if (!FLAG(logtostderr) && !FLAG(logtostdout)) { - for (int i = 0; i < NUM_SEVERITIES; ++i) { - if (LogDestination::log_destinations_[i]) { - LogDestination::log_destinations_[i]->logger_->Write(true, 0, "", 0); -@@ -2238,7 +2241,7 @@ static bool SendEmailInternal(const char*dest, const char *subject, - subject, body, dest); - } - -- string logmailer = FLAGS_logmailer; -+ string logmailer = FLAG(logmailer); - if (logmailer.empty()) { - logmailer = "/bin/mail"; - } -@@ -2338,9 +2341,9 @@ const vector& GetLoggingDirectories() { - if (logging_directories_list == NULL) { - logging_directories_list = new vector; - -- if ( !FLAGS_log_dir.empty() ) { -+ if ( !FLAG(log_dir).empty() ) { - // A dir was specified, we should use it -- logging_directories_list->push_back(FLAGS_log_dir); -+ logging_directories_list->push_back(FLAG(log_dir)); - } else { - GetTempDirectories(logging_directories_list); - #ifdef GLOG_OS_WINDOWS -@@ -2654,7 +2657,7 @@ LogMessageTime::LogMessageTime(std::tm t) { - - LogMessageTime::LogMessageTime(std::time_t timestamp, WallTime now) { - std::tm t; -- if (FLAGS_log_utc_time) -+ if (FLAG(log_utc_time)) - gmtime_r(×tamp, &t); - else - localtime_r(×tamp, &t); -@@ -2673,7 +2676,7 @@ void LogMessageTime::init(const std::tm& t, std::time_t timestamp, - void LogMessageTime::CalcGmtOffset() { - std::tm gmt_struct; - int isDst = 0; -- if ( FLAGS_log_utc_time ) { -+ if ( FLAG(log_utc_time )) { - localtime_r(×tamp_, &gmt_struct); - isDst = gmt_struct.tm_isdst; - gmt_struct = time_struct_; -diff --git a/src/raw_logging.cc b/src/raw_logging.cc -index 43159832..8532362b 100644 ---- a/src/raw_logging.cc -+++ b/src/raw_logging.cc -@@ -123,8 +123,8 @@ static char crash_buf[kLogBufSize + 1] = { 0 }; // Will end in '\0' - GLOG_ATTRIBUTE_FORMAT(printf, 4, 5) - void RawLog__(LogSeverity severity, const char* file, int line, - const char* format, ...) { -- if (!(FLAGS_logtostdout || FLAGS_logtostderr || -- severity >= FLAGS_stderrthreshold || FLAGS_alsologtostderr || -+ if (!(FLAG(logtostdout) || FLAG(logtostderr) || -+ severity >= FLAG(stderrthreshold) || FLAG(alsologtostderr) || - !IsGoogleLoggingInitialized())) { - return; // this stderr log message is suppressed - } -diff --git a/src/utilities.cc b/src/utilities.cc -index a332f1a1..a9d5102a 100644 ---- a/src/utilities.cc -+++ b/src/utilities.cc -@@ -141,7 +141,7 @@ static void DumpStackTrace(int skip_count, DebugWriter *writerfn, void *arg) { - int depth = GetStackTrace(stack, ARRAYSIZE(stack), skip_count+1); - for (int i = 0; i < depth; i++) { - #if defined(HAVE_SYMBOLIZE) -- if (FLAGS_symbolize_stacktrace) { -+ if (FLAG(symbolize_stacktrace)) { - DumpPCAndSymbol(writerfn, arg, stack[i], " "); - } else { - DumpPC(writerfn, arg, stack[i], " "); -diff --git a/src/vlog_is_on.cc b/src/vlog_is_on.cc -index e478a366..4b7a5cae 100644 ---- a/src/vlog_is_on.cc -+++ b/src/vlog_is_on.cc -@@ -43,14 +43,24 @@ - #include - #include - #include "base/googleinit.h" -+#include "config.h" - - // glog doesn't have annotation - #define ANNOTATE_BENIGN_RACE(address, description) - - using std::string; - -+#ifdef HAVE_ABSL_FLAGS -+ -+ABSL_FLAG(int32_t, v, 0, "Show all VLOG(m) messages for m <= this." -+" Overridable by --vmodule.").OnUpdate([] { -+ GOOGLE_NAMESPACE::absl_proxy_v = absl::GetFlag(FLAGS_v); -+ }); -+ -+#else - GLOG_DEFINE_int32(v, 0, "Show all VLOG(m) messages for m <= this." - " Overridable by --vmodule."); -+#endif - - GLOG_DEFINE_string(vmodule, "", "per-module verbose level." - " Argument is a comma-separated list of =." -@@ -60,6 +70,8 @@ GLOG_DEFINE_string(vmodule, "", "per-module verbose level." - - _START_GOOGLE_NAMESPACE_ - -+int32_t absl_proxy_v = 0; -+ - namespace glog_internal_namespace_ { - - // Used by logging_unittests.cc so can't make it static here. -@@ -132,7 +144,8 @@ static void VLOG2Initializer() { - // Can now parse --vmodule flag and initialize mapping of module-specific - // logging levels. - inited_vmodule = false; -- const char* vmodule = FLAGS_vmodule.c_str(); -+ string vmodule_str = FLAG(vmodule); -+ const char* vmodule = vmodule_str.c_str(); - const char* sep; - VModuleInfo* head = NULL; - VModuleInfo* tail = NULL; -@@ -164,7 +177,7 @@ static void VLOG2Initializer() { - - // This can be called very early, so we use SpinLock and RAW_VLOG here. - int SetVLOGLevel(const char* module_pattern, int log_level) { -- int result = FLAGS_v; -+ int result = FLAG(v); - size_t const pattern_len = strlen(module_pattern); - bool found = false; - { diff --git a/pkgs/by-name/dr/dragonflydb/helio-third-party.patch b/pkgs/by-name/dr/dragonflydb/helio-third-party.patch new file mode 100644 index 0000000000000..c10bd8e898714 --- /dev/null +++ b/pkgs/by-name/dr/dragonflydb/helio-third-party.patch @@ -0,0 +1,150 @@ +diff --git a/helio/cmake/third_party.cmake b/helio/cmake/third_party.cmake +index 810a8fa..8b11922 100644 +--- a/helio/cmake/third_party.cmake ++++ b/helio/cmake/third_party.cmake +@@ -151,7 +151,7 @@ endfunction() + + FetchContent_Declare( + gtest +- URL https://github.com/google/googletest/archive/v1.15.2.tar.gz ++ DOWNLOAD_COMMAND true + ) + + FetchContent_GetProperties(gtest) +@@ -162,7 +162,7 @@ endif () + + FetchContent_Declare( + benchmark +- URL https://github.com/google/benchmark/archive/v1.9.1.tar.gz ++ DOWNLOAD_COMMAND true + ) + + FetchContent_GetProperties(benchmark) +@@ -181,7 +181,7 @@ endif () + + FetchContent_Declare( + abseil_cpp +- URL https://github.com/abseil/abseil-cpp/releases/download/20250512.1/abseil-cpp-20250512.1.tar.gz ++ DOWNLOAD_COMMAND true + PATCH_COMMAND patch -p1 < "${CMAKE_CURRENT_LIST_DIR}/../patches/abseil-20250512.1.patch" + ) + +@@ -204,11 +204,7 @@ if (LEGACY_GLOG) + + FetchContent_Declare( + glog +- GIT_REPOSITORY https://github.com/romange/glog +- GIT_TAG Absl +- +- GIT_PROGRESS TRUE +- GIT_SHALLOW TRUE ++ DOWNLOAD_COMMAND true + ) + + FetchContent_GetProperties(glog) +@@ -278,7 +274,7 @@ if (WITH_GPERF) + + add_third_party( + gperf +- URL https://github.com/gperftools/gperftools/archive/gperftools-2.16.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/gperf/. + + # GIT_SHALLOW TRUE + # Remove building the unneeded programs (they fail on macos) +@@ -312,9 +308,7 @@ set(MIMALLOC_INCLUDE_DIR ${THIRD_PARTY_LIB_DIR}/mimalloc/include) + set (MIMALLOC_PATCH_COMMAND patch -p1 -d ${THIRD_PARTY_DIR}/mimalloc/ -i ${CMAKE_CURRENT_LIST_DIR}/../patches/mimalloc-v2.1.6.patch) + + add_third_party(mimalloc +- #GIT_REPOSITORY https://github.com/microsoft/mimalloc.git +- #GIT_TAG 0f6d8293c74796fa913e4b5eb4361f1e4734f7c6 +- URL https://github.com/microsoft/mimalloc/archive/refs/tags/v2.1.6.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/mimalloc216/. + PATCH_COMMAND "${MIMALLOC_PATCH_COMMAND}" + # -DCMAKE_BUILD_TYPE=Release + # Add -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-O0 to debug +@@ -328,7 +322,7 @@ add_third_party(mimalloc + ) + + add_third_party(jemalloc +- URL https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2 ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/jemalloc/. + PATCH_COMMAND ./autogen.sh + CONFIGURE_COMMAND /configure --prefix=${THIRD_PARTY_LIB_DIR}/jemalloc --with-jemalloc-prefix=je_ --disable-libdl + ) +@@ -336,7 +330,7 @@ add_third_party(jemalloc + + add_third_party( + xxhash +- URL https://github.com/Cyan4973/xxHash/archive/v0.8.3.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/xxhash/. + + # A bug in xxhash 0.8.1 that searches for a file that doesn't exist + PATCH_COMMAND touch /xxhsum.1 +@@ -347,7 +341,7 @@ add_third_party( + + add_third_party( + uring +- URL https://github.com/axboe/liburing/archive/refs/tags/liburing-2.8.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/uring/. + + CONFIGURE_COMMAND /configure --prefix=${THIRD_PARTY_LIB_DIR}/uring + BUILD_COMMAND make -C src +@@ -356,7 +350,7 @@ add_third_party( + + add_third_party( + pugixml +- URL https://github.com/zeux/pugixml/archive/refs/tags/v1.15.tar.gz ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/pugixml/. + ) + + if (WITH_AWS) +@@ -364,9 +358,7 @@ if (WITH_AWS) + + add_third_party( + aws +- GIT_REPOSITORY https://github.com/aws/aws-sdk-cpp.git +- GIT_TAG 3e51fa016655eeb6b6610bdf8fe7cf33ebbf3e00 +- GIT_SHALLOW TRUE ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/aws-sdk-cpp/. + PATCH_COMMAND "${AWS_PATCH_COMMAND}" + CMAKE_PASS_FLAGS "-DBUILD_ONLY=s3 -DNO_HTTP_CLIENT=ON -DENABLE_TESTING=OFF -DAUTORUN_UNIT_TESTS=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_POLICY_VERSION_MINIMUM=3.5" + LIB libaws-cpp-sdk-s3.a libaws-cpp-sdk-core.a libaws-crt-cpp.a libaws-c-mqtt.a libaws-c-event-stream.a libaws-c-s3.a libaws-c-auth.a libaws-c-http.a libaws-c-io.a libs2n.a libaws-c-compression.a libaws-c-cal.a libaws-c-sdkutils.a libaws-checksums.a libaws-c-common.a +@@ -376,8 +368,7 @@ endif() + if (WITH_GCP) + add_third_party( + rapidjson +- GIT_REPOSITORY https://github.com/Tencent/rapidjson.git +- GIT_TAG ab1842a ++ DOWNLOAD_COMMAND cp -r ${CMAKE_BINARY_DIR}/deps-nixpkgs/rapidjson/. + CMAKE_PASS_FLAGS "-DRAPIDJSON_BUILD_TESTS=OFF -DRAPIDJSON_BUILD_EXAMPLES=OFF \ + -DRAPIDJSON_BUILD_DOC=OFF -DCMAKE_POLICY_VERSION_MINIMUM=3.5" + LIB "none" +@@ -386,24 +377,23 @@ endif() + + add_third_party( + cares +- URL https://codeload.github.com/c-ares/c-ares/tar.gz/refs/tags/v1.34.5 ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/cares/. + CMAKE_PASS_FLAGS "-DCARES_SHARED:BOOL=OFF -DCARES_STATIC:BOOL=ON -DCARES_STATIC_PIC:BOOL=ON \ + -DCMAKE_INSTALL_LIBDIR=lib" + ) + + add_third_party( + zstd +- URL https://github.com/facebook/zstd/releases/download/v1.5.7/zstd-1.5.7.tar.zst ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/zstd/. + SOURCE_SUBDIR "build/cmake" +- ++ + # for debug pass : "CFLAGS=-fPIC -O0 -ggdb" + CMAKE_PASS_FLAGS "-DZSTD_BUILD_SHARED=OFF -DZSTD_BUILD_PROGRAMS=OFF -DZSTD_BUILD_TESTS=OFF" + ) + + add_third_party( + expected +- GIT_REPOSITORY https://github.com/martinmoene/expected-lite.git +- GIT_TAG f17940fabae07063cabb67abf2c8d164d3146044 # Important fixes for monadic functions ++ DOWNLOAD_COMMAND cp -r ${CMAKE_CURRENT_BINARY_DIR}/deps-nixpkgs/expected/. + CMAKE_PASS_FLAGS "-DEXPECTED_LITE_OPT_BUILD_TESTS=0" + LIB "none" + ) diff --git a/pkgs/by-name/dr/dragonflydb/package.nix b/pkgs/by-name/dr/dragonflydb/package.nix index 18ffa5379a971..79cfba6337137 100644 --- a/pkgs/by-name/dr/dragonflydb/package.nix +++ b/pkgs/by-name/dr/dragonflydb/package.nix @@ -1,109 +1,252 @@ { fetchFromGitHub, - fetchurl, lib, stdenv, + + # Dependencies + abseil-cpp, + c-ares, + croncpp, double-conversion, - gperftools, - mimalloc, - rapidjson, - liburing, - xxHash, + expected-lite, + fast-float, + flatbuffers_23, gbenchmark, - glog, + gperftools, gtest, + hdrhistogram_c, + hnswlib, jemalloc, - gcc-unwrapped, + liburing, + lz4, + pcre2, + pugixml, + rapidjson, + re2, + re-flex, + uni-algo, + xxHash, + zstd, + + # Build tools autoconf, autoconf-archive, - automake, + automake116x, + bison, cmake, + gcc-unwrapped, ninja, + + # Runtime dependencies boost, - libunwind, libtool, + libunwind, openssl, + zlib, + + # Options + withAws ? true, + withGcp ? true, + withGperf ? true, + withPcre ? true, + withRe2 ? true, + withSearch ? true, + withAsan ? false, + withUsan ? false, }: let pname = "dragonflydb"; - version = "0.1.0"; + version = "1.34.2"; src = fetchFromGitHub { - owner = pname; + owner = "dragonflydb"; repo = "dragonfly"; tag = "v${version}"; - hash = "sha256-P6WMW/n+VezWDXGagT4B+ZYyCp8oufDV6MTrpKpLZcs="; + hash = "sha256-n70IB32tZDe665hVLrKC0BSSJutmYhtPJvfNa48xaqA="; fetchSubmodules = true; }; - # Needed exactly 5.4.4 for patch to work - lua = fetchurl { - url = "https://github.com/lua/lua/archive/refs/tags/v5.4.4.tar.gz"; - hash = "sha256-L/ibvqIqfIuRDWsAb1ukVZ7c9GiiVTfO35mI7ZD2tFA="; + aws-sdk-cpp-1-11-162 = fetchFromGitHub { + owner = "aws"; + repo = "aws-sdk-cpp"; + tag = "1.11.162"; + hash = "sha256-NxVE7H8BOetpbBkB2PTVBoHSXYm6cTp41F1LJmhtBbs="; + fetchSubmodules = true; }; - # Needed exactly 20211102.0 for patch to work - abseil-cpp_202111 = fetchFromGitHub { - owner = "abseil"; - repo = "abseil-cpp"; - rev = "20211102.0"; - sha256 = "sha256-sSXT6D4JSrk3dA7kVaxfKkzOMBpqXQb0WbMYWG+nGwk="; + glog-absl = fetchFromGitHub { + owner = "romange"; + repo = "glog"; + rev = "Absl"; + hash = "sha256-68Hx3kIPgyMSdHCUpYr68Cw8V4Umtyd+4VLZc3zUb1s="; }; + + jsoncons-dragonfly = fetchFromGitHub { + owner = "dragonflydb"; + repo = "jsoncons"; + rev = "Dragonfly.178"; + hash = "sha256-cxM95DFFo5z+eImgZzJw+ykaeSDtBF+hw5qo6gnL53s="; + }; + + lua-dragonfly = fetchFromGitHub { + owner = "dragonflydb"; + repo = "lua"; + rev = "Dragonfly-5.4.6a"; + hash = "sha256-uLNe+hLihu4wMW/wstGnYdPa2bGPC5UiNE+VyNIYY2c="; + }; + + mimalloc216 = fetchFromGitHub { + owner = "microsoft"; + repo = "mimalloc"; + tag = "v2.1.6"; + hash = "sha256-Ff3+RP+lAXCOeHJ87oG3c02rPP4WQIbg5L/CVe6gA3M="; + }; + + mimalloc224 = fetchFromGitHub { + owner = "microsoft"; + repo = "mimalloc"; + tag = "v2.2.4"; + hash = "sha256-+8xZT+mVEqlqabQc+1buVH/X6FZxvCd0rWMyjPu9i4o="; + }; + + withUnwind = !stdenv.targetPlatform.isAarch64; in stdenv.mkDerivation { inherit pname version src; + patches = [ + ./external-libs.patch + ./helio-third-party.patch + ]; + postPatch = '' - mkdir -p ./build/{third_party,_deps} - ln -s ${double-conversion.src} ./build/third_party/dconv - ln -s ${mimalloc.src} ./build/third_party/mimalloc - ln -s ${rapidjson.src} ./build/third_party/rapidjson - ln -s ${gbenchmark.src} ./build/_deps/benchmark-src - ln -s ${gtest.src} ./build/_deps/gtest-src - cp -R --no-preserve=mode,ownership ${gperftools.src} ./build/third_party/gperf - cp -R --no-preserve=mode,ownership ${liburing.src} ./build/third_party/uring - cp -R --no-preserve=mode,ownership ${xxHash.src} ./build/third_party/xxhash - cp -R --no-preserve=mode,ownership ${abseil-cpp_202111} ./build/_deps/abseil_cpp-src - cp -R --no-preserve=mode,ownership ${glog.src} ./build/_deps/glog-src - chmod u+x ./build/third_party/uring/configure - cp ./build/third_party/xxhash/cli/xxhsum.{1,c} ./build/third_party/xxhash - patch -p1 -d ./build/_deps/glog-src < ${./glog.patch} - sed ' - s@REPLACEJEMALLOCURL@file://${jemalloc.src}@ - s@REPLACELUAURL@file://${lua}@ - ' ${./fixes.patch} | patch -p1 + chmod +x helio/blaze.sh + ''; + + preConfigure = '' + # Create directory for nixpkgs dependencies + mkdir -p build/_deps build/deps-nixpkgs + + # Copy FetchContent dependencies (in helio/cmake/third_party.cmake) + # These go to build/_deps/ where FetchContent expects them + cp -r --no-preserve=mode,ownership ${abseil-cpp.src} build/_deps/abseil_cpp-src + cp -r --no-preserve=mode,ownership ${gbenchmark.src} build/_deps/benchmark-src + cp -r --no-preserve=mode,ownership ${glog-absl} build/_deps/glog-src + cp -r --no-preserve=mode,ownership ${gtest.src} build/_deps/gtest-src + + # Copy add_third_party dependencies to deps-nixpkgs + cp -r --no-preserve=mode,ownership ${croncpp.src} build/deps-nixpkgs/croncpp + cp -r --no-preserve=mode,ownership ${double-conversion.src} build/deps-nixpkgs/dconv + cp -r --no-preserve=mode,ownership ${expected-lite.src} build/deps-nixpkgs/expected + cp -r --no-preserve=mode,ownership ${fast-float.src} build/deps-nixpkgs/fast_float + cp -r --no-preserve=mode,ownership ${flatbuffers_23.src} build/deps-nixpkgs/flatbuffers + cp -r --no-preserve=mode,ownership ${hdrhistogram_c.src} build/deps-nixpkgs/hdr_histogram + cp -r --no-preserve=mode,ownership ${jemalloc.src} build/deps-nixpkgs/jemalloc + cp -r --no-preserve=mode,ownership ${jsoncons-dragonfly} build/deps-nixpkgs/jsoncons + cp -r --no-preserve=mode,ownership ${liburing.src} build/deps-nixpkgs/uring + cp -r --no-preserve=mode,ownership ${lua-dragonfly} build/deps-nixpkgs/lua + cp -r --no-preserve=mode,ownership ${lz4.src} build/deps-nixpkgs/lz4 + cp -r --no-preserve=mode,ownership ${mimalloc216} build/deps-nixpkgs/mimalloc216 + cp -r --no-preserve=mode,ownership ${mimalloc224} build/deps-nixpkgs/mimalloc224 + cp -r --no-preserve=mode,ownership ${pugixml.src} build/deps-nixpkgs/pugixml + cp -r --no-preserve=mode,ownership ${re-flex.src} build/deps-nixpkgs/reflex + cp -r --no-preserve=mode,ownership ${xxHash.src} build/deps-nixpkgs/xxhash + cp -r --no-preserve=mode,ownership ${zstd.src} build/deps-nixpkgs/zstd + + # c-ares is provided as a tarball, extract it + mkdir -p build/deps-nixpkgs/cares + tar -xzf ${c-ares.src} -C build/deps-nixpkgs/cares --strip-components=1 + + ${ + if withAws then + '' + cp -r --no-preserve=mode,ownership ${aws-sdk-cpp-1-11-162} build/deps-nixpkgs/aws-sdk-cpp + '' + else + "" + } + + ${ + if withGcp then + '' + cp -r --no-preserve=mode,ownership ${rapidjson.src} build/deps-nixpkgs/rapidjson + '' + else + "" + } + + ${ + if withGperf then + '' + cp -r --no-preserve=mode,ownership ${gperftools.src} build/deps-nixpkgs/gperf + '' + else + "" + } + + ${ + if withSearch then + '' + cp -r --no-preserve=mode,ownership ${hnswlib.src} build/deps-nixpkgs/hnswlib + cp -r --no-preserve=mode,ownership ${uni-algo.src} build/deps-nixpkgs/uni-algo + '' + else + "" + } + + # Fix permissions + chmod -R u+w build/deps-nixpkgs build/_deps + chmod u+x build/deps-nixpkgs/reflex/configure + chmod u+x build/deps-nixpkgs/uring/configure + touch build/deps-nixpkgs/xxhash/xxhsum.1 ''; nativeBuildInputs = [ autoconf autoconf-archive - automake + automake116x + bison cmake ninja ]; buildInputs = [ boost - libunwind libtool openssl - ]; + zlib + ] + ++ lib.optional withPcre pcre2 + ++ lib.optional withRe2 re2 + ++ lib.optional withUnwind libunwind; cmakeFlags = [ - "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar" - "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib" + (lib.cmakeFeature "CMAKE_AR" "${gcc-unwrapped}/bin/gcc-ar") + (lib.cmakeFeature "CMAKE_RANLIB" "${gcc-unwrapped}/bin/gcc-ranlib") + (lib.cmakeBool "ENABLE_GIT_VERSION" false) + (lib.cmakeBool "WITH_ASAN" withAsan) + (lib.cmakeBool "WITH_AWS" withAws) + (lib.cmakeBool "WITH_GCP" withGcp) + (lib.cmakeBool "WITH_GPERF" withGperf) + (lib.cmakeBool "WITH_SEARCH" withSearch) + (lib.cmakeBool "WITH_USAN" withUsan) ]; ninjaFlags = [ "dragonfly" ]; + # dragonflydb's tests rely heavily on outdated Python packages we don't + # have in nixpkgs, and it would be a highly non-trivial endeavor to + # recreate all of them locally to get them to run properly. doCheck = false; - dontUseNinjaInstall = true; + dontUseNinjaInstall = true; installPhase = '' runHook preInstall + mkdir -p $out/bin - cp ./dragonfly $out/bin + install -Dm755 ./dragonfly $out/bin/dragonfly + runHook postInstall ''; @@ -112,6 +255,9 @@ stdenv.mkDerivation { homepage = "https://dragonflydb.io/"; license = licenses.bsl11; platforms = platforms.linux; - maintainers = with maintainers; [ yureien ]; + maintainers = with maintainers; [ + typedrat + yureien + ]; }; } From 5f938a94bcfa4151f24652359745504f4786a449 Mon Sep 17 00:00:00 2001 From: Alexis Williams Date: Fri, 31 Oct 2025 21:23:34 -0700 Subject: [PATCH 4/4] dragonflydb: add release notes mention --- doc/release-notes/rl-2511.section.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index 5192f7a7d48bb..75336f597b3a5 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -353,6 +353,8 @@ - `plasma6`: Fixed the `ksycoca` cache not being re-built when `$XDG_CACHE_HOME` is set to something that isn't `$HOME/.cache`. +- `dragonflydb` has been updated from version 0.1.0 to version 1.34.2. + ## Nixpkgs Library {#sec-nixpkgs-release-25.11-lib}