# Copyright 1999-2024 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 toolchain-funcs 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 ~arm ~arm64 ~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 sys-devel/gettext:0[java] www-servers/tomcat:9 " DEPEND=" dev-libs/gmp:0= ${CP_DEPEND} >=virtual/jdk-1.8:* test? ( dev-java/ant:0[junit4] dev-java/hamcrest:0 dev-java/junit:4 dev-java/mockito:4 ) " RDEPEND=" ${CP_DEPEND} acct-user/i2p acct-group/i2p >=virtual/jre-1.8:* " PATCHES=( "${FILESDIR}/fix-junit-classpath.patch" ) 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`" = *-8 ]] && [[ "`java-config --query MERGE_VM --package=ant-core`" != *-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() { default # apply PATCHES 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, 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/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() { java-ant-2_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_compile() { java-pkg-2_src_compile local compile_lib compile_lib() { local name="${1}" local file="${2}" shift 2 "$(tc-getCC)" "${@}" ${CFLAGS} $(java-pkg_get-jni-cflags) \ ${LDFLAGS} -shared -fPIC "-Wl,-soname,lib${name}.so" \ "${file}" -o "lib${name}.so" } cd "${S}/core/c/jbigi/jbigi" || die "unable to cd to jbigi" compile_lib jbigi src/jbigi.c -Iinclude -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 src/jcpuid.c -Iinclude || die "unable to build jcpuid" fi } src_test() { # avoid rebuilding sed -e '//d' -i core/java/build.xml || die 'avoid building twice' # halt on error find -name build.xml \ -execdir sed -e 's/