blob: 3f7d2b7ef6e6e4eb09fcc83beaac697ba9c9b07b [file] [log] [blame]
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=5
WANT_AUTOMAKE="1.9"
MY_PV=${PV/_rc/.rc}
MY_PV=${MY_PV/_a/.a}
inherit eutils multilib autotools depend.apache
DESCRIPTION="389 Directory Server (admin)"
HOMEPAGE="http://port389.org/"
SRC_URI="http://directory.fedoraproject.org/sources/${PN}-${MY_PV}.tar.bz2"
LICENSE="GPL-2 Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="debug ipv6 selinux"
# TODO snmp agent init script
COMMON_DEPEND=">=app-admin/389-admin-console-1.1.0
>=app-admin/389-ds-console-1.1.0
app-misc/mime-types
dev-libs/389-adminutil
dev-libs/cyrus-sasl
dev-libs/icu:=
dev-libs/nss[utils]
|| ( <=dev-libs/nspr-4.8.3-r3[ipv6?] >=dev-libs/nspr-4.8.4 )
dev-libs/svrcore
net-analyzer/net-snmp[ipv6?]
net-nds/openldap
selinux? (
sys-apps/checkpolicy
sys-apps/policycoreutils
)
>=sys-libs/db-4.2.52
sys-libs/pam
sys-apps/tcp-wrappers[ipv6?]
www-apache/mod_nss
www-servers/apache:2[apache2_modules_actions,apache2_modules_alias,apache2_modules_auth_basic,apache2_modules_authz_default,apache2_modules_cgi,apache2_modules_mime_magic,apache2_modules_rewrite,apache2_modules_setenvif,suexec,threads]"
RDEPEND="
${COMMON_DEPEND}
www-client/lynx
selinux? ( sec-policy/selinux-base-policy )
"
DEPEND="sys-apps/sed ${COMMON_DEPEND}"
S="${WORKDIR}/${PN}-${MY_PV}"
need_apache2
src_prepare() {
# as per 389 documentation, when 64bit, export USE_64
use amd64 && export USE_64=1
epatch "${FILESDIR}/1.1.11_rc1/0001-gentoo-apache-names.patch"
epatch "${FILESDIR}/1.1.11_rc1/0003-find-mod_nss.m4.patch"
epatch "${FILESDIR}/1.1.11_rc1/0004-rpath-fix.configure.ac.patch"
# Configuration fixes
epatch "${FILESDIR}/${PN}-cfgstuff-1.patch"
sed -e "s!SUBDIRS!# SUBDIRS!g" -i Makefile.am || die "sed failed"
# Setup default user/group, in this case it's dirsrv
sed -e "s!nobody!dirsrv!g" -i configure.ac || die "sed failed"
eautoreconf
}
src_configure() {
# stub autoconf triplet :(
local myconf=""
use debug && myconf="--enable-debug"
use selinux && myconf="${myconf} --with-selinux"
econf \
--enable-threading \
--disable-rpath \
--with-adminutil=/usr \
--with-apr-config \
--with-apxs=${APXS} \
--with-fhs \
--with-httpd=${APACHE_BIN} \
--with-openldap \
${myconf} || die "econf failed"
}
src_install () {
emake DESTDIR="${D}" install || die "emake failed"
keepdir /var/log/dirsrv/admin-serv
# remove redhat style init script.
rm -rf "${D}"/etc/rc.d
rm -rf "${D}"/etc/default
# install gentoo style init script.
newinitd "${FILESDIR}"/${PN}.initd ${PN}
newconfd "${FILESDIR}"/${PN}.confd ${PN}
# remove redhat style wrapper scripts
# and install gentoo scripts.
rm -rf "${D}"/usr/sbin/*-ds-admin
dosbin "${FILESDIR}"/*-ds-admin || die "cannot install gentoo start/stop scripts"
# In this version build systems for modules is delete :(
# manually install modules, not using apache-modules eclass
# because use bindled library
# install mod_admserv
exeinto "${APACHE_MODULESDIR}"
doexe "${S}/.libs"/mod_admserv.so || die "internal ebuild error: mod_admserv not found"
insinto "${APACHE_MODULES_CONFDIR}"
newins "${FILESDIR}/1.1.11_rc1"/48_mod_admserv.conf 48_mod_admserv \
|| die "internal ebuild error: 48_mod_admserv.conf not found"
# install mod_restard
exeinto "${APACHE_MODULESDIR}"
doexe "${S}/.libs"/mod_restartd.so || die "internal ebuild error: mod_restartd not found"
insinto "${APACHE_MODULES_CONFDIR}"
newins "${FILESDIR}/1.1.11_rc1"/48_mod_restartd.conf 48_mod_restartd \
|| die "internal ebuild error: 48_mod_restard.conf not found"
if use selinux; then
local POLICY_TYPES="targeted"
cd "${S}"/selinux || die
cp /usr/share/selinux/${POLICY_TYPES}/include/Makefile . || die
make || die "selinux policy compile failed"
insinto /usr/share/selinux/${POLICY_TYPES}
doins -r "${S}/selinux/"*.pp
fi
}
pkg_postinst() {
# show setup information
elog "Once you configured www-servers/apache as written above,"
elog "you need to run (as root): /usr/sbin/setup-ds-admin.pl"
elog
# show security and sysctl info
elog "It is recommended to setup net.ipv4.tcp_keep_alive_time"
elog "in /etc/sysctl.conf (or via sysctl -w && sysctl -p) to a reasonable"
elog "value (in milliseconds) to avoid temporary server congestions"
elog "from lost client connections"
elog
# /etc/security/limits.conf settings
elog "It is also recommended to fine tune the maximum open files"
elog "settings inside /etc/security/limits.conf:"
elog "* soft nofile 2048"
elog "* hard nofile 4096"
elog
elog "To start 389 Directory Server Administration Interface at boot"
elog "please add 389-admin service to the default runlevel:"
elog
elog " rc-update add 389-admin default"
elog
elog "for 389 Directory Server Admin interface to work, you need"
elog "to setup a FQDN hostname and use it while running /usr/sbin/setup-ds-admin.pl"
elog
}