# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=7 JAVA_PKG_IUSE="doc source test" MAVEN_ID="net.i2p:i2p:1.8.0" JAVA_TESTING_FRAMEWORKS="junit-4" inherit java-pkg-2 java-pkg-simple systemd DESCRIPTION="A privacy-centric, anonymous network" HOMEPAGE="https://geti2p.net/en/" 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 ~x86" IUSE="nls" # CP_DEPEND="dev-java/java-service-wrapper:0" DEPEND="${CP_DEPEND} >=virtual/jdk-1.8:* test? ( dev-java/hamcrest:0 dev-java/mockito:4 ) " RDEPEND="${CP_DEPEND} acct-user/i2p acct-group/i2p net-libs/nativebiginteger:0 >=virtual/jre-1.8:* " S="${WORKDIR}/${P}" src_prepare() { default java-pkg_clean # relocate countries.txt, dohservers.txt mkdir -p core/res/{net/i2p/util/,gnu/getopt/} || die mv core/{resources,res/net/i2p/util/} || die # relocate gnu/getopt/MessagesBundle*.properties according to "core/build.gradle" mv core/java/src/gnu/getopt/MessagesBundle*properties core/res/gnu/getopt || die # relocate continents.txt mkdir -p router/res/net/i2p/router/util/ || die mv router/{resources,res/net/i2p/router/util/} || die } src_compile() { einfo "Compiling libjbigi.so into jbigi.jar" BITS=64 core/c/build.sh || die einfo "Compiling i2p.jar" ./core/java/bundle-messages.sh || die JAVA_SRC_DIR=( "core/java/src" "core/java/build/messages-src" ) JAVA_RESOURCE_DIRS="core/res" JAVA_MAIN_CLASS="net.i2p.util.CommandLine" JAVA_JAR_FILENAME="i2p.jar" java-pkg-simple_src_compile JAVA_GENTOO_CLASSPATH_EXTRA+=":i2p.jar" rm -r target || die einfo "Compiling router.jar" ./router/java/bundle-messages.sh || die JAVA_SRC_DIR=( "router/java/src" "router/java/build/messages-src" ) JAVA_RESOURCE_DIRS="router/res" JAVA_MAIN_CLASS="net.i2p.router.CommandLine" JAVA_JAR_FILENAME="router.jar" java-pkg-simple_src_compile JAVA_GENTOO_CLASSPATH_EXTRA+=":router.jar" rm -r target || die einfo "Compiling ministreaming.jar" ./apps/ministreaming/java/bundle-messages.sh || die JAVA_SRC_DIR=( "apps/ministreaming/java/src" "apps/ministreaming/java/build/messages-src" ) JAVA_RESOURCE_DIRS=() JAVA_MAIN_CLASS="" JAVA_JAR_FILENAME="ministreaming.jar" java-pkg-simple_src_compile JAVA_GENTOO_CLASSPATH_EXTRA+=":ministreaming.jar" rm -r target || die if use doc; then JAVA_SRC_DIR=( "core/java/src" "core/java/build/messages-src" "router/java/src" "router/java/build/messages-src" "apps/ministreaming/java/src" "apps/ministreaming/java/build/messages-src" ) JAVA_JAR_FILENAME="ignoreme.jar" java-pkg-simple_src_compile fi } src_test() { JAVA_TEST_GENTOO_CLASSPATH="hamcrest,junit-4,mockito-4" einfo "Testing i2p.jar" JAVA_TEST_SRC_DIR="core/java/test/junit" JAVA_TEST_RESOURCE_DIRS="core/java/test/resources" # https://github.com/i2p/i2p.i2p/blob/i2p-1.8.0/core/build.gradle#L22-L31 JAVA_TEST_EXCLUDES=( net.i2p.AllCoreTests net.i2p.data.DataTestSuite net.i2p.data.i2cp/I2CPTestSuite # Invalid test class - No runnable methods net.i2p.TestContext # java.lang.InstantiationException net.i2p.data.StructureTest ) java-pkg-simple_src_test einfo "Testing router.jar" JAVA_TEST_SRC_DIR="router/java/test/junit" JAVA_TEST_RESOURCE_DIRS=() JAVA_TEST_EXCLUDES=( # Invalid test class - No runnable methods net.i2p.TestContext # java.lang.InstantiationException net.i2p.data.StructureTest ) java-pkg-simple_src_test einfo "Testing ministreaming.jar" JAVA_TEST_SRC_DIR="apps/ministreaming/java/test/junit" JAVA_TEST_RESOURCE_DIRS=() java-pkg-simple_src_test } src_install() { einstalldocs java-pkg_dojar "jbigi.jar" java-pkg_dojar "i2p.jar" java-pkg_dolauncher "i2p-${SLOT}" --main "net.i2p.util.CommandLine" java-pkg_dojar "router.jar" java-pkg_dolauncher "router-${SLOT}" --main "net.i2p.router.CommandLine" java-pkg_dojar= "ministreaming.jar" if use doc; then java-pkg_dojavadoc target/api fi if use source; then java-pkg_dosrc "core/java/src/*" java-pkg_dosrc "core/java/build/messages-src/*" java-pkg_dosrc "router/java/src/*" java-pkg_dosrc "router/java/build/messages-src/*" java-pkg_dosrc "apps/ministreaming/java/src" java-pkg_dosrc "apps/ministreaming/java/build/messages-src" fi # # cd into pkg-temp. # cd "${S}/pkg-temp" || die # # # we remove system installed jar and install the others # rm lib/wrapper.jar || \ # die "unable to remove locally built jar already found in system" # java-pkg_dojar lib/*.jar # # # create own launcher # java-pkg_dolauncher eepget --main net.i2p.util.EepGet --jar i2p.jar # # # Install main files and basic documentation # insinto "/usr/share/i2p" # doins blocklist.txt hosts.txt *.config # dodoc history.txt INSTALL-headless.txt LICENSE.txt # doman man/* # # # Install other directories # doins -r certificates docs eepsite geoip scripts # java-pkg_dowar webapps/*.war # # # Install daemon files # newinitd "${FILESDIR}/i2p.init" i2p # systemd_dounit "${FILESDIR}/i2p.service" # # # setup log # keepdir /var/log/i2p # fowners i2p:i2p /var/log/i2p # # # setup user # keepdir /var/lib/i2p # fowners i2p:i2p /var/lib/i2p }