commit:     ac4209fa07a6f95b3000c490a5df21d62135d0a3
Author:     Valérian Rousset <tharvik <AT> proton <DOT> me>
AuthorDate: Fri Feb 20 07:59:46 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Feb 21 08:57:04 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ac4209fa

net-vpn/i2p: add 2.11.0

Signed-off-by: Valérian Rousset <tharvik <AT> proton.me>
Part-of: https://github.com/gentoo/gentoo/pull/45843
Closes: https://github.com/gentoo/gentoo/pull/45843
Signed-off-by: Sam James <sam <AT> gentoo.org>

 net-vpn/i2p/Manifest                               |   1 +
 .../i2p/files/2.11.0-force-gentoo-classpath.patch  | 418 +++++++++++++++++++++
 net-vpn/i2p/i2p-2.11.0.ebuild                      | 272 ++++++++++++++
 3 files changed, 691 insertions(+)

diff --git a/net-vpn/i2p/Manifest b/net-vpn/i2p/Manifest
index d84264c93b8f..ea5bc25890bb 100644
--- a/net-vpn/i2p/Manifest
+++ b/net-vpn/i2p/Manifest
@@ -1 +1,2 @@
 DIST i2psource_2.10.0.tar.bz2 33770261 BLAKE2B 
810fc8d46994c70c98328f0c29a7724f608a83e41cdb18878d5837902a821ac1f19f5f32632025c9a82412fc4423de45709730157838adee637b0c5264bc713b
 SHA512 
d3ca2cf134b427569f8e8803b1bbaf92e7ea8f2e2e14a0b516bca9d28df4bcd3efc93c3b03659e22af00a641fd2d940f5d0e8b8a9a064d239039e97e8fd8561a
+DIST i2psource_2.11.0.tar.bz2 39807193 BLAKE2B 
91c7d1cf6b33f8ec119b0aedfb2e3fd3997a75709715d484aa03bcbd5be1ef1aea1b305ee3ed1a7650bbfc15ab44e59ca5dd5734a166f9daa8f98a4956486968
 SHA512 
8faa5a4ffbbc3cb9e19d491c919c7e708ae66bb8207d05e33c8c51ca1f4707b22b95ce7413777d8513666bd9ee108f95d88de842c4a0e5485739b2d5b5633886

diff --git a/net-vpn/i2p/files/2.11.0-force-gentoo-classpath.patch 
b/net-vpn/i2p/files/2.11.0-force-gentoo-classpath.patch
new file mode 100644
index 000000000000..e7b58b797265
--- /dev/null
+++ b/net-vpn/i2p/files/2.11.0-force-gentoo-classpath.patch
@@ -0,0 +1,418 @@
+commit 4f380e55415321eec39d579a5df307a05966e192
+Author: tharvik <[email protected]>
+Date:   Sat Aug 17 13:56:51 2024 +0200
+
+    add gentoo.classpath
+
+diff --git a/apps/i2pcontrol/build.xml b/apps/i2pcontrol/build.xml
+index 78e4533a3f..54541d4ddb 100644
+--- a/apps/i2pcontrol/build.xml
++++ b/apps/i2pcontrol/build.xml
+@@ -27,6 +27,7 @@
+         <pathelement location="${wrapperlib}/wrapper.jar" />
+         <!-- following jar only present for debian builds -->
+         <pathelement location="../../core/java/build/json-simple.jar" />
++        <pathelement path="${gentoo.classpath}" />
+     </path>
+ 
+     <path id="cpSocket">
+@@ -36,6 +37,7 @@
+         <pathelement location="${wrapperlib}/wrapper.jar" />
+         <!-- following jar only present for debian builds -->
+         <pathelement location="../../core/java/build/json-simple.jar" />
++        <pathelement path="${gentoo.classpath}" />
+     </path>
+ 
+     <target name="all" depends="clean, build" />
+diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml
+index aad4f3ad1f..df3b3186e2 100644
+--- a/apps/i2psnark/java/build.xml
++++ b/apps/i2psnark/java/build.xml
+@@ -65,6 +65,7 @@
+                 <pathelement location="../../jetty/jettylib/jetty-http.jar" />
+                 <pathelement location="../../jetty/jettylib/jetty-io.jar" />
+                 <pathelement location="../../desktopgui/dist/desktopgui.jar" 
/>
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+         </javac>
+     </target>
+diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml
+index 86e5078376..8473e52a96 100644
+--- a/apps/i2ptunnel/java/build.xml
++++ b/apps/i2ptunnel/java/build.xml
+@@ -45,7 +45,7 @@
+             destdir="./build/obj" 
+             includeAntRuntime="false"
+             encoding="UTF-8"
+-            
classpath="../../../core/java/build/i2p.jar:../../../core/java/build/gnu-getopt.jar:../../ministreaming/java/build/mstreaming.jar"
 >
