summaryrefslogtreecommitdiff
blob: 4b025151e37fbe510299bcd926fa75762550e956 (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
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

EAPI=6

EGIT_REPO_URI="https://github.com/PowerDNS/pdns.git"

if [[ ${PV} = 9999 ]]; then
	ADDITIONAL_ECLASSES="autotools git-r3"
fi

inherit eutils flag-o-matic user ${ADDITIONAL_ECLASSES}

DESCRIPTION="A highly DNS-, DoS- and abuse-aware loadbalancer"
HOMEPAGE="http://dnsdist.org"

if [[ ${PV} == 9999 ]]; then
	SRC_URI=""
	S="${WORKDIR}/${P}/pdns/dnsdistdist"
else
	SRC_URI="https://downloads.powerdns.com/releases/${P}.tar.bz2"
	KEYWORDS="~amd64"
fi

LICENSE="GPL-2"
SLOT="0"
IUSE="dnscrypt luajit readline regex remote-logging +ssl test"
RESTRICT="readline? ( bindist )"
REQUIRED_USE="dnscrypt? ( ssl )"

DEPEND="
	>=dev-libs/boost-1.35:=
	luajit? ( dev-lang/luajit:= )
	!luajit? ( >=dev-lang/lua-5.1:= )
	remote-logging? ( dev-libs/protobuf:= )
	readline? ( sys-libs/readline:0= )
	!readline? ( dev-libs/libedit:= )
	regex? ( dev-libs/re2:= )
	ssl? ( dev-libs/libsodium:= )
"

RDEPEND="${DEPEND}"

[[ ${PV} == 9999 ]] && DEPEND+="
	app-text/pandoc
	dev-util/ragel
"

src_prepare() {
	eapply "${FILESDIR}/${PN}-readline.patch"
	eapply_user

	[[ ${PV} == 9999 ]] && eautoreconf
}

src_configure() {
	if use readline ; then
		local -x LIBEDIT_CFLAGS="-I/usr/include/readline"
		local -x LIBEDIT_LIBS="-lreadline -lcurses"
		append-cxxflags -DREADLINE
	fi

	econf \
		--sysconfdir=/etc/dnsdist \
		$(use_enable ssl libsodium) \
		$(use_with remote-logging protobuf) \
		$(use_enable regex re2) \
		$(use_enable dnscrypt) \
		$(use_with luajit) \
		$(use_enable test unit-tests)
}

src_install() {
	default

	insinto /etc/dnsdist
	doins "${FILESDIR}"/dnsdist.conf.example

	newconfd "${FILESDIR}"/dnsdist.confd ${PN}
	newinitd "${FILESDIR}"/dnsdist.initd ${PN}
}

pkg_preinst() {
	enewgroup dnsdist
	enewuser dnsdist -1 -1 -1 dnsdist
}

pkg_postinst() {
	elog "dnsdist provides multiple instances support. You can create more instances"
	elog "by symlinking the dnsdist init script to another name."
	elog
	elog "The name must be in the format dnsdist.<suffix> and dnsdist will use the"
	elog "/etc/dnsdist/dnsdist-<suffix>.conf configuration file instead of the default."

	if use readline ; then
		ewarn "dnsdist (GPLv2) was linked against readline (GPLv3)."
		ewarn "A binary distribution should therefore not happen."
	fi
}