diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/nosql')
45 files changed, 3120 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/nosql/aerospike/default.nix b/nixpkgs/pkgs/servers/nosql/aerospike/default.nix new file mode 100644 index 000000000000..9c0d034d7b3a --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/aerospike/default.nix @@ -0,0 +1,40 @@ +{ lib, stdenv, fetchFromGitHub, autoconf, automake, libtool, openssl, zlib }: + +stdenv.mkDerivation rec { + pname = "aerospike-server"; + version = "4.2.0.4"; + + src = fetchFromGitHub { + owner = "aerospike"; + repo = "aerospike-server"; + rev = version; + sha256 = "1vqi3xir4l57v62q1ns3713vajxffs6crss8fpvbcs57p7ygx3s7"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ autoconf automake libtool ]; + buildInputs = [ openssl zlib ]; + + preBuild = '' + patchShebangs build/gen_version + substituteInPlace build/gen_version --replace 'git describe' 'echo ${version}' + + # drop blanket -Werror + substituteInPlace make_in/Makefile.in --replace '-Werror' "" + ''; + + installPhase = '' + mkdir -p $out/bin $out/share/udf + cp target/Linux-x86_64/bin/asd $out/bin/asd + cp -dpR modules/lua-core/src $out/share/udf/lua + ''; + + meta = with lib; { + description = "Flash-optimized, in-memory, NoSQL database"; + homepage = "https://aerospike.com/"; + license = licenses.agpl3; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ kalbasit ]; + knownVulnerabilities = [ "CVE-2020-13151" ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/apache-jena/binary.nix b/nixpkgs/pkgs/servers/nosql/apache-jena/binary.nix new file mode 100644 index 000000000000..2b7e3c04735d --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/apache-jena/binary.nix @@ -0,0 +1,27 @@ +{ lib, stdenv, fetchurl, java, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "apache-jena"; + version = "4.10.0"; + src = fetchurl { + url = "mirror://apache/jena/binaries/apache-jena-${version}.tar.gz"; + hash = "sha256-G2kCh5F2WfrSOCr+fEO02mlOSVfV2Oy3uZGNEarLR+M="; + }; + nativeBuildInputs = [ + makeWrapper + ]; + installPhase = '' + cp -r . "$out" + for i in "$out"/bin/*; do + wrapProgram "$i" --prefix "PATH" : "${java}/bin/" + done + ''; + meta = with lib; { + description = "RDF database"; + license = licenses.asl20; + maintainers = with maintainers; [ raskin ]; + platforms = platforms.linux; + homepage = "https://jena.apache.org"; + downloadPage = "https://archive.apache.org/dist/jena/binaries/"; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/apache-jena/fuseki-binary.nix b/nixpkgs/pkgs/servers/nosql/apache-jena/fuseki-binary.nix new file mode 100644 index 000000000000..d748cdb7c4eb --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/apache-jena/fuseki-binary.nix @@ -0,0 +1,46 @@ +{ lib +, stdenv +, fetchurl +, java +, coreutils +, which +, makeWrapper + # For the test +, pkgs +}: + +stdenv.mkDerivation rec { + pname = "apache-jena-fuseki"; + version = "4.9.0"; + src = fetchurl { + url = "mirror://apache/jena/binaries/apache-jena-fuseki-${version}.tar.gz"; + hash = "sha256-t25Q0lb+ecR12cDD1p6eZnzLxW0kZpPOFGvo5YK7AlI="; + }; + nativeBuildInputs = [ + makeWrapper + ]; + installPhase = '' + cp -r . "$out" + chmod +x $out/fuseki + ln -s "$out"/{fuseki-backup,fuseki-server,fuseki} "$out/bin" + for i in "$out"/bin/*; do + wrapProgram "$i" \ + --prefix "PATH" : "${java}/bin/:${coreutils}/bin:${which}/bin" \ + --set-default "FUSEKI_HOME" "$out" \ + ; + done + ''; + passthru = { + tests = { + basic-test = pkgs.callPackage ./fuseki-test.nix { }; + }; + }; + meta = with lib; { + description = "SPARQL server"; + license = licenses.asl20; + maintainers = with maintainers; [ raskin ]; + platforms = platforms.all; + homepage = "https://jena.apache.org"; + downloadPage = "https://archive.apache.org/dist/jena/binaries/"; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/apache-jena/fuseki-test.nix b/nixpkgs/pkgs/servers/nosql/apache-jena/fuseki-test.nix new file mode 100644 index 000000000000..bbf98a838259 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/apache-jena/fuseki-test.nix @@ -0,0 +1,18 @@ +{ lib, runCommand, apache-jena-fuseki, curl }: +runCommand "fuseki-test-${apache-jena-fuseki.name}" +{ nativeBuildInputs = [ curl apache-jena-fuseki ]; } '' + export FUSEKI_BASE="$PWD/fuseki-base" + mkdir -p "$FUSEKI_BASE/db" + FUSEKI_ARGS="--update --loc=$FUSEKI_BASE/db /dataset" fuseki start + fuseki status + for i in $(seq 120); do + if curl http://127.0.0.1:3030/dataset/data; then + break; + fi + sleep 1 + done + curl -d 'update=insert+data+{+<test://subject>+<test://predicate>+<test://object>+}' http://127.0.0.1:3030/dataset/update > /dev/null + curl http://127.0.0.1:3030/dataset/data | grep -C999 'test://predicate' + curl -d 'query=select+?s+?p+?o+where+{+?s+?p+?o+.+}' http://127.0.0.1:3030/dataset/query | grep -C999 'test://predicate' + touch $out +'' diff --git a/nixpkgs/pkgs/servers/nosql/arangodb/default.nix b/nixpkgs/pkgs/servers/nosql/arangodb/default.nix new file mode 100644 index 000000000000..52b9125e99d5 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/arangodb/default.nix @@ -0,0 +1,85 @@ +{ + # gcc 11.2 suggested on 3.10.5.2. + # gcc 11.3.0 unsupported yet, investigate gcc support when upgrading + # See https://github.com/arangodb/arangodb/issues/17454 + gcc10Stdenv +, git +, lib +, fetchFromGitHub +, openssl +, zlib +, cmake +, python3 +, perl +, snappy +, lzo +, which +, targetArchitecture ? null +, asmOptimizations ? gcc10Stdenv.hostPlatform.isx86 +}: + +let + defaultTargetArchitecture = + if gcc10Stdenv.hostPlatform.isx86 + then "haswell" + else "core"; + + targetArch = + if targetArchitecture == null + then defaultTargetArchitecture + else targetArchitecture; +in + +gcc10Stdenv.mkDerivation rec { + pname = "arangodb"; + version = "3.10.5.2"; + + src = fetchFromGitHub { + repo = "arangodb"; + owner = "arangodb"; + rev = "v${version}"; + sha256 = "sha256-64iTxhG8qKTSrTlH/BWDJNnLf8VnaCteCKfQ9D2lGDQ="; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ cmake git perl python3 which ]; + + buildInputs = [ openssl zlib snappy lzo ]; + + # prevent failing with "cmake-3.13.4/nix-support/setup-hook: line 10: ./3rdParty/rocksdb/RocksDBConfig.cmake.in: No such file or directory" + dontFixCmake = true; + env.NIX_CFLAGS_COMPILE = "-Wno-error"; + + postPatch = '' + sed -ie 's!/bin/echo!echo!' 3rdParty/V8/gypfiles/*.gypi + + # with nixpkgs, it has no sense to check for a version update + substituteInPlace js/client/client.js --replace "require('@arangodb').checkAvailableVersions();" "" + substituteInPlace js/server/server.js --replace "require('@arangodb').checkAvailableVersions();" "" + ''; + + preConfigure = '' + patchShebangs utils + ''; + + cmakeBuildType = "RelWithDebInfo"; + + cmakeFlags = [ + "-DUSE_MAINTAINER_MODE=OFF" + "-DUSE_GOOGLE_TESTS=OFF" + + # avoid reading /proc/cpuinfo for feature detection + "-DTARGET_ARCHITECTURE=${targetArch}" + ] ++ lib.optionals asmOptimizations [ + "-DASM_OPTIMIZATIONS=ON" + "-DHAVE_SSE42=${if gcc10Stdenv.hostPlatform.sse4_2Support then "ON" else "OFF"}" + ]; + + meta = with lib; { + homepage = "https://www.arangodb.com"; + description = "A native multi-model database with flexible data models for documents, graphs, and key-values"; + license = licenses.asl20; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ flosse jsoo1 ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/3.0.json b/nixpkgs/pkgs/servers/nosql/cassandra/3.0.json new file mode 100644 index 000000000000..968edce704b3 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/3.0.json @@ -0,0 +1,4 @@ +{ + "version": "3.0.28", + "sha256": "1x06sxzppipi0jg0qvk26iicqwf28y0aik7c732r0yd1vz4vdwq6" +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/3.0.nix b/nixpkgs/pkgs/servers/nosql/cassandra/3.0.nix new file mode 100644 index 000000000000..ce2da3391be1 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/3.0.nix @@ -0,0 +1,7 @@ +{ callPackage, lib, ... } @ args: +callPackage ./generic.nix ( + args + // lib.importJSON ./3.0.json + // { + generation = "3_0"; + }) diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/3.11.json b/nixpkgs/pkgs/servers/nosql/cassandra/3.11.json new file mode 100644 index 000000000000..e47f78b7baf8 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/3.11.json @@ -0,0 +1,4 @@ +{ + "version": "3.11.12", + "sha256": "16j58l7r47qrfh8q7fm92y935ykgvnbj3qn984c42qda15x92hkw" +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/3.11.nix b/nixpkgs/pkgs/servers/nosql/cassandra/3.11.nix new file mode 100644 index 000000000000..695478f05030 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/3.11.nix @@ -0,0 +1,7 @@ +{ callPackage, lib, ... } @ args: +callPackage ./generic.nix ( + args + // lib.importJSON ./3.11.json + // { + generation = "3_11"; + }) diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/4.json b/nixpkgs/pkgs/servers/nosql/cassandra/4.json new file mode 100644 index 000000000000..c200c867bfe2 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/4.json @@ -0,0 +1,4 @@ +{ + "version": "4.1.2", + "sha256": "003p0985fr3l09qpw44rhys3dp9zl2bl46vasix18p2cxq0j8sw5" +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/4.nix b/nixpkgs/pkgs/servers/nosql/cassandra/4.nix new file mode 100644 index 000000000000..5674d4866475 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/4.nix @@ -0,0 +1,8 @@ +# GENERATED BY update.sh +{ callPackage, lib, ... } @ args: +callPackage ./generic.nix ( + args + // lib.importJSON ./4.json + // { + generation = "4"; + }) diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/generic.nix b/nixpkgs/pkgs/servers/nosql/cassandra/generic.nix new file mode 100644 index 000000000000..45bea6fed4c5 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/generic.nix @@ -0,0 +1,127 @@ +{ lib +, stdenv +, fetchurl +, python +, makeWrapper +, gawk +, bash +, getopt +, procps +, which +, jre +, nixosTests + # generation is the attribute version suffix such as 3_11 in pkgs.cassandra_3_11 +, generation +, version +, sha256 +, extraMeta ? { } +, callPackage +, ... +}: + +let + libPath = lib.makeLibraryPath [ stdenv.cc.cc ]; + binPath = lib.makeBinPath [ + bash + getopt + gawk + which + jre + procps + ]; +in + +stdenv.mkDerivation rec { + pname = "cassandra"; + inherit version; + + src = fetchurl { + inherit sha256; + url = "mirror://apache/cassandra/${version}/apache-cassandra-${version}-bin.tar.gz"; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + runHook preInstall + + mkdir $out + mv * $out + + # Clean up documentation. + mkdir -p $out/share/doc/${pname}-${version} + mv $out/CHANGES.txt \ + $out/LICENSE.txt \ + $out/NEWS.txt \ + $out/NOTICE.txt \ + $out/share/doc/${pname}-${version} + + if [[ -d $out/doc ]]; then + mv "$out/doc/"* $out/share/doc/${pname}-${version} + rmdir $out/doc + fi + + + for cmd in bin/cassandra \ + bin/nodetool \ + bin/sstablekeys \ + bin/sstableloader \ + bin/sstablescrub \ + bin/sstableupgrade \ + bin/sstableutil \ + bin/sstableverify; do + # Check if file exists because some don't exist across all versions + if [ -f $out/$cmd ]; then + wrapProgram $out/bin/$(basename "$cmd") \ + --suffix-each LD_LIBRARY_PATH : ${libPath} \ + --prefix PATH : ${binPath} \ + --set JAVA_HOME ${jre} + fi + done + + for cmd in tools/bin/cassandra-stress \ + tools/bin/cassandra-stressd \ + tools/bin/sstabledump \ + tools/bin/sstableexpiredblockers \ + tools/bin/sstablelevelreset \ + tools/bin/sstablemetadata \ + tools/bin/sstableofflinerelevel \ + tools/bin/sstablerepairedset \ + tools/bin/sstablesplit \ + tools/bin/token-generator; do + # Check if file exists because some don't exist across all versions + if [ -f $out/$cmd ]; then + makeWrapper $out/$cmd $out/bin/$(basename "$cmd") \ + --suffix-each LD_LIBRARY_PATH : ${libPath} \ + --prefix PATH : ${binPath} \ + --set JAVA_HOME ${jre} + fi + done + + wrapProgram $out/bin/cqlsh --prefix PATH : ${python}/bin + + runHook postInstall + ''; + + passthru = { + tests = + let + test = nixosTests."cassandra_${generation}"; + in + { + nixos = + assert test.testPackage.version == version; + test; + }; + + updateScript = callPackage ./update-script.nix { inherit generation; }; + }; + + meta = with lib; { + homepage = "https://cassandra.apache.org/"; + description = "A massively scalable open source NoSQL database"; + platforms = platforms.unix; + license = licenses.asl20; + maintainers = [ maintainers.roberth ]; + } // extraMeta; +} diff --git a/nixpkgs/pkgs/servers/nosql/cassandra/update-script.nix b/nixpkgs/pkgs/servers/nosql/cassandra/update-script.nix new file mode 100644 index 000000000000..b407b704fdfd --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/cassandra/update-script.nix @@ -0,0 +1,55 @@ +{ git +, lib +, runtimeShell +, writeScript +, generation +, gnupg +}: +let + inherit (lib) makeBinPath; + filename = lib.strings.replaceStrings [ "_" ] [ "." ] generation + ".json"; + regex = lib.strings.replaceStrings [ "_" ] [ "[.]" ] generation; +in +writeScript "update-cassandra_${generation}" '' + #!${runtimeShell} + set -eux -o pipefail + test -d pkgs -a -d nixos -a -d lib || { + echo >&2 "$0 expects to be run in a nixpkgs checkout" + exit 1 + } + cd pkgs/servers/nosql/cassandra + PATH="${makeBinPath [git gnupg]}:$PATH" + + tmp="$(mktemp -d)" + cleanup() { + rm -rf "$tmp" + } + trap cleanup EXIT + + # get numeric-only versions, sort them latest first + git ls-remote --tags https://github.com/apache/cassandra \ + | awk '{ if (match($0, /refs.tags.cassandra-([0-9.]*)$/, m)) print m[1] }' \ + | sort -V \ + | tac >$tmp/versions + + version="$(grep -E '^${regex}' <$tmp/versions | head -n 1)" + path="cassandra/$version/apache-cassandra-$version-bin.tar.gz" + curl "https://downloads.apache.org/$path" >$tmp/src.tar.gz + curl "https://downloads.apache.org/$path.asc" >$tmp/src.tar.gz.asc + + # See https://downloads.apache.org/cassandra/KEYS + # Make sure that any new key corresponds to someone on the project + for key in A4C465FEA0C552561A392A61E91335D77E3E87CB; do + gpg --trustdb-name "$tmp/trust.db" --batch --recv-keys "$key" + echo "$key:5:" | gpg --trustdb-name "$tmp/trust.db" --batch --import-ownertrust + done + gpg --trustdb-name "$tmp/trust.db" --batch --verify --trust-model direct $tmp/src.tar.gz.asc $tmp/src.tar.gz + + hash="$(nix-prefetch-url "file://$tmp/src.tar.gz")" + cat >${filename} <<EOF + { + "version": "$version", + "sha256": "$hash" + } + EOF +'' diff --git a/nixpkgs/pkgs/servers/nosql/dragonflydb/default.nix b/nixpkgs/pkgs/servers/nosql/dragonflydb/default.nix new file mode 100644 index 000000000000..e73f00164fe9 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/dragonflydb/default.nix @@ -0,0 +1,116 @@ +{ fetchFromGitHub +, fetchurl +, lib +, stdenv +, double-conversion +, gperftools +, mimalloc +, rapidjson +, liburing +, xxHash +, 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="; + }; + + # Needed exactly 20211102.0 for patch to work + abseil-cpp_202111 = fetchFromGitHub { + owner = "abseil"; + repo = "abseil-cpp"; + rev = "20211102.0"; + sha256 = "sha256-sSXT6D4JSrk3dA7kVaxfKkzOMBpqXQb0WbMYWG+nGwk="; + }; +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} ./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 ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/dragonflydb/fixes.patch b/nixpkgs/pkgs/servers/nosql/dragonflydb/fixes.patch new file mode 100644 index 000000000000..d2992fbbaf82 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/dragonflydb/fixes.patch @@ -0,0 +1,132 @@ +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 <SOURCE_DIR>/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 <SOURCE_DIR>/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/nixpkgs/pkgs/servers/nosql/dragonflydb/glog.patch b/nixpkgs/pkgs/servers/nosql/dragonflydb/glog.patch new file mode 100644 index 000000000000..2fb9c0733b87 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/dragonflydb/glog.patch @@ -0,0 +1,553 @@ +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 <gflags/gflags.h> + ++#else ++#ifdef HAVE_ABSL_FLAGS ++#include <absl/flags/flag.h> ++ ++#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 <glog/logging.h> +@@ -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 <gflags/gflags.h> + #endif + ++#if @ac_cv_have_abslflags@ ++#include <absl/flags/declare.h> ++#endif ++ + #if @ac_cv_cxx11_atomic@ && __cplusplus >= 201103L + #include <atomic> + #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 <glog/log_severity.h> + + #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<int64>(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<string>& GetLoggingDirectories() { + if (logging_directories_list == NULL) { + logging_directories_list = new vector<string>; + +- 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 <glog/logging.h> + #include <glog/raw_logging.h> + #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 <module name>=<log level>." +@@ -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/nixpkgs/pkgs/servers/nosql/eventstore/default.nix b/nixpkgs/pkgs/servers/nosql/eventstore/default.nix new file mode 100644 index 000000000000..4165a6ff4390 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/eventstore/default.nix @@ -0,0 +1,84 @@ +{ lib +, git +, dotnetCorePackages +, glibcLocales +, buildDotnetModule +, fetchFromGitHub +, bintools +, stdenv +, mono +}: +let + mainProgram = "EventStore.ClusterNode"; +in + +buildDotnetModule rec { + pname = "EventStore"; + version = "23.6.0"; + + src = fetchFromGitHub { + owner = "EventStore"; + repo = "EventStore"; + rev = "oss-v${version}"; + sha256 = "sha256-+Wxm6yusaCoqXIbsi0ZoALAviKUyNMQwbzsQtBK/PCo="; + leaveDotGit = true; + }; + + # Fixes application reporting 0.0.0.0 as its version. + MINVERVERSIONOVERRIDE = version; + + dotnet-sdk = dotnetCorePackages.sdk_6_0; + dotnet-runtime = dotnetCorePackages.aspnetcore_6_0; + + nativeBuildInputs = [ git glibcLocales bintools ]; + + runtimeDeps = [ mono ]; + + executables = [ mainProgram ]; + + # This test has a problem running on macOS + disabledTests = lib.optionals stdenv.isDarwin [ + "EventStore.Projections.Core.Tests.Services.grpc_service.ServerFeaturesTests<LogFormat+V2,String>.should_receive_expected_endpoints" + "EventStore.Projections.Core.Tests.Services.grpc_service.ServerFeaturesTests<LogFormat+V3,UInt32>.should_receive_expected_endpoints" + ]; + + postConfigure = '' + # Fixes git execution by GitInfo on mac os + substituteInPlace "$HOME/.nuget/packages/gitinfo/2.0.26/build/GitInfo.targets" \ + --replace "<GitExe Condition=\"Exists('/usr/bin/git')\">/usr/bin/git</GitExe>" " " \ + --replace "<GitExe Condition=\"Exists('/usr/local/bin/git')\">/usr/local/bin/git</GitExe>" "" + ''; + + nugetDeps = ./deps.nix; + + projectFile = "src/EventStore.ClusterNode/EventStore.ClusterNode.csproj"; + + doCheck = true; + testProjectFile = "src/EventStore.Projections.Core.Tests/EventStore.Projections.Core.Tests.csproj"; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/EventStore.ClusterNode --insecure \ + --db "$HOME/data" \ + --index "$HOME/index" \ + --log "$HOME/log" \ + -runprojections all --startstandardprojections \ + --EnableAtomPubOverHttp & + + PID=$! + + sleep 30s; + kill "$PID"; + ''; + + passthru.updateScript = ./updater.sh; + + meta = with lib; { + homepage = "https://geteventstore.com/"; + description = "Event sourcing database with processing logic in JavaScript"; + license = licenses.bsd3; + maintainers = with maintainers; [ puffnfresh mdarocha ]; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; + inherit mainProgram; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/eventstore/deps.nix b/nixpkgs/pkgs/servers/nosql/eventstore/deps.nix new file mode 100644 index 000000000000..c1bdacfbf074 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/eventstore/deps.nix @@ -0,0 +1,315 @@ +# This file was automatically generated by passthru.fetch-deps. +# Please dont edit it manually, your changes might get overwritten! + +{ fetchNuGet }: [ + (fetchNuGet { pname = "CompareNETObjects"; version = "4.78.0"; sha256 = "0vs0bxnw7287rh7yigq55750hfdzh04xbcaahawfdl9467vp4dgm"; }) + (fetchNuGet { pname = "ConfigureAwaitChecker.Analyzer"; version = "5.0.0.1"; sha256 = "01llfwhra5m3jj1qpa4rj1hbh01drirakzjc2963vkl9iwrzscyl"; }) + (fetchNuGet { pname = "dotnet-retire"; version = "4.0.1"; sha256 = "0zqyivj00mjagzhhkvzckdk5d5ldxhxhv7qk985pis9krfkgzhww"; }) + (fetchNuGet { pname = "Esprima"; version = "3.0.0-rc-01"; sha256 = "068xfs4h34irqab9zbq5s45iycxhbrv2r6fdv47zsxcday9xq617"; }) + (fetchNuGet { pname = "EventStore.Client"; version = "21.2.0"; sha256 = "1crnk0nbwcz4l2dv3ia96skmfn274nbyh5j1p0g9rjbzyy7kzf5j"; }) + (fetchNuGet { pname = "EventStore.Plugins"; version = "22.10.3"; sha256 = "0irii0xk806bc1pfnyn5dgksy4x9nqj9x2m01h9ddnzkzds2n9bi"; }) + (fetchNuGet { pname = "GitHubActionsTestLogger"; version = "2.0.1"; sha256 = "155d1fmnxlq7p7wk4v74b8v8h36nq0i6bq1vhdjf8sbq7f95fj0f"; }) + (fetchNuGet { pname = "GitInfo"; version = "2.0.26"; sha256 = "050l74vkamvbsp8f02b8aknizcknk4fr26dvwvw86mm8iw1dlvrv"; }) + (fetchNuGet { pname = "Google.Protobuf"; version = "3.22.0"; sha256 = "1wjxxlqdrjjb0f3py8sbgsivqms8d22m7xk1zx68gfmyih671in7"; }) + (fetchNuGet { pname = "gpr"; version = "0.1.122"; sha256 = "0z65n8zqdz0p2ackha572gpdjydhgnfszb46rca44773ak6mfa2b"; }) + (fetchNuGet { pname = "Grpc.AspNetCore"; version = "2.52.0"; sha256 = "1apbsqzkns2p0rn31j0q21n3a4lbnp06b4kh2wf44kancvhaj4ch"; }) + (fetchNuGet { pname = "Grpc.AspNetCore.Server"; version = "2.52.0"; sha256 = "0bvi61phh4r48ha0xc8mp0n79n3l0pniik08kvc2cwyq2fk3iiji"; }) + (fetchNuGet { pname = "Grpc.AspNetCore.Server.ClientFactory"; version = "2.52.0"; sha256 = "192bqxg63mn0nc8d8v21xnq3qmchiz90df6liqpbnisdl3avdyhk"; }) + (fetchNuGet { pname = "Grpc.Core"; version = "2.46.5"; sha256 = "0s1vyb1cx5id62kwx67qaqx25bykwpqnm2nmwsmcyqpzgyy0zwy2"; }) + (fetchNuGet { pname = "Grpc.Core.Api"; version = "2.46.5"; sha256 = "0m0vjr69rfqllvvij6rvv79mbks27rhh7b4wnfvj88v43zvvlnq0"; }) + (fetchNuGet { pname = "Grpc.Core.Api"; version = "2.52.0"; sha256 = "1mrc8zkcgvklrc0xalky9xxy9dkq5yk92idj1wm5zgdh6pghsa11"; }) + (fetchNuGet { pname = "Grpc.Net.Client"; version = "2.52.0"; sha256 = "0f8m8nmx30bb5wk61i7aqxnwz00rflyc7l8pl9i60mr8ybq5n671"; }) + (fetchNuGet { pname = "Grpc.Net.ClientFactory"; version = "2.52.0"; sha256 = "18zcrbzhg06f6wvm120176zfkz2sy9jal6p9wh2xsapjk52qin27"; }) + (fetchNuGet { pname = "Grpc.Net.Common"; version = "2.52.0"; sha256 = "1dhf98h89xbcpx4v6lmr3gq51br9r8jm38zhrs9dw8l9vy73x1jy"; }) + (fetchNuGet { pname = "Grpc.Tools"; version = "2.49.1"; sha256 = "1nsxm73b1bn4jjjpz5q6hvqjm77l9vhl4wi36b1pxwgdbdspy5rm"; }) + (fetchNuGet { pname = "Grpc.Tools"; version = "2.52.0"; sha256 = "1a13rrdryykazhq71q339r0xpsyi8vlj2zprrpriak2yn7zhxiqh"; }) + (fetchNuGet { pname = "HdrHistogram"; version = "2.5.0"; sha256 = "1s2np7m3pp17rgambax9a3x5pd2grx74cr325q3xapjz2gd58sj1"; }) + (fetchNuGet { pname = "HostStat.NET"; version = "1.0.2"; sha256 = "1khxpp1fy36njjcmikr0xnxk7zv9d3rcnm6f7x2s94agins23hg7"; }) + (fetchNuGet { pname = "Jint"; version = "3.0.0-beta-2048"; sha256 = "1iyfzpj36b8ybiwrjxwxqz42jgx2wsm8l0dmkiaip8ds0lal71iw"; }) + (fetchNuGet { pname = "Microsoft.AspNetCore.TestHost"; version = "6.0.16"; sha256 = "1zpiiq9yjwgcwq89j3jj7jdd2ycp15d3pklqdmhfxclv43ssn3hf"; }) + (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "1.1.0"; sha256 = "1dq5yw7cy6s42193yl4iqscfw5vzkjkgv0zyy32scr4jza6ni1a1"; }) + (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "5.0.0"; sha256 = "0cp5jbax2mf6xr3dqiljzlwi05fv6n9a35z337s92jcljiq674kf"; }) + (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; }) + (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.3"; sha256 = "09m4cpry8ivm9ga1abrxmvw16sslxhy2k5sl14zckhqb1j164im6"; }) + (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "4.3.0"; sha256 = "0qpxygiq53v2d2wl6hccnkjf1lhlxjh4q3w5b6d23aq9pw5qj626"; }) + (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "4.3.0"; sha256 = "0m9qqn391ayfi1ffkzvhpij790hs96q6dbhzfkj2ahvw6qx47b30"; }) + (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.3.2"; sha256 = "1f05l2vm8inlwhk36lfbyszjlcnvdd2qw2832npaah0dldn6dz00"; }) + (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.0.1"; sha256 = "0zxc0apx1gcx361jlq8smc9pfdgmyjh6hpka8dypc9w23nlsh6yj"; }) + (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; }) + (fetchNuGet { pname = "Microsoft.Data.Sqlite"; version = "6.0.10"; sha256 = "0lshgxw6xvjaky1rg0nhdxw91h9m88fq2q3hrq9x0pk1wblsgkjp"; }) + (fetchNuGet { pname = "Microsoft.Data.Sqlite.Core"; version = "6.0.10"; sha256 = "1sdh5rw2pyg6c64z0haxf57bakd5kwaav624vlqif1m59iz26rag"; }) + (fetchNuGet { pname = "Microsoft.Diagnostics.NETCore.Client"; version = "0.2.328102"; sha256 = "0i4wvjjcvxdr806s5yzwbjd1w9x8bcshrrq18kmc9ymjd1pkzpxk"; }) + (fetchNuGet { pname = "Microsoft.Diagnostics.Tracing.TraceEvent"; version = "3.0.5"; sha256 = "0j2w8q7a20s46a4nq8vnv8n14aamdamqcfvia9zkvx5xl7l22yb0"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "2.0.0"; sha256 = "0yssxq9di5h6xw2cayp5hj3l9b2p0jw9wcjz73rwk4586spac9s9"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "2.1.1"; sha256 = "0244czr3jflvzcj6axq61j10dkl0f16ad34rw81ryg57v4cvlwx6"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "3.0.3"; sha256 = "0fiwv35628rzkpixpbqcj8ln4c0hnwhr3is8ha38a9pdzlrs6zx8"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "3.1.0"; sha256 = "1rszgz0rd5kvib5fscz6ss3pkxyjwqy0xpd4f2ypgzf5z5g5d398"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "6.0.0"; sha256 = "1zdyai2rzngmsp3706d12qrdk315c1s3ja218fzb3nc3wd1vz0s8"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "2.0.0"; sha256 = "1ilz2yrgg9rbjyhn6a5zh9pr51nmh11z7sixb4p7vivgydj9gxwf"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "2.1.0"; sha256 = "03gzlr3z9j1xnr1k6y91zgxpz3pj27i3zsvjwj7i8jqnlqmk7pxd"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "2.1.1"; sha256 = "0b4bn0cf39c6jlc8xnpi1d8f3pz0qhf8ng440yb95y5jv5q4fdyw"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "3.0.3"; sha256 = "18l6ys6z7j07vf5pa3g0d018dfgk5vb9hf3393cmmh448rpjq41m"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "3.1.0"; sha256 = "1f7h52kamljglx5k08ccryilvk6d6cvr9c26lcb6b2c091znzk0q"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "6.0.0"; sha256 = "0w6wwxv12nbc3sghvr68847wc9skkdgsicrz3fx4chgng1i3xy0j"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "2.0.0"; sha256 = "1prvdbma6r18n5agbhhabv6g357p1j70gq4m9g0vs859kf44nrgc"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "2.1.1"; sha256 = "0n91s6cjfv8plf5swhr307s849jmq2pa3i1rbpb0cb0grxml0mqm"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "3.0.3"; sha256 = "0zy90kvlvxinwqz38cwj1jmp06a8gar1crdbycjk5wy8d6w5m0br"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "3.1.0"; sha256 = "13jj7jxihiswmhmql7r5jydbca4x5qj6h7zq10z17gagys6dc7pw"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.EnvironmentVariables"; version = "3.1.0"; sha256 = "1bkcrsmm37i7dcg4arffwqmd90vfhaxhrc6vh8mjwwp41q09ghna"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.FileExtensions"; version = "6.0.0"; sha256 = "02nna984iwnyyz4jjh9vs405nlj0yk1g5vz4v2x30z2c89mx5f9w"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Json"; version = "6.0.0"; sha256 = "1c6l5szma1pdn61ncq1kaqibg0dz65hbma2xl626a8d1m6awn353"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "3.0.3"; sha256 = "0nd36n0zfqv5l4w4jlbs2smaw0x7lw49aw1wgk3wsyv69s74p3gj"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "3.1.0"; sha256 = "1xc61dy07bn2q73mx1z3ylrw80xpa682qjby13gklnqq636a3gab"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "2.0.0"; sha256 = "1pwrfh9b72k9rq6mb2jab5qhhi225d5rjalzkapiayggmygc8nhz"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "2.1.0"; sha256 = "0c0cx8r5xkjpxmcfp51959jnp55qjvq28d9vaslk08avvi1by12s"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "2.1.1"; sha256 = "0rn0925aqm1fsbaf0n8jy6ng2fm1cy97lp7yikvx31m6178k9i84"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "3.0.3"; sha256 = "1hyilp5gr19xz7zcyar6h8jpfksqbn5s9kz0qrfqwvqhq2p7sm5g"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "3.1.0"; sha256 = "1pvms778xkyv1a3gfwrxnh8ja769cxi416n7pcidn9wvg15ifvbh"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "5.0.0"; sha256 = "17cz6s80va0ch0a6nqa1wbbbp3p8sqxb96lj4qcw67ivkp2yxiyj"; }) + (fetchNuGet { pname = "Microsoft.Extensions.DependencyModel"; version = "3.0.0"; sha256 = "1cm0hycgb33mf1ja9q91wxi3gk13d1p462gdq7gndrya23hw2jm5"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "2.1.0"; sha256 = "1sxls5f5cgb0wr8cwb05skqmz074683hrhmd3hhq6m5dasnzb8n3"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "6.0.0"; sha256 = "1fbqmfapxdz77drcv1ndyj2ybvd2rv4c9i9pgiykcpl4fa6dc65q"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Composite"; version = "6.0.0"; sha256 = "1yn0cnclbm3lv12fmf6z0mxqsyjk8s8r952fcw4fdv54mvqbfgkl"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Embedded"; version = "6.0.9"; sha256 = "0pni3y0drcjfr3cgpw8iiac589rsh6z5c2h2xnzy3yvk5lx5pl0d"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Physical"; version = "6.0.0"; sha256 = "1ikc3kf325xig6njbi2aj5kmww4xlaq9lsrpc8v764fsm4x10474"; }) + (fetchNuGet { pname = "Microsoft.Extensions.FileSystemGlobbing"; version = "6.0.0"; sha256 = "09gyyv4fwy9ys84z3aq4lm9y09b7bd1d4l4gfdinmg0z9678f1a4"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Hosting.Abstractions"; version = "2.1.0"; sha256 = "04vm9mdjjzg3lpp2rzpgkpn8h5bzdl3bwcr22lshd3kp602ws4k9"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Http"; version = "3.0.3"; sha256 = "0glfid82amr4mxjqpq2ar6vhq6wv88sp463yvhg4pravkcrd0611"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "2.0.0"; sha256 = "1jkwjcq1ld9znz1haazk8ili2g4pzfdp6i7r7rki4hg3jcadn386"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "2.1.1"; sha256 = "12pag6rf01xfa8x1h30mf4czfhlhg2kgi5q712jicy3h12c02w8y"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "3.0.3"; sha256 = "0kyh6bk9iywbdvn29zm1770fwmag58y7c8rfpx886anxs6p9rh61"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "3.1.0"; sha256 = "1d3yhqj1rav7vswm747j7w8fh8paybji4rz941hhlq4b12mfqfh4"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "2.0.0"; sha256 = "1x5isi71z02khikzvm7vaschb006pqqrsv86ky1x08a4hir4s43h"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "2.1.0"; sha256 = "1gvgif1wcx4k6pv7gc00qv1hid945jdywy1s50s33q0hfd91hbnj"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "2.1.1"; sha256 = "1sgpwj0sa0ac7m5fnkb482mnch8fsv8hfbvk53c6lyh47s1xhdjg"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "3.0.3"; sha256 = "1wj871vl1azasbn2lrzzycvzkk72rvaxywnj193xwv11420b0mjh"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "3.1.0"; sha256 = "1zyalrcksszmn9r5xjnirfh7847axncgzxkk3k5srbvlcch8fw8g"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Logging.Configuration"; version = "3.1.0"; sha256 = "00bx95j2j0lkrr1znm53qicigvrj4sbc7snh27nqwsp4vkjnpz5h"; }) + (fetchNuGet { pname = "Microsoft.Extensions.ObjectPool"; version = "5.0.10"; sha256 = "07fk669pjydkcg6bxxv7aj548fzab4yb7ba8370d719lgi9y425l"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "2.0.0"; sha256 = "0g4zadlg73f507krilhaaa7h0jdga216syrzjlyf5fdk25gxmjqh"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "2.1.1"; sha256 = "0wgpsi874gzzjj099xbdmmsifslkbdjkxd5xrzpc5xdglpkw08vl"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "3.0.3"; sha256 = "0lq433x3z3dhf4w10vrxnqami6xsr6mwasla3qhmfx7yfybgz7y0"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "5.0.0"; sha256 = "1rdmgpg770x8qwaaa6ryc27zh93p697fcyvn5vkxp0wimlhqkbay"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "3.1.0"; sha256 = "13bhi1q4s79k4qb19m4p94364543jr3a1f8kacjvdhigpmqa732r"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "2.0.0"; sha256 = "1xppr5jbny04slyjgngxjdm0maxdh47vq481ps944d7jrfs0p3mb"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "2.1.0"; sha256 = "1r9gzwdfmb8ysnc4nzmyz5cyar1lw0qmizsvrsh252nhlyg06nmb"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "2.1.1"; sha256 = "033rkqdffybq5prhc7nn6v68zij393n00s5a82yf2n86whwvdfwx"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "2.2.0"; sha256 = "0znah6arbcqari49ymigg3wiy2hgdifz8zsq8vdc3ynnf45r7h0c"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "3.0.3"; sha256 = "08zlr6kl92znj9v2cs1wsjw6s98nxbkwnxk8pccbv0b4c7xhb3pf"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "3.1.0"; sha256 = "1w1y22njywwysi8qjnj4m83qhbq0jr4mmjib0hfawz6cwamh7xrb"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "5.0.0"; sha256 = "0swqcknyh87ns82w539z1mvy804pfwhgzs97cr3nwqk6g5s42gd6"; }) + (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "6.0.0"; sha256 = "1kjiw6s4yfz9gm7mx3wkhp06ghnbs95icj9hi505shz9rjrg42q2"; }) + (fetchNuGet { pname = "Microsoft.FASTER.Core"; version = "1.9.5"; sha256 = "1vp2644301bsdad0sd20pjqa8lbf1vc8yvd9rkl986h56hgwczsj"; }) + (fetchNuGet { pname = "Microsoft.Net.Http.Headers"; version = "2.2.8"; sha256 = "1s0n68z6v5mbys4jjrd4jdxrrz81iq4dzmmbmxzmlf59769x8rj9"; }) + (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.3.2"; sha256 = "0pm06nxqi8aw04lciqy7iz8ln1qm5mx06cpwgqa2dfwvnjp7zxnm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.1"; sha256 = "164wycgng4mi9zqi2pnsf1pq6gccbqvw6ib916mqizgjmd8f44pj"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.0"; sha256 = "0nmdnkmwyxj8cp746hs9an57zspqlmqdm55b00i7yk8a22s6akxz"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.0.1"; sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; }) + (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; }) + (fetchNuGet { pname = "Microsoft.NETFramework.ReferenceAssemblies"; version = "1.0.0"; sha256 = "0na724xhvqm63vq9y18fl9jw9q2v99bdwr353378s5fsi11qzxp9"; }) + (fetchNuGet { pname = "Microsoft.NETFramework.ReferenceAssemblies.net461"; version = "1.0.0"; sha256 = "00vkn4c6i0rn1l9pv912y0wgb9h6ks76qah8hvk441nari8fqbm1"; }) + (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.2.0"; sha256 = "0l05smcgjzdfa5f60f9q5lylap3i21aswxbava92s19bgv46w2rv"; }) + (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.3.2"; sha256 = "0bs38r5kdw1xpbjbi5l82xbhfnfbzr5xhg5520lk05pg914d1ln1"; }) + (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.3.2"; sha256 = "089nmaxzvm5xcf20pm4iiavz2k6lwh69r51xlbqg0ry605mnl869"; }) + (fetchNuGet { pname = "Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; }) + (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "6.0.0"; sha256 = "0c6pcj088g1yd1vs529q3ybgsd2vjlk5y1ic6dkmbhvrp5jibl9p"; }) + (fetchNuGet { pname = "MinVer"; version = "4.2.0"; sha256 = "00skhyfh6q2dmqgh1bmcryvkg79kvgc6d9qxbpg43fvaifwxxl99"; }) + (fetchNuGet { pname = "minver-cli"; version = "2.2.0"; sha256 = "0whxllmgyin9n02pvq97633ncflg7k4z0c7p28j4wydv55iz3cxv"; }) + (fetchNuGet { pname = "Mono.Posix.NETStandard"; version = "1.0.0"; sha256 = "0xlja36hwpjm837haq15mjh2prcf68lyrmn72nvgpz8qnf9vappw"; }) + (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.0"; sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy"; }) + (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.3"; sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; }) + (fetchNuGet { pname = "Newtonsoft.Json"; version = "11.0.2"; sha256 = "1784xi44f4k8v1fr696hsccmwpy94bz7kixxqlri98zhcxn406b2"; }) + (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.2"; sha256 = "1p9splg1min274dpz7xdfgzrwkyfd3xlkygwpr1xgjvvyjvs6b0i"; }) + (fetchNuGet { pname = "Newtonsoft.Json"; version = "9.0.1"; sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r"; }) + (fetchNuGet { pname = "NuGet.Frameworks"; version = "5.11.0"; sha256 = "0wv26gq39hfqw9md32amr5771s73f5zn1z9vs4y77cgynxr73s4z"; }) + (fetchNuGet { pname = "NUnit"; version = "3.13.3"; sha256 = "0wdzfkygqnr73s6lpxg5b1pwaqz9f414fxpvpdmf72bvh4jaqzv6"; }) + (fetchNuGet { pname = "NUnit3TestAdapter"; version = "4.2.1"; sha256 = "0gildh4xcb6gkxcrrgh5a1j7lq0a7l670jpbs71akl5b5bgy5gc3"; }) + (fetchNuGet { pname = "OpenTelemetry"; version = "1.4.0-rc.1"; sha256 = "17cbj0dx6fxk169rs0ds6cph75z9r1i90xgjdapx1zmx1kwcdn00"; }) + (fetchNuGet { pname = "OpenTelemetry.Api"; version = "1.4.0-rc.1"; sha256 = "09pc8vbhgjq5bibvjw39gjdb99x3nclsggzp509qfcxv8gizcs21"; }) + (fetchNuGet { pname = "OpenTelemetry.Exporter.Prometheus.AspNetCore"; version = "1.4.0-rc.1"; sha256 = "129qk929f21akx87g66f8h1ckj2lj2ij5by5ma7bdm19jpk2yhdx"; }) + (fetchNuGet { pname = "OpenTelemetry.Extensions.DependencyInjection"; version = "1.4.0-rc.1"; sha256 = "19sraav8y53yi1pf8dsjd2n5cnffqd876rjxmlkkbi550qdr9l0v"; }) + (fetchNuGet { pname = "OpenTelemetry.Extensions.Hosting"; version = "1.4.0-rc.1"; sha256 = "0h781wdirsqz1hxwmag6dzzng3kpk7nqrmfg0j04z3q23zi9rp9h"; }) + (fetchNuGet { pname = "protobuf-net"; version = "2.4.0"; sha256 = "106lxm9afga7ihlknyy7mlfplyq40mrndksqrsn8ia2a47fbqqld"; }) + (fetchNuGet { pname = "Quickenshtein"; version = "1.5.1"; sha256 = "0mhnywivqxlpznr2fk7jp8g0bshsbq0yyyggcn51blkaabf18grl"; }) + (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; }) + (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk"; }) + (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn"; }) + (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; }) + (fetchNuGet { pname = "runtime.any.System.Globalization.Calendars"; version = "4.3.0"; sha256 = "1ghhhk5psqxcg6w88sxkqrc35bxcz27zbqm2y5p5298pv3v7g201"; }) + (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; }) + (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; }) + (fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; }) + (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; }) + (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; }) + (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; }) + (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; }) + (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; }) + (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; }) + (fetchNuGet { pname = "runtime.any.System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8"; }) + (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; }) + (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; }) + (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "0rwpqngkqiapqc5c2cpkj7idhngrgss5qpnqg0yh40mbyflcxf8i"; }) + (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; }) + (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1n06gxwlinhs0w7s8a94r1q3lwqzvynxwd3mp10ws9bg6gck8n4r"; }) + (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; }) + (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "0404wqrc7f2yc0wxv71y3nnybvqx8v4j9d47hlscxy759a525mc3"; }) + (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; }) + (fetchNuGet { pname = "runtime.native.System.Net.Http"; version = "4.3.0"; sha256 = "1n6rgz5132lcibbch1qlf0g9jk60r0kqv087hxc0lisy50zpm7kk"; }) + (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.Apple"; version = "4.3.0"; sha256 = "1b61p6gw1m02cc1ry996fl49liiwky6181dzr873g9ds92zl326q"; }) + (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; }) + (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "0zy5r25jppz48i2bkg8b9lfig24xixg6nm3xyr1379zdnqnpm8f6"; }) + (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; }) + (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "096ch4n4s8k82xga80lfmpimpzahd2ip1mgwdqgar0ywbbl6x438"; }) + (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; }) + (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1dm8fifl7rf1gy7lnwln78ch4rw54g0pl5g1c189vawavll7p6rj"; }) + (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple"; version = "4.3.0"; sha256 = "10yc8jdrwgcl44b4g93f1ds76b176bajd3zqi2faf5rvh1vy9smi"; }) + (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; }) + (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1m9z1k9kzva9n9kwinqxl97x2vgl79qhqjlv17k9s2ymcyv2bwr6"; }) + (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; }) + (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1cpx56mcfxz7cpn57wvj18sjisvzq8b5vd9rw16ihd2i6mcp3wa1"; }) + (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; }) + (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "15gsm1a8jdmgmf8j5v1slfz8ks124nfdhk2vxs2rw3asrxalg8hi"; }) + (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; }) + (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "0q0n5q1r1wnqmr5i5idsrd9ywl33k0js4pngkwq9p368mbxp8x1w"; }) + (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; }) + (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.2"; sha256 = "1x0g58pbpjrmj2x2qw17rdwwnrcl0wvim2hdwz48lixvwvp22n9c"; }) + (fetchNuGet { pname = "runtime.unix.Microsoft.Win32.Primitives"; version = "4.3.0"; sha256 = "0y61k9zbxhdi0glg154v30kkq7f8646nif8lnnxbvkjpakggd5id"; }) + (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; }) + (fetchNuGet { pname = "runtime.unix.System.IO.FileSystem"; version = "4.3.0"; sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix"; }) + (fetchNuGet { pname = "runtime.unix.System.Net.Primitives"; version = "4.3.0"; sha256 = "0bdnglg59pzx9394sy4ic66kmxhqp8q8bvmykdxcbs5mm0ipwwm4"; }) + (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; }) + (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; }) + (fetchNuGet { pname = "Serilog"; version = "2.0.0"; sha256 = "194c39cwribx7p2sic0w8hjmc83194bc985kl7aqpmljfz376gsc"; }) + (fetchNuGet { pname = "Serilog"; version = "2.12.0"; sha256 = "0lqxpc96qcjkv9pr1rln7mi4y7n7jdi4vb36c2fv3845w1vswgr4"; }) + (fetchNuGet { pname = "Serilog.Enrichers.Process"; version = "2.0.2"; sha256 = "0wivpxljx5s2vh9rw0h8g64siaq3ajm6rpg6y8v3qnxfmlhlas6s"; }) + (fetchNuGet { pname = "Serilog.Enrichers.Thread"; version = "3.1.0"; sha256 = "1y75aiv2k1sxnh012ixkx92fq1yl8srqggy8l439igg4p223hcqi"; }) + (fetchNuGet { pname = "Serilog.Expressions"; version = "3.4.0"; sha256 = "10knpl8nnxmksbsq3l7p486kq1n5y5kn8ibvcscmcig6wxhcw05h"; }) + (fetchNuGet { pname = "Serilog.Extensions.Logging"; version = "3.1.0"; sha256 = "0lv370ks2fjdn1nsgkbzbmw6hybnincw3jabr471a5w39pp4fl1c"; }) + (fetchNuGet { pname = "Serilog.Filters.Expressions"; version = "2.1.0"; sha256 = "0pwlcisijbkdhgab2k4vwjqimminxnkzgdrxvq7pz5ba2brsy28l"; }) + (fetchNuGet { pname = "Serilog.Settings.Configuration"; version = "3.4.0"; sha256 = "1l6fyy9y5a168i1mm107aqyrwzhqmpy0cp1v13l2b89yv8dc105j"; }) + (fetchNuGet { pname = "Serilog.Sinks.Async"; version = "1.5.0"; sha256 = "0bcb3n6lmg5wfj806mziybfmbb8gyiszrivs3swf0msy8w505gyg"; }) + (fetchNuGet { pname = "Serilog.Sinks.Console"; version = "4.1.0"; sha256 = "1rpkphmqfh3bv3m7v1zwz88wz4sirj4xqyff9ga0c6bqhblj6wii"; }) + (fetchNuGet { pname = "Serilog.Sinks.File"; version = "5.0.0"; sha256 = "097rngmgcrdfy7jy8j7dq3xaq2qky8ijwg0ws6bfv5lx0f3vvb0q"; }) + (fetchNuGet { pname = "Serilog.Sinks.InMemory"; version = "0.11.0"; sha256 = "0kmnj3wx1hwxvgp06avn2zw1mzsfjamrgpaav44ir40100g4hdkd"; }) + (fetchNuGet { pname = "Serilog.Sinks.TextWriter"; version = "2.1.0"; sha256 = "0p13m8spj6psybwdw21gjaxw854va8n6m2rbdy0w78q135br1kcd"; }) + (fetchNuGet { pname = "SQLitePCLRaw.bundle_e_sqlite3"; version = "2.1.2"; sha256 = "07rc4pj3rphi8nhzkcvilnm0fv27qcdp68jdwk4g0zjk7yfvbcay"; }) + (fetchNuGet { pname = "SQLitePCLRaw.core"; version = "2.1.2"; sha256 = "19hxv895lairrjmk4gkzd3mcb6b0na45xn4n551h4kckplqadg3d"; }) + (fetchNuGet { pname = "SQLitePCLRaw.lib.e_sqlite3"; version = "2.1.2"; sha256 = "0jn98bkjk8h4smi09z31ib6s6392054lwmkziqmkqf5gf614k2fz"; }) + (fetchNuGet { pname = "SQLitePCLRaw.provider.e_sqlite3"; version = "2.1.2"; sha256 = "0bnm2fhvcsyg5ry74gal2cziqnyf5a8d2cb491vsa7j41hbbx7kv"; }) + (fetchNuGet { pname = "Superpower"; version = "2.3.0"; sha256 = "0bdsc3c0d6jb0wr67siqfba0ldl0jxbwis6xr0whzqzf6m2cyahm"; }) + (fetchNuGet { pname = "System.Buffers"; version = "4.3.0"; sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; }) + (fetchNuGet { pname = "System.Buffers"; version = "4.5.0"; sha256 = "1ywfqn4md6g3iilpxjn5dsr0f5lx6z0yvhqp4pgjcamygg73cz2c"; }) + (fetchNuGet { pname = "System.Buffers"; version = "4.5.1"; sha256 = "04kb1mdrlcixj9zh1xdi5as0k0qi8byr5mi3p3jcxx72qz93s2y3"; }) + (fetchNuGet { pname = "System.Collections"; version = "4.0.11"; sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6"; }) + (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; }) + (fetchNuGet { pname = "System.Collections.Concurrent"; version = "4.3.0"; sha256 = "0wi10md9aq33jrkh2c24wr2n9hrpyamsdhsxdcnf43b7y86kkii8"; }) + (fetchNuGet { pname = "System.Collections.Immutable"; version = "6.0.0"; sha256 = "1js98kmjn47ivcvkjqdmyipzknb9xbndssczm8gq224pbaj1p88c"; }) + (fetchNuGet { pname = "System.ComponentModel.Composition"; version = "6.0.0"; sha256 = "16zfx5mivkkykp76krw8x68izmjf79ldfmn26k9x3m55lmp9i77c"; }) + (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "6.0.0"; sha256 = "0sqapr697jbb4ljkq46msg0xx1qpmc31ivva6llyz2wzq3mpmxbw"; }) + (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.0.11"; sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz"; }) + (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; }) + (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "4.3.0"; sha256 = "0z6m3pbiy0qw6rn3n209rrzf9x1k4002zh90vwcrsym09ipm2liq"; }) + (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "7.0.0"; sha256 = "1jxhvsh5mzdf0sgb4dfmbys1b12ylyr5pcfyj1map354fiq3qsgm"; }) + (fetchNuGet { pname = "System.Diagnostics.PerformanceCounter"; version = "6.0.1"; sha256 = "17p5vwbgrycsrvv9a9ksxbiziy75x4s25dw71fnbw1ci5kpp8yz7"; }) + (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.0.1"; sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x"; }) + (fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; }) + (fetchNuGet { pname = "System.Drawing.Common"; version = "6.0.0"; sha256 = "02n8rzm58dac2np8b3xw8ychbvylja4nh6938l5k2fhyn40imlgz"; }) + (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.0.11"; sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9"; }) + (fetchNuGet { pname = "System.Formats.Asn1"; version = "7.0.0"; sha256 = "1a14kgpqz4k7jhi7bs2gpgf67ym5wpj99203zxgwjypj7x47xhbq"; }) + (fetchNuGet { pname = "System.Globalization"; version = "4.0.11"; sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d"; }) + (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; }) + (fetchNuGet { pname = "System.Globalization.Calendars"; version = "4.3.0"; sha256 = "1xwl230bkakzzkrggy1l1lxmm3xlhk4bq2pkv790j5lm8g887lxq"; }) + (fetchNuGet { pname = "System.Globalization.Extensions"; version = "4.3.0"; sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; }) + (fetchNuGet { pname = "System.Interactive.Async"; version = "5.0.0"; sha256 = "00flf80ahpyhrsny2kfl9bsyh1mxmsdsigpq3rzhaps9wgdbmzjz"; }) + (fetchNuGet { pname = "System.IO"; version = "4.1.0"; sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; }) + (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; }) + (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.0.1"; sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1"; }) + (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.3.0"; sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; }) + (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.0.1"; sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612"; }) + (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; }) + (fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.3"; sha256 = "1jgdazpmwc21dd9naq3l9n5s8a1jnbwlvgkf1pnm0aji6jd4xqdz"; }) + (fetchNuGet { pname = "System.Linq"; version = "4.1.0"; sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5"; }) + (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; }) + (fetchNuGet { pname = "System.Linq.Async"; version = "6.0.1"; sha256 = "10ira8hmv0i54yp9ggrrdm1c06j538sijfjpn1kmnh9j2xk5yzmq"; }) + (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.1.0"; sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; }) + (fetchNuGet { pname = "System.Memory"; version = "4.5.0"; sha256 = "1layqpcx1q4l805fdnj2dfqp6ncx2z42ca06rgsr6ikq4jjgbv30"; }) + (fetchNuGet { pname = "System.Memory"; version = "4.5.1"; sha256 = "0f07d7hny38lq9w69wx4lxkn4wszrqf9m9js6fh9is645csm167c"; }) + (fetchNuGet { pname = "System.Memory"; version = "4.5.3"; sha256 = "0naqahm3wljxb5a911d37mwjqjdxv9l0b49p5dmfyijvni2ppy8a"; }) + (fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; }) + (fetchNuGet { pname = "System.Net.Http"; version = "4.3.4"; sha256 = "0kdp31b8819v88l719j6my0yas6myv9d1viql3qz5577mv819jhl"; }) + (fetchNuGet { pname = "System.Net.Primitives"; version = "4.3.0"; sha256 = "0c87k50rmdgmxx7df2khd9qj7q35j9rzdmm2572cc55dygmdk3ii"; }) + (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.4.0"; sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba"; }) + (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; }) + (fetchNuGet { pname = "System.ObjectModel"; version = "4.0.12"; sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj"; }) + (fetchNuGet { pname = "System.Private.ServiceModel"; version = "4.10.0"; sha256 = "0048hmv4j4wfpa9hwn8d5l3ag3hwmhp5r26iarfbsxj0q3i2d1a8"; }) + (fetchNuGet { pname = "System.Private.ServiceModel"; version = "4.5.3"; sha256 = "0nyw9m9dj327hn0qb0jmgwpch0f40jv301fk4mrchga8g99xbpng"; }) + (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; }) + (fetchNuGet { pname = "System.Reflection"; version = "4.1.0"; sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9"; }) + (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; }) + (fetchNuGet { pname = "System.Reflection.DispatchProxy"; version = "4.5.0"; sha256 = "0v9sg38h91aljvjyc77m1y5v34p50hjdbxvvxwa1whlajhafadcn"; }) + (fetchNuGet { pname = "System.Reflection.DispatchProxy"; version = "4.7.1"; sha256 = "10yh3q2i71gcw7c0dfz9qxql2vlvnqjav1hyf1q9rpbvdbgsabrs"; }) + (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.0.1"; sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp"; }) + (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.0.1"; sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0"; }) + (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.0.1"; sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr"; }) + (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.0.1"; sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn"; }) + (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; }) + (fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss"; }) + (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.0.1"; sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28"; }) + (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; }) + (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.1.0"; sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7"; }) + (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.0.1"; sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi"; }) + (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; }) + (fetchNuGet { pname = "System.Runtime"; version = "4.1.0"; sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; }) + (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; }) + (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.4.0"; sha256 = "0a6ahgi5b148sl5qyfpyw383p3cb4yrkm802k29fsi4mxkiwir29"; }) + (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.5.0"; sha256 = "17labczwqk3jng3kkky73m0jhi8wc21vbl7cz5c0hj2p1dswin43"; }) + (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.5.1"; sha256 = "1xcrjx5fwg284qdnxyi2d0lzdm5q4frlpkp0nf6vvkx1kdz2prrf"; }) + (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "5.0.0"; sha256 = "02k25ivn50dmqx5jn8hawwmz24yf0454fjd823qk6lygj9513q4x"; }) + (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; }) + (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.1.0"; sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z"; }) + (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; }) + (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.0.1"; sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g"; }) + (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; }) + (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.1.0"; sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1"; }) + (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; }) + (fetchNuGet { pname = "System.Runtime.Numerics"; version = "4.3.0"; sha256 = "19rav39sr5dky7afygh309qamqqmi9kcwvz3i0c5700v0c5cg61z"; }) + (fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.1.1"; sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; }) + (fetchNuGet { pname = "System.Security.AccessControl"; version = "6.0.0"; sha256 = "0a678bzj8yxxiffyzy60z2w1nczzpi8v97igr4ip3byd2q89dv58"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Algorithms"; version = "4.3.0"; sha256 = "03sq183pfl5kp7gkvq77myv7kbpdnq3y0xj7vi4q1kaw54sny0ml"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Cng"; version = "4.3.0"; sha256 = "1k468aswafdgf56ab6yrn7649kfqx2wm9aslywjam1hdmk5yypmv"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Csp"; version = "4.3.0"; sha256 = "1x5wcrddf2s3hb8j78cry7yalca4lb5vfnkrysagbn6r9x6xvrx1"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Encoding"; version = "4.3.0"; sha256 = "1jr6w70igqn07k5zs1ph6xja97hxnb3mqbspdrff6cvssgrixs32"; }) + (fetchNuGet { pname = "System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0givpvvj8yc7gv4lhb6s1prq6p2c4147204a0wib89inqzd87gqc"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Pkcs"; version = "7.0.2"; sha256 = "0px6snb8gdb6mpwsqrhlpbkmjgd63h4yamqm2gvyf9rwibymjbm9"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Primitives"; version = "4.3.0"; sha256 = "0pyzncsv48zwly3lw4f2dayqswcfvdwq2nz0dgwmi7fj3pn64wby"; }) + (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "6.0.0"; sha256 = "05kd3a8w7658hjxq9vvszxip30a479fjmfq4bq1r95nrsvs4hbss"; }) + (fetchNuGet { pname = "System.Security.Cryptography.X509Certificates"; version = "4.3.0"; sha256 = "0valjcz5wksbvijylxijjxb1mp38mdhv03r533vnx1q3ikzdav9h"; }) + (fetchNuGet { pname = "System.Security.Cryptography.Xml"; version = "7.0.1"; sha256 = "0p6kx6ag0il7rxxcvm84w141phvr7fafjzxybf920bxwa0jkwzq8"; }) + (fetchNuGet { pname = "System.Security.Permissions"; version = "6.0.0"; sha256 = "0jsl4xdrkqi11iwmisi1r2f2qn5pbvl79mzq877gndw6ans2zhzw"; }) + (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.5.0"; sha256 = "0rmj89wsl5yzwh0kqjgx45vzf694v9p92r4x4q6yxldk1cv1hi86"; }) + (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "5.0.0"; sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8"; }) + (fetchNuGet { pname = "System.ServiceModel.Http"; version = "4.10.0"; sha256 = "1b6dzgrj5ybpr21zh1gnmzbmx7k3xsc53ksmv8ilhj717gpvaz9d"; }) + (fetchNuGet { pname = "System.ServiceModel.Primitives"; version = "4.10.0"; sha256 = "1a1b0li9g7nhmy7r850nprpihkpfhw9gscfbgl38xzyr9crd236w"; }) + (fetchNuGet { pname = "System.ServiceModel.Primitives"; version = "4.5.3"; sha256 = "1v90pci049cn44y0km885k1vrilhb34w6q2zva4y6f3ay84klrih"; }) + (fetchNuGet { pname = "System.Text.Encoding"; version = "4.0.11"; sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; }) + (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; }) + (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "6.0.0"; sha256 = "0gm2kiz2ndm9xyzxgi0jhazgwslcs427waxgfa30m7yqll1kcrww"; }) + (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.0.11"; sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs"; }) + (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; }) + (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "6.0.0"; sha256 = "06n9ql3fmhpjl32g3492sj181zjml5dlcc5l76xq2h38c4f87sai"; }) + (fetchNuGet { pname = "System.Text.Json"; version = "4.6.0"; sha256 = "0ism236hwi0k6axssfq58s1d8lihplwiz058pdvl8al71hagri39"; }) + (fetchNuGet { pname = "System.Text.Json"; version = "6.0.0"; sha256 = "1si2my1g0q0qv1hiqnji4xh9wd05qavxnzj9dwgs23iqvgjky0gl"; }) + (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.1.0"; sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7"; }) + (fetchNuGet { pname = "System.Threading"; version = "4.0.11"; sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls"; }) + (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; }) + (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.0.11"; sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; }) + (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; }) + (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.0.0"; sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; }) + (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; }) + (fetchNuGet { pname = "System.Windows.Extensions"; version = "6.0.0"; sha256 = "1wy9pq9vn1bqg5qnv53iqrbx04yzdmjw4x5yyi09y3459vaa1sip"; }) + (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.0.11"; sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5"; }) + (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.0.11"; sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18"; }) + (fetchNuGet { pname = "YamlDotNet"; version = "12.0.1"; sha256 = "0axlq2xm3lb8kq24b0fsi5yg3gm63fjsy30xkxwngnnx7wd75y2y"; }) +] diff --git a/nixpkgs/pkgs/servers/nosql/eventstore/updater.sh b/nixpkgs/pkgs/servers/nosql/eventstore/updater.sh new file mode 100755 index 000000000000..77c2f733e5f8 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/eventstore/updater.sh @@ -0,0 +1,21 @@ +#! /usr/bin/env nix-shell +#! nix-shell -I nixpkgs=./. -i bash -p curl jq common-updater-scripts +# shellcheck shell=bash + +set -euo pipefail + +cd "$(dirname "${BASH_SOURCE[0]}")" + +new_version="$(curl -s "https://api.github.com/repos/EventStore/EventStore/releases/latest" | jq -r '.name')" +new_version="${new_version#oss-v}" +old_version="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./default.nix)" + +if [[ "$new_version" == "$old_version" ]]; then + echo "Already up to date!" + exit 0 +fi + +cd ../../../.. +update-source-version eventstore "${new_version//v}" + +$(nix-build -A eventstore.fetch-deps --no-out-link) diff --git a/nixpkgs/pkgs/servers/nosql/ferretdb/default.nix b/nixpkgs/pkgs/servers/nosql/ferretdb/default.nix new file mode 100644 index 000000000000..ba46d7f01289 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/ferretdb/default.nix @@ -0,0 +1,46 @@ +{ lib +, buildGo121Module +, fetchFromGitHub +, nixosTests +}: + +buildGo121Module rec { + pname = "ferretdb"; + version = "1.14.0"; + + src = fetchFromGitHub { + owner = "FerretDB"; + repo = "FerretDB"; + rev = "v${version}"; + hash = "sha256-x5In8cBRki3rHaAB+iSglL19UCD8DtITr5gjb8KKuAw="; + }; + + postPatch = '' + echo v${version} > build/version/version.txt + echo nixpkgs > build/version/package.txt + ''; + + vendorHash = "sha256-0DFNDfJmBFpgzarg9FaGb8GV11LhA1N8oq0kSXIWxi8="; + + CGO_ENABLED = 0; + + subPackages = [ "cmd/ferretdb" ]; + + # tests in cmd/ferretdb are not production relevant + doCheck = false; + + # the binary panics if something required wasn't set during compilation + doInstallCheck = true; + installCheckPhase = '' + $out/bin/ferretdb --version | grep ${version} + ''; + + passthru.tests = nixosTests.ferretdb; + + meta = with lib; { + description = "A truly Open Source MongoDB alternative"; + homepage = "https://www.ferretdb.io/"; + license = licenses.asl20; + maintainers = with maintainers; [ dit7ya noisersup julienmalka ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/immudb/default.nix b/nixpkgs/pkgs/servers/nosql/immudb/default.nix new file mode 100644 index 000000000000..716f9f0a9f74 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/immudb/default.nix @@ -0,0 +1,62 @@ +{ lib +, buildGoModule +, fetchFromGitHub +, fetchzip +, installShellFiles +}: + +let + webconsoleVersion = "1.0.18"; + webconsoleDist = fetchzip { + url = "https://github.com/codenotary/immudb-webconsole/releases/download/v${webconsoleVersion}/immudb-webconsole.tar.gz"; + sha256 = "sha256-4BhTK+gKO8HW1CelGa30THpfkqfqFthK+b7p9QWl4Pw="; + }; +in +buildGoModule rec { + pname = "immudb"; + version = "1.5.0"; + + src = fetchFromGitHub { + owner = "codenotary"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-xvbks6dUiS14cntydAjSNTujxsSwYzmf+B4Zh4V/NwI="; + }; + + preBuild = '' + mkdir -p webconsole/dist + cp -r ${webconsoleDist}/* ./webconsole/dist + go generate -tags webconsole ./webconsole + ''; + + vendorHash = "sha256-7mMutYx2/jmTx+7h9S412fYCFXiJnTGz0qwDSO7BIzM="; + + nativeBuildInputs = [ installShellFiles ]; + + tags = [ "webconsole" ]; + + ldflags = [ "-X github.com/codenotary/immudb/cmd/version.Version=${version}" ]; + + subPackages = [ + "cmd/immudb" + "cmd/immuclient" + "cmd/immuadmin" + ]; + + postInstall = '' + mkdir -p share/completions + for executable in immudb immuclient immuadmin; do + for shell in bash fish zsh; do + $out/bin/$executable completion $shell > share/completions/$executable.$shell + installShellCompletion share/completions/$executable.$shell + done + done + ''; + + meta = with lib; { + description = "Immutable database based on zero trust, SQL and Key-Value, tamperproof, data change history"; + homepage = "https://github.com/codenotary/immudb"; + license = licenses.asl20; + maintainers = with maintainers; [ dit7ya ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/influxdb/default.nix b/nixpkgs/pkgs/servers/nosql/influxdb/default.nix new file mode 100644 index 000000000000..180f22684578 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/influxdb/default.nix @@ -0,0 +1,88 @@ +{ lib, buildGoModule, fetchFromGitHub, stdenv, pkg-config, rustPlatform, libiconv, fetchpatch, nixosTests }: + +let + libflux_version = "0.170.1"; + + # This is copied from influxdb2 with flux version matching the needed by thi + flux = rustPlatform.buildRustPackage rec { + pname = "libflux"; + version = "v${libflux_version}"; + src = fetchFromGitHub { + owner = "influxdata"; + repo = "flux"; + rev = "v${libflux_version}"; + sha256 = "sha256-P3SpleOVbL+nGWdscwjj9yWqRdck/9JsAwuJtGOO7N8="; + }; + patches = [ + # https://github.com/influxdata/flux/pull/5273 + # fix compile error with Rust 1.64 + (fetchpatch { + url = "https://github.com/influxdata/flux/commit/20ca62138a0669f2760dd469ca41fc333e04b8f2.patch"; + stripLen = 2; + extraPrefix = ""; + sha256 = "sha256-Fb4CuH9ZvrPha249dmLLI8MqSNQRKqKPxPbw2pjqwfY="; + }) + ]; + sourceRoot = "${src.name}/libflux"; + cargoSha256 = "sha256-kYiZ5ZRiFHRf1RQeeUGjIhnEkTvhNSZ0t4tidpRIDyk="; + nativeBuildInputs = [ rustPlatform.bindgenHook ]; + buildInputs = lib.optional stdenv.isDarwin libiconv; + pkgcfg = '' + Name: flux + Version: ${libflux_version} + Description: Library for the InfluxData Flux engine + Cflags: -I/out/include + Libs: -L/out/lib -lflux -lpthread + ''; + passAsFile = [ "pkgcfg" ]; + postInstall = '' + mkdir -p $out/include $out/pkgconfig + cp -r $NIX_BUILD_TOP/source/libflux/include/influxdata $out/include + substitute $pkgcfgPath $out/pkgconfig/flux.pc \ + --replace /out $out + '' + lib.optionalString stdenv.isDarwin '' + install_name_tool -id $out/lib/libflux.dylib $out/lib/libflux.dylib + ''; + }; +in +buildGoModule rec { + pname = "influxdb"; + version = "1.10.0"; + + src = fetchFromGitHub { + owner = "influxdata"; + repo = pname; + rev = "v${version}"; + sha256 = "sha256-BMHR9EdYC+8oA0he7emzBRmNnHn15nO/5NqsLcr+R0k="; + }; + + vendorHash = "sha256-AY04cmfg7vbrWR4+LBuCFYqBgQJBXlPpO+2oj0qqjM4="; + + nativeBuildInputs = [ pkg-config ]; + + PKG_CONFIG_PATH = "${flux}/pkgconfig"; + + # Check that libflux is at the right version + preBuild = '' + flux_ver=$(grep github.com/influxdata/flux go.mod | awk '{print $2}') + if [ "$flux_ver" != "v${libflux_version}" ]; then + echo "go.mod wants libflux $flux_ver, but nix derivation provides ${libflux_version}" + exit 1 + fi + ''; + + doCheck = false; + + ldflags = [ "-s" "-w" "-X main.version=${version}" ]; + + excludedPackages = "test"; + + passthru.tests = { inherit (nixosTests) influxdb; }; + + meta = with lib; { + description = "An open-source distributed time series database"; + license = licenses.mit; + homepage = "https://influxdata.com/"; + maintainers = with maintainers; [ offline zimbatm ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/influxdb2/cli.nix b/nixpkgs/pkgs/servers/nosql/influxdb2/cli.nix new file mode 100644 index 000000000000..dc7395a7eb7f --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/influxdb2/cli.nix @@ -0,0 +1,34 @@ +{ buildGoModule +, buildGoPackage +, fetchFromGitHub +, lib +}: + +let + version = "2.7.3"; + + src = fetchFromGitHub { + owner = "influxdata"; + repo = "influx-cli"; + rev = "v${version}"; + sha256 = "sha256-hRv7f2NeURsgLQ1zNgAhZvTjS0ei4+5lqokIu0iN+aI="; + }; + +in buildGoModule { + pname = "influx-cli"; + version = version; + inherit src; + + vendorHash = "sha256-QNhL5RPkNLTXoQ0NqcZuKec3ZBc3CDTc/XTWvjy55wk="; + subPackages = [ "cmd/influx" ]; + + ldflags = [ "-X main.commit=v${version}" "-X main.version=${version}" ]; + + meta = with lib; { + description = "CLI for managing resources in InfluxDB v2"; + license = licenses.mit; + homepage = "https://influxdata.com/"; + maintainers = with maintainers; [ abbradar danderson ]; + mainProgram = "influx"; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/influxdb2/combined.nix b/nixpkgs/pkgs/servers/nosql/influxdb2/combined.nix new file mode 100644 index 000000000000..285c94d01580 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/influxdb2/combined.nix @@ -0,0 +1,12 @@ +{ + buildEnv, + influxdb2-server, + influxdb2-cli, +}: +buildEnv { + name = "influxdb2"; + paths = [ + influxdb2-server + influxdb2-cli + ]; +} diff --git a/nixpkgs/pkgs/servers/nosql/influxdb2/default.nix b/nixpkgs/pkgs/servers/nosql/influxdb2/default.nix new file mode 100644 index 000000000000..7013b0cd6806 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/influxdb2/default.nix @@ -0,0 +1,128 @@ +{ buildGoModule +, fetchFromGitHub +, fetchurl +, fetchpatch +, go-bindata +, lib +, perl +, pkg-config +, rustPlatform +, stdenv +, libiconv +, nixosTests +}: + +let + version = "2.7.1"; + ui_version = "OSS-v${version}"; + libflux_version = "0.193.0"; + + src = fetchFromGitHub { + owner = "influxdata"; + repo = "influxdb"; + rev = "v${version}"; + hash = "sha256-JWu4V2k8ItbzBa421EtzgMVlDznoDdGjIhfDSaZ0j6c="; + }; + + ui = fetchurl { + url = "https://github.com/influxdata/ui/releases/download/${ui_version}/build.tar.gz"; + hash = "sha256-0k59SKvt9pFt3WSd5PRUThbfbctt2RYtaxaxoyLICm8="; + }; + + flux = rustPlatform.buildRustPackage { + pname = "libflux"; + version = "v${libflux_version}"; + src = fetchFromGitHub { + owner = "influxdata"; + repo = "flux"; + rev = "v${libflux_version}"; + hash = "sha256-gx6vnGOFu35wasLl7X/73eDsE0/50cAzjmBjZ+H2Ne4="; + }; + patches = [ + # Fix build with recent rust versions + (fetchpatch { + url = "https://github.com/influxdata/flux/commit/6dc8054cfeec4b65b5c7ae786d633240868b8589.patch"; + stripLen = 2; + extraPrefix = ""; + excludes = [ "rust-toolchain.toml" ]; + hash = "sha256-w3z+Z26Xhy9TNICyNhc8XiWNSpdLA23ADI4K/AOMYhg="; + }) + ./no-deny-warnings.patch + ]; + sourceRoot = "${src.name}/libflux"; + cargoSha256 = "sha256-MoI5nxLGA/3pduZ+vgmSG3lm3Nx58SP+6WXQl2pX9Lc="; + nativeBuildInputs = [ rustPlatform.bindgenHook ]; + buildInputs = lib.optional stdenv.isDarwin libiconv; + pkgcfg = '' + Name: flux + Version: ${libflux_version} + Description: Library for the InfluxData Flux engine + Cflags: -I/out/include + Libs: -L/out/lib -lflux -lpthread + ''; + passAsFile = [ "pkgcfg" ]; + postInstall = '' + mkdir -p $out/include $out/pkgconfig + cp -r $NIX_BUILD_TOP/source/libflux/include/influxdata $out/include + substitute $pkgcfgPath $out/pkgconfig/flux.pc \ + --replace /out $out + '' + lib.optionalString stdenv.isDarwin '' + install_name_tool -id $out/lib/libflux.dylib $out/lib/libflux.dylib + ''; + }; + +in buildGoModule { + pname = "influxdb"; + version = version; + inherit src; + + nativeBuildInputs = [ go-bindata pkg-config perl ]; + + vendorHash = "sha256-5b1WRq3JndkOkKBhMzGZnSyBDY5Lk0UGe/WGHQJp0CQ="; + subPackages = [ "cmd/influxd" "cmd/telemetryd" ]; + + PKG_CONFIG_PATH = "${flux}/pkgconfig"; + + postPatch = '' + # use go-bindata from environment + substituteInPlace static/static.go \ + --replace 'go run github.com/kevinburke/go-bindata/' "" + ''; + + # Check that libflux and the UI are at the right version, and embed + # the UI assets into the Go source tree. + preBuild = '' + ( + flux_ver=$(grep github.com/influxdata/flux go.mod | awk '{print $2}') + if [ "$flux_ver" != "v${libflux_version}" ]; then + echo "go.mod wants libflux $flux_ver, but nix derivation provides ${libflux_version}" + exit 1 + fi + + ui_ver=$(egrep 'UI_RELEASE=".*"' scripts/fetch-ui-assets.sh | cut -d'"' -f2) + if [ "$ui_ver" != "${ui_version}" ]; then + echo "scripts/fetch-ui-assets.sh wants UI $ui_ver, but nix derivation provides ${ui_version}" + exit 1 + fi + ) + + mkdir -p static/data + tar -xzf ${ui} -C static/data + pushd static + go generate + popd + ''; + + tags = [ "assets" ]; + + ldflags = [ "-X main.commit=v${version}" "-X main.version=${version}" ]; + + passthru.tests = { inherit (nixosTests) influxdb2; }; + + meta = with lib; { + description = "An open-source distributed time series database"; + license = licenses.mit; + homepage = "https://influxdata.com/"; + maintainers = with maintainers; [ abbradar danderson ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/influxdb2/no-deny-warnings.patch b/nixpkgs/pkgs/servers/nosql/influxdb2/no-deny-warnings.patch new file mode 100644 index 000000000000..3000ccad8256 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/influxdb2/no-deny-warnings.patch @@ -0,0 +1,10 @@ +diff --git a/flux/src/lib.rs b/flux/src/lib.rs +index 3fdf4071..a4c02277 100644 +--- a/flux/src/lib.rs ++++ b/flux/src/lib.rs +@@ -1,5 +1,3 @@ +-#![cfg_attr(feature = "strict", deny(warnings, missing_docs))] +- + //! This module provides the public facing API for Flux's Go runtime, including formatting, + //! parsing, and standard library analysis. + use std::sync::Arc; diff --git a/nixpkgs/pkgs/servers/nosql/influxdb2/provision.nix b/nixpkgs/pkgs/servers/nosql/influxdb2/provision.nix new file mode 100644 index 000000000000..dfb1d6083a71 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/influxdb2/provision.nix @@ -0,0 +1,34 @@ +{ lib +, stdenv +, fetchFromGitHub +, python3Packages +, makeWrapper +}: + +stdenv.mkDerivation rec { + pname = "influxdb2-provision"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "oddlama"; + repo = "influxdb2-provision"; + rev = "v${version}"; + hash = "sha256-kgpUtXmwy9buupNzQj/6AIeN8XG2x0XjIckK3WIFC+I="; + }; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ python3Packages.python python3Packages.influxdb-client ]; + + installPhase = '' + install -Dm0555 influxdb2-provision.py $out/bin/influxdb2-provision + wrapProgram $out/bin/influxdb2-provision --prefix PYTHONPATH : "$PYTHONPATH" + ''; + + meta = with lib; { + description = "A small utility to help provisioning influxdb2"; + homepage = "https://github.com/oddlama/influxdb2-provision"; + license = licenses.mit; + maintainers = with maintainers; [oddlama]; + mainProgram = "influxdb2-provision"; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/influxdb2/token-manipulator.nix b/nixpkgs/pkgs/servers/nosql/influxdb2/token-manipulator.nix new file mode 100644 index 000000000000..88713941b465 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/influxdb2/token-manipulator.nix @@ -0,0 +1,26 @@ +{ buildGoModule +, fetchFromGitHub +, lib +}: + +buildGoModule rec { + pname = "influxdb2-token-manipulator"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "oddlama"; + repo = "influxdb2-token-manipulator"; + rev = "v${version}"; + hash = "sha256-9glz+TdqvGJgSsbLm4J/fn7kzMC75z74/jxZrEZiooc="; + }; + + vendorHash = "sha256-zBZk7JbNILX18g9+2ukiESnFtnIVWhdN/J/MBhIITh8="; + + meta = with lib; { + description = "Utility program to manipulate influxdb api tokens for declarative setups"; + homepage = "https://github.com/oddlama/influxdb2-token-manipulator"; + license = licenses.mit; + maintainers = with maintainers; [oddlama]; + mainProgram = "influxdb2-token-manipulator"; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/janusgraph/default.nix b/nixpkgs/pkgs/servers/nosql/janusgraph/default.nix new file mode 100644 index 000000000000..36385fd46cca --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/janusgraph/default.nix @@ -0,0 +1,48 @@ +{ lib, stdenv, fetchzip, jdk11, makeWrapper }: + +stdenv.mkDerivation rec { + pname = "janusgraph"; + version = "0.6.4"; + + src = fetchzip { + url = "https://github.com/JanusGraph/janusgraph/releases/download/v${version}/janusgraph-${version}.zip"; + sha256 = "sha256-rfqZE7HYgudVjrz+Ij+ggltaBXvYbczgRwCqsNTojTg="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p $out/bin $out/share/janusgraph + install -D $src/lib/*.jar $out/share/janusgraph + cd $src + find conf scripts -type f -exec install -D {} $out/share/janusgraph/{} \; + + JANUSGRAPH_LIB=$out/share/janusgraph + classpath="" + # Add the slf4j-log4j12 binding + classpath="$classpath":$(find -L $JANUSGRAPH_LIB -name 'slf4j-log4j12*.jar' | sort | tr '\n' ':') + # Add the jars in $JANUSGRAPH_LIB that start with "janusgraph" + classpath="$classpath":$(find -L $JANUSGRAPH_LIB -name 'janusgraph*.jar' | sort | tr '\n' ':') + # Add the remaining jars in $JANUSGRAPH_LIB. + classpath="$classpath":$(find -L $JANUSGRAPH_LIB -name '*.jar' \ + \! -name 'janusgraph*' \ + \! -name 'slf4j-log4j12*.jar' | sort | tr '\n' ':') + + makeWrapper ${jdk11}/bin/java $out/bin/janusgraph-server \ + --add-flags "-classpath $classpath org.janusgraph.graphdb.server.JanusGraphServer" + + # temporary workaround for + # https://github.com/NixOS/nixpkgs/pull/244400#issuecomment-1667330430 + cd "$TMPDIR" + ''; + + meta = with lib; { + description = "An open-source, distributed graph database"; + homepage = "https://janusgraph.org/"; + mainProgram = "janusgraph-server"; + license = licenses.asl20; + platforms = platforms.unix; + maintainers = [ maintainers.ners ]; + }; +} + diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/4.4.nix b/nixpkgs/pkgs/servers/nosql/mongodb/4.4.nix new file mode 100644 index 000000000000..001b473ff5d6 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/4.4.nix @@ -0,0 +1,20 @@ +{ stdenv, callPackage, lib, fetchpatch, sasl, boost, Security, CoreFoundation, cctools }: + +let + buildMongoDB = callPackage ./mongodb.nix { + inherit sasl boost Security CoreFoundation cctools; + }; +in +buildMongoDB { + version = "4.4.25"; + sha256 = "sha256-oE5bs9M0E43e+8tmZaRkA/GtbKG5uZ+3Pf0sJiddTJk="; + patches = [ + ./forget-build-dependencies-4-4.patch + ./fix-build-with-boost-1.79-4_4.patch + (fetchpatch { + name = "mongodb-4.4.15-adjust-the-cache-alignment-assumptions.patch"; + url = "https://aur.archlinux.org/cgit/aur.git/plain/mongodb-4.4.15-adjust-cache-alignment-assumptions.patch.arm64?h=mongodb44"; + sha256 = "Ah4zdSFgXUJ/HSN8VRLJqDpNy3CjMCBnRqlpALXzx+g="; + }) + ] ++ lib.optionals stdenv.isDarwin [ ./asio-no-experimental-string-view-4-4.patch ]; +} diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/5.0.nix b/nixpkgs/pkgs/servers/nosql/mongodb/5.0.nix new file mode 100644 index 000000000000..05fed1ac9204 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/5.0.nix @@ -0,0 +1,28 @@ +{ stdenv, callPackage, lib, sasl, boost, Security, CoreFoundation, cctools }: + +let + buildMongoDB = callPackage ./mongodb.nix { + inherit sasl boost Security CoreFoundation cctools; + }; + variants = if stdenv.isLinux then + { + version = "5.0.22"; + sha256 = "sha256-NIsx6nwXGsuk+ff+LOCwOMpT/HAaNn89t4jtJvKprIA="; + patches = [ ./fix-build-with-boost-1.79-5_0-linux.patch ]; + } + else lib.optionalAttrs stdenv.isDarwin + { + version = "5.0.3"; # at least darwin has to stay on 5.0.3 until the SDK used by nixpkgs is bumped to 10.13 + sha256 = "1p9pq0dfd6lynvnz5p1c8dqp4filzrz86j840xwxwx82dm1zl6p0"; + patches = [ ./fix-build-with-boost-1.79-5_0.patch ]; # no darwin in name to prevent unnecessary rebuild + }; +in +buildMongoDB { + version = variants.version; + sha256 = variants.sha256; + patches = [ + ./forget-build-dependencies-4-4.patch + ./asio-no-experimental-string-view-4-4.patch + ./fix-gcc-Wno-exceptions-5.0.patch + ] ++ variants.patches; +} diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/6.0.nix b/nixpkgs/pkgs/servers/nosql/mongodb/6.0.nix new file mode 100644 index 000000000000..8d7d6fbe78f6 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/6.0.nix @@ -0,0 +1,18 @@ +{ stdenv, callPackage, lib, fetchpatch, sasl, boost, Security, CoreFoundation, cctools }: + +let + buildMongoDB = callPackage ./mongodb.nix { + inherit sasl boost Security CoreFoundation cctools stdenv; + }; +in +buildMongoDB { + version = "6.0.11"; + sha256 = "sha256-hIbbCDQ0Sqnm6ohtEpbdGWk18nLIlr6T0T9UL6WAFA8="; + patches = [ + (fetchpatch { + name = "mongodb-6.1.0-rc-more-specific-cache-alignment-types.patch"; + url = "https://github.com/mongodb/mongo/commit/5435f9585f857f6145beaf6d31daf336453ba86f.patch"; + sha256 = "sha256-gWlE2b/NyGe2243iNCXzjcERIY8/4ZWI4Gjh5SF0tYA="; + }) + ]; +} diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-4.patch b/nixpkgs/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-4.patch new file mode 100644 index 000000000000..b27145d57ecf --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/asio-no-experimental-string-view-4-4.patch @@ -0,0 +1,23 @@ +--- a/src/third_party/asio-master/asio/include/asio/detail/config.hpp +--- b/src/third_party/asio-master/asio/include/asio/detail/config.hpp +@@ -831,20 +831,8 @@ + # endif // (__cplusplus >= 201402) + # endif // (_LIBCPP_VERSION < 7000) + # else // defined(ASIO_HAS_CLANG_LIBCXX) +-# if (__cplusplus >= 201402) +-# if __has_include(<experimental/string_view>) +-# define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1 +-# endif // __has_include(<experimental/string_view>) +-# endif // (__cplusplus >= 201402) + # endif // // defined(ASIO_HAS_CLANG_LIBCXX) + # endif // defined(__clang__) +-# if defined(__GNUC__) +-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4) +-# if (__cplusplus >= 201402) +-# define ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW 1 +-# endif // (__cplusplus >= 201402) +-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4) +-# endif // defined(__GNUC__) + # endif // !defined(ASIO_DISABLE_STD_EXPERIMENTAL_STRING_VIEW) + #endif // !defined(ASIO_HAS_STD_EXPERIMENTAL_STRING_VIEW) + diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-4_4.patch b/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-4_4.patch new file mode 100644 index 000000000000..72da249f2380 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-4_4.patch @@ -0,0 +1,93 @@ +From f0c7e9190e9d61515ab3f95c6665754d3b972cd1 Mon Sep 17 00:00:00 2001 +From: Et7f3 <cadeaudeelie@gmail.com> +Date: Tue, 19 Jul 2022 22:11:11 +0200 +Subject: [PATCH] build: Upgrade boost to 1.79.0 + +We can see in src/third_party/boost-1.70.0/boost/version.hpp that vendored +version of boost is BOOST_LIB_VERSION "1_70" + +We can also see the doc desbribe 2 headers to use filesystems lib: One is +src/third_party/boost/boost/filesystem/fstream.hpp that contains (175-177) + typedef basic_ifstream<char> ifstream; + typedef basic_ofstream<char> ofstream; + typedef basic_fstream<char> fstream; + +So this mean they mostly forgot to include a header and include-what-you-use +would catch this error. + +In upstream they fixed in a simmilar way +https://github.com/mongodb/mongo/commit/13389dc222fc372442be8c147e09685bb9a26a3a + +Co-Authored-By: Adrian Pistol <vifino@tty.sh> +--- + src/mongo/db/storage/storage_repair_observer.cpp | 1 + + src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp | 1 + + src/mongo/shell/shell_utils_extended.cpp | 1 + + src/mongo/util/processinfo_linux.cpp | 2 +- + src/mongo/util/stacktrace_threads.cpp | 1 + + 5 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/mongo/db/storage/storage_repair_observer.cpp b/src/mongo/db/storage/storage_repair_observer.cpp +index 22b76a6a39c..453f48229cd 100644 +--- a/src/mongo/db/storage/storage_repair_observer.cpp ++++ b/src/mongo/db/storage/storage_repair_observer.cpp +@@ -42,6 +42,7 @@ + #endif + + #include <boost/filesystem/path.hpp> ++#include <boost/filesystem/fstream.hpp> + + #include "mongo/db/dbhelpers.h" + #include "mongo/db/operation_context.h" +diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp +index ee87aca4723..bde2c1b2b83 100644 +--- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp ++++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp +@@ -37,6 +37,7 @@ + + #include <boost/filesystem.hpp> + #include <boost/filesystem/path.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <pcrecpp.h> + + #include "mongo/base/simple_string_data_comparator.h" +diff --git a/src/mongo/shell/shell_utils_extended.cpp b/src/mongo/shell/shell_utils_extended.cpp +index 8cd7f035f1d..cd672eb513f 100644 +--- a/src/mongo/shell/shell_utils_extended.cpp ++++ b/src/mongo/shell/shell_utils_extended.cpp +@@ -37,6 +37,7 @@ + #endif + + #include <boost/filesystem.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <fstream> + + #include "mongo/bson/bson_validate.h" +diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp +index 9063f140988..d74949d45fc 100644 +--- a/src/mongo/util/processinfo_linux.cpp ++++ b/src/mongo/util/processinfo_linux.cpp +@@ -33,7 +33,7 @@ + + #include "processinfo.h" + +-#include <iostream> ++#include <fstream> + #include <malloc.h> + #include <pcrecpp.h> + #include <sched.h> +diff --git a/src/mongo/util/stacktrace_threads.cpp b/src/mongo/util/stacktrace_threads.cpp +index 4667a261ab7..73a36015bd6 100644 +--- a/src/mongo/util/stacktrace_threads.cpp ++++ b/src/mongo/util/stacktrace_threads.cpp +@@ -36,6 +36,7 @@ + #include <array> + #include <atomic> + #include <boost/filesystem.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <cctype> + #include <cstdint> + #include <cstdlib> +-- +2.39.2 + diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-5_0-linux.patch b/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-5_0-linux.patch new file mode 100644 index 000000000000..eb205bd92894 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-5_0-linux.patch @@ -0,0 +1,90 @@ +From fb846bdbd07cc3b8ada6179dccd974072c2b69da Mon Sep 17 00:00:00 2001 +From: Et7f3 <cadeaudeelie@gmail.com> +Date: Tue, 19 Jul 2022 22:01:56 +0200 +Subject: [PATCH] build: Upgrade boost to 1.79.0 + +We can see in src/third_party/boost/boost/version.hpp that vendored version of +boost is BOOST_LIB_VERSION "1_76" + +We can also see the doc desbribe 2 headers to use filesystems lib: One is +src/third_party/boost/boost/filesystem/fstream.hpp that contains (175-177) + typedef basic_ifstream<char> ifstream; + typedef basic_ofstream<char> ofstream; + typedef basic_fstream<char> fstream; + +So this mean they mostly forgot to include a header and include-what-you-use +would catch this error. + +In upstream they fixed in a simmilar way +https://github.com/mongodb/mongo/commit/13389dc222fc372442be8c147e09685bb9a26a3a +--- + src/mongo/db/storage/storage_repair_observer.cpp | 1 + + src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp | 1 + + src/mongo/shell/shell_utils_extended.cpp | 1 + + src/mongo/util/processinfo_linux.cpp | 1 + + src/mongo/util/stacktrace_threads.cpp | 1 + + 5 files changed, 5 insertions(+) + +diff --git a/src/mongo/db/storage/storage_repair_observer.cpp b/src/mongo/db/storage/storage_repair_observer.cpp +index 22b76a6a39c..453f48229cd 100644 +--- a/src/mongo/db/storage/storage_repair_observer.cpp ++++ b/src/mongo/db/storage/storage_repair_observer.cpp +@@ -42,6 +42,7 @@ + #endif + + #include <boost/filesystem/path.hpp> ++#include <boost/filesystem/fstream.hpp> + + #include "mongo/db/dbhelpers.h" + #include "mongo/db/operation_context.h" +diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp +index 2f032e4..d1a90e0 100644 +--- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp ++++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp +@@ -37,6 +37,7 @@ + + #include <boost/filesystem.hpp> + #include <boost/filesystem/path.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <pcrecpp.h> + + #include "mongo/base/simple_string_data_comparator.h" +diff --git a/src/mongo/shell/shell_utils_extended.cpp b/src/mongo/shell/shell_utils_extended.cpp +index fbdddc1318d..e37d4c93a11 100644 +--- a/src/mongo/shell/shell_utils_extended.cpp ++++ b/src/mongo/shell/shell_utils_extended.cpp +@@ -37,6 +37,7 @@ + #endif + + #include <boost/filesystem.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <fmt/format.h> + #include <fstream> + +diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp +index eae0e9b7764..d5cd40f6039 100644 +--- a/src/mongo/util/processinfo_linux.cpp ++++ b/src/mongo/util/processinfo_linux.cpp +@@ -52,6 +52,7 @@ + #endif + + #include <boost/filesystem.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <boost/none.hpp> + #include <boost/optional.hpp> + #include <fmt/format.h> +diff --git a/src/mongo/util/stacktrace_threads.cpp b/src/mongo/util/stacktrace_threads.cpp +index d2ee29d24b4..d485fa22367 100644 +--- a/src/mongo/util/stacktrace_threads.cpp ++++ b/src/mongo/util/stacktrace_threads.cpp +@@ -36,6 +36,7 @@ + #include <array> + #include <atomic> + #include <boost/filesystem.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <cstdint> + #include <cstdlib> + #include <dirent.h> +-- +2.32.1 (Apple Git-133) + diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-5_0.patch b/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-5_0.patch new file mode 100644 index 000000000000..d00ed5e77d67 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/fix-build-with-boost-1.79-5_0.patch @@ -0,0 +1,90 @@ +From fb846bdbd07cc3b8ada6179dccd974072c2b69da Mon Sep 17 00:00:00 2001 +From: Et7f3 <cadeaudeelie@gmail.com> +Date: Tue, 19 Jul 2022 22:01:56 +0200 +Subject: [PATCH] build: Upgrade boost to 1.79.0 + +We can see in src/third_party/boost/boost/version.hpp that vendored version of +boost is BOOST_LIB_VERSION "1_76" + +We can also see the doc desbribe 2 headers to use filesystems lib: One is +src/third_party/boost/boost/filesystem/fstream.hpp that contains (175-177) + typedef basic_ifstream<char> ifstream; + typedef basic_ofstream<char> ofstream; + typedef basic_fstream<char> fstream; + +So this mean they mostly forgot to include a header and include-what-you-use +would catch this error. + +In upstream they fixed in a simmilar way +https://github.com/mongodb/mongo/commit/13389dc222fc372442be8c147e09685bb9a26a3a +--- + src/mongo/db/storage/storage_repair_observer.cpp | 1 + + src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp | 1 + + src/mongo/shell/shell_utils_extended.cpp | 1 + + src/mongo/util/processinfo_linux.cpp | 1 + + src/mongo/util/stacktrace_threads.cpp | 1 + + 5 files changed, 5 insertions(+) + +diff --git a/src/mongo/db/storage/storage_repair_observer.cpp b/src/mongo/db/storage/storage_repair_observer.cpp +index 22b76a6a39c..453f48229cd 100644 +--- a/src/mongo/db/storage/storage_repair_observer.cpp ++++ b/src/mongo/db/storage/storage_repair_observer.cpp +@@ -42,6 +42,7 @@ + #endif + + #include <boost/filesystem/path.hpp> ++#include <boost/filesystem/fstream.hpp> + + #include "mongo/db/dbhelpers.h" + #include "mongo/db/operation_context.h" +diff --git a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp +index 07fabadd634..2924a2c74af 100644 +--- a/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp ++++ b/src/mongo/db/storage/wiredtiger/wiredtiger_util.cpp +@@ -37,6 +37,7 @@ + + #include <boost/filesystem.hpp> + #include <boost/filesystem/path.hpp> ++#include <boost/filesystem/fstream.hpp> + + #include "mongo/base/simple_string_data_comparator.h" + #include "mongo/bson/bsonobjbuilder.h" +diff --git a/src/mongo/shell/shell_utils_extended.cpp b/src/mongo/shell/shell_utils_extended.cpp +index fbdddc1318d..e37d4c93a11 100644 +--- a/src/mongo/shell/shell_utils_extended.cpp ++++ b/src/mongo/shell/shell_utils_extended.cpp +@@ -37,6 +37,7 @@ + #endif + + #include <boost/filesystem.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <fmt/format.h> + #include <fstream> + +diff --git a/src/mongo/util/processinfo_linux.cpp b/src/mongo/util/processinfo_linux.cpp +index eae0e9b7764..d5cd40f6039 100644 +--- a/src/mongo/util/processinfo_linux.cpp ++++ b/src/mongo/util/processinfo_linux.cpp +@@ -52,6 +52,7 @@ + #endif + + #include <boost/filesystem.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <boost/none.hpp> + #include <boost/optional.hpp> + #include <fmt/format.h> +diff --git a/src/mongo/util/stacktrace_threads.cpp b/src/mongo/util/stacktrace_threads.cpp +index d2ee29d24b4..d485fa22367 100644 +--- a/src/mongo/util/stacktrace_threads.cpp ++++ b/src/mongo/util/stacktrace_threads.cpp +@@ -36,6 +36,7 @@ + #include <array> + #include <atomic> + #include <boost/filesystem.hpp> ++#include <boost/filesystem/fstream.hpp> + #include <cstdint> + #include <cstdlib> + #include <dirent.h> +-- +2.32.1 (Apple Git-133) + diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/fix-gcc-Wno-exceptions-5.0.patch b/nixpkgs/pkgs/servers/nosql/mongodb/fix-gcc-Wno-exceptions-5.0.patch new file mode 100644 index 000000000000..b8803911968b --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/fix-gcc-Wno-exceptions-5.0.patch @@ -0,0 +1,44 @@ +From e78b2bf6eaa0c43bd76dbb841add167b443d2bb0 Mon Sep 17 00:00:00 2001 +From: Mark Benvenuto <mark.benvenuto@mongodb.com> +Date: Mon, 21 Jun 2021 11:36:56 -0400 +Subject: [PATCH] SERVER-57688 Fix debug gcc 11 and clang 12 builds on Fedora + 34 + +--- + SConstruct | 4 ---- + src/mongo/db/query/plan_summary_stats.h | 4 +++- + src/mongo/util/shim_boost_assert.cpp | 1 + + 3 files changed, 4 insertions(+), 5 deletions(-) + +diff --git a/SConstruct b/SConstruct +index 25fd4a248d0c..23cff6f9da53 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -3108,10 +3108,6 @@ def doConfigure(myenv): + # harmful to capture unused variables we are suppressing for now with a plan to fix later. + AddToCCFLAGSIfSupported(myenv, "-Wno-unused-lambda-capture") + +- # This warning was added in clang-5 and incorrectly flags our implementation of +- # exceptionToStatus(). See https://bugs.llvm.org/show_bug.cgi?id=34804 +- AddToCCFLAGSIfSupported(myenv, "-Wno-exceptions") +- + # Enable sized deallocation support. + AddToCXXFLAGSIfSupported(myenv, '-fsized-deallocation') + +diff --git a/src/mongo/db/query/plan_summary_stats.h b/src/mongo/db/query/plan_summary_stats.h +index 58677ab20d25..cfaa2053d16f 100644 +--- a/src/mongo/db/query/plan_summary_stats.h ++++ b/src/mongo/db/query/plan_summary_stats.h +@@ -29,9 +29,11 @@ + + #pragma once + +-#include "mongo/util/container_size_helper.h" ++#include <optional> + #include <string> + ++#include "mongo/util/container_size_helper.h" ++ + namespace mongo { + + /** diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-4.patch b/nixpkgs/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-4.patch new file mode 100644 index 000000000000..1c3e0982a8c1 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/forget-build-dependencies-4-4.patch @@ -0,0 +1,33 @@ +--- a/site_scons/mongo/generators.py ++++ b/site_scons/mongo/generators.py +@@ -34,30 +34,12 @@ def default_buildinfo_environment_data(): + False, + ), + ( +- 'ccflags', +- '$CCFLAGS', +- True, +- False, +- ), +- ( + 'cxx', + '$CXX_VERSION', + True, + False, + ), + ( +- 'cxxflags', +- '$CXXFLAGS', +- True, +- False, +- ), +- ( +- 'linkflags', +- '$LINKFLAGS', +- True, +- False, +- ), +- ( + 'target_arch', + '$TARGET_ARCH', + True, diff --git a/nixpkgs/pkgs/servers/nosql/mongodb/mongodb.nix b/nixpkgs/pkgs/servers/nosql/mongodb/mongodb.nix new file mode 100644 index 000000000000..df7efb33b68e --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/mongodb/mongodb.nix @@ -0,0 +1,199 @@ +{ lib +, stdenv +, fetchurl +, scons_3_1_2 +, boost +, gperftools +, pcre-cpp +, snappy +, zlib +, yaml-cpp +, sasl +, openssl +, libpcap +, python3 +, curl +, Security +, CoreFoundation +, cctools +, xz +}: + +# Note: +# The command line administrative tools are part of other packages: +# see pkgs.mongodb-tools and pkgs.mongosh. + +with lib; + +{ version, sha256, patches ? [] +, license ? lib.licenses.sspl +}: + +let + variants = + if versionAtLeast version "6.0" + then rec { + python = scons.python.withPackages (ps: with ps; [ + pyyaml + cheetah3 + psutil + setuptools + packaging + pymongo + ]); + + scons = scons_3_1_2; + + mozjsVersion = "60"; + mozjsReplace = "defined(HAVE___SINCOS)"; + + } + else rec { + python = scons.python.withPackages (ps: with ps; [ + pyyaml + cheetah3 + psutil + setuptools + ]); + + scons = scons_3_1_2; + + mozjsVersion = "60"; + mozjsReplace = "defined(HAVE___SINCOS)"; + + }; + + system-libraries = [ + "boost" + "pcre" + "snappy" + "yaml" + "zlib" + #"asio" -- XXX use package? + #"stemmer" -- not nice to package yet (no versioning, no makefile, no shared libs). + #"valgrind" -- mongodb only requires valgrind.h, which is vendored in the source. + #"wiredtiger" + ] ++ optionals stdenv.isLinux [ "tcmalloc" ]; + inherit (lib) systems subtractLists; + +in stdenv.mkDerivation rec { + inherit version; + pname = "mongodb"; + + src = fetchurl { + url = "https://fastdl.mongodb.org/src/mongodb-src-r${version}.tar.gz"; + inherit sha256; + }; + + nativeBuildInputs = [ variants.scons ] + ++ lib.optionals (versionAtLeast version "4.4") [ xz ]; + + buildInputs = [ + boost + curl + gperftools + libpcap + yaml-cpp + openssl + pcre-cpp + variants.python + sasl + snappy + zlib + ] ++ lib.optionals stdenv.isDarwin [ Security CoreFoundation cctools ]; + + # MongoDB keeps track of its build parameters, which tricks nix into + # keeping dependencies to build inputs in the final output. + # We remove the build flags from buildInfo data. + inherit patches; + + postPatch = '' + # fix environment variable reading + substituteInPlace SConstruct \ + --replace "env = Environment(" "env = Environment(ENV = os.environ," + '' + lib.optionalString (versionAtLeast version "4.4") '' + # Fix debug gcc 11 and clang 12 builds on Fedora + # https://github.com/mongodb/mongo/commit/e78b2bf6eaa0c43bd76dbb841add167b443d2bb0.patch + substituteInPlace src/mongo/db/query/plan_summary_stats.h --replace '#include <string>' '#include <optional> + #include <string>' + substituteInPlace src/mongo/db/exec/plan_stats.h --replace '#include <string>' '#include <optional> + #include <string>' + '' + lib.optionalString (versionOlder version "5.0") '' + # remove -march overriding, we know better. + sed -i 's/env.Append.*-march=.*$/pass/' SConstruct + '' + lib.optionalString (stdenv.isDarwin && versionOlder version "6.0") '' + substituteInPlace src/third_party/mozjs-${variants.mozjsVersion}/extract/js/src/jsmath.cpp --replace '${variants.mozjsReplace}' 0 + '' + lib.optionalString (stdenv.isDarwin && versionOlder version "3.6") '' + substituteInPlace src/third_party/s2/s1angle.cc --replace drem remainder + substituteInPlace src/third_party/s2/s1interval.cc --replace drem remainder + substituteInPlace src/third_party/s2/s2cap.cc --replace drem remainder + substituteInPlace src/third_party/s2/s2latlng.cc --replace drem remainder + substituteInPlace src/third_party/s2/s2latlngrect.cc --replace drem remainder + '' + lib.optionalString stdenv.isi686 '' + + # don't fail by default on i686 + substituteInPlace src/mongo/db/storage/storage_options.h \ + --replace 'engine("wiredTiger")' 'engine("mmapv1")' + ''; + + env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang + "-Wno-unused-command-line-argument"; + + sconsFlags = [ + "--release" + "--ssl" + #"--rocksdb" # Don't have this packaged yet + "--wiredtiger=on" + "--js-engine=mozjs" + "--use-sasl-client" + "--disable-warnings-as-errors" + "VARIANT_DIR=nixos" # Needed so we don't produce argument lists that are too long for gcc / ld + ] ++ lib.optionals (versionAtLeast version "4.4") [ "--link-model=static" ] + ++ map (lib: "--use-system-${lib}") system-libraries; + + # This seems to fix mongodb not able to find OpenSSL's crypto.h during build + hardeningDisable = [ "fortify3" ]; + + preBuild = '' + sconsFlags+=" CC=$CC" + sconsFlags+=" CXX=$CXX" + '' + optionalString stdenv.isAarch64 '' + sconsFlags+=" CCFLAGS='-march=armv8-a+crc'" + ''; + + preInstall = '' + mkdir -p "$out/lib" + ''; + + postInstall = '' + rm -f "$out/bin/install_compass" || true + ''; + + doInstallCheck = true; + installCheckPhase = '' + runHook preInstallCheck + "$out/bin/mongo" --version + runHook postInstallCheck + ''; + + installTargets = + if (versionAtLeast version "6.0") then "install-devcore" + else if (versionAtLeast version "4.4") then "install-core" + else "install"; + + prefixKey = if (versionAtLeast version "4.4") then "DESTDIR=" else "--prefix="; + + enableParallelBuilding = true; + + hardeningEnable = [ "pie" ]; + + meta = { + description = "A scalable, high-performance, open source NoSQL database"; + homepage = "http://www.mongodb.org"; + inherit license; + + maintainers = with maintainers; [ bluescreen303 offline ]; + platforms = subtractLists systems.doubles.i686 systems.doubles.unix; + broken = (versionOlder version "6.0" && stdenv.system == "aarch64-darwin"); + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/neo4j/default.nix b/nixpkgs/pkgs/servers/nosql/neo4j/default.nix new file mode 100644 index 000000000000..7de1967583b6 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/neo4j/default.nix @@ -0,0 +1,42 @@ +{ stdenv, lib, fetchurl, nixosTests, makeWrapper, openjdk11, which, gawk }: + +stdenv.mkDerivation rec { + pname = "neo4j"; + version = "4.4.11"; + + src = fetchurl { + url = "https://neo4j.com/artifact.php?name=neo4j-community-${version}-unix.tar.gz"; + sha256 = "sha256-KIENqsXeSl1bd84tp9fD2kxczxMoi62IW4M8NblhAMg="; + }; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = '' + mkdir -p "$out/share/neo4j" + cp -R * "$out/share/neo4j" + + mkdir -p "$out/bin" + for NEO4J_SCRIPT in neo4j neo4j-admin cypher-shell + do + chmod +x "$out/share/neo4j/bin/$NEO4J_SCRIPT" + makeWrapper "$out/share/neo4j/bin/$NEO4J_SCRIPT" \ + "$out/bin/$NEO4J_SCRIPT" \ + --prefix PATH : "${lib.makeBinPath [ openjdk11 which gawk ]}" \ + --set JAVA_HOME "${openjdk11}" + done + + patchShebangs $out/share/neo4j/bin/neo4j-admin + # user will be asked to change password on first login + $out/bin/neo4j-admin set-initial-password neo4j + ''; + + passthru.tests.nixos = nixosTests.neo4j; + + meta = with lib; { + description = "A highly scalable, robust (fully ACID) native graph database"; + homepage = "https://neo4j.com/"; + license = licenses.gpl3; + maintainers = with maintainers; [ jonringer offline ]; + platforms = platforms.unix; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/questdb/default.nix b/nixpkgs/pkgs/servers/nosql/questdb/default.nix new file mode 100644 index 000000000000..d989d125b2fb --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/questdb/default.nix @@ -0,0 +1,42 @@ +{ + fetchurl, + jdk17_headless, + lib, + makeBinaryWrapper, + stdenv +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "questdb"; + version = "7.3.3"; + + src = fetchurl { + url = "https://github.com/questdb/questdb/releases/download/${finalAttrs.version}/questdb-${finalAttrs.version}-no-jre-bin.tar.gz"; + hash = "sha256-THQGgvSxij1xpAsOj3oCYYDfhoe/ji3jZ6PMT+5UThc="; + }; + + nativeBuildInputs = [ + makeBinaryWrapper + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin $out/share/java + cp questdb.sh $out/bin + cp questdb.jar $out/share/java + + ln -s $out/share/java/questdb.jar $out/bin + wrapProgram $out/bin/questdb.sh --set JAVA_HOME "${jdk17_headless}" + + runHook postInstall + ''; + + meta = { + description = "high-performance, open-source SQL database for applications in financial services, IoT, machine learning, DevOps and observability"; + homepage = "https://questdb.io/"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.jacfal ]; + platforms = lib.platforms.linux; + }; +}) diff --git a/nixpkgs/pkgs/servers/nosql/redis/default.nix b/nixpkgs/pkgs/servers/nosql/redis/default.nix new file mode 100644 index 000000000000..c3ac0ebbf969 --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/redis/default.nix @@ -0,0 +1,91 @@ +{ lib, stdenv, fetchurl, lua, jemalloc, pkg-config, nixosTests +, tcl, which, ps, getconf +, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, systemd +# dependency ordering is broken at the moment when building with openssl +, tlsSupport ? !stdenv.hostPlatform.isStatic, openssl + +# Using system jemalloc fixes cross-compilation and various setups. +# However the experimental 'active defragmentation' feature of redis requires +# their custom patched version of jemalloc. +, useSystemJemalloc ? true +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "redis"; + version = "7.2.3"; + + src = fetchurl { + url = "https://download.redis.io/releases/redis-${finalAttrs.version}.tar.gz"; + hash = "sha256-PisZbW603bnnQwiL/CkVzLtC1A9aij7djLaccW7DS+c="; + }; + + patches = lib.optionals useSystemJemalloc [ + # use system jemalloc + (fetchurl { + url = "https://gitlab.archlinux.org/archlinux/packaging/packages/redis/-/raw/102cc861713c796756abd541bf341a4512eb06e6/redis-5.0-use-system-jemalloc.patch"; + hash = "sha256-VPRfoSnctkkkzLrXEWQX3Lh5HmZaCXoJafyOG007KzM="; + }) + ]; + + nativeBuildInputs = [ pkg-config ]; + + buildInputs = [ lua ] + ++ lib.optional useSystemJemalloc jemalloc + ++ lib.optional withSystemd systemd + ++ lib.optionals tlsSupport [ openssl ]; + + preBuild = lib.optionalString stdenv.isDarwin '' + substituteInPlace src/Makefile --replace "-flto" "" + ''; + + # More cross-compiling fixes. + makeFlags = [ "PREFIX=${placeholder "out"}" ] + ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "AR=${stdenv.cc.targetPrefix}ar" "RANLIB=${stdenv.cc.targetPrefix}ranlib" ] + ++ lib.optionals withSystemd [ "USE_SYSTEMD=yes" ] + ++ lib.optionals tlsSupport [ "BUILD_TLS=yes" ]; + + enableParallelBuilding = true; + + hardeningEnable = lib.optionals (!stdenv.isDarwin) [ "pie" ]; + + env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.cc.isClang [ "-std=c11" ]); + + # darwin currently lacks a pure `pgrep` which is extensively used here + doCheck = !stdenv.isDarwin; + nativeCheckInputs = [ which tcl ps ] ++ lib.optionals stdenv.hostPlatform.isStatic [ getconf ]; + checkPhase = '' + runHook preCheck + + # disable test "Connect multiple replicas at the same time": even + # upstream find this test too timing-sensitive + substituteInPlace tests/integration/replication.tcl \ + --replace 'foreach mdl {no yes}' 'foreach mdl {}' + + substituteInPlace tests/support/server.tcl \ + --replace 'exec /usr/bin/env' 'exec env' + + sed -i '/^proc wait_load_handlers_disconnected/{n ; s/wait_for_condition 50 100/wait_for_condition 50 500/; }' \ + tests/support/util.tcl + + ./runtest \ + --no-latency \ + --timeout 2000 \ + --clients $NIX_BUILD_CORES \ + --tags -leaks \ + --skipunit integration/failover # flaky and slow + + runHook postCheck + ''; + + passthru.tests.redis = nixosTests.redis; + + meta = with lib; { + homepage = "https://redis.io"; + description = "An open source, advanced key-value store"; + license = licenses.bsd3; + platforms = platforms.all; + changelog = "https://github.com/redis/redis/raw/${finalAttrs.version}/00-RELEASENOTES"; + maintainers = with maintainers; [ berdario globin marsam ]; + mainProgram = "redis-cli"; + }; +}) diff --git a/nixpkgs/pkgs/servers/nosql/rethinkdb/default.nix b/nixpkgs/pkgs/servers/nosql/rethinkdb/default.nix new file mode 100644 index 000000000000..8c83e794f30f --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/rethinkdb/default.nix @@ -0,0 +1,59 @@ +{ lib, stdenv, fetchurl, which, m4 +, protobuf, boost, zlib, curl, openssl, icu, jemalloc, libtool +, python3Packages, makeWrapper +}: + +stdenv.mkDerivation rec { + pname = "rethinkdb"; + version = "2.4.3"; + + src = fetchurl { + url = "https://download.rethinkdb.com/repository/raw/dist/${pname}-${version}.tgz"; + hash = "sha256-w3iMeicPu0nj2kV4e2vlAHY8GQ+wWeObfe+UVPmkZ08="; + }; + + postPatch = '' + substituteInPlace external/quickjs_*/Makefile \ + --replace "gcc-ar" "${stdenv.cc.targetPrefix}ar" \ + --replace "gcc" "${stdenv.cc.targetPrefix}cc" + ''; + + preConfigure = '' + export ALLOW_WARNINGS=1 + patchShebangs . + ''; + + configureFlags = lib.optionals (!stdenv.isDarwin) [ + "--with-jemalloc" + "--lib-path=${jemalloc}/lib" + ]; + + makeFlags = [ "rethinkdb" ]; + + buildInputs = [ protobuf boost zlib curl openssl icu ] + ++ lib.optional (!stdenv.isDarwin) jemalloc + ++ lib.optional stdenv.isDarwin libtool; + + nativeBuildInputs = [ which m4 python3Packages.python makeWrapper ]; + + enableParallelBuilding = true; + + postInstall = '' + wrapProgram $out/bin/rethinkdb \ + --prefix PATH ":" "${python3Packages.rethinkdb}/bin" + ''; + + meta = { + description = "An open-source distributed database built with love"; + longDescription = '' + RethinkDB is built to store JSON documents, and scale to + multiple machines with very little effort. It has a pleasant + query language that supports really useful queries like table + joins and group by, and is easy to setup and learn. + ''; + homepage = "https://rethinkdb.com"; + license = lib.licenses.asl20; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ thoughtpolice bluescreen303 ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/surrealdb/default.nix b/nixpkgs/pkgs/servers/nosql/surrealdb/default.nix new file mode 100644 index 000000000000..22903725a5ed --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/surrealdb/default.nix @@ -0,0 +1,58 @@ +{ lib +, stdenv +, rustPlatform +, fetchFromGitHub +, pkg-config +, openssl +, rocksdb +, testers +, surrealdb +, SystemConfiguration +, protobuf +}: + +rustPlatform.buildRustPackage rec { + pname = "surrealdb"; + version = "1.0.0"; + + src = fetchFromGitHub { + owner = "surrealdb"; + repo = "surrealdb"; + rev = "v${version}"; + hash = "sha256-rBqg8tMcdc9VavYQDiKQwNp2IxYvpDNB/Qb74uiMmO4="; + }; + + cargoHash = "sha256-qbKc9/n4bOvdP2iXg6IF3jAwxx6Wj17Uxlj3F/gx+1g="; + + # error: linker `aarch64-linux-gnu-gcc` not found + postPatch = '' + rm .cargo/config.toml + ''; + + PROTOC = "${protobuf}/bin/protoc"; + PROTOC_INCLUDE = "${protobuf}/include"; + + ROCKSDB_INCLUDE_DIR = "${rocksdb}/include"; + ROCKSDB_LIB_DIR = "${rocksdb}/lib"; + + nativeBuildInputs = [ + pkg-config + rustPlatform.bindgenHook + ]; + + buildInputs = [ openssl ] + ++ lib.optionals stdenv.isDarwin [ SystemConfiguration ]; + + passthru.tests.version = testers.testVersion { + package = surrealdb; + command = "surreal version"; + }; + + meta = with lib; { + description = "A scalable, distributed, collaborative, document-graph database, for the realtime web"; + homepage = "https://surrealdb.com/"; + mainProgram = "surreal"; + license = licenses.bsl11; + maintainers = with maintainers; [ sikmir happysalada ]; + }; +} diff --git a/nixpkgs/pkgs/servers/nosql/victoriametrics/default.nix b/nixpkgs/pkgs/servers/nosql/victoriametrics/default.nix new file mode 100644 index 000000000000..25517c0b437b --- /dev/null +++ b/nixpkgs/pkgs/servers/nosql/victoriametrics/default.nix @@ -0,0 +1,49 @@ +{ lib, buildGoModule, fetchFromGitHub, nixosTests }: + +buildGoModule rec { + pname = "VictoriaMetrics"; + version = "1.93.7"; + + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = "v${version}"; + hash = "sha256-MGIFM7PhKTeu7hnE9M2fj4EsJQv5AIDhFbypEJjYNwc="; + }; + + vendorHash = null; + + postPatch = '' + # main module (github.com/VictoriaMetrics/VictoriaMetrics) does not contain package + # github.com/VictoriaMetrics/VictoriaMetrics/app/vmui/packages/vmui/web + # + # This appears to be some kind of test server for development purposes only. + rm -f app/vmui/packages/vmui/web/{go.mod,main.go} + + # Increase timeouts in tests to prevent failure on heavily loaded builders + substituteInPlace lib/storage/storage_test.go \ + --replace "time.After(10 " "time.After(120 " \ + --replace "time.NewTimer(30 " "time.NewTimer(120 " \ + --replace "time.NewTimer(time.Second * 10)" "time.NewTimer(time.Second * 120)" \ + ''; + + ldflags = [ "-s" "-w" "-X github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo.Version=${version}" ]; + + preCheck = '' + # `lib/querytracer/tracer_test.go` expects `buildinfo.Version` to be unset + export ldflags=''${ldflags//=${version}/=} + ''; + + __darwinAllowLocalNetworking = true; + + passthru.tests = { inherit (nixosTests) victoriametrics; }; + + meta = with lib; { + homepage = "https://victoriametrics.com/"; + description = "fast, cost-effective and scalable time series database, long-term remote storage for Prometheus"; + license = licenses.asl20; + maintainers = with maintainers; [ yorickvp ivan ]; + changelog = "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v${version}"; + mainProgram = "victoria-metrics"; + }; +} |