# 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 }