diff --git a/pkgs/servers/exhibitor/default.nix b/pkgs/servers/exhibitor/default.nix index 4d6a09ed1b75..fce258a8ebae 100644 --- a/pkgs/servers/exhibitor/default.nix +++ b/pkgs/servers/exhibitor/default.nix @@ -1,41 +1,36 @@ -{ fetchFromGitHub, maven, jdk, makeWrapper, lib, stdenv, ... }: -stdenv.mkDerivation rec { +{ lib, javaPackages, fetchFromGitHub, maven, makeWrapper, jdk }: + +javaPackages.mavenfod rec { pname = "exhibitor"; version = "1.5.6"; src = fetchFromGitHub { owner = "soabase"; repo = "exhibitor"; - sha256 = "07vikhkldxy51jbpy3jgva6wz75jksch6bjd6dqkagfgqd6baw45"; - rev = "5fcdb411d06e8638c2380f7acb72a8a6909739cd"; - }; - mavenDependenciesSha256 = "sha256-oGd8PFF1Z9BElNsgqbC/llQm8j/T+T01VwvSw3tTU0E="; - # 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; + rev = "v${version}"; + hash = "sha256-PZRT2C4CfYCbaHE9tEnwpyzEsJ6ZaS//zUDweR4YKrI="; }; # 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"; + sourceRoot = "source/exhibitor-standalone/src/main/resources/buildscripts/standalone/maven"; + mvnFetchExtraArgs = { + inherit sourceRoot; + }; + mvnHash = "sha256-xhLnjtaF5eFUuBo5aHdp0j2sPfxYhFEZYJwVQlkqARs="; + nativeBuildInputs = [ maven makeWrapper ]; - buildPhase = '' - cd ${pomFileDir} - mvn package --offline -Dmaven.repo.local=$(cp -dpR ${fetchedMavenDeps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2 + + installPhase = '' + mkdir -p $out/bin + mkdir -p $out/share/java + filename=$(basename target/*.jar) + mv target/$filename $out/share/java/ + makeWrapper ${jdk}/bin/java $out/bin/startExhibitor.sh --add-flags "-jar $out/share/java/$filename" --suffix PATH : ${lib.makeBinPath [ jdk ]} ''; + meta = with lib; { description = "ZooKeeper co-process for instance monitoring, backup/recovery, cleanup and visualization"; homepage = "https://github.com/soabase/exhibitor"; @@ -44,12 +39,4 @@ stdenv.mkDerivation rec { mainProgram = "startExhibitor.sh"; 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 : ${lib.makeBinPath [ jdk ]} - ''; - }