++            
classpath="../../../core/java/build/i2p.jar:../../../core/java/build/gnu-getopt.jar:../../ministreaming/java/build/mstreaming.jar:${gentoo.classpath}"
 >
+             <compilerarg line="${javac.compilerargs}" />
+         </javac>
+     </target>
+@@ -372,6 +372,7 @@
+                 <!-- required for multipart form handling in register.jsp -->
+                 <pathelement location="../../jetty/jettylib/jetty-i2p.jar" />
+                 <pathelement location="../../jetty/jettylib/jspc.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <arg value="-d" />
+             <arg value="../jsp/WEB-INF/classes" />
+@@ -409,6 +410,7 @@
+                 <pathelement location="../../../core/java/build/i2p.jar" />
+                 <!-- required for multipart form handling in register.jsp -->
+                 <pathelement location="../../jetty/jettylib/jetty-i2p.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+         </javac>
+         <copy file="../jsp/web.xml" tofile="../jsp/web-out.xml" />
+@@ -476,6 +478,7 @@
+                 <pathelement 
location="../../ministreaming/java/build/mstreaming.jar" />
+                 <pathelement 
location="../../streaming/java/build/streaming.jar" />
+                 <pathelement location="${junit.home}/junit4.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <batchtest>
+                 <fileset dir="./test/junit/">
+diff --git a/apps/imagegen/imagegen/build.xml 
b/apps/imagegen/imagegen/build.xml
+index 39252ef8bd..6193ff129e 100644
+--- a/apps/imagegen/imagegen/build.xml
++++ b/apps/imagegen/imagegen/build.xml
+@@ -9,6 +9,7 @@
+         <pathelement location="../zxing/build/zxing.jar" />
+         <pathelement location="../../../build/i2p.jar" />
+         <pathelement location="../../../build/jrobin.jar" />
++        <pathelement path="${gentoo.classpath}" />
+     </path>
+ 
+     <target name="all" depends="war" />
+diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml
+index d6c8879d3a..dcfbc6498e 100644
+--- a/apps/jetty/build.xml
++++ b/apps/jetty/build.xml
+@@ -405,7 +405,7 @@
+     <target name="depend" if="depend.available">
+         <depend
+             cache="../../build"
+-            srcdir="./java/src" 
++            srcdir="./java/src"
+             destdir="./build/obj" >
+             <classpath>
+                 <pathelement location="../../core/java/build/i2p.jar" />
+@@ -427,11 +427,11 @@
+     <target name="compile" depends="builddep, ensureJettylib, depend" >
+         <mkdir dir="./build" />
+         <mkdir dir="./build/obj" />
+-        <javac 
+-            srcdir="./java/src" 
+-            debug="true" deprecation="on" source="${javac.version}" 
target="${javac.version}" 
++        <javac
++            srcdir="./java/src"
++            debug="true" deprecation="on" source="${javac.version}" 
target="${javac.version}"
+             release="${javac.release}"
+-            destdir="./build/obj" 
++            destdir="./build/obj"
+             encoding="UTF-8"
+             includeAntRuntime="false" >
+             <classpath>
+@@ -450,6 +450,7 @@
+                 <!-- following jars only present for debian builds -->
+                 <pathelement location="./jettylib/tomcat-api.jar" />
+                 <pathelement location="./jettylib/slf4j2-api.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <compilerarg line="${javac.compilerargs}" />
+         </javac>
+@@ -499,7 +500,7 @@
+         <!-- separate jar for JspC wrapper used only in build, not included 
in jetty-i2p.jar -->
+         <jar destfile="./jettylib/jspc.jar" basedir="./build/obj" 
includes="**/JspC.class" >
+         </jar>
+-    </target>    
++    </target>
+ 
+     <target name="jarUpToDate">
+         <uptodate property="jar.uptodate" targetfile="jettylib/jetty-i2p.jar" 
>
+@@ -514,7 +515,7 @@
+                 <isset property="git.available" />
+             </and>
+         </condition>
+-    </target>    
++    </target>
+ 
+     <!-- empty, uncomment below if needed -->
+     <target name="buildPatches" unless="${with-libjetty12-java}" />
+@@ -526,11 +527,11 @@
+     <target name="compilePatches" unless="${with-libjetty12-java}" >
+         <mkdir dir="./build" />
+         <mkdir dir="./build/objPatches" />
+-        <javac 
+-            srcdir="./patches/jetty-util/src/main/java" 
+-            debug="true" deprecation="on" source="${javac.version}" 
target="${javac.version}" 
++        <javac
++            srcdir="./patches/jetty-util/src/main/java"
++            debug="true" deprecation="on" source="${javac.version}" 
target="${javac.version}"
+             release="${javac.release}"
+-            destdir="./build/objPatches" 
++            destdir="./build/objPatches"
+             includeAntRuntime="false"
+             encoding="UTF-8"
+             classpath="" >
+@@ -538,11 +539,11 @@
+         </javac>
+ <!--
+         <mkdir dir="./build/objPatches2" />
+-        <javac 
+-            srcdir="./patches/jetty-io/src/main/java" 
+-            debug="true" deprecation="on" source="${javac.version}" 
target="${javac.version}" 
++        <javac
++            srcdir="./patches/jetty-io/src/main/java"
++            debug="true" deprecation="on" source="${javac.version}" 
target="${javac.version}"
+             release="${javac.release}"
+-            destdir="./build/objPatches2" 
++            destdir="./build/objPatches2"
+             includeAntRuntime="false"
+             encoding="UTF-8" >
+             <compilerarg line="${javac.compilerargs}" />
+@@ -559,7 +560,7 @@
+ <!--
+         <jar destfile="./build/jetty-io-patch.jar" 
basedir="./build/objPatches2" includes="**/*.class" />
+ -->
+-    </target>    
++    </target>
+ 
+     <target name="jarPatchesUpToDate" >
+         <condition property="jarPatches.uptodate" >
+@@ -573,12 +574,12 @@
+                 </uptodate>
+             </or>
+         </condition>
+-    </target>    
++    </target>
+ 
+     <target name="clean" >
+         <delete dir="./build" />
+         <delete file="${verified.filename}" />
+-    </target>    
++    </target>
+     <target name="cleandep" depends="clean" />
+     <target name="distclean" depends="clean">
+         <delete dir="./jettylib" />
+@@ -628,7 +629,7 @@
+                 <attribute name="X-Compile-Target-JDK" 
value="${javac.version}" />
+             </manifest>
+         </jar>
+-    </target>    
++    </target>
+ 
+     <target name="servletJavadoc">
+         <mkdir dir="./build" />
+diff --git a/apps/ministreaming/java/build.xml 
b/apps/ministreaming/java/build.xml
+index b61f36dc34..81b1e954eb 100644
+--- a/apps/ministreaming/java/build.xml
++++ b/apps/ministreaming/java/build.xml
+@@ -262,6 +262,7 @@
+                 <pathelement location="${mockito.home}/byte-buddy.jar" />
+                 <pathelement location="${mockito.home}/objenesis.jar" />
+                 <pathelement location="${mockito.home}/mockito-core.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <compilerarg line="${javac.compilerargs}" />
+         </javac>
+@@ -326,6 +327,7 @@
+                 <pathelement location="../../build/jbigi.jar" />
+                 <pathelement location="${with.clover}" />
+                 <pathelement location="${with.cobertura}" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <batchtest todir="../../../reports/ministreaming/junit/">
+                 <fileset dir="./test/junit">
+diff --git a/apps/routerconsole/java/build.xml 
b/apps/routerconsole/java/build.xml
+index 8e556c9c71..2eee69cfc1 100644
+--- a/apps/routerconsole/java/build.xml
++++ b/apps/routerconsole/java/build.xml
+@@ -89,6 +89,7 @@
+                 <pathelement location="../../jetty/jettylib/jetty-ee.jar" />
+                 <pathelement location="../../jetty/jettylib/tomcat-api.jar" />
+                 <pathelement 
location="../../../core/java/build/json-simple.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+         </javac>
+     </target>
+@@ -500,6 +501,7 @@
+                 <pathelement location="build/obj/" />
+                 <pathelement location="../../../router/java/build/router.jar" 
/>
+                 <pathelement location="../../../core/java/build/i2p.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <arg value="-d" />
+             <arg value="../jsp/WEB-INF/classes" />
+@@ -541,6 +543,7 @@
+                 <pathelement location="build/obj/" />
+                 <pathelement location="../../../router/java/build/router.jar" 
/>
+                 <pathelement location="../../../core/java/build/i2p.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+         </javac>
+ 
+diff --git a/apps/sam/java/build.xml b/apps/sam/java/build.xml
+index 89233a415f..24c84ab08c 100644
+--- a/apps/sam/java/build.xml
++++ b/apps/sam/java/build.xml
+@@ -18,6 +18,7 @@
+                 <pathelement location="../../../core/java/build/obj" />
+                 <pathelement 
location="../../../core/java/build/gnu-getopt.jar" />
+                 <pathelement location="../../ministreaming/java/build/obj" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+         </depend>
+     </target>
+@@ -38,8 +39,8 @@
+             release="${javac.release}"
+             includeAntRuntime="false"
+             encoding="UTF-8"
+-            destdir="./build/obj" 
+-            
classpath="../../../core/java/build/i2p.jar:../../../core/java/build/gnu-getopt.jar:../../ministreaming/java/build/mstreaming.jar"
 >
