summaryrefslogtreecommitdiff
blob: 4716caecd553d91ac38446b912d0173db8c6f28c (plain)
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

}