--- /dev/null
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit eutils flag-o-matic multilib toolchain-funcs user
+
+ETHZ_PV="1.0"
+LDAP_PV="1.0"
+LDAPS_PV="1.0"
+SILOMAIL_PV="1.0"
+MODULES_PV="0.9.0"
+
+DESCRIPTION="SIP Express Router"
+HOMEPAGE="http://www.iptel.org/ser"
+SRC_URI="
+ http://ftp.iptel.org/pub/ser/${PV}/src/${P}_src.tar.gz
+ mirror://gentoo/silomail-${SILOMAIL_PV}-${PN}-${MODULES_PV}.tar.gz
+ mirror://gentoo/ethz-${ETHZ_PV}-${PN}-${MODULES_PV}.tar.gz
+ ldap? (
+ mirror://gentoo/ldap-${LDAP_PV}-${PN}-${MODULES_PV}.tar.gz
+ mirror://gentoo/ldaps-${LDAPS_PV}-${PN}-${MODULES_PV}.tar.gz
+ )"
+
+SLOT="0"
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~ppc ~sparc x86"
+IUSE="ipv6 mysql radius postgres xmpp ldap ssl"
+
+RDEPEND="
+ mysql? ( virtual/mysql )
+ radius? ( >=net-dialup/radiusclient-ng-0.5.0 )
+ postgres? ( dev-db/postgresql:=[server] )
+ xmpp? ( dev-libs/expat )
+ ldap? (
+ net-nds/openldap
+ ssl? ( dev-libs/openssl:0= )
+ )"
+
+DEPEND="${RDEPEND}
+ >=sys-devel/bison-1.35
+ >=sys-devel/flex-2.5.4a"
+
+pkg_setup() {
+ enewgroup ser
+ enewuser ser -1 -1 /dev/null ser
+}
+
+src_prepare() {
+ local modules extmodules MY_A MY_PATCH_A x
+ use ipv6 || \
+ sed -i -e "s/-DUSE_IPV6//g" Makefile.defs || die
+ sed -i -e 's/\(CFLAGS+=-mcpu=ultrasparc\) -minline-all-stringops/\1/g' \
+ Makefile.defs || die #157109
+
+ # external modules
+ extmodules="silomail ethz"
+
+ if use mysql; then
+ modules="${modules} mysql"
+ epatch "${FILESDIR}/${P}-mysql.diff"
+ fi
+
+ if use radius; then
+ modules="${modules} auth_radius group_radius uri_radius avp_radius"
+ epatch "${FILESDIR}/${P}-radius.diff"
+ fi
+
+ use xmpp && \
+ modules="${modules} jabber"
+
+ use postgres && \
+ modules="${modules} postgres"
+
+ use ldap && \
+ extmodules="${extmodules} ldap"
+
+ use ldap && use ssl && \
+ extmodules="${extmodules} ldaps"
+
+ # put list of modules into Makefile, we need the list
+ # during compile and install phase...
+ sed -i -e "s:^\(include_modules.*\):\1 ${modules} ${extmodules}:" \
+ Makefile || die
+
+ # fix ser.cfg
+ sed -i -e "/force_send_socket(smaug:5080);/ d" \
+ etc/ser.cfg || die
+
+ # unpack external modules
+ # ugly i know...
+ for x in ${extmodules}; do
+ MY_A=$(eval echo ${x}-\${$(echo ${x} | tr "[:lower:]" "[:upper:]")_PV}-${PN}-${MODULES_PV})
+ MY_PATCH_A="${P}-extmod-${x}"
+ mkdir -p "${S}"/modules/${x} || die
+ cd "${S}"/modules/${x} || die
+ unpack ${MY_A}.tar.gz
+ # fix makefiles
+ if [[ -f "${FILESDIR}"/${MY_A}.diff ]]; then
+ epatch "${FILESDIR}"/${MY_A}.diff
+ fi
+
+ # additional patches
+ if [[ -f "${FILESDIR}"/${MY_PATCH_A}.diff ]]; then
+ epatch "${FILESDIR}"/${MY_PATCH_A}.diff
+ fi
+ done
+
+ # remove sasl if openldap hasn't been built with it
+ if use ldap && ! built_with_use net-nds/openldap sasl; then
+ sed -i -e "s:-lsasl::g" \
+ "${S}"/modules/ldap/Makefile || die
+
+ if use ssl; then
+ sed -i -e "s:-lsasl::g" \
+ "${S}"/modules/ldaps/Makefile || die
+ fi
+ fi
+}
+
+src_compile() {
+ # add -fPIC
+ append-flags -fPIC
+
+ emake all \
+ CC="`tc-getCC`" \
+ CFLAGS="${CFLAGS}" \
+ cfg-prefix=/ \
+ cfg-target=/etc/ser/
+}
+
+src_install () {
+ emake install \
+ prefix="" \
+ bin-prefix="${D}"/usr/sbin \
+ bin-dir="" \
+ cfg-prefix="${D}"/etc \
+ cfg-dir=ser/ \
+ cfg-target=/etc/ser/ \
+ modules-prefix="${D}"/usr/$(get_libdir)/ser \
+ modules-dir=modules \
+ modules-target=/usr/$(get_libdir)/ser/modules/ \
+ man-prefix="${D}"/usr/share/man \
+ man-dir="" \
+ doc-prefix="${D}"/usr/share/doc \
+ doc-dir="${P}"
+
+ newinitd "${FILESDIR}"/ser.rc6 ser
+ newconfd "${FILESDIR}"/ser.confd ser
+ newsbin scripts/harv_ser.sh harv_ser.sh
+ newsbin scripts/sc serctl
+ newsbin scripts/ser_mysql.sh ser_mysql.sh
+
+ chown -R root:ser "${D}"/etc/ser || die
+ chmod 750 "${D}"/etc/ser || die
+ chmod 640 "${D}"/etc/ser/* || die
+
+ # fix manpages
+ sed -i -e "s:^.B /ser-${PV}AUTHORS:.B /usr/share/doc/${PF}/AUTHORS:" \
+ -e "s:^.B /ser:.B /usr/sbin/ser:" \
+ "${D}"/usr/share/man/*/* || die
+}
+
+pkg_preinst() {
+ has_version "${CATEGORY}/${PN}"
+ previous_installed_version=$?
+}
+
+pkg_postinst() {
+ if [[ $previous_installed_version = 0 ]] ; then
+ einfo "Changing permissions on ${ROOT}etc/ser"
+
+ chown -R root:ser "${ROOT}"/etc/ser
+ chmod 750 "${ROOT}"/etc/ser
+ chmod 640 "${ROOT}"/etc/ser/*
+ fi
+}