From 800139b7fead7692d91f8b949c99a85a3affae07 Mon Sep 17 00:00:00 2001 From: shak-mar Date: Fri, 16 Jun 2017 07:59:04 +0200 Subject: [PATCH 1/4] i2p: Add i686-linux platform --- pkgs/tools/networking/i2p/default.nix | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix index d5b9ff665d4..f760a32d7dd 100644 --- a/pkgs/tools/networking/i2p/default.nix +++ b/pkgs/tools/networking/i2p/default.nix @@ -16,7 +16,19 @@ stdenv.mkDerivation rec { set -B mkdir -p $out/{bin,share} cp -r pkg-temp/* $out - cp installer/lib/wrapper/linux64/* $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 + '') + + # */ # comment end for vim + + + '' sed -i $out/i2prouter -i $out/runplain.sh \ -e "s#uname#${coreutils}/bin/uname#" \ -e "s#which#${which}/bin/which#" \ @@ -39,6 +51,6 @@ stdenv.mkDerivation rec { maintainers = [ maintainers.joelmo ]; license = licenses.gpl2; # TODO: support other systems, just copy appropriate lib/wrapper.. to $out - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" "i686-linux" ]; }; } From c66d81b4d0c6d38f066d057c7e37bd16a9b67109 Mon Sep 17 00:00:00 2001 From: shak-mar Date: Fri, 16 Jun 2017 13:13:52 +0200 Subject: [PATCH 2/4] i2p: 0.9.28 -> 0.9.30 --- pkgs/tools/networking/i2p/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix index f760a32d7dd..d646b74ff71 100644 --- a/pkgs/tools/networking/i2p/default.nix +++ b/pkgs/tools/networking/i2p/default.nix @@ -1,10 +1,10 @@ { stdenv, procps, coreutils, fetchurl, jdk, jre, ant, gettext, which }: stdenv.mkDerivation rec { - name = "i2p-0.9.28"; + name = "i2p-0.9.30"; src = fetchurl { url = "https://github.com/i2p/i2p.i2p/archive/${name}.tar.gz"; - sha256 = "1xagyywnck2c5xalr7bc7cv5ikk4igf7avmc0n28nz9pkais1y1y"; + sha256 = "03hrirmah3ba9ygql487jy233nsxkfjyz82mmyppazi0mcgiass1"; }; buildInputs = [ jdk ant gettext which ]; patches = [ ./i2p.patch ]; From eb8e289fad6a1ce1436afc7dd3816aa1e0edf178 Mon Sep 17 00:00:00 2001 From: shak-mar Date: Fri, 16 Jun 2017 23:27:41 +0200 Subject: [PATCH 3/4] 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#" \ From e3f057d84586d3011e434fbcfb2d6b2048aa8918 Mon Sep 17 00:00:00 2001 From: shak-mar Date: Sat, 17 Jun 2017 15:55:40 +0200 Subject: [PATCH 4/4] i2p: wrapper: Fix 64bit build I didn't actually build this on 64bit, so let's see what Travis will do. --- pkgs/tools/networking/i2p/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix index b20b98eccbf..e13ada5994c 100644 --- a/pkgs/tools/networking/i2p/default.nix +++ b/pkgs/tools/networking/i2p/default.nix @@ -13,7 +13,8 @@ let wrapper = stdenv.mkDerivation rec { 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 + sed 's/ testsuite$//' -i src/c/Makefile-linux-x86-64.make + ${if stdenv.isi686 then "./build32.sh" else "./build64.sh"} ''; installPhase = '' mkdir -p $out/{bin,lib} @@ -67,7 +68,6 @@ stdenv.mkDerivation rec { description = "Applications and router for I2P, anonymity over the Internet"; maintainers = [ maintainers.joelmo ]; license = licenses.gpl2; - # TODO: support other systems, just copy appropriate lib/wrapper.. to $out platforms = [ "x86_64-linux" "i686-linux" ]; }; }