++            destdir="./build/obj"
++            
classpath="../../../core/java/build/i2p.jar:../../../core/java/build/gnu-getopt.jar:../../ministreaming/java/build/mstreaming.jar:${gentoo.classpath}"
 >
+             <compilerarg line="${javac.compilerargs}" />
+         </javac>
+     </target>
+diff --git a/apps/streaming/java/build.xml b/apps/streaming/java/build.xml
+index 751c04f4f1..3703e01b39 100644
+--- a/apps/streaming/java/build.xml
++++ b/apps/streaming/java/build.xml
+@@ -76,6 +76,7 @@
+                 <pathelement location="${mockito.home}/byte-buddy.jar" />
+                 <pathelement location="${mockito.home}/objenesis.jar" />
+                 <pathelement location="${mockito.home}/mockito-core.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <compilerarg line="${javac.compilerargs}" />
+         </javac>
+@@ -143,6 +144,7 @@
+                 <pathelement location="../../build/jbigi.jar" />
+                 <pathelement location="${with.clover}" />
+                 <pathelement location="${with.cobertura}" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <batchtest todir="../../../reports/streaming/junit/">
+                 <fileset dir="./test/junit">
+diff --git a/apps/susidns/src/build.xml b/apps/susidns/src/build.xml
+index 652b32d44e..9761ea09d3 100644
+--- a/apps/susidns/src/build.xml
++++ b/apps/susidns/src/build.xml
+@@ -35,6 +35,7 @@
+               <pathelement location="${ant.home}/lib/ant.jar" />
+               <pathelement location="../../../core/java/build/i2p.jar" />
+               <pathelement location="../../addressbook/dist/addressbook.jar" 
/>
++              <pathelement path="${gentoo.classpath}" />
+       </path>
+ 
+       <property name="javac.compilerargs" value="" />
+diff --git a/apps/susimail/build.xml b/apps/susimail/build.xml
+index e88fb3f275..4ab1a8736f 100644
+--- a/apps/susimail/build.xml
++++ b/apps/susimail/build.xml
+@@ -53,6 +53,7 @@
+                 <!-- tomcat-api.jar only present for debian builds -->
+                 <pathelement location="../jetty/jettylib/tomcat-api.jar" />
+                 <pathelement location="../jetty/jettylib/jetty-i2p.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+         </javac>
+     </target>
+diff --git a/core/java/build.xml b/core/java/build.xml
+index f2e2adb266..11f355f777 100644
+--- a/core/java/build.xml
++++ b/core/java/build.xml
+@@ -72,7 +72,7 @@
+                debuglevel="lines,vars,source"
+                includeAntRuntime="false"
+                encoding="UTF-8"
+-               destdir="./build/obj" classpath="${javac.classpath.mod}" >
++               destdir="./build/obj" 
classpath="${javac.classpath.mod}:${gentoo.classpath}" >
+             <compilerarg line="${javac.compilerargs}" />
+             <include name="**/*.java" />
+             <exclude name="${source.exclude1}" />
+@@ -291,6 +291,7 @@
+                 <pathelement location="${scalactic.jar}" />
+                 <pathelement location="${scalatest.jar}" />
+                 <pathelement location="./build/obj" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+         </scalac>
+     </target>
+@@ -326,6 +327,7 @@
+                 <pathelement location="${mockito.home}/objenesis.jar" />
+                 <pathelement location="${mockito.home}/mockito-core.jar" />
+                 <pathelement location="${junit.home}/junit4.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <compilerarg line="${javac.compilerargs}" />
+         </javac>
+@@ -491,6 +493,7 @@
+                 <pathelement location="../../build/jbigi.jar" />
+                 <pathelement location="${with.clover}" />
+                 <pathelement location="${with.cobertura}" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <batchtest todir="../../reports/core/junit/">
+                 <fileset dir="./test/junit/">
+diff --git a/installer/tools/java/build.xml b/installer/tools/java/build.xml
+index 51c45cebfa..81b0f6f269 100644
+--- a/installer/tools/java/build.xml
++++ b/installer/tools/java/build.xml
+@@ -29,7 +29,7 @@
+             release="${javac.release}"
+             includeAntRuntime="false"
+             encoding="UTF-8"
+-            destdir="./build/obj" 
classpath="${javac.classpath}:../../../build/i2p.jar:../../../core/java/build/gnu-getopt.jar:../../../build/router.jar"
 >
