commit: fcd56a344237b684ecd01c54dcb4a4b2f2607b20 Author: Valérian Rousset <tharvik <AT> users <DOT> noreply <DOT> github <DOT> com> AuthorDate: Fri Jan 27 01:08:07 2023 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sat May 20 09:21:46 2023 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fcd56a34
net-vpn/i2p: add 2.1.0 Closes: https://bugs.gentoo.org/850079 Signed-off-by: Valérian Rousset <tharvik <AT> users.noreply.github.com> Signed-off-by: Sam James <sam <AT> gentoo.org> net-vpn/i2p/Manifest | 1 + net-vpn/i2p/files/2.1.0-fix-getopt-classpath.patch | 24 +++ net-vpn/i2p/files/i2p.init | 10 +- net-vpn/i2p/files/i2p.service | 3 +- net-vpn/i2p/i2p-2.1.0.ebuild | 225 +++++++++++++++++++++ 5 files changed, 256 insertions(+), 7 deletions(-) diff --git a/net-vpn/i2p/Manifest b/net-vpn/i2p/Manifest index e215485a9156..f90387e3f132 100644 --- a/net-vpn/i2p/Manifest +++ b/net-vpn/i2p/Manifest @@ -1 +1,2 @@ DIST i2psource_1.7.0.tar.bz2 33300522 BLAKE2B dcb83477f6d066b707632f8db44bc811558b0bc52368ce992aaf14d0d21acc1fb9bce1dfa8171fca8cf3819765f0b7993ae4a2566a6f65786cca84c02ea4336a SHA512 a27c448246538f152355ecfdf781e39bf9e57b5d0f7ea139ce06d800ce3eed7fa4e375210e6545da2a75245b45282bc8d8e7453d96729f940c34daa75bdc588f +DIST i2psource_2.1.0.tar.bz2 32817295 BLAKE2B d37463522143c02e04c96d58578312b536ab5e2842e5647dbe5ba3d5c139329c447f16de7e326ef48ef4c6b3c11631e23300b5327cc31d9da5288240f86c926f SHA512 e8639c2b2869d3c7856b598d4cd3505458ed5cab5dce3570cafdaec3ccd77dbaec35787cccc6782acc75adb423b7baaab724ac3c98e5b91b41cf4c76f3614355 diff --git a/net-vpn/i2p/files/2.1.0-fix-getopt-classpath.patch b/net-vpn/i2p/files/2.1.0-fix-getopt-classpath.patch new file mode 100644 index 000000000000..a67b43ba08da --- /dev/null +++ b/net-vpn/i2p/files/2.1.0-fix-getopt-classpath.patch @@ -0,0 +1,24 @@ +diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml +index 48f9245..2fba5e4 100644 +--- a/apps/routerconsole/java/build.xml ++++ b/apps/routerconsole/java/build.xml +@@ -85,6 +85,7 @@ + <!-- following jars only present for debian builds --> + <pathelement location="../../jetty/jettylib/tomcat-api.jar" /> + <pathelement location="../../../core/java/build/json-simple.jar" /> ++ <pathelement location="../../../core/java/build/gnu-getopt.jar" /> + </classpath> + </javac> + </target> +diff --git a/router/java/build.xml b/router/java/build.xml +index 3449609..bcd9602 100644 +--- a/router/java/build.xml ++++ b/router/java/build.xml +@@ -277,6 +277,7 @@ + <pathelement location="${hamcrest.home}/hamcrest-all.jar" /> + <pathelement location="${junit.home}/junit4.jar" /> + <pathelement location="../../core/java/build/i2ptest.jar" /> ++ <pathelement location="../../core/java/build/gnu-getopt.jar" /> + </classpath> + <compilerarg line="${javac.compilerargs}" /> + </javac> diff --git a/net-vpn/i2p/files/i2p.init b/net-vpn/i2p/files/i2p.init index d59899b899e9..5115c14bb1a9 100644 --- a/net-vpn/i2p/files/i2p.init +++ b/net-vpn/i2p/files/i2p.init @@ -6,12 +6,10 @@ depend() { need net } -readonly WRAPPER_CONF="/usr/share/i2p/wrapper.config" - -command=wrapper -command_args="$WRAPPER_CONF wrapper.syslog.ident=i2p" +command=i2prouter +pidfile=/var/run/i2p.pid command_background=true command_progress=true command_user=i2p -pidfile=/var/run/i2p.pid -retry='SIGTERM/20 SIGKILL/20' +stopsig=SIGHUP +retry=20 diff --git a/net-vpn/i2p/files/i2p.service b/net-vpn/i2p/files/i2p.service index 87c218075a1c..e7c525e695eb 100644 --- a/net-vpn/i2p/files/i2p.service +++ b/net-vpn/i2p/files/i2p.service @@ -4,7 +4,8 @@ After=network.target [Service] User=i2p -ExecStart=/usr/bin/wrapper /usr/share/i2p/wrapper.config wrapper.syslog.ident=i2p wrapper.logfile=/var/lib/i2p/.i2p/wrapper.log +ExecStart=/usr/bin/i2prouter +KillSignal=SIGHUP [Install] WantedBy=multi-user.target diff --git a/net-vpn/i2p/i2p-2.1.0.ebuild b/net-vpn/i2p/i2p-2.1.0.ebuild new file mode 100644 index 000000000000..ab62e452b1b0 --- /dev/null +++ b/net-vpn/i2p/i2p-2.1.0.ebuild @@ -0,0 +1,225 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +JAVA_PKG_IUSE="test" + +inherit java-pkg-2 java-ant-2 systemd + +DESCRIPTION="A privacy-centric, anonymous network" +HOMEPAGE="https://geti2p.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 ~x86" +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/identicon:1 + dev-java/java-getopt:1 + dev-java/java-service-wrapper:0 + dev-java/jbcrypt:0 + dev-java/json-simple:2.3 + dev-java/json-smart:1 + dev-java/jsonrpc2-base:1 + dev-java/jsonrpc2-server:1 + dev-java/jstl:0 + dev-java/jstl-api:0 + dev-java/minidns-core:1 + dev-java/zxing-core:3 + dev-java/zxing-javase:3 + net-libs/nativebiginteger:0 + sys-devel/gettext:0[java] + >=www-servers/tomcat-9.0.73:9 +" +DEPEND=" + ${CP_DEPEND} + >=virtual/jdk-1.8:* + test? ( + dev-java/ant-junit4:0 + dev-java/hamcrest:0 + dev-java/hamcrest-core:1.3 + dev-java/junit:4 + dev-java/mockito:4 + ) +" +RDEPEND=" + ${CP_DEPEND} + acct-user/i2p + acct-group/i2p + >=virtual/jre-1.8:* +" + +EANT_BUILD_TARGET="preppkg-base" +# no scala as depending on antlib.xml not installed by dev-lang/scala +EANT_TEST_TARGET="junit.test" +JAVA_ANT_ENCODING="UTF-8" +JAVA_ANT_CLASSPATH_TAGS="javac java" +# built locally +EANT_GENTOO_CLASSPATH_EXTRA="${S}/core/java/build/i2p.jar" +EANT_GENTOO_CLASSPATH_EXTRA+=":${S}/router/java/build/router.jar" +EANT_GENTOO_CLASSPATH_EXTRA+=":${S}/apps/ministreaming/java/build/mstreaming.jar" + +DOCS=( README.md history.txt ) + +pkg_pretend() { + # see https://bugs.gentoo.org/831290 + if [[ "`java-config --show-active-vm`" = openjdk*-8 ]] && + [[ "`java-config --query MERGE_VM --package=ant-core`" != openjdk*-8 ]] + then + eerror "dev-java/ant-core was emerged with a newer version of the JDK." + eerror "It will fail to build with virtual/jdk:1.8 due to #831290." + eerror "Please switch to a newer JDK" + eerror " eselect java-vm set system ..." + eerror "Or remerge dev-java/ant-core with virtual/jdk:1.8" + eerror " emerge dev-java/ant-core" + die 'bad JDK for ant-core' + fi +} + +src_prepare() { + java-pkg-2_src_prepare + + # add our classpath + for f in `find -name build.xml` + do + java-ant_rewrite-classpath "$f" + done + + # remove most bundled + # apps/addressbook/java/src/net/metanotion too much code drift + # apps/i2psnark/java/src/org/klomp/snark 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 ! \ + -path "./apps/jetty/jetty-distribution-*" # need to package jetty + ( cat >> override.properties || die 'set unbundled properties' ) <<- EOF + require.gettext=true + with-libgetopt-java=true + with-libjakarta-taglibs-standard-java=true + with-libjson-simple-java=true + with-libtomcat9-java=true + with-gettext-base=true + # with-geoip-database=true need std geoip use + # with-libjetty9-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\.impl,org.bouncycastle.jce.provider,' \ + -e 's,net\.i2p\.crypto\.elgamal\.spec,org.bouncycastle.jce.spec,' \ + -i core/java/src/net/i2p/crypto/{provider/I2PProvider,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' + # identicon, zxing + rm -r apps/imagegen/{identicon,zxing} || die 'unbundle identicon & zxing' + sed -e '/LICENSE-Identicon.txt/d' -i build.xml && + sed -E '/dir="[^"]*(identicon|zxing)/d' -i apps/imagegen{/imagegen,}/build.xml && + sed -E '/(todir="build\/WEB-INF\/classes"|<\/copy>)/d' -i apps/imagegen/imagegen/build.xml || + die 'do not depend on unbundled' + # 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*' + # minidns-core, json-simple + rm -r core/java/src/org || die 'unbundle minidns-core & json-simple' + + # 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() { + # 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' +} + +src_test() { + # avoid rebuilding + sed -e '/<delete dir=".\/build" \/>/d' -i core/java/build.xml || + die 'avoid building twice' + + EANT_GENTOO_CLASSPATH+=",hamcrest,junit-4,mockito-4" + java-pkg-2_src_test +} + +src_install() { + # install basic documentation + einstalldocs + doman installer/resources/man/eepget.* + + # install main files + cd "${S}/pkg-temp" || die 'unable to change dir to built artifacts' + # remove merged packages + java-pkg_dojar lib/*.jar + insinto "/usr/share/i2p" + doins blocklist.txt hosts.txt {clients,i2p*}.config + doins -r certificates docs eepsite geoip scripts + java-pkg_dowar webapps/*.war + + # 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.app=${EPREFIX}/var/lib/i2p/app \ + -Di2p.dir.config=${EPREFIX}/var/lib/i2p/config \ + -Di2p.dir.router=${EPREFIX}/var/lib/i2p/router \ + -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 +}