summaryrefslogtreecommitdiff
blob: 5a9540a6ba528cf4b68dca2c1724909cf1560166 (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
# Copyright 1999-2002 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License, v2 or later
# $Header: /var/cvsroot/gentoo-x86/net-dns/bind/bind-9.2.1-r2.ebuild,v 1.2 2002/08/06 01:55:21 nitro Exp $

S=${WORKDIR}/${P}
DESCRIPTION="BIND - Name Server"
SRC_URI="ftp://ftp.isc.org/isc/bind9/${PV}/${P}.tar.gz"
HOMEPAGE="http://www.isc.org/products/BIND"

KEYWORDS="x86 ppc"
LICENSE="as-is"
SLOT="0"

DEPEND="sys-apps/groff
	ssl? ( >=dev-libs/openssl-0.9.6 )"
	
RDEPEND="${DEPEND}"

src_compile() {                           
	local myconf

	use ssl && myconf="${myconf} --with-openssl"
	use ipv6 && myconf="${myconf} --enable-ipv6"

	./configure \
		--prefix=/usr \
		--host=${CHOST} \
		--sysconfdir=/etc/bind \
		--localstatedir=/var \
		--enable-threads \
		--with-libtool \
		${myconf} || die "failed to configure bind"

	make || die "failed to compile bind"
}

src_install() {
	make DESTDIR=${D} install || die "failed to install bind"
	
	for x in `grep -l -d recurse -e '/etc/named.conf' -e '/etc/rndc.conf' -e '/etc/rndc.key' ${D}/usr/man`; do
		cp ${x} ${x}.orig
		sed -e 's:/etc/named.conf:/etc/bind/named.conf:g' \
			-e 's:/etc/rndc.conf:/etc/bind/rndc.conf:g' ${x}.orig > ${x}
		rm ${x}.orig
	done
	
	find ${D}/usr/man ! -name "*[1-8]gz" -type f -exec gzip -f "{}" \;
	insinto /usr/man/man5 ; doins ${FILESDIR}/named.conf.5.gz
	
	dodoc CHANGES COPYRIGHT FAQ README
	docinto misc ; dodoc doc/misc/*
	docinto html ; dodoc doc/arm/*
	docinto contrib ; dodoc contrib/named-bootconf/named-bootconf.sh \
		contrib/nanny/nanny.pl

	# some handy-dandy dynamic dns examples
	cd ${D}/usr/share/doc/${PF}
	tar pjxf ${FILESDIR}/dyndns-samples.tbz2

	dodir /etc/bind /var/bind /var/bind/pri /var/bind/sec

	insinto /etc/bind ; doins ${FILESDIR}/named.conf
	# ftp://ftp.rs.internic.net/domain/named.ca:
	insinto /var/bind ; doins ${FILESDIR}/named.ca
	insinto /var/bind/pri ; doins ${FILESDIR}/127.0.0

	exeinto /etc/init.d ; newexe ${FILESDIR}/named.rc6 named
	
	dosym /var/bind/named.ca /var/bind/root.cache 
	dosym /var/bind/pri /etc/bind/pri
	dosym /var/bind/sec	/etc/bind/sec
}

pkg_postinst() {
	if [ ! -f '/etc/bind/rndc.key' ]; then
		/usr/sbin/rndc-confgen -a -u named
	fi

	install -d -o named -g named ${ROOT}/var/run/named \
		${ROOT}/var/bind/pri ${ROOT}/var/bind/sec
	chown -R named:named ${ROOT}/var/bind

	echo
	einfo "Bind-9.2.1-r2 version and higher now include chroot support."
	einfo "If you would like to run bind in chroot, run:"
	einfo "\`ebuild /var/db/pkg/${CATEGORY}/${PF}/${PF}.ebuild config\`"
	echo
}

pkg_config() {
	# chroot concept contributed by j2ee (kevin@aptbasilicata.it)

	mkdir -p /chroot/dns/dev /chroot/dns/etc /chroot/dns/var /chroot/dns/var/run/named
	chown -R named:named /chroot/dns/var/run/named
	cp -R /etc/bind /chroot/dns/etc/
	cp /etc/localtime /chroot/dns/etc/localtime
	chown named:named /chroot/dns/etc/bind/rndc.key
	cp -R /var/bind /chroot/dns/var/
	mknod /chroot/dns/dev/zero c 1 5
	chmod 666 /chroot/dns/dev/zero
	mknod /chroot/dns/dev/random c 1 8
	chmod 666 /chroot/dns/dev/random
	cp -a /dev/log /chroot/dns/dev/log

	# Maybe do a `chattr +i etc etc/localtime var` here?  What about a non-ext2 fs?
	
	chmod 700 /chroot
	chown named:named /chroot/dns
	chmod 700 /chroot/dns

	cp /etc/conf.d/named /etc/conf.d/named.orig
	sed -e 's:^#CHROOT="/chroot/dns"$:CHROOT="/chroot/dns":' \
		/etc/conf.d/named.orig > /etc/conf.d/named
	rm -f /etc/conf.d/named.orig

	einfo "Add the following to your root .bashrc or .bash_profile:"
	einfo "alias rndc='rndc -k /chroot/dns/etc/bind/rndc.key'"
}