about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/nosql/eventstore/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/nosql/eventstore/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/nosql/eventstore/default.nix103
1 files changed, 52 insertions, 51 deletions
diff --git a/nixpkgs/pkgs/servers/nosql/eventstore/default.nix b/nixpkgs/pkgs/servers/nosql/eventstore/default.nix
index 035d906b2bdb..60a69d200049 100644
--- a/nixpkgs/pkgs/servers/nosql/eventstore/default.nix
+++ b/nixpkgs/pkgs/servers/nosql/eventstore/default.nix
@@ -1,80 +1,81 @@
-{ lib, stdenv
-, fetchFromGitHub
-, fetchurl
-, makeWrapper
+{ lib
+, git
 , dotnetCorePackages
+, glibcLocales
+, buildDotnetModule
+, fetchFromGitHub
+, bintools
+, stdenv
 , mono
-, Nuget
 }:
 
-let
-
-  dotnet-sdk = dotnetCorePackages.sdk_5_0;
-
-  deps = import ./deps.nix { inherit fetchurl; };
-
-in
-
-stdenv.mkDerivation rec {
-
+buildDotnetModule rec {
   pname = "EventStore";
-  version = "5.0.8";
+  version = "21.10.5";
 
   src = fetchFromGitHub {
     owner = "EventStore";
     repo = "EventStore";
     rev = "oss-v${version}";
-    sha256 = "021m610gzmrp2drywl1q3y6xxpy4qayn580d855ag952z9s6w9nj";
+    sha256 = "sha256-uUDjTGCiQgXmvOUsujIA0JkGQGuw9U4zLKDP1WIFq1o=";
+    leaveDotGit = true;
   };
 
-  buildInputs = [
-    makeWrapper
-    dotnet-sdk
-    mono
-    Nuget
-  ];
+  # Fixes application reporting 0.0.0.0 as its version.
+  MINVERVERSIONOVERRIDE = version;
 
-  # that dependency seems to not be required for building, but pulls in libcurl which fails to be located.
-  # see: https://github.com/EventStore/EventStore/issues/1897
-  patchPhase = ''
-    for f in $(find . -iname "*.csproj"); do
-      sed -i '/Include="Microsoft.SourceLink.GitHub"/d' $f
-    done
-  '';
+  dotnet-sdk = dotnetCorePackages.sdk_5_0;
+  dotnet-runtime = dotnetCorePackages.aspnetcore_5_0;
+
+  nativeBuildInputs = [ git glibcLocales bintools ];
 
-  buildPhase = ''
-    export FrameworkPathOverride=${mono}/lib/mono/4.7.1-api
+  runtimeDeps = [ mono ];
+
+  nugetBinariesToPatch = lib.optionals stdenv.isLinux [
+    "grpc.tools/2.39.1/tools/linux_x64/protoc"
+    "grpc.tools/2.39.1/tools/linux_x64/grpc_csharp_plugin"
+  ];
 
-    # disable default-source so nuget does not try to download from online-repo
-    nuget sources Disable -Name "nuget.org"
-    # add all dependencies to a source called 'nixos'
-    for package in ${toString deps}; do
-      nuget add $package -Source nixos
+  postConfigure = ''
+    # Fixes execution of native protoc binaries during build
+    for binary in $nugetBinariesToPatch; do
+      path="$HOME/.nuget/packages/$binary"
+      patchelf --set-interpreter "$(cat $NIX_BINTOOLS/nix-support/dynamic-linker)" $path
     done
 
-    dotnet restore --source nixos src/EventStore.sln
-    dotnet build --no-restore -c Release src/EventStore.sln
+    # 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>" ""
   '';
 
-  installPhase = ''
-    mkdir -p $out/{bin,lib/eventstore}
-    cp -r bin/Release/* $out/lib/eventstore
-    makeWrapper "${mono}/bin/mono" $out/bin/eventstored \
-      --add-flags "$out/lib/eventstore/EventStore.ClusterNode/net471/EventStore.ClusterNode.exe"
-  '';
+  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 &
 
-  checkPhase = ''
-    dotnet test src/EventStore.Projections.Core.Tests/EventStore.Projections.Core.Tests.csproj -- RunConfiguration.TargetPlatform=x64
+    PID=$!
+
+    sleep 30s;
+    kill "$PID";
   '';
 
-  meta = {
+  meta = with lib; {
     homepage = "https://geteventstore.com/";
     description = "Event sourcing database with processing logic in JavaScript";
-    license = lib.licenses.bsd3;
-    maintainers = with lib.maintainers; [ puffnfresh ];
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ puffnfresh mdarocha ];
     platforms = [ "x86_64-linux" "x86_64-darwin" ];
   };
-
 }