diff options
Diffstat (limited to 'pkgs/servers/nosql/dragonflydb/default.nix')
-rw-r--r-- | pkgs/servers/nosql/dragonflydb/default.nix | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/pkgs/servers/nosql/dragonflydb/default.nix b/pkgs/servers/nosql/dragonflydb/default.nix new file mode 100644 index 0000000000000..ff4833cfaa603 --- /dev/null +++ b/pkgs/servers/nosql/dragonflydb/default.nix @@ -0,0 +1,109 @@ +{ fetchFromGitHub +, fetchurl +, lib +, stdenv +, double-conversion +, gperftools +, mimalloc +, rapidjson +, liburing +, xxHash +, abseil-cpp_202111 +, gbenchmark +, glog +, gtest +, jemalloc +, gcc-unwrapped +, autoconf +, autoconf-archive +, automake +, cmake +, ninja +, boost +, libunwind +, libtool +, openssl +}: + +let + pname = "dragonflydb"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = pname; + repo = "dragonfly"; + rev = "v${version}"; + hash = "sha256-P6WMW/n+VezWDXGagT4B+ZYyCp8oufDV6MTrpKpLZcs="; + 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="; + }; +in +stdenv.mkDerivation { + inherit pname version src; + + 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.src} ./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 + ''; + + nativeBuildInputs = [ + autoconf + autoconf-archive + automake + cmake + ninja + ]; + + buildInputs = [ + boost + libunwind + libtool + openssl + ]; + + cmakeFlags = [ + "-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar" + "-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib" + ]; + + ninjaFlags = "dragonfly"; + + doCheck = false; + dontUseNinjaInstall = true; + + installPhase = '' + runHook preInstall + mkdir -p $out/bin + cp ./dragonfly $out/bin + runHook postInstall + ''; + + meta = with lib; { + description = "A modern replacement for Redis and Memcached"; + homepage = "https://dragonflydb.io/"; + license = licenses.bsl11; + platforms = platforms.linux; + maintainers = with maintainers; [ yureien ]; + }; +} |