summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorBrian McKenna <brian@brianmckenna.org>2015-05-07 13:00:01 -0600
committerBrian McKenna <brian@brianmckenna.org>2015-05-09 11:46:01 -0600
commit1ad2fa452a0d96be96dbe812c182cd1753992c14 (patch)
treea4bd1f0c2e06b1d231b201bc7e8262af95991282 /pkgs
parent8f74b653d22e22b47d8e5e5724397ec9d12bda22 (diff)
downloadnixpkgs-1ad2fa452a0d96be96dbe812c182cd1753992c14.tar
nixpkgs-1ad2fa452a0d96be96dbe812c182cd1753992c14.tar.gz
nixpkgs-1ad2fa452a0d96be96dbe812c182cd1753992c14.tar.bz2
nixpkgs-1ad2fa452a0d96be96dbe812c182cd1753992c14.tar.lz
nixpkgs-1ad2fa452a0d96be96dbe812c182cd1753992c14.tar.xz
nixpkgs-1ad2fa452a0d96be96dbe812c182cd1753992c14.tar.zst
nixpkgs-1ad2fa452a0d96be96dbe812c182cd1753992c14.zip
Add EventStore package
This turns the V8 expression into a generic build, so that we can
build with the required version.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/v8/3.24.10.nix6
-rw-r--r--pkgs/development/libraries/v8/default.nix71
-rw-r--r--pkgs/development/libraries/v8/generic.nix73
-rw-r--r--pkgs/servers/nosql/eventstore/default.nix54
-rw-r--r--pkgs/top-level/all-packages.nix8
5 files changed, 145 insertions, 67 deletions
diff --git a/pkgs/development/libraries/v8/3.24.10.nix b/pkgs/development/libraries/v8/3.24.10.nix
new file mode 100644
index 00000000000..e7b10f23ac8
--- /dev/null
+++ b/pkgs/development/libraries/v8/3.24.10.nix
@@ -0,0 +1,6 @@
+{ callPackage, ... } @ args:
+
+callPackage ./generic.nix (args // {
+  version = "3.24.10";
+  sha256 = "1blz5h9syk93bb4x3shcai3s2jhh6ai4bpymr9rz0f1ysvg60x75";
+})
diff --git a/pkgs/development/libraries/v8/default.nix b/pkgs/development/libraries/v8/default.nix
index dbf2f376d0f..6ae5c896efa 100644
--- a/pkgs/development/libraries/v8/default.nix
+++ b/pkgs/development/libraries/v8/default.nix
@@ -1,69 +1,6 @@
-{ stdenv, fetchurl, gyp, readline, python, which, icu }:
+{ callPackage, ... } @ args:
 
