diff options
author | Alexey Korepanov <kaikaikai@yandex.ru> | 2016-04-07 14:48:35 +0100 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2016-04-08 05:49:20 -0400 |
commit | 9c9e4daa436281959325c4cdf7feef84313c2ae8 (patch) | |
tree | 7acdf47b3f56b7ac55d5496378c512d32a429979 /net-misc | |
parent | dev-python/neovim-python-client: Bump version to 0.1.7 (diff) | |
download | gentoo-9c9e4daa436281959325c4cdf7feef84313c2ae8.tar.gz gentoo-9c9e4daa436281959325c4cdf7feef84313c2ae8.tar.bz2 gentoo-9c9e4daa436281959325c4cdf7feef84313c2ae8.zip |
net-misc/i2pd: add graceful shutdown and fix pid file problem
Diffstat (limited to 'net-misc')
-rw-r--r-- | net-misc/i2pd/files/i2pd-2.6.0-r2.confd | 9 | ||||
-rw-r--r-- | net-misc/i2pd/files/i2pd-2.6.0-r2.initd | 46 | ||||
-rw-r--r-- | net-misc/i2pd/files/i2pd-2.6.0-r2.service | 20 | ||||
-rw-r--r-- | net-misc/i2pd/i2pd-2.6.0-r2.ebuild | 86 |
4 files changed, 161 insertions, 0 deletions
diff --git a/net-misc/i2pd/files/i2pd-2.6.0-r2.confd b/net-misc/i2pd/files/i2pd-2.6.0-r2.confd new file mode 100644 index 000000000000..8f5ee8cdbc52 --- /dev/null +++ b/net-misc/i2pd/files/i2pd-2.6.0-r2.confd @@ -0,0 +1,9 @@ +I2PD_USER="${I2PD_USER:-i2pd}" +I2PD_GROUP="${I2PD_GROUP:-i2pd}" +I2PD_LOG="/var/log/i2pd.log" +I2PD_PID="/run/i2pd/i2pd.pid" + +# Options to i2pd +I2PD_OPTIONS="--daemon --service --pidfile=${I2PD_PID} \ +--log=file --logfile=${I2PD_LOG} \ +--conf=/etc/i2pd/i2pd.conf --tunconf=/etc/i2pd/tunnels.conf" diff --git a/net-misc/i2pd/files/i2pd-2.6.0-r2.initd b/net-misc/i2pd/files/i2pd-2.6.0-r2.initd new file mode 100644 index 000000000000..72b9905d46aa --- /dev/null +++ b/net-misc/i2pd/files/i2pd-2.6.0-r2.initd @@ -0,0 +1,46 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +description="C++ daemon for accessing the I2P network" +description_graceful="Graceful shutdown, takes 10 minutes" + +command="/usr/bin/i2pd" +command_args="${I2PD_OPTIONS}" +user="${I2PD_USER}:${I2PD_GROUP}" +start_stop_daemon_args=" + --user \"${user}\" + --pidfile \"${I2PD_PID}\" + --progress --retry 'SIGTERM/20 SIGKILL/20' +" +I2PD_PID_DIR=$(dirname "${I2PD_PID}") + +extra_started_commands="graceful" + +depend() { + use dns logger netmount +} + +start_pre() { + if [ -z "${I2PD_USER}" ] || \ + [ -z "${I2PD_GROUP}" ] || \ + [ -z "${I2PD_PID}" ] || \ + [ -z "${I2PD_LOG}" ] || \ + [ -z "${I2PD_OPTIONS}" ] ; then + eerror "Not all variables I2PD_USER, I2PD_GROUP, I2PD_PID, I2PD_OPTIONS, I2PD_LOG are defined." + eerror "Check your /etc/conf.d/i2pd." + return 1 + fi + checkpath -f -o "${user}" "${I2PD_LOG}" + checkpath -d -m 0750 -o "${user}" "${I2PD_PID_DIR}" +} + +graceful() { + # on SIGINT, i2pd stops accepting tunnels and shuts down in 600 seconds + ebegin "Gracefully stopping i2pd, this takes 10 minutes" + mark_service_stopping + eval start-stop-daemon --stop ${start_stop_daemon_args} \ + --exec "${command}" --retry 'SIGINT/620 SIGTERM/20 SIGKILL/20' + eend $? && mark_service_stopped +} diff --git a/net-misc/i2pd/files/i2pd-2.6.0-r2.service b/net-misc/i2pd/files/i2pd-2.6.0-r2.service new file mode 100644 index 000000000000..5cc34ebf33c6 --- /dev/null +++ b/net-misc/i2pd/files/i2pd-2.6.0-r2.service @@ -0,0 +1,20 @@ +[Unit] +Description=C++ daemon for accessing the I2P network +After=network.target + +[Service] +Type=forking +Restart=on-abnormal +PIDFile=/run/i2pd/i2pd.pid +User=i2pd +Group=i2pd +PermissionsStartOnly=yes +ExecStartPre=/bin/mkdir -p /run/i2pd +ExecStartPre=/bin/chown i2pd:i2pd /run/i2pd +ExecStartPre=/bin/touch /run/i2pd/i2pd.pid /var/log/i2pd.log +ExecStartPre=/bin/chown i2pd:i2pd /run/i2pd/i2pd.pid /var/log/i2pd.log +ExecStart=/usr/bin/i2pd --daemon --service --pidfile=/run/i2pd/i2pd.pid --log=file --logfile=/var/log/i2pd.log --conf=/etc/i2pd/i2pd.conf --tunconf=/etc/i2pd/tunnels.conf + +[Install] +WantedBy=multi-user.target + diff --git a/net-misc/i2pd/i2pd-2.6.0-r2.ebuild b/net-misc/i2pd/i2pd-2.6.0-r2.ebuild new file mode 100644 index 000000000000..dfb03b13e9ba --- /dev/null +++ b/net-misc/i2pd/i2pd-2.6.0-r2.ebuild @@ -0,0 +1,86 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=6 +inherit eutils systemd user cmake-utils + +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="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="cpu_flags_x86_aes i2p-hardening libressl pch static +upnp" + +RDEPEND="!static? ( >=dev-libs/boost-1.49[threads] + dev-libs/crypto++ + !libressl? ( dev-libs/openssl:0 ) + libressl? ( dev-libs/libressl ) + upnp? ( net-libs/miniupnpc ) + )" +DEPEND="${RDEPEND} + static? ( >=dev-libs/boost-1.49[static-libs,threads] + dev-libs/crypto++[static-libs] + !libressl? ( dev-libs/openssl:0[-bindist,static-libs] ) + libressl? ( dev-libs/libressl[static-libs] ) + upnp? ( net-libs/miniupnpc[static-libs] ) ) + i2p-hardening? ( >=sys-devel/gcc-4.7 ) + || ( >=sys-devel/gcc-4.7 >=sys-devel/clang-3.3 )" + +I2PD_USER="${I2PD_USER:-i2pd}" +I2PD_GROUP="${I2PD_GROUP:-i2pd}" + +CMAKE_USE_DIR="${S}/build" + +src_prepare() { + eapply "${FILESDIR}/${PN}-2.5.1-fix_installed_components.patch" + eapply_user +} + +src_configure() { + mycmakeargs=( + -DWITH_AESNI=$(usex cpu_flags_x86_aes ON OFF) + -DWITH_HARDENING=$(usex i2p-hardening ON OFF) + -DWITH_PCH=$(usex pch ON OFF) + -DWITH_STATIC=$(usex static ON OFF) + -DWITH_UPNP=$(usex upnp ON OFF) + -DWITH_LIBRARY=ON + -DWITH_BINARY=ON + ) + cmake-utils_src_configure +} + +src_install() { + cmake-utils_src_install + dodoc README.md + keepdir /var/lib/i2pd/ + insinto "/var/lib/i2pd" + doins -r "${S}/contrib/certificates" + dosym /etc/i2pd/subscriptions.txt /var/lib/i2pd/subscriptions.txt + fowners "${I2PD_USER}:${I2PD_GROUP}" /var/lib/i2pd/ + fperms 700 /var/lib/i2pd/ + dodir "/etc/${PN}" + insinto "/etc/${PN}" + doins "${S}/docs/${PN}.conf" + doins "${S}/debian/subscriptions.txt" + doins "${S}/debian/tunnels.conf" + dodir /usr/share/i2pd + newconfd "${FILESDIR}/${PN}-2.6.0-r2.confd" "${PN}" + newinitd "${FILESDIR}/${PN}-2.6.0-r2.initd" "${PN}" + systemd_newunit "${FILESDIR}/${PN}-2.6.0-r2.service" "${PN}.service" + doenvd "${FILESDIR}/99${PN}" + insinto /etc/logrotate.d + newins "${FILESDIR}/${PN}-2.5.0.logrotate" "${PN}" + fowners "${I2PD_USER}:${I2PD_GROUP}" "/etc/${PN}/${PN}.conf" \ + "/etc/${PN}/subscriptions.txt" \ + "/etc/${PN}/tunnels.conf" + fperms 600 "/etc/${PN}/${PN}.conf" \ + "/etc/${PN}/subscriptions.txt" \ + "/etc/${PN}/tunnels.conf" +} + +pkg_setup() { + enewgroup "${I2PD_GROUP}" + enewuser "${I2PD_USER}" -1 -1 "/var/lib/run/${PN}" "${I2PD_GROUP}" +} |