commit: b63d81cc7eee01fd502897d82767876ac52280fc Author: Filip Kobierski <fkobi <AT> pm <DOT> me> AuthorDate: Tue May 6 15:42:16 2025 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Wed May 21 21:47:57 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b63d81cc
net-vpn/i2pd: add 2.56.0-r1 with improved openrc files Basically a rewrite at this point Added: - name - reload command - required_{dirs,files} - command_args_background - I2PD_LOGLEVEL - default USER & GROUP - confd file header Fixed: - pidfile usage - properly fix for #808845 - part of #949988 (bad shutdown) - not changing group Changed: - hardcode pidfile path to /run/i2pd/ - use command_progress instead of --progress - use command_user instead of --user - change `retry` timeouts to match upstream - always run with --daemon --service --log=file - rename OPTIONS to ARGS & add default value - rename LOG to LOGFILE & add default value - graceful command: - drop eval - use $retry - style - group subcommands stuff at the bottom - indent stuff - unquote known atomic constants - use " instead of ' for strings - confd: move unprefixed rc_ulimit to the bottom Removed: - use netmount - I2P_PID_DIR Bug: https://bugs.gentoo.org/808845 Bug: https://bugs.gentoo.org/949988 Bug: https://bugs.gentoo.org/955416 Signed-off-by: Filip Kobierski <fkobi <AT> pm.me> Part-of: https://github.com/gentoo/gentoo/pull/41968 Closes: https://github.com/gentoo/gentoo/pull/41968 Signed-off-by: Sam James <sam <AT> gentoo.org> net-vpn/i2pd/files/i2pd-2.56.0.confd | 16 ++++++++ net-vpn/i2pd/files/i2pd-2.56.0.initd | 53 +++++++++++++++++++++++++ net-vpn/i2pd/i2pd-2.56.0-r1.ebuild | 76 ++++++++++++++++++++++++++++++++++++ 3 files changed, 145 insertions(+) diff --git a/net-vpn/i2pd/files/i2pd-2.56.0.confd b/net-vpn/i2pd/files/i2pd-2.56.0.confd new file mode 100644 index 000000000000..97cb169f9c45 --- /dev/null +++ b/net-vpn/i2pd/files/i2pd-2.56.0.confd @@ -0,0 +1,16 @@ +# /etc/conf.d/i2pd: config file for /etc/init.d/i2pd + +#I2PD_USER=i2pd +#I2PD_GROUP=i2pd + +# Location of the i2pd log file +#I2PD_LOGFILE=/var/log/i2pd.log + +# Minimal level of log messages (debug, info, warn, error, none) +#I2PD_LOGLEVEL="warn" + +# Additional arguments passed to the daemon +#I2PD_ARGS="--floodfill" + +# Max number of open files (for floodfill) +rc_ulimit="-n 4096" diff --git a/net-vpn/i2pd/files/i2pd-2.56.0.initd b/net-vpn/i2pd/files/i2pd-2.56.0.initd new file mode 100644 index 000000000000..c58dcfcb575b --- /dev/null +++ b/net-vpn/i2pd/files/i2pd-2.56.0.initd @@ -0,0 +1,53 @@ +#!/sbin/openrc-run +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +name="Invisible Internet Protocol daemon" +description="C++ daemon for accessing the I2P network" + +command="/usr/bin/i2pd" +pidfile="/run/i2pd/i2pd.pid" + +command_args_background="--daemon --pidfile=${pidfile}" +command_progress=1 +command_user="${I2PD_USER:=i2pd}:${I2PD_GROUP:=i2pd}" +retry="SIGTERM/30/SIGKILL/10" +required_dirs="/var/lib/i2pd" +required_files="/etc/i2pd/i2pd.conf" + +I2PD_LOGFILE="${I2PD_LOGFILE:=/var/log/i2pd.log}" + +command_args="--service --log=file \ + --conf=/etc/i2pd/i2pd.conf \ + --tunconf=/etc/i2pd/tunnels.conf \ + --tunnelsdir=/etc/i2pd/tunnels.conf.d \ + --loglevel='${I2PD_LOGLEVEL:=warn}'\ + --logfile=${I2PD_LOGFILE} ${I2PD_ARGS} \ +" + +depend() { + use dns # for bootstrapping + use logger +} + +start_pre() { + checkpath -o ${command_user} -d $(dirname ${pidfile}) + checkpath -o ${command_user} -f ${I2PD_LOGFILE} +} + +extra_started_commands="reload graceful" + +description_reload="Reload tunnels.conf configuration" +reload() { + start-stop-daemon -s HUP -x ${command} -p ${pidfile} + eend $? "Reloaded tunnels configuration" +} + +description_graceful="Graceful shutdown, takes 10 minutes" +graceful() { + # on SIGINT, i2pd stops accepting tunnels and shuts down in 10 minutes + ebegin "Gracefully stopping i2pd, this takes 10 minutes" + mark_service_stopping + start-stop-daemon -K -x ${command} -p ${pidfile} -R "SIGINT/620/${retry}" + eend $? && mark_service_stopped +} diff --git a/net-vpn/i2pd/i2pd-2.56.0-r1.ebuild b/net-vpn/i2pd/i2pd-2.56.0-r1.ebuild new file mode 100644 index 000000000000..0d05e22b9f24 --- /dev/null +++ b/net-vpn/i2pd/i2pd-2.56.0-r1.ebuild @@ -0,0 +1,76 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake systemd + +DESCRIPTION="A C++ daemon for accessing the I2P anonymous network" +HOMEPAGE="https://github.com/PurpleI2P/i2pd" +SRC_URI="https://github.com/PurpleI2P/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="+upnp" + +DEPEND=" + dev-libs/boost:= + dev-libs/openssl:0=[-bindist(-)] + sys-libs/zlib + upnp? ( net-libs/miniupnpc:= ) +" +RDEPEND=" + acct-user/i2pd + acct-group/i2pd + ${DEPEND} +" + +CMAKE_USE_DIR="${WORKDIR}/${P}/build" + +DOCS=( ../README.md ../contrib/i2pd.conf ../contrib/tunnels.conf ) + +src_configure() { + local mycmakeargs=( + -DWITH_HARDENING=OFF # worsens or matches the non-hardened profiles + -DWITH_STATIC=OFF + -DWITH_UPNP=$(usex upnp ON OFF) + -DWITH_LIBRARY=ON + -DWITH_BINARY=ON + ) + cmake_src_configure +} + +src_install() { + cmake_src_install + + # config + insinto /etc/i2pd + doins contrib/i2pd.conf + doins contrib/tunnels.conf + + # working directory + insinto /var/lib/i2pd + doins -r contrib/certificates + + # add /var/lib/i2pd/certificates to CONFIG_PROTECT + doenvd "${FILESDIR}/99i2pd" + + # openrc and systemd daemon routines + newconfd "${FILESDIR}/i2pd-2.56.0.confd" i2pd + newinitd "${FILESDIR}/i2pd-2.56.0.initd" i2pd + systemd_newunit "${FILESDIR}/i2pd-2.38.0.service" i2pd.service + + # logrotate + insinto /etc/logrotate.d + newins "${FILESDIR}/i2pd-2.38.0-r1.logrotate" i2pd +} + +pkg_postinst() { + if [[ -f ${EROOT}/etc/i2pd/subscriptions.txt ]]; then + ewarn + ewarn "Configuration of the subscriptions has been moved from" + ewarn "subscriptions.txt to i2pd.conf. We recommend updating" + ewarn "i2pd.conf accordingly and deleting subscriptions.txt." + fi +}