blob: 13538c4938868fd215a61fa3801c678e05c8b36a [file] [log] [blame]
# Copyright 1999-2015 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
}