1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
# Copyright 1999-2014 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
}
|