summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorJoel Thompson <joel@jthompson.io>2017-07-11 10:56:58 -0400
committerJoel Thompson <joel@jthompson.io>2017-07-21 09:45:37 -0400
commit4b42fc4b8a969dc4621c76d556309021591a17a2 (patch)
treed917e44b3f47bc6197b689157a97b129f80b545f /pkgs
parent91dc81156647c5d28e77dfd20d5c2f4b7253c742 (diff)
downloadnixpkgs-4b42fc4b8a969dc4621c76d556309021591a17a2.tar
nixpkgs-4b42fc4b8a969dc4621c76d556309021591a17a2.tar.gz
nixpkgs-4b42fc4b8a969dc4621c76d556309021591a17a2.tar.bz2
nixpkgs-4b42fc4b8a969dc4621c76d556309021591a17a2.tar.lz
nixpkgs-4b42fc4b8a969dc4621c76d556309021591a17a2.tar.xz
nixpkgs-4b42fc4b8a969dc4621c76d556309021591a17a2.tar.zst
nixpkgs-4b42fc4b8a969dc4621c76d556309021591a17a2.zip
exhibitor: init at 3.4.9
Initial Exhibitor nix package and nixos module for Netflix's Exhibitor,
which is a manager for Apache Zookeeper.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/servers/exhibitor/default.nix54
-rw-r--r--pkgs/servers/zookeeper/default.nix7
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 61 insertions, 2 deletions
diff --git a/pkgs/servers/exhibitor/default.nix b/pkgs/servers/exhibitor/default.nix
new file mode 100644
index 00000000000..445f52e360b
--- /dev/null
+++ b/pkgs/servers/exhibitor/default.nix
@@ -0,0 +1,54 @@
+{ fetchFromGitHub, buildMaven, maven, jdk, makeWrapper, stdenv, ... }:
+stdenv.mkDerivation rec {
+  name = "exhibitor-${version}";
+  version = "1.5.6";
+
+  src = fetchFromGitHub {
+    owner = "soabase";
+    repo = "exhibitor";
+    sha256 = "07vikhkldxy51jbpy3jgva6wz75jksch6bjd6dqkagfgqd6baw45";
+    rev = "5fcdb411d06e8638c2380f7acb72a8a6909739cd";
+  };
+  mavenDependenciesSha256 = "00r69n9hwvrn5cbhxklx7w00sjmqvcxs7gvhbm150ggy7bc865qv";
+  # This is adapted from https://github.com/volth/nixpkgs/blob/6aa470dfd57cae46758b62010a93c5ff115215d7/pkgs/applications/networking/cluster/hadoop/default.nix#L20-L32
+  fetchedMavenDeps = stdenv.mkDerivation {
+    name = "exhibitor-${version}-maven-deps";
+    inherit src nativeBuildInputs;
+    buildPhase = ''
+      cd $pomFileDir;
+      while timeout --kill-after=21m 20m mvn package -Dmaven.repo.local=$out/.m2; [ $? = 124 ]; do
+        echo "maven hangs while downloading :("
+      done
+    '';
+    installPhase = ''find $out/.m2 -type f \! -regex '.+\(pom\|jar\|xml\|sha1\)' -delete''; # delete files with lastModified timestamps inside
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = mavenDependenciesSha256;
+  };
+
+  # The purpose of this is to fetch the jar file out of public Maven and use Maven
+  # to build a monolithic, standalone jar, rather than build everything from source
+  # (given the state of Maven support in Nix). We're not actually building any java
+  # source here.
+  pomFileDir = "exhibitor-standalone/src/main/resources/buildscripts/standalone/maven";
+  nativeBuildInputs = [ maven ];
+  buildInputs = [ makeWrapper ];
+  buildPhase = ''
+      cd $pomFileDir
+      mvn package --offline -Dmaven.repo.local=$(cp -dpR ${fetchedMavenDeps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2
+  '';
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/soabase/exhibitor";
+    description = "ZooKeeper co-process for instance monitoring, backup/recovery, cleanup and visualization";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/java
+    mv target/$name.jar $out/share/java/
+    makeWrapper ${jdk}/bin/java $out/bin/startExhibitor.sh --add-flags "-jar $out/share/java/$name.jar" --suffix PATH : ${stdenv.lib.makeBinPath [ jdk ]}
+  '';
+
+}
diff --git a/pkgs/servers/zookeeper/default.nix b/pkgs/servers/zookeeper/default.nix
index 16807a6571c..b3a9ad44484 100644
--- a/pkgs/servers/zookeeper/default.nix
+++ b/pkgs/servers/zookeeper/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, jre, makeWrapper, bash }:
+{ stdenv, fetchurl, jre, makeWrapper, bash, coreutils }:
 
 stdenv.mkDerivation rec {
   name = "zookeeper-${version}";
@@ -17,12 +17,15 @@ stdenv.mkDerivation rec {
     mkdir -p $out
     cp -R conf docs lib ${name}.jar $out
     mkdir -p $out/bin
-    cp -R bin/{zkCli,zkCleanup,zkEnv}.sh $out/bin
+    cp -R bin/{zkCli,zkCleanup,zkEnv,zkServer}.sh $out/bin
     for i in $out/bin/{zkCli,zkCleanup}.sh; do
       wrapProgram $i \
         --set JAVA_HOME "${jre}" \
         --prefix PATH : "${bash}/bin"
     done
+    substituteInPlace $out/bin/zkServer.sh \
+        --replace /bin/echo ${coreutils}/bin/echo \
+        --replace "/usr/bin/env bash" ${bash}/bin/bash
     chmod -x $out/bin/zkEnv.sh
 
     mkdir -p $out/share/zooinspector
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index cca84222050..dfbcf5d1f59 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11048,6 +11048,8 @@ with pkgs;
 
   ejabberd = callPackage ../servers/xmpp/ejabberd { };
 
+  exhibitor = callPackage ../servers/exhibitor { };
+
   prosody = callPackage ../servers/xmpp/prosody {
     lua5 = lua5_1;
     inherit (lua51Packages) luasocket luasec luaexpat luafilesystem luabitop luaevent luazlib;