++            destdir="./build/obj" 
classpath="${javac.classpath}:../../../build/i2p.jar:../../../core/java/build/gnu-getopt.jar:../../../build/router.jar:${gentoo.classpath}"
 >
+             <compilerarg line="${javac.compilerargs}" />
+         </javac>
+     </target>
+diff --git a/router/java/build.xml b/router/java/build.xml
+index 025e652b46..365ef40746 100644
+--- a/router/java/build.xml
++++ b/router/java/build.xml
+@@ -14,7 +14,7 @@
+     <target name="depend" if="depend.available">
+         <depend
+             cache="../../build"
+-            srcdir="./src" 
++            srcdir="./src"
+             destdir="./build/obj" >
+             <!-- Depend on classes instead of jars where available -->
+             <classpath>
+@@ -68,6 +68,7 @@
+                 <pathelement path="../../core/java/build/gnu-getopt.jar" />
+                 <pathelement path="../../core/java/build/httpclient.jar" />
+                 <pathelement path="../../core/java/build/httpcore.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <compilerarg line="${javac.compilerargs}" />
+             <include name="**/*.java" />
+@@ -151,7 +152,7 @@
+         <exec executable="sh" osfamily="windows" failifexecutionfails="false" 
>
+             <arg value="./bundle-messages.sh" />
+         </exec>
+-        <javac source="${javac.version}" target="${javac.version}" 
++        <javac source="${javac.version}" target="${javac.version}"
+                release="${javac.release}"
+                includeAntRuntime="false"
+                encoding="UTF-8"
+@@ -314,6 +315,7 @@
+                 <pathelement location="${hamcrest.home}/hamcrest-all.jar" />
+                 <pathelement location="${junit.home}/junit4.jar" />
+                 <pathelement location="../../core/java/build/i2ptest.jar" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <compilerarg line="${javac.compilerargs}" />
+         </javac>
+@@ -460,6 +462,7 @@
+                 <pathelement location="../../build/jbigi.jar" />
+                 <pathelement location="${with.clover}" />
+                 <pathelement location="${with.cobertura}" />
++                <pathelement path="${gentoo.classpath}" />
+             </classpath>
+             <batchtest todir="../../reports/router/junit/">
+                 <fileset dir="./test/junit">

