inspircd-9999.ebuild (3682B)
1 # Copyright 1999-2019 Gentoo Authors 2 # Distributed under the terms of the GNU General Public License v2 3 4 EAPI=7 5 6 inherit toolchain-funcs user 7 8 DESCRIPTION="Inspire IRCd - The Stable, High-Performance Modular IRCd" 9 HOMEPAGE="http://www.inspircd.org/" 10 if [[ "${PV}" == "9999" ]] 11 then 12 inherit git-r3 13 14 EGIT_REPO_URI="https://github.com/inspircd/inspircd.git" 15 else 16 SRC_URI="https://github.com/inspircd/inspircd/archive/v${PV}.tar.gz -> ${P}.tar.gz" 17 KEYWORDS="~amd64 ~ppc ~ppc64 ~x86" 18 fi 19 20 LICENSE="GPL-2" 21 SLOT="0" 22 IUSE="geoip gnutls ldap libressl mbedtls mysql pcre posix postgres sqlite openssl sslrehash tre" 23 24 REQUIRED_USE="sslrehash? ( || ( gnutls mbedtls openssl ) )" 25 26 RDEPEND=" 27 dev-lang/perl 28 dev-libs/utfcpp:= 29 openssl? ( 30 !libressl? ( dev-libs/openssl:= ) 31 libressl? ( dev-libs/libressl:= ) 32 ) 33 geoip? ( dev-libs/geoip ) 34 gnutls? ( net-libs/gnutls:= dev-libs/libgcrypt:0 ) 35 ldap? ( net-nds/openldap ) 36 mysql? ( dev-db/mysql-connector-c:= ) 37 mbedtls? ( net-libs/mbedtls:= ) 38 postgres? ( dev-db/postgresql:= ) 39 pcre? ( dev-libs/libpcre ) 40 sqlite? ( >=dev-db/sqlite-3.0 ) 41 tre? ( dev-libs/tre ) 42 " 43 DEPEND="${RDEPEND}" 44 45 DOCS=( docs/. ) 46 47 pkg_setup() { 48 enewgroup ${PN} 49 enewuser ${PN} -1 -1 -1 ${PN} 50 } 51 52 src_prepare() { 53 default 54 55 rm -r vendor/utfcpp || die "Failed removing bundling of utfcpp" 56 grep -l 'vendor_directory("utfcpp")' -r src | xargs sed -i 's/vendor_directory("utfcpp")/utf8/' || die "Failed changing the flag for utfcpp" 57 } 58 59 src_configure() { 60 local extras="" 61 62 tc-export CXX 63 64 # NOTE: remove when modulemanager is rewrote 65 # extra modules are found in src/modules/extra 66 use geoip && extras+="m_geoip.cpp," 67 use gnutls && extras+="m_ssl_gnutls.cpp," 68 use ldap && extras+="m_ldapauth.cpp,m_ldapoper.cpp," 69 use mysql && extras+="m_mysql.cpp," 70 use pcre && extras+="m_regex_pcre.cpp," 71 use posix && extras+="m_regex_posix.cpp," 72 use postgres && extras+="m_pgsql.cpp," 73 use sqlite && extras+="m_sqlite3.cpp," 74 use openssl && extras+="m_ssl_openssl.cpp," 75 use tre && extras+="m_regex_tre.cpp," 76 use mbedtls && extras+="m_ssl_mbedtls.cpp," 77 use sslrehash && extras+="m_sslrehashsignal.cpp," 78 79 # The first configuration run enables certain "extra" InspIRCd 80 # modules, the second run generates the actual makefile. 81 if [[ -n "${extras}" ]]; then 82 ./configure --disable-interactive --enable-extras=${extras%,} 83 fi 84 85 # Remove --development on stable release ebuild 86 local myconf=( 87 --disable-interactive 88 --development 89 --prefix="/usr/$(get_libdir)/${PN}" 90 --config-dir="/etc/${PN}" 91 --data-dir="/var/lib/${PN}/data" 92 --log-dir="/var/log/${PN}" 93 --binary-dir="/usr/bin" 94 --module-dir="/usr/$(get_libdir)/${PN}/modules" 95 --gid=${PN} 96 --uid=${PN} 97 ) 98 99 ./configure "${myconf[@]}" 100 } 101 102 src_compile() { 103 emake V=1 LDFLAGS="${LDFLAGS}" CXXFLAGS="${CXXFLAGS}" 104 } 105 106 src_install() { 107 emake INSTUID=${PN} DESTDIR="${D%/}" install 108 109 insinto "/usr/include/${PN}" 110 doins -r include/. 111 112 einstalldocs 113 114 newinitd "${FILESDIR}/${PN}.initd" "${PN}" 115 newconfd "${FILESDIR}/${PN}.confd" "${PN}" 116 117 keepdir "/var/log/${PN}" 118 119 diropts -o"${PN}" -g"${PN}" -m0700 120 keepdir "/var/lib/${PN}/data" 121 } 122 123 pkg_postinst() { 124 if [[ -z "${REPLACING_VERSIONS}" ]]; then 125 # This is a new installation 126 elog "You will find example configuration files under " 127 elog "/usr/share/doc/${PN}" 128 elog "Read the ${PN}.conf.example file carefully before " 129 elog "starting the service." 130 fi 131 local pv 132 for pv in ${REPLACING_VERSIONS}; do 133 if ver_test "${pv}" -lt "2.0.24-r1"; then 134 elog "Starting with 2.0.24-r1 the daemon is no longer started" 135 elog "with the --logfile option and you are thus expected to define" 136 elog "logging in the InspIRCd configuration file if you want it." 137 break 138 fi 139 done 140 }