summaryrefslogtreecommitdiff
blob: 6514c7a98dcd0cbaeec951ac87e49ecb45dfbe43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI="6"

inherit eutils java-pkg-2 java-ant-2 systemd user

DESCRIPTION="A privacy-centric, anonymous network."
HOMEPAGE="https://geti2p.net"
SRC_URI="https://download.i2p2.de/releases/${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"

# Until the deps reach other arches
KEYWORDS="~amd64 ~x86"
IUSE="+ecdsa nls"

# dev-java/ant-core is automatically added due to java-ant-2.eclass
CDEPEND="dev-java/bcprov:1.50
	dev-java/jrobin:0
	dev-java/slf4j-api:0
	dev-java/tomcat-jstl-impl:0
	dev-java/tomcat-jstl-spec:0
	dev-java/java-service-wrapper:0"

DEPEND="${CDEPEND}
	dev-java/eclipse-ecj:*
	dev-libs/gmp:0
	nls? ( >=sys-devel/gettext-0.19 )
	>=virtual/jdk-1.7"

RDEPEND="${CDEPEND}
	ecdsa? (
		|| (
			dev-java/icedtea:7[-sunec]
			dev-java/icedtea:8[-sunec]
			dev-java/icedtea:7[nss,-sunec]
			dev-java/icedtea-bin:7[nss]
			dev-java/icedtea-bin:7
			dev-java/icedtea-bin:8
			dev-java/oracle-jre-bin
			dev-java/oracle-jdk-bin
		)
	)
	!ecdsa? ( >=virtual/jre-1.7 )"

EANT_BUILD_TARGET="pkg"
EANT_GENTOO_CLASSPATH="java-service-wrapper,jrobin,slf4j-api,tomcat-jstl-impl,tomcat-jstl-spec,bcprov-1.50"
JAVA_ANT_ENCODING="UTF-8"

I2P_ROOT='/usr/share/i2p'
I2P_CONFIG_HOME='/var/lib/i2p'
I2P_CONFIG_DIR="${I2P_CONFIG_HOME}/.i2p"

RES_DIR='installer/resources'

PATCHES=(
	"${FILESDIR}/${P}-add_libs.patch"
)

pkg_setup() {
	java-pkg-2_pkg_setup

	enewgroup i2p
	enewuser i2p -1 -1 "${I2P_CONFIG_HOME}" i2p
}

src_unpack() {
	unpack ${A}
	cd "${S}" || die
	java-ant_rewrite-classpath
}

src_prepare() {
	java-pkg-2_src_prepare

	# We're on GNU/Linux, we don't need .exe files
	echo "noExe=true" > override.properties || die
	if ! use nls; then
		echo "require.gettext=false" >> override.properties || die
	fi

	# avoid auto starting browser
	sed -i 's|clientApp.4.startOnLoad=true|clientApp.4.startOnLoad=false|' \
		"${RES_DIR}/clients.config" || die

	# we do it now so we can resolve path after
	default

	# replace paths as the installer would
	sed -i "s|%INSTALL_PATH|${I2P_ROOT}|" \
		"${RES_DIR}/"{eepget,i2prouter,runplain.sh}  || die
	sed -i "s|\$INSTALL_PATH|${I2P_ROOT}|" "${RES_DIR}/wrapper.config" || die
	sed -i "s|%SYSTEM_java_io_tmpdir|${I2P_CONFIG_DIR}|" \
		"${RES_DIR}/"{i2prouter,runplain.sh} || die
	sed -i "s|%USER_HOME|${I2P_CONFIG_HOME}|" "${RES_DIR}/i2prouter" || die
}

src_install() {
	# cd into pkg-temp.
	cd "${S}/pkg-temp" || die

	# This is ugly, but to satisfy all non-system .jar dependencies, jetty
	# would need to be packaged. It would be too large a task
	# for an unseasoned developer. This seems to be the most pragmatic solution
	java-pkg_jarinto "${I2P_ROOT}/lib"
	local i
	for i in BOB commons-el commons-logging i2p i2psnark i2ptunnel \
		jasper-compiler jasper-runtime javax.servlet jbigi jetty* mstreaming org.mortbay.* router* \
		sam standard streaming systray; do
		java-pkg_dojar lib/${i}.jar
	done

	# Set up symlinks for binaries
	dosym /usr/bin/wrapper "${I2P_ROOT}/i2psvc"
	dosym "${I2P_ROOT}/i2prouter" /usr/bin/i2prouter
	dosym "${I2P_ROOT}/eepget" /usr/bin/eepget

	# Install main files and basic documentation
	exeinto "${I2P_ROOT}"
	insinto "${I2P_ROOT}"
	doins blocklist.txt hosts.txt *.config
	doexe eepget i2prouter runplain.sh
	dodoc history.txt INSTALL-headless.txt LICENSE.txt
	doman man/*

	# Install other directories
	doins -r certificates docs eepsite geoip scripts
	dodoc -r licenses
	java-pkg_dowar webapps/*.war

	# Install daemon files
	newinitd "${FILESDIR}/${P}.initd" i2p
	systemd_newunit "${FILESDIR}/${P}.service" i2p.service

	# setup user
	keepdir "${I2P_CONFIG_DIR}"
	fowners -R i2p:i2p "${I2P_CONFIG_DIR}"
}

pkg_postinst() {
	elog "Custom configuration belongs in /var/lib/i2p/.i2p/ to avoid being overwritten."
	elog "I2P can be configured through the web interface at http://localhost:7657/index.jsp"

	ewarn 'Currently, the i2p team does not enforce to use ECDSA keys. But it is more and'
	ewarn 'more pushed. To help the network, you are recommended to have either:'
	ewarn '  dev-java/icedtea[-sunec,nss]'
	ewarn '  dev-java/icedtea-bin[nss]'
	ewarn '  dev-java/icedtea[-sunec] and bouncycastle (bcprov)'
	ewarn '  dev-java/icedtea-bin and bouncycastle (bcprov)'
	ewarn '  dev-java/oracle-jre-bin'
	ewarn '  dev-java/oracle-jdk-bin'
	ewarn 'Alternatively you can just use Ed25519 keys - which is a stronger algorithm anyways.'
	ewarn
	ewarn "This is purely a run-time issue. You're free to build i2p with any JDK, as long as"
	ewarn 'the JVM you run it with is one of the above listed and from the same or a newer generation'
	ewarn 'as the one you built with.'
}