# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/net-dns/djbdns/djbdns-1.05-r17.ebuild,v 1.12 2008/01/04 23:02:06 hanno Exp $ IUSE="aliaschain cnamefix doc fwdzone ipv6 \ multipleip roundrobin semanticfix static selinux \ multidata datadir" inherit eutils flag-o-matic toolchain-funcs DESCRIPTION="Excellent high-performance DNS services" HOMEPAGE="http://cr.yp.to/djbdns.html" URL1="http://www.skarnet.org/software/djbdns-fwdzone" URL2="http://homepages.tesco.net/~J.deBoynePollard/Softwares/djbdns" URL3="http://dustman.net/andy/djbware/tinydns-datadir" IPV6_PATCH="test23" SRC_URI="http://cr.yp.to/djbdns/${P}.tar.gz fwdzone? ( ${URL1}/djbdns-1.04-fwdzone.patch ) roundrobin? ( http://www.legend.co.uk/djb/dns/round-robin.patch ) multipleip? ( http://danp.net/djbdns/dnscache-multiple-ip.patch http://www.ohse.de/uwe/patches/djbdns-1.05-multiip.diff ) aliaschain? ( ${URL2}/tinydns-alias-chain-truncation.patch ) semanticfix? ( ${URL2}/tinydns-data-semantic-error.patch ) cnamefix? ( ${URL2}/dnscache-cname-handling.patch ) ipv6? ( http://www.fefe.de/dns/${P}-${IPV6_PATCH}.diff.bz2 ) datadir? ( ${URL3}/0.0.0/djbdns-1.0.5-datadir.patch ) multidata? ( http://js.hu/package/djbdns-conf/djbdns-1.05-multi_tinydns_data.patch )" SLOT="0" LICENSE="public-domain" KEYWORDS="alpha amd64 hppa mips ppc ppc64 sparc x86" RDEPEND=">=sys-process/daemontools-0.70 doc? ( app-doc/djbdns-man ) sys-apps/ucspi-tcp selinux? ( sec-policy/selinux-djbdns )" src_unpack() { unpack ${P}.tar.gz cd ${S} use ipv6 && use cnamefix && \ die "ipv6 cannot currently be used with the cnamefix patch" use ipv6 && use multipleip && \ die "ipv6 cannot currently be used with the multipleip patch" if use ipv6 && ( use fwdzone || use roundrobin ); then eerror "ipv6 cannot currently be used with the fwdzone or " eerror "roundrobin patch." eerror eerror "If you would like to see ipv6 support along with one of " eerror "those other patches please submit a working patch that " eerror "combines ipv6 with either fwdzone or roundrobin but not " eerror "both at the same time, since the latter 2 patches are " eerror "mutually exclusive according to bug #31238." die fi use fwdzone && use roundrobin && \ die "fwdzone and roundrobin do not work together according to bug #31238" use datadir && use multidata && \ die "The datadir and multidata patches are not compatible with each other" use cnamefix && \ sed 's:\r::g' < ${DISTDIR}/dnscache-cname-handling.patch \ > ${WORKDIR}/dnscache-cname-handling.patch && \ epatch ${WORKDIR}/dnscache-cname-handling.patch use aliaschain && \ epatch ${DISTDIR}/tinydns-alias-chain-truncation.patch use semanticfix && \ epatch ${DISTDIR}/tinydns-data-semantic-error.patch use fwdzone && epatch ${DISTDIR}/djbdns-1.04-fwdzone.patch use roundrobin && epatch ${DISTDIR}/round-robin.patch use multipleip && \ epatch ${DISTDIR}/dnscache-multiple-ip.patch && \ epatch ${DISTDIR}/djbdns-1.05-multiip.diff use datadir && \ epatch ${DISTDIR}/djbdns-1.0.5-datadir.patch use multidata && \ epatch ${DISTDIR}/djbdns-1.05-multi_tinydns_data.patch epatch \ ${FILESDIR}/headtail.patch \ ${FILESDIR}/dnsroots.patch \ ${FILESDIR}/dnstracesort.patch if use ipv6; then elog "At present dnstrace does NOT support IPv6. It will " \ "be compiled without IPv6 support." cp -pR ${S} ${S}-noipv6 # Careful -- >=test21 of the ipv6 patch includes the errno patch epatch ${DISTDIR}/${P}-${IPV6_PATCH}.diff.bz2 cd ${S}-noipv6 fi epatch ${FILESDIR}/${PV}-errno.patch } src_compile() { use static && append-ldflags -static echo "$(tc-getCC) ${CFLAGS}" > conf-cc echo "$(tc-getCC) ${LDFLAGS}" > conf-ld echo "/usr" > conf-home emake -j1 || die "emake failed" # If djbdns is compiled with ipv6 support it breaks dnstrace. # Therefore we must compile dnstrace separately without ipv6 # support. if use ipv6; then einfo "Compiling dnstrace without ipv6 support" cd ${S}-noipv6 echo "$(tc-getCC) ${CFLAGS}" > conf-cc echo "$(tc-getCC) ${LDFLAGS}" > conf-ld echo "/usr" > conf-home emake -j1 dnstrace || die "emake failed" fi } src_install() { insinto /etc doins dnsroots.global into /usr dobin *-conf dnscache tinydns walldns rbldns pickdns axfrdns \ *-get *-data *-edit dnsip dnsipq dnsname dnstxt dnsmx \ dnsfilter random-ip dnsqr dnsq dnstrace dnstracesort use ipv6 && dobin dnsip6 dnsip6q ${S}-noipv6/dnstrace dodoc CHANGES FILES README SYSDEPS TARGETS TODO VERSION dobin ${FILESDIR}/dnscache-setup use fwdzone && cd ${D}${DESTTREE}/bin && \ epatch ${FILESDIR}/fwdzone-fix.patch dobin ${FILESDIR}/tinydns-setup newbin ${FILESDIR}/djbdns-setup-${PR} djbdns-setup } pkg_postinst() { enewgroup nofiles enewuser dnscache -1 -1 /nonexistent nofiles enewuser dnslog -1 -1 /nonexistent nofiles enewuser tinydns -1 -1 /nonexistent nofiles elog "Use (dnscache-setup + tinydns-setup) or djbdns-setup to configure djbdns." }