diff --git a/net-vpn/i2p/i2p-2.11.0.ebuild b/net-vpn/i2p/i2p-2.11.0.ebuild
new file mode 100644
index 000000000000..a23dc2f16810
--- /dev/null
+++ b/net-vpn/i2p/i2p-2.11.0.ebuild
@@ -0,0 +1,272 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+JAVA_PKG_IUSE="test"
+
+inherit java-pkg-2 systemd toolchain-funcs
+
+DESCRIPTION="A privacy-centric, anonymous network"
+HOMEPAGE="https://i2p.net";
+SRC_URI="https://files.i2p-projekt.de/${PV}/i2psource_${PV}.tar.bz2";
+
+LICENSE="Apache-2.0 Artistic BSD CC-BY-2.5 CC-BY-3.0 CC-BY-SA-3.0 EPL-1.0 
GPL-2 GPL-3 LGPL-2.1 LGPL-3 MIT public-domain WTFPL-2"
+SLOT="0"
+
+KEYWORDS="~amd64 ~arm64"
+LANGS=(
+       ar az bg ca cs da de el en es es-AR et fa fi fr gl he hi hr hu id it ja 
ko ku mg nb nl nn pl pt pt-BR ro ru sk sl sq
+       sr sv tk tr uk vi zh zh-TW
+)
+IUSE="${LANGS[@]/#/l10n_}"
+
+CP_DEPEND="
+       dev-java/bcprov:0
+       dev-java/hashcash:1
+       dev-java/httpcomponents-client:4
+       dev-java/java-getopt:1
+       dev-java/java-service-wrapper:0
+       dev-java/jbcrypt:0
+       dev-java/json-simple:2.3
+       dev-java/jsonrpc2-server:1
+       dev-java/jstl-api:0
+       dev-java/jstl:0
+       dev-java/minidns-core:1
+       dev-java/slf4j-api:0
+       dev-java/zxing-core:3
+       dev-java/zxing-javase:3
+       sys-devel/gettext:0[java]
+       www-servers/tomcat:9
+"
+# jdk-11 for bug #932030
+DEPEND="
+       dev-libs/gmp:0=
+       ${CP_DEPEND}
+       >=virtual/jdk-17:*
+       test? (
+               dev-java/hamcrest:0
+               dev-java/junit:4
+               dev-java/mockito:4
+       )
+"
+BDEPEND="
+       >=dev-java/ant-1.10.14-r3:0
+       sys-apps/which
+       sys-devel/gettext
+       test? (
+               >=dev-java/ant-1.10.14-r3:0[junit4]
+       )
+"
+RDEPEND="
+       ${CP_DEPEND}
+       acct-user/i2p
+       acct-group/i2p
+       >=virtual/jre-17:*
+"
+
+PATCHES=( "${FILESDIR}/2.11.0-force-gentoo-classpath.patch" )
+
+DOCS=( README.md history.txt )
+
+JAVA_PKG_NO_CLEAN=(
+       # need to package jetty
+       './apps/jetty/jetty-home-*/start.jar'
+       './apps/jetty/jetty-home-*/lib/jetty-*.jar'
+)
+
+src_prepare() {
+       default # apply PATCHES
+
+       # remove hardcoded javac's source & target
+       find -name build.xml \
+               -exec sed -Ei 's,(source|target)="\$\{javac\.version\}",,g' {} 
+ ||
+               die "remove javac's source & target in build files"
+
+       java-pkg-2_src_prepare
+
+       # remove most bundled, excepted the next ones.
+       # apps/addressbook/java/src/net/metanotion too much code drift
+       # apps/i2psnark/java/src/org/klomp/snark too much code drift
+       # apps/imagegen/identicon too much code drift
+       # apps/jrobin need rrd4j ebuild
+       # apps/routerconsole/java/src/{com,edu} too much code drift
+       # {core,router}/java/src/com/southernstorm/noise use internal symbols
+       # core/java/src/freenet too much code drift
+       # core/java/src/gnu/crypto too much code drift
+       # router/java/src/com/maxmind changed interface
+       # router/java/src/org/cybergarage unable to find version 3
+       # router/java/src/org/freenetproject too big to pull
+       # router/java/src/org/xlattice changed interface
+       java-pkg_clean
+       rm -r installer/lib || die 'unbundle installer libs'
+       ( cat >> override.properties || die 'set unbundled properties' ) <<- EOF
+               require.gettext=true
+               with-gettext-base=true
+               with-libslf4j2-java=true
+               with-libbcprov-java=true
+               with-libgetopt-java=true
+               with-libjakarta-taglibs-standard-java=true
+               with-libjson-simple-java=true
+               with-libtomcat9-java=true
+               # with-geoip-database=true need std geoip use
+               # with-libjetty12-java=true needs a jetty ebuild
+       EOF
+
+       # bcprov
+       rm -r core/java/src/net/i2p/crypto/elgamal || die 'unbundle bcprov'
+       sed -e 's,net\.i2p\.crypto\.elgamal\.spec,org.bouncycastle.jce.spec,' \
+               -i core/java/src/net/i2p/crypto/CryptoConstants.java ||
+               die 'redirect imports of bcprov'
+       # getopt, gettext
+       rm -r core/java/src/gnu/{getopt,gettext} || die 'unbundle GNU code'
+       # httpcomponents-client
+       rm -r core/java/src/net/i2p/apache || die 'unbundle 
httpcomponents-client'
+       sed -e 's,net\.i2p\.apache,org.apache,' \
+               -i 
core/java/src/net/i2p/util/{Addresses,I2PSSLSocketFactory}.java \
+                       
apps/i2pcontrol/java/net/i2p/i2pcontrol/HostCheckHandler.java ||
+               die 'redirect imports of httpcomponents-client'
+       # zxing
+       rm -r apps/imagegen/zxing || die 'unbundle zxing'
+       sed -E '/dir="[^"]*zxing/d' -i apps/imagegen{/imagegen,}/build.xml &&
+       # hashcash
+       rm core/java/src/com/nettgryppa/security/HashCash.java ||
+               die 'unbundle hashcash'
+       # jbcrypt, jsonrpc2-*
+       rm -r apps/i2pcontrol/java/{com,org} || die 'unbundle jbcrypt & 
jsonrpc2-*'
+       # jstl*
+       sed -E '/"apps\/susidns\/src\/lib\/(jstl|standard).jar"/d' -i build.xml 
||
+               die 'unbundle jstl*'
+       java-pkg_jar-from --into apps/susidns/src/lib jstl jstl-impl.jar 
standard.jar
+       java-pkg_jar-from --into apps/susidns/src/lib jstl-api jstl-api.jar 
jstl.jar
+       # minidns-core, json-simple
+       rm -r core/java/src/org || die 'unbundle minidns-core & json-simple'
+       mkdir core/java/build || die 'create built core dependencies'
+       java-pkg_jar-from --into core/java/build json-simple-2.3
+
+       # keep only enabled locales
+       local lang
+       for lang in ${LANGS[@]}
+       do
+               if ! use "l10n_${lang}"
+               then
+                       find -regextype egrep \
+                                       -regex 
".*[_\\./]${lang/-/_}.(html|po|1)" \
+                               -delete || die "unbundling ${lang} translations"
+               fi
+       done
+
+       # fix some locale names
+       find -name '*_in.*' -exec rename --no-overwrite _in. _id. {} \; &&
+       find -name '*_iw.*' -exec rename --no-overwrite _iw. _he. {} \; ||
+               die 'fix some locale names'
+}
+
+src_configure() {
+       # build for our JDK
+       cat >> override.properties <<-EOF || die 'set JDK infos'
+               ant.build.javac.source=$(java-pkg_get-source)
+               ant.build.javac.target=$(java-pkg_get-target)
+       EOF
+
+       # deamon shouldn't start GUI
+       sed -i 's|\(clientApp.4.startOnLoad\)=true|\1=false|' \
+               installer/resources/clients.config ||
+               die 'avoid auto starting browser'
+
+       # yep, that's us
+       echo 'build.built-by=Gentoo' >> override.properties ||
+               die 'bragging failed'
+
+       # support no-UTF-8 build systems
+       echo 'file.encoding=UTF-8' >> override.properties ||
+               die 'set files encoding'
+}
+
+src_compile() {
+       local libs='bcprov,gettext,hashcash-1,httpcomponents-client-4'
+       libs+=',java-getopt-1,java-service-wrapper,jbcrypt,jsonrpc2-server-1'
+       libs+=',minidns-core-1,slf4j-api,tomcat-9,zxing-javase-3'
+       eant \
+               -Dgentoo.classpath=`java-pkg_getjars --with-dependencies 
"${libs}"` \
+               preppkg-base
+
+       local compile_lib
+       compile_lib() {
+               local name="${1}"
+               shift 1
+
+               "$(tc-getCC)" "${@}" -Iinclude ${CFLAGS} 
$(java-pkg_get-jni-cflags) \
+                       ${LDFLAGS} -shared -fPIC "-Wl,-soname,lib${name}.so" \
+                       "src/${name}.c" -o "lib${name}.so"
+       }
+
+       cd "${S}/core/c/jbigi/jbigi" || die "unable to cd to jbigi"
+       compile_lib jbigi -lgmp || die "unable to build jbigi"
+
+       if use amd64 || use x86; then
+               cd "${S}/core/c/jcpuid" || die "unable to cd to jcpuid"
+               compile_lib jcpuid || die "unable to build jcpuid"
+       fi
+}
+
+src_test() {
+       # avoid rebuilding
+       sed -e '/<delete dir=".\/build" \/>/d' -i core/java/build.xml ||
+               die 'avoid building twice'
+
+       # halt on error
+       find -name build.xml \
+               -execdir sed -e 's/<junit /\0haltonerror="yes" /' -i {} + ||
+               die 'ensure test failures propagate'
+
+       # redirect to built jbigi
+       sed -e 's,installer/lib/jbigi,core/c/jbigi/jbigi,' -i build.xml ||
+               die 'redirect to built library'
+
+       local libs='bcprov,gettext,hashcash-1,httpcomponents-client-4'
+       libs+=',java-getopt-1,java-service-wrapper,jbcrypt,jsonrpc2-server-1'
+       libs+=',tomcat-9,minidns-core-1,zxing-javase-3'
+       libs+=',hamcrest,junit-4,mockito-4'
+       # no scala as depending on antlib.xml not installed by dev-lang/scala
+       eant \
+               -Dgentoo.classpath=`java-pkg_getjars --build-only 
--with-dependencies "${libs}"` \
+               junit.test
+}
+
+src_install() {
+       # install basic documentation
+       einstalldocs
+       doman installer/resources/man/eepget.*
+
+       # install main files
+       java-pkg_doso core/c/jbigi/jbigi/libjbigi.so
+       if use amd64 || use x86; then
+               java-pkg_doso core/c/jcpuid/libjcpuid.so
+       fi
+       cd "${S}/pkg-temp" || die 'unable to change dir to built artifacts'
+       java-pkg_dojar lib/*.jar
+       java-pkg_dowar webapps/*.war
+
+       # install shared
+       insinto /usr/share/i2p
+       doins blocklist.txt hosts.txt {clients,i2p*}.config
+       doins -r certificates docs eepsite geoip scripts
+
+       # install daemons
+       newinitd "${FILESDIR}/i2p.init" i2p
+       systemd_dounit "${FILESDIR}/i2p.service"
+
+       # setup dirs
+       keepdir /var/log/i2p /var/lib/i2p
+       fowners i2p:i2p /var/lib/i2p /var/log/i2p
+
+       # create own launchers
+       java-pkg_dolauncher i2prouter --main net.i2p.router.Router --jar 
i2p.jar \
+               --pwd "${EPREFIX}/usr/share/i2p" \
+               --java_args "\
+                       -Di2p.dir.config=${EPREFIX}/var/lib/i2p \
+                       -Di2p.dir.log=${EPREFIX}/var/log/i2p \
+                       
-DloggerFilenameOverride=${EPREFIX}/var/log/i2p/router-@"
+       java-pkg_dolauncher eepget --main net.i2p.util.EepGet --jar i2p.jar
+}

Reply via email to