From eb8e289fad6a1ce1436afc7dd3816aa1e0edf178 Mon Sep 17 00:00:00 2001
From: shak-mar <shakmar@openmailbox.org>
Date: Fri, 16 Jun 2017 23:27:41 +0200
Subject: [PATCH] i2p: Build java service wrapper from source

The most tricky part was the JAVA_TOOL_OPTIONS part.  `javah` simply
throws a NullPointerException if it cannot find a java compiler.  See
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/javax/tools/ToolProvider.java#ToolProvider.getSystemJavaCompiler%28%29
on how that compiler is searched for.
---
 pkgs/tools/networking/i2p/default.nix | 39 +++++++++++++++++++--------
 1 file changed, 28 insertions(+), 11 deletions(-)

diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix
index d646b74ff71..b20b98eccbf 100644
--- a/pkgs/tools/networking/i2p/default.nix
+++ b/pkgs/tools/networking/i2p/default.nix
@@ -1,5 +1,30 @@
 { stdenv, procps, coreutils, fetchurl, jdk, jre, ant, gettext, which }:
 
+let wrapper = stdenv.mkDerivation rec {
+  name = "wrapper-${version}";
+  version = "3.5.32";
+  src = fetchurl {
+    url = "https://wrapper.tanukisoftware.com/download/${version}/wrapper_${version}_src.tar.gz";
+    sha256 = "1v388p5jjbpwybw0zjv5glzny17fwdwppaci2lqcsnm6qw0667f1";
+  };
+  buildInputs = [ jdk ];
+  buildPhase = ''
+    export ANT_HOME=${ant}
+    export JAVA_HOME=${jdk}/lib/openjdk/jre/
+    export JAVA_TOOL_OPTIONS=-Djava.home=$JAVA_HOME
+    export CLASSPATH=${jdk}/lib/openjdk/lib/tools.jar
+    ./build32.sh
+  '';
+  installPhase = ''
+    mkdir -p $out/{bin,lib}
+    cp bin/wrapper $out/bin/wrapper
+    cp lib/wrapper.jar $out/lib/wrapper.jar
+    cp lib/libwrapper.so $out/lib/libwrapper.so
+  '';
+};
+
+in
+
 stdenv.mkDerivation rec {
   name = "i2p-0.9.30";
   src = fetchurl {
@@ -16,19 +41,11 @@ stdenv.mkDerivation rec {
     set -B
     mkdir -p $out/{bin,share}
     cp -r pkg-temp/* $out
-    '' +
 
-    # TODO: Compile wrapper ourselves, see https://geti2p.net/en/misc/manual-wrapper
-    (if stdenv.system == "i686-linux"
-    then ''
-      cp installer/lib/wrapper/linux/* $out
-    '' else ''
-      cp installer/lib/wrapper/linux64/* $out
-    '')
+    cp ${wrapper}/bin/wrapper $out/i2psvc
+    cp ${wrapper}/lib/wrapper.jar $out/lib
+    cp ${wrapper}/lib/libwrapper.so $out/lib
 
-     # */ # comment end for vim
-
-    + ''
     sed -i $out/i2prouter -i $out/runplain.sh \
       -e "s#uname#${coreutils}/bin/uname#" \
       -e "s#which#${which}/bin/which#" \