summaryrefslogtreecommitdiff
blob: 54eab04b7fe1002dc28f4b008176b596380b9716 (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
# Copyright 1999-2017 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="nls"

# dev-java/ant-core is automatically added due to java-ant-2.eclass
CP_DEPEND="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="${CP_DEPEND}
	dev-java/eclipse-ecj:*
	dev-libs/gmp:0
	nls? ( >=sys-devel/gettext-0.19 )
	>=virtual/jdk-1.7"

RDEPEND="${CP_DEPEND}
	|| (
		dev-java/icedtea:7[-sunec]
		dev-java/icedtea:8[-sunec]
		dev-java/icedtea-bin:7
		dev-java/icedtea-bin:8
		dev-java/oracle-jre-bin
		dev-java/oracle-jdk-bin
	)"

EANT_BUILD_TARGET="pkg"
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 ${I2P_CONFIG_DIR} to avoid being overwritten."
	elog 'I2P can be configured through the web interface at http://localhost:7657/console'
	elog

	ewarn "The router will migrate the jetty.xml for each Jetty website to the new Jetty 9 setup during startup."
	ewarn "This should work for recent, unmodified configurations but may not work for modified or"
	ewarn "very old setups. Verify that your Jetty website works after upgrading, and contact i2p"
	ewarn "developers on IRC if you need assistance"
	ewarn
	ewarn "Several plugins are not compatible with Jetty 9 and must be updated if you use them."
	ewarn "New updated version avaliable: i2pbote 0.4.6, zzzot 0.15.0."
	ewarn "No new version so far: BwSchedule 0.0.36, i2pcontrol 0.11."
}