# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit cmake DESCRIPTION="Anope IRC Services" HOMEPAGE="https://www.anope.org/ https://github.com/anope/anope/" SRC_URI="https://github.com/anope/anope/archive/${PV}.tar.gz -> ${P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="amd64 arm arm64 x86" IUSE="gnutls ldap mysql pcre sql sqlite ssl tre" REQUIRED_USE="sql? ( || ( mysql sqlite ) )" DEPEND=" acct-group/anope acct-user/anope mysql? ( dev-db/mysql-connector-c:= ) ssl? ( dev-libs/openssl:= ) gnutls? ( net-libs/gnutls:= dev-libs/libgcrypt:= ) ldap? ( net-nds/openldap:= ) pcre? ( dev-libs/libpcre2 ) sqlite? ( dev-db/sqlite:3 ) tre? ( dev-libs/tre ) virtual/libintl " RDEPEND="${DEPEND}" BDEPEND="sys-devel/gettext" PATCHES=( "${FILESDIR}/${PN}-2.0.6-example.conf-pid-path.patch" "${FILESDIR}/${PN}-2.0.7-example.conf-user.patch" ) src_prepare() { anope_enable_mod() { local modulefile=${1} ln -s "extra/${modulefile}" "modules/" || \ die "Failed to use ${modulefile}" } # These all require MySQL specifically if use mysql ; then anope_enable_mod "m_mysql.cpp" anope_enable_mod "stats/irc2sql/irc2sql.cpp" anope_enable_mod "stats/irc2sql/irc2sql.h" anope_enable_mod "stats/irc2sql/tables.cpp" anope_enable_mod "stats/irc2sql/utils.cpp" anope_enable_mod "stats/m_chanstats.cpp" anope_enable_mod "stats/cs_fantasy_top.cpp" anope_enable_mod "stats/cs_fantasy_stats.cpp" anope_enable_mod "m_sql_log.cpp" anope_enable_mod "m_sql_oper.cpp" fi use sqlite && anope_enable_mod "m_sqlite.cpp" # Any SQL implementation if use sql ; then anope_enable_mod "m_sql_authentication.cpp" fi if use ldap ; then anope_enable_mod "m_ldap.cpp" anope_enable_mod "m_ldap_authentication.cpp" anope_enable_mod "m_ldap_oper.cpp" fi use gnutls && anope_enable_mod "m_ssl_gnutls.cpp" use pcre && anope_enable_mod "m_regex_pcre2.cpp" use ssl && anope_enable_mod "m_ssl_openssl.cpp" use tre && anope_enable_mod "m_regex_tre.cpp" # Unconditional modules anope_enable_mod "m_regex_posix.cpp" # Avoid a silly sandbox error - tries to delete /usr/lib/modules sed -i '/install.*REMOVE_RECURSE.*/d' CMakeLists.txt || die # Copy anope.conf for fixup to comply w/ prefix cp "${FILESDIR}"/anope-conf.d-v2 "${T}" || die # Look in the right place for modules sed -i "s~%LIBDIR%~${EPREFIX}/usr/$(get_libdir)/anope/~" \ "${T}"/anope-conf.d-v2 || die cmake_src_prepare } src_configure() { local mycmakeargs=( -DBIN_DIR="libexec/anope" -DDB_DIR="../var/lib/anope" -DDOC_DIR="share/doc/${PF}" -DLIB_DIR="$(get_libdir)/anope" -DLOCALE_DIR="share/locale" -DCONF_DIR="/etc/anope" -DLOGS_DIR="../var/log/anope/" ) # https://gitlab.kitware.com/cmake/cmake/-/issues/24237 # https://bugs.anope.org/view.php?id=1753 unset CLICOLOR CLICOLOR_FORCE CMAKE_COMPILER_COLOR_DIAGNOSTICS CMAKE_COLOR_DIAGNOSTICS cmake_src_configure } src_install() { cmake_src_install newinitd "${FILESDIR}"/anope-init.d ${PN} newconfd "${T}"/anope-conf.d-v2 ${PN} dosym ../libexec/anope/services /usr/bin/services dosym ../libexec/anope/anopesmtp /usr/bin/anopesmtp keepdir /var/log/anope /var/lib/anope/backups fowners anope:anope /var/{lib,log}/anope /var/lib/anope/backups dodoc -r docs/* data/example.conf insinto /etc/anope newins data/example.conf services.conf fowners anope:anope /var/log/anope fowners anope:anope /var/lib/anope/backups/ } pkg_postinst() { if [[ -z "${REPLACING_VERSIONS}" ]] ; then # Only tell them about this on a fresh install. ewarn "Anope won't run out of the box, you still have to configure it to match your IRCd's configuration." ewarn "Edit /etc/anope/services.conf to configure Anope." else # We're replacing some versions. Find out which. local ver for ver in ${REPLACING_VERSIONS} ; do if ver_test ${ver} -lt 2.0.7 ; then # In this version, we introduced correct FHS structure # We need the users to make some changes to their services.conf ewarn "Please modify your services.conf to include the following directive:" ewarn "in options{}, please include user=\"anope\" and group=\"anope\"" ewarn "This is needed because Anope now starts as root and drops down." ewarn "Reference: https://wiki.anope.org/index.php/2.0/Configuration#Services_Process_Options" fi done fi }