-assert readline != null;
-
-let
-  arch = if stdenv.is64bit then "x64" else "ia32";
-in
-
-stdenv.mkDerivation rec {
-  name = "v8-${version}";
+callPackage ./generic.nix (args // {
   version = "3.30.33.16";
-
-  src = fetchurl {
-    url = "https://commondatastorage.googleapis.com/chromium-browser-official/"
-        + "${name}.tar.bz2";
-    sha256 = "1azf1b36gqj4z5x0k9wq2dkp99zfyhwb0d6i2cl5fjm3k6js7l45";
-  };
-
-  patchPhase = ''
-    sed -i 's,#!/usr/bin/env python,#!${python}/bin/python,' build/gyp_v8
-  '';
-
-  configurePhase = ''
-    PYTHONPATH="tools/generate_shim_headers:$PYTHONPATH" \
-    PYTHONPATH="$(toPythonPath ${gyp}):$PYTHONPATH" \
-      build/gyp_v8 \
-        -f make \
-        --generator-output="out" \
-        -Dflock_index=0 \
-        -Dv8_enable_i18n_support=1 \
-        -Duse_system_icu=1 \
-        -Dconsole=readline \
-        -Dcomponent=shared_library \
-        -Dv8_target_arch=${arch}
-  '';
-
-  nativeBuildInputs = [ which ];
-  buildInputs = [ readline python icu ];
-
-  buildFlags = [
-    "LINK=g++"
-    "-C out"
-    "builddir=$(CURDIR)/Release"
-    "BUILDTYPE=Release"
-  ];
-
-  enableParallelBuilding = true;
-
-  installPhase = ''
-    install -vD out/Release/d8 "$out/bin/d8"
-    ${if stdenv.system == "x86_64-darwin" then ''
-    install -vD out/Release/lib.target/libv8.dylib "$out/lib/libv8.dylib"
-    '' else ''
-    install -vD out/Release/lib.target/libv8.so "$out/lib/libv8.so"
-    ''}
-    cp -vr include "$out/"
-  '';
-
-  postFixup = if stdenv.isDarwin then ''
-    install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc}/lib/libgcc_s.1.dylib $out/bin/d8
-    install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
-  '' else null;
-
-  meta = with stdenv.lib; {
-    description = "Google's open source JavaScript engine";
-    platforms = with platforms; linux;
-    license = licenses.bsd3;
-  };
-}
+  sha256 = "1azf1b36gqj4z5x0k9wq2dkp99zfyhwb0d6i2cl5fjm3k6js7l45";
+})
diff --git a/pkgs/development/libraries/v8/generic.nix b/pkgs/development/libraries/v8/generic.nix
new file mode 100644
index 00000000000..b056ba640d2
--- /dev/null
+++ b/pkgs/development/libraries/v8/generic.nix
@@ -0,0 +1,73 @@
+{ stdenv, fetchurl, gyp, readline, python, which, icu
+, version
+, sha256
+, ...
+}:
+
+assert readline != null;
+
+let
+  arch = if stdenv.is64bit then "x64" else "ia32";
+in
+
+stdenv.mkDerivation rec {
+  name = "v8-${version}";
+  inherit version;
+
+  src = fetchurl {
+    url = "https://commondatastorage.googleapis.com/chromium-browser-official/"
+        + "${name}.tar.bz2";
+    inherit sha256;
+  };
+
+  patchPhase = ''
+    sed -i 's,#!/usr/bin/env python,#!${python}/bin/python,' build/gyp_v8
+  '';
+
+  configurePhase = ''
+    PYTHONPATH="tools/generate_shim_headers:$PYTHONPATH" \
+    PYTHONPATH="$(toPythonPath ${gyp}):$PYTHONPATH" \
+      build/gyp_v8 \
+        -f make \
+        --generator-output="out" \
+        -Dflock_index=0 \
+        -Dv8_enable_i18n_support=1 \
+        -Duse_system_icu=1 \
+        -Dconsole=readline \
+        -Dcomponent=shared_library \
+        -Dv8_target_arch=${arch}
+  '';
+
+  nativeBuildInputs = [ which ];
+  buildInputs = [ readline python icu ];
+
+  buildFlags = [
+    "LINK=g++"
+    "-C out"
+    "builddir=$(CURDIR)/Release"
+    "BUILDTYPE=Release"
+  ];
+
+  enableParallelBuilding = true;
+
+  installPhase = ''
+    install -vD out/Release/d8 "$out/bin/d8"
+    ${if stdenv.system == "x86_64-darwin" then ''
+    install -vD out/Release/lib.target/libv8.dylib "$out/lib/libv8.dylib"
+    '' else ''
+    install -vD out/Release/lib.target/libv8.so "$out/lib/libv8.so"
+    ''}
+    cp -vr include "$out/"
+  '';
+
+  postFixup = if stdenv.isDarwin then ''
+    install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc}/lib/libgcc_s.1.dylib $out/bin/d8
+    install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
+  '' else null;
+
+  meta = with stdenv.lib; {
+    description = "Google's open source JavaScript engine";
+    platforms = with platforms; linux;
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/servers/nosql/eventstore/default.nix b/pkgs/servers/nosql/eventstore/default.nix
new file mode 100644
index 00000000000..e13d99c104d
--- /dev/null
+++ b/pkgs/servers/nosql/eventstore/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchgit, fetchpatch, git, mono, v8, icu }:
+
+# There are some similarities with the pinta derivation. We should
+# have a helper to make it easy to package these Mono apps.
+
+stdenv.mkDerivation rec {
+  name = "EventStore-${version}";
+  version = "3.0.3";
+  src = fetchgit {
+    url = "https://github.com/EventStore/EventStore.git";
+    rev = "a1382252dd1ed0554ddb04015cdb2cbc1b0a65c1";
+    sha256 = "07ir6jlli2q1yvsnyw8r8dfril6h1wmfj98yf7a6k81585v2mc6g";
+    leaveDotGit = true;
+  };
+
+  patches = [
+    # see: https://github.com/EventStore/EventStore/issues/461
+    (fetchpatch {
+      url = https://github.com/EventStore/EventStore/commit/9a0987f19935178df143a3cf876becaa1b11ffae.patch;
+      sha256 = "04qw0rb1pypa8dqvj94j2mwkc1y6b40zrpkn1d3zfci3k8cam79y";
+    })
+  ];
+
+  buildPhase = ''
+    ln -s ${v8}/lib/libv8.so src/libs/libv8.so
+    ln -s ${icu}/lib/libicui18n.so src/libs/libicui18n.so
+    ln -s ${icu}/lib/libicuuc.so src/libs/libicuuc.so
+
+    ./build.sh js1
+    ./build.sh quick ${version}
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,lib/eventstore/clusternode}
+    cp -r bin/clusternode/* $out/lib/eventstore/clusternode/
+    cat > $out/bin/clusternode << EOF
+    #!/bin/sh
+    exec ${mono}/bin/mono $out/lib/eventstore/clusternode/EventStore.ClusterNode.exe "\$@"
+    EOF
+    chmod +x $out/bin/clusternode
+  '';
+
+  buildInputs = [ git v8 mono ];
+
+  dontStrip = true;
+
+  meta = {
+    homepage = https://geteventstore.com/;
+    description = "Event sourcing database with processing logic in JavaScript.";
+    license = stdenv.lib.licenses.bsd3;
+    maintainers = with stdenv.lib.maintainers; [ puffnfresh ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 3269737a3b3..2d480da5954 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -7832,6 +7832,10 @@ let
     inherit (pythonPackages) gyp;
   };
 
+  v8_3_24_10 = callPackage ../development/libraries/v8/3.24.10.nix {
+    inherit (pythonPackages) gyp;
+  };
+
   v8 = callPackage ../development/libraries/v8 {
     inherit (pythonPackages) gyp;
   };
@@ -8425,6 +8429,10 @@ let
 
   elasticmq = callPackage ../servers/elasticmq { };
 
+  eventstore = callPackage ../servers/nosql/eventstore {
+    v8 = v8_3_24_10;
+  };
+
   etcdctl = callPackage ../development/tools/etcdctl { };
 
   exim = callPackage ../servers/mail/exim { };