net-irc/ngircd: add new OpenRC service

Ebuild changes (r3):
* update EAPI 7 -> 8
* uncomment PIDFile, ServerUID and ServerGID
* correct ngircd.conf's owner

Service changes (r2):
* use pidfile
* use declarative config
* add configtest command
* add reload command

Signed-off-by: Anna Vyalkova <cyber+gentoo@sysrq.in>
Closes: https://github.com/gentoo/gentoo/pull/24277
Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Anna Vyalkova
2022-02-20 02:00:26 +05:00
committed by Sam James
parent 2c0448a2ea
commit df75ebf460
3 changed files with 171 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
# Configuration file
#NGIRCD_CONFIGFILE="/etc/ngircd/ngircd.conf"
# PID file
#NGIRCD_PIDFILE="/var/run/ngircd/ngircd.pid"
# Options for ngircd
#NGIRCD_OPTS="-d -s"

View File

@@ -0,0 +1,52 @@
#!/sbin/openrc-run
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
extra_commands="configtest"
extra_started_commands="reload"
description="IRC server"
description_configtest="Run ngircd's internal config check."
description_reload="Reload the ngircd's configuration."
: ${NGIRCD_CONFIGFILE:=/etc/ngircd/${RC_SVCNAME}.conf}
command="/usr/sbin/ngircd"
command_args="${NGIRCD_OPTS} -f \"${NGIRCD_CONFIGFILE}\""
command_args_foreground="-n"
command_user="ngircd:ngircd"
pidfile="${NGIRCD_PIDFILE:-/var/run/ngircd/${RC_SVCNAME}.pid}"
depend() {
need net
use logger
provide ircd
}
start_pre() {
checkpath -f "${pidfile}" -o ${command_user} || return 1
if [ "${RC_CMD}" != "restart" ]; then
configtest || return 1
fi
}
stop_pre() {
if [ "${RC_CMD}" = "restart" ]; then
configtest || return 1
fi
}
reload() {
configtest || return 1
ebegin "Refreshing ${RC_SVCNAME}'s configuration"
start-stop-daemon --signal SIGHUP --pidfile "${pidfile}"
eend $? "Failed to reload ${RC_SVCNAME}"
}
configtest() {
ebegin "Checking ${RC_SVCNAME}'s configuration"
# "press enter to continue"
echo | ${command} -f "${NGIRCD_CONFIGFILE}" -t >/dev/null
eend $? "failed, please correct errors in the config file"
}

View File

@@ -0,0 +1,111 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}/usr/share/openpgp-keys/alexbarton.asc"
inherit verify-sig
DESCRIPTION="An IRC server written from scratch"
HOMEPAGE="https://ngircd.barton.de/"
SRC_URI="https://arthur.barton.de/pub/${PN}/${P}.tar.gz"
SRC_URI+=" verify-sig? ( https://arthur.barton.de/pub/${PN}/${P}.tar.gz.sig )"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~x86 ~x64-macos"
IUSE="debug gnutls ident irc-plus +ipv6 pam +ssl strict-rfc tcpd test zlib"
# Flaky test needs investigation (bug 719256)
RESTRICT="test"
RDEPEND="
acct-user/ngircd
irc-plus? ( virtual/libiconv )
ident? ( net-libs/libident )
pam? ( sys-libs/pam )
ssl? (
gnutls? ( net-libs/gnutls:= )
!gnutls? (
dev-libs/openssl:0=
)
)
tcpd? ( sys-apps/tcp-wrappers )
zlib? ( sys-libs/zlib )
"
DEPEND="${RDEPEND}"
BDEPEND="
test? (
dev-tcltk/expect
net-misc/netkit-telnetd
)
verify-sig? ( sec-keys/openpgp-keys-alexbarton )
"
src_prepare() {
default
if ! use prefix ; then
sed -i \
-e "/;ServerUID = /s/65534/ngircd/" \
-e "/;ServerGID = /s/65534/ngircd/" \
doc/sample-ngircd.conf.tmpl || die
fi
# make pidfiles work out-of-the-box
sed -i \
-e "/;PidFile = /s/;//" \
-e "/;ServerUID = /s/;//" \
-e "/;ServerGID = /s/;//" \
doc/sample-ngircd.conf.tmpl || die
# Note that if we need to use automake, we need a certain version (for now):
# https://github.com/ngircd/ngircd/issues/261
# WANT_AUTOMAKE=1.11
# eautomake
}
src_configure() {
local myeconf=(
--sysconfdir="${EPREFIX}"/etc/${PN}
$(use_enable debug sniffer)
$(use_enable debug)
$(use_enable irc-plus ircplus)
$(use_enable ipv6)
$(use_enable strict-rfc)
$(use_with irc-plus iconv)
$(use_with ident)
$(use_with pam)
$(use_with tcpd tcp-wrappers)
$(use_with zlib)
)
if use ssl ; then
if use gnutls ; then
myeconf+=(
$( use_with gnutls )
)
else
myeconf+=(
$( use_with !gnutls openssl )
)
fi
fi
econf "${myeconf[@]}"
}
src_install() {
default
fowners ngircd:ngircd /etc/ngircd/ngircd.conf
newinitd "${FILESDIR}"/ngircd.init-r2.d ngircd
newconfd "${FILESDIR}"/ngircd.conf.d ngircd
}
pkg_postinst() {
if [[ -z ${REPLACING_VERSIONS} ]] && use pam ; then
elog "ngircd will use PAMIsOptionalPAM by default, please change this option."
elog "You may not be able to login until you change this."
fi
}