1# Copyright 1999-2020 Gentoo Foundation 2# Distributed under the terms of the GNU General Public License v2 3 4EAPI=6 5 6inherit eutils flag-o-matic toolchain-funcs user 7 8IUSE="ipv6 mysql radius postgres jabber ssl odbc sctp rtpengine redis pua ims presence sqlite snmp json http ldap geoip2 erlang xml jansson lua evapi" 9 10DESCRIPTION="The Open Source SIP Server" 11HOMEPAGE="http://www.kamailio.org/" 12 13if [[ ${PV} == 9999 ]]; then 14 inherit git-r3 15 EGIT_REPO_URI="https://github.com/kamailio/kamailio.git" 16else 17 SRC_URI="http://www.${PN}.org/pub/${PN}/${PV}/src/${P}_src.tar.gz" 18fi 19 20SLOT="0" 21LICENSE="GPL-2+" 22KEYWORDS="~amd64 ~x86" 23 24RDEPEND=">=sys-devel/bison-1.35 25 >=sys-devel/flex-2.5.4a 26 app-text/dos2unix 27 dev-libs/libpcre 28 >=dev-libs/libical-3.0.5 29 ssl? ( dev-libs/openssl ) 30 mysql? ( virtual/mysql ) 31 radius? ( >=net-dialup/radiusclient-ng-0.5.0 ) 32 postgres? ( dev-db/libpq ) 33 jabber? ( dev-libs/expat ) 34 odbc? ( dev-db/unixODBC ) 35 sctp? ( net-misc/lksctp-tools ) 36 redis? ( dev-db/redis ) 37 rtpengine? ( net-misc/ngcp-rtpengine ) 38 ldap? ( net-nds/openldap ) 39 sqlite? ( dev-db/sqlite ) 40 snmp? ( net-analyzer/net-snmp ) 41 xml? ( dev-libs/libxml2 ) 42 jansson? ( dev-libs/jansson ) 43 json? ( dev-libs/json-c ) 44 lua? ( dev-lang/lua ) 45 geoip2? ( dev-libs/libmaxminddb ) 46 evapi? ( >=dev-libs/libev-4.23 )" 47 48DEPEND="${RDEPEND}" 49 50src_prepare() { 51 eapply_user 52} 53 54src_configure() { 55 use ipv6 || \ 56 sed -i -e "s/-DUSE_IPV6//g" Makefile.defs 57 58 use ssl && \ 59 sed -i -e "s:^#\(TLS=1\).*:\1:" Makefile && \ 60 KAMODULES="${KAMODULES} tls" 61 62 use mysql && KAMODULES="${KAMODULES} db_mysql" 63 64 use radius && KAMODULES="${KAMODULES} acc_radius auth_radius misc_radius" 65 66 use jabber && KAMODULES="${KAMODULES} xmpp" 67 use jabber && \ 68 use pua && \ 69 KAMODULES="${KAMODULES} pua_xmpp" 70 71 use postgres && KAMODULES="${KAMODULES} db_postgres" 72 73 use odbc && KAMODULES="${KAMODULES} db_unixodbc" 74 75 use sqlite && KAMODULES="${KAMODULES} db_sqlite" 76 77 use sctp && KAMODULES="${KAMODULES} sctp" 78 79 use redis && KAMODULES="${KAMODULES} db_redis ndb_redis topos_redis" 80 81 use json && KAMODULES="${KAMODULES} json acc_json jsonrpcc" 82 use json && \ 83 use pua && \ 84 KAMODULES="${KAMODULES} pua_json" 85 86 use pua && KAMODULES="${KAMODULES} pua pua_bla pua_dialoginfo pua_reginfo pua_rpc pua_usrloc" 87 88 use ims && KAMODULES="${KAMODULES} ims_auth ims_charging ims_dialog ims_diameter_server ims_icscf ims_ipsec_pcscf ims_isc ims_ocs ims_qos ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf ims_usrloc_scscf cdp cdp_avp" 89 90 use presence && KAMODULES="${KAMODULES} presence presence_conference presence_dialoginfo presence_mwi presence_profile presence_reginfo presence_xml" 91 92 use snmp && KAMODULES="${KAMODULES} snmpstats" 93 94 use http && KAMODULES="${KAMODULES} http_async_client http_client" 95 96 use ldap && KAMODULES="${KAMODULES} ldap" 97 98 use geoip2 && KAMODULES="${KAMODULES} geoip2" 99 100 use erlang && KAMODULES="${KAMODULES} erlang" 101 102 use evapi && KAMODULES="${KAMODULES} evapi" 103 104 use xml && KAMODULES="${KAMODULES} xmlops" 105 106 use lua && KAMODULES="${KAMODULES} app_lua" 107 108 use jansson && KAMODULES="${KAMODULES} jansson" 109 110 KAMODULES="${KAMODULES} dialplan lcr outbound utils regex uuid" 111} 112 113src_compile() { 114 use amd64 && append-flags "-fPIC" 115 use json && append-flags "-I/usr/include/json-c" 116 117 emake \ 118 CC="$(tc-getCC)" \ 119 CPU_TYPE="$(get-flag march)" \ 120 mode="release" \ 121 prefix="/usr" \ 122 include_modules="${KAMODULES}" \ 123 cfg_prefix="/etc" \ 124 cfg_dir="${PN}/" \ 125 cfg_target="/etc/${PN}/" \ 126 doc_dir="share/doc/${PF}/" \ 127 all || die 128} 129 130src_install () { 131 emake \ 132 BASEDIR="${D}" \ 133 mode="release" \ 134 prefix="/usr" \ 135 include_modules="${KAMODULES}" \ 136 cfg_prefix="${D}/etc" \ 137 cfg_dir="${PN}/" \ 138 cfg_target="/etc/${PN}/" \ 139 doc_dir="share/doc/${PF}/" \ 140 share_prefix="${D}/usr/" \ 141 share_dir="share/${PF}/" \ 142 data_prefix="${D}/usr" \ 143 data_dir="share/${PF}/" \ 144 data_target="/usr/share/${PF}/" \ 145 install || die 146 147 newinitd "${FILESDIR}/${PN}".initd ${PN} 148 newconfd "${FILESDIR}/${PN}".confd ${PN} 149 150 cd "${S}" 151 dodoc ChangeLog CODE_OF_CONDUCT.md COPYING INSTALL ISSUES README README.md 152} 153 154pkg_preinst() { 155 if [[ -z "$(egetent passwd ${PN})" ]]; then 156 einfo "Adding ${PN} user and group" 157 enewgroup ${PN} 158 enewuser ${PN} -1 -1 /dev/null ${PN} 159 fi 160 chown -R root:${PN} ${D}/etc/${PN} 161 chmod -R u=rwX,g=rX,o= ${D}/etc/${PN} 162}