# Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: $ inherit eutils flag-o-matic toolchain-funcs multilib DESCRIPTION="Sip-Router (Kamailio/SER) is an Open Source SIP Server" HOMEPAGE="http://sip-router.org/" MY_P="${P/sip-router/kamailio}" SRC_URI="http://www.kamailio.org/pub/kamailio/${PV}/src/${MY_P}_src.tar.gz" S=${WORKDIR}/${MY_P} SLOT="0" LICENSE="GPL-2" KEYWORDS="~amd64 ~x86" #Documentation can be found here: http://www.kamailio.org/docs/modules/3.1.x/ IUSE="flavour_kamailio flavour_ser debug ipv6 sctp group_standard group_standard_dep group_mysql group_radius group_postgres group_presence group_stable group_experimental group_kstandard group_kmysql group_kradius group_kpostgres group_kpresence group_kxml group_kperl group_kldap acc acc_radius alias_db app_lua app_python auth auth_identity auth_db auth_diameter auth_radius avpops benchmark blst call_control carrierroute cfg_db cfg_rpc cfgutils counters cpl-c ctl db_berkeley db_flatstore db_mysql db_oracle db_postgres db_text db_unixodbc debugger dialog dialplan dispatcher diversion domain domainpolicy drouting enum exec geoip group h350 htable imc iptrtpproxy jabber kex lcr ldap matrix maxfwd mediaproxy memcached misc_radius mi_datagram mi_fifo mi_rpc mi_xmlrpc mqueue msilo mtree nathelper nat_traversal osp path pdb pdt peering perl perlvdb permissions pike pipelimit prefix_route presence presence_conference presence_dialoginfo presence_mwi presence_xml pua pua_bla pua_dialoginfo pua_mi pua_usrloc pua_xmpp purple pv qos ratelimit regex registrar rls rtimer rr rtpproxy sanity seas siptrace siputils sl sms snmpstats speeddial sqlops statistics sst textops textopsx tls tm tmx topoh uac uac_redirect uri_db userblacklist usrloc utils xcap_client xcap_server xhttp xlog xmlops xmlrpc xmpp" #osp? ( net-libs/osptoolkit ) #pdb? ( pdb-server ) #seas? ( www.wesip.eu ) RDEPEND=" >=sys-libs/ncurses-5.7 >=sys-libs/readline-6.1_p2 group_experimental? ( dev-libs/openssl dev-db/oracle-instantclient-basic ) group_mysql? ( >=dev-db/mysql-5.1.50 sys-libs/zlib ) group_radius? ( >=net-dialup/radiusclient-ng-0.5.0 ) group_presence? ( dev-libs/libxml2 net-misc/curl ) group_postgres? ( dev-db/postgresql-base ) group_standard? ( dev-libs/libxml2 dev-libs/openssl net-misc/curl ) group_kmysql? ( >=dev-db/mysql-5.1.50 sys-libs/zlib ) group_kradius? ( >=net-dialup/radiusclient-ng-0.5.0 ) group_kpresence? ( dev-libs/libxml2 net-misc/curl ) group_kpostgres? ( dev-db/postgresql-base ) group_kstandard? ( dev-libs/libxml2 dev-libs/openssl net-misc/curl ) group_kxml? ( dev-libs/libxml2 dev-libs/xmlrpc-c ) group_kperl? ( dev-lang/perl dev-perl/perl-ldap ) group_kldap? ( net-nds/openldap ) acc_radius? ( net-dialup/radiusclient-ng ) app_lua? ( >=dev-lang/lua-5.1 ) app_python? ( dev-lang/python ) auth_identity? ( dev-libs/openssl net-misc/curl ) carrierroute? ( dev-libs/confuse ) cpl-c? ( dev-libs/libxml2 ) db_berkeley? ( >=sys-libs/db-4.6 ) db_mysql? ( >=dev-db/mysql-5.1.50 ) db_oracle? ( dev-db/oracle-instantclient-basic ) db_postgres? ( dev-db/postgresql-base ) db_unixodbc? ( dev-db/unixODBC ) dialplan? ( dev-libs/libpcre ) geoip? ( dev-libs/geoip ) h350? ( net-nds/openldap ) jabber? ( dev-libs/expat ) lcr? ( dev-libs/libpcre ) ldap? ( net-nds/openldap ) memcached? ( dev-libs/libmemcache net-misc/memcached ) mi_xmlrpc? ( dev-libs/libxml2 dev-libs/xmlrpc-c ) peering? ( net-dialup/radiusclient-ng ) perl? ( dev-lang/perl dev-perl/perl-ldap ) presence? ( dev-libs/libxml2 ) presence_conference? ( dev-libs/libxml2 ) presence_xml? ( dev-libs/libxml2 ) pua? ( dev-libs/libxml2 ) pua_bla? ( dev-libs/libxml2 ) pua_dialoginfo? ( dev-libs/libxml2 ) pua_usrloc? ( dev-libs/libxml2 ) pua_xmpp? ( dev-libs/libxml2 ) purple? ( net-im/pidgin ) regex? ( dev-libs/libpcre ) rls? ( dev-libs/libxml2 ) snmpstats? ( net-analyzer/net-snmp sys-apps/lm_sensors ) tls? ( sys-libs/zlib >=dev-libs/openssl-1.0.0a-r1 ) utils? ( net-misc/curl ) xcap_client? ( dev-libs/libxml2 net-misc/curl ) xcap_server? ( dev-libs/libxml2 ) xmlops? ( dev-libs/libxml2 ) xmpp? ( dev-libs/expat ) " DEPEND="${RDEPEND} >=sys-devel/bison-1.35 >=sys-devel/flex-2.5.4a app-text/docbook2X" src_unpack() { unpack ${A} cd "${S}" use ipv6 || \ sed -i -e "s/-DUSE_IPV6//g" Makefile.defs || die } src_compile() { # iptrtpproxy broken as the needed netfilter module is not supported local mod_exc="iptrtpproxy" local group_inc="" local k="" if use flavour_kamailio; then k="k" use group_kxml && group_inc="${group_inc} kxml" use group_kperl && group_inc="${group_inc} kperl" use group_kldap && group_inc="${group_inc} kldap" fi # you can USE flavour=kamailio but also group_standard. It will be converted to group_kstandard # same as mysql/kmysql, postgres/kpostgres, radius/kradius, presence/kpresence (use group_standard || use group_kstandard) && group_inc="${group_inc} ${k}standard" use group_standard_dep && group_inc="${group_inc} standard_dep" (use group_mysql || use group_kmysql) && group_inc="${group_inc} ${k}mysql" (use group_radius || use group_kradius) && group_inc="${group_inc} ${k}radius" (use group_postgres || use group_kpostgres) && group_inc="${group_inc} ${k}postgres" (use group_presence || use group_kpresence) && group_inc="${group_inc} ${k}presence" use group_stable && group_inc="${group_inc} stable" use group_experimental && group_inc="${group_inc} experimental" # TODO: skip_modules? local mod_inc="" # some IUSE flags must not be included here in mod_inc # e.g.: flavour_kamailio, flavour_ser, debug, sctp, ipv6 for i in ${IUSE[@]}; do for j in ${i[@]}; do [[ ! "${i}" =~ "flavour_" ]] && \ [ ! "${i}" == "debug" ] && \ [ ! "${i}" == "ipv6" ] && \ [ ! "${i}" == "sctp" ] && \ [[ ! "${i}" =~ "group_" ]] && \ use "${i}" && mod_inc="${mod_inc} ${i}" done done if use tls; then tls_hooks=1 else tls_hooks=0 fi if use debug; then mode=debug else mode=release fi if use flavour_kamailio; then flavour=kamailio else flavour=ser # defaults to SER compatibility names fi if use sctp; then sctp=1 else sctp=0 fi emake \ CC="$(tc-getCC)" \ CPU_TYPE="$(get-flag march)" \ SCTP="${sctp}" \ CC_EXTRA_OPTS=-I/usr/gnu/include \ mode="${mode}" \ TLS_HOOKS="${tls_hooks}" \ FLAVOUR="${flavour}" \ group_include="${group_inc}" \ include_modules="${mod_inc}" \ exclude_modules="${mod_exc}" \ prefix="/" \ all || die "emake all failed" } src_install() { emake -j1 \ BASEDIR="${D}" \ FLAVOUR="${flavour}" \ prefix="/" \ bin_dir=/usr/sbin/ \ cfg_dir=/etc/${flavour}/ \ lib_dir=/usr/$(get_libdir)/${flavour}/ \ modules_dir="/usr/$(get_libdir)/${flavour}/" \ man_dir="/usr/share/man/" \ doc_dir="/usr/share/doc/${flavour}/" \ install || die "emake install failed" sed -e "s/sip-router/${flavour}/g" \ ${FILESDIR}/ser.initd > ${flavour}.initd || die sed -e "s/sip-router/${flavour}/g" \ ${FILESDIR}/ser.confd > ${flavour}.confd || die newinitd "${flavour}".initd "${flavour}" newconfd "${flavour}".confd "${flavour}" } pkg_preinst() { if [[ -z "$(egetent passwd ${flavour})" ]]; then einfo "Adding ${flavour} user and group" enewgroup "${flavour}" enewuser "${flavour}" -1 -1 /dev/null "${flavour}" fi chown -R root:"${flavour}" "${D}/etc/${flavour}" chmod -R u=rwX,g=rX,o= "${D}/etc/${flavour}" has_version <="${CATEGORY}/ser-0.9.8" previous_installed_version=$? if [[ $previous_installed_version = 1 ]] ; then elog "You have a previous version of SER on ${ROOT}etc/ser" elog "Consider or verify to remove it (emerge -C ser)." elog elog "Sip-Router may not could be installed/merged. See your elog." fi } pkg_postinst() { if [ use mediaproxy ]; then einfo "You have enabled mediaproxy support. In order to use it, you have to run it somewhere." fi if [ use rtpproxy ]; then einfo "You have enabled rtpproxy support. In order to use it, you have to run it somewhere." fi } pkg_prerm () { /etc/init.d/"${flavour}" stop >/dev/null }