blob: 3df2b6926da3455f4d6cfdfdd06f55bd13b9d41e (
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
|
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="8"
inherit autotools systemd tmpfiles
DESCRIPTION="An authoritative only, high performance, open source name server"
HOMEPAGE="https://www.nlnetlabs.nl/projects/nsd"
if [[ ${PV} == *9999 ]] ; then
inherit git-r3
EGIT_REPO_URI="https://github.com/NLnetLabs/nsd.git"
else
# version voodoo needed only for non-release tarballs: 4.0.0_rc1 => 4.0.0rc1
MY_PV="${PV/_beta/b}"
MY_PV="${MY_PV/_rc/rc}"
MY_P="${PN}-${MY_PV}"
if [[ ${PV} != *_beta* && ${PV} != *_rc* ]] ; then
SRC_URI="https://www.nlnetlabs.nl/downloads/${PN}/${MY_P}.tar.gz"
S="${WORKDIR}"/${MY_P}
KEYWORDS="amd64 x86"
fi
fi
LICENSE="BSD"
SLOT="0"
IUSE="bind8-stats debug +default-znow dnstap +ipv6 +largefile libevent +lto memclean minimal-responses mmap munin +nsec3 packed +pie +radix-tree ratelimit recvmmsg ssl systemd +tfo year2038"
RDEPEND="
acct-group/nsd
acct-user/nsd
dnstap? (
dev-libs/fstrm
dev-libs/protobuf-c
)
libevent? ( dev-libs/libevent )
munin? ( net-analyzer/munin )
ssl? ( dev-libs/openssl:0= )
systemd? ( sys-apps/systemd )
"
DEPEND="${RDEPEND}"
BDEPEND="
app-alternatives/lex
app-alternatives/yacc
systemd? ( virtual/pkgconfig )
"
PATCHES=(
"${FILESDIR}/${P}-systemd-no-pidfile.patch"
"${FILESDIR}/${PN}-munin-gentoo-paths.patch"
)
NSD_CONFD_VER="1" # Cur version of NSD's OpenRC conf.d file.
NSD_INITD_VER="2" # Cur version of NSD's OpenRC init.d script.
NSD_TMPFILESD_VER="1" # Cur version of NSD's tmpfiles.d config.
NSD_DBDIR="/var/db/nsd" # Default dir for NSD's databases.
NSD_ZNDIR="/var/lib/nsd" # Default dir for NSD's zone files.
src_prepare() {
default
# Required to get correct pkg-config macros with USE="systemd".
# See bugs #663618 & #758050.
eautoreconf
}
src_configure() {
local myconf=(
$(use_enable bind8-stats)
$(use_enable bind8-stats zone-stats)
$(use_enable debug checking)
$(use_enable default-znow relro-now)
$(use_enable dnstap)
$(use_enable ipv6)
$(use_enable largefile)
$(use_enable lto flto)
$(use_enable memclean)
$(use_enable minimal-responses)
$(use_enable mmap)
$(use_enable nsec3)
$(use_enable packed)
$(use_enable pie)
$(use_enable radix-tree)
$(use_enable ratelimit)
$(use_enable recvmmsg)
$(use_enable systemd)
$(use_enable tfo tcp-fastopen)
$(use_with libevent)
$(use_with ssl)
--with-dbfile="${EPREFIX}${NSD_DBDIR}/nsd.db"
--with-logfile="${EPREFIX}/var/log/nsd.log"
--with-pidfile="${EPREFIX}/run/nsd.pid"
--with-xfrdfile="${EPREFIX}${NSD_DBDIR}/xfrd.state"
--with-xfrdir="${EPREFIX}${NSD_DBDIR}"
--with-zonelistfile="${EPREFIX}${NSD_DBDIR}/zone.list"
--with-zonesdir="${EPREFIX}${NSD_ZNDIR}"
)
# This configure switch is only available on a glibc-based system.
if use elibc_glibc; then
myconf+=( $(use_enable year2038) )
fi
econf "${myconf[@]}"
}
src_install() {
emake DESTDIR="${D}" install
dodoc doc/{ChangeLog,CREDITS,NSD-4-features,NSD-FOR-BIND-USERS,README,RELNOTES,REQUIREMENTS}
newinitd "${FILESDIR}/nsd.initd-r${NSD_INITD_VER}" nsd
newconfd "${FILESDIR}/nsd.confd-r${NSD_CONFD_VER}" nsd
newtmpfiles "${FILESDIR}/nsd.tmpfilesd-r${NSD_TMPFILESD_VER}" nsd.conf
# Install munin plugin and config, if requested.
if use munin ; then
exeinto "/usr/libexec/munin/plugins"
doexe contrib/nsd_munin_
insinto "/etc/munin/plugin-conf.d"
newins "${FILESDIR}/nsd.munin-conf" nsd_munin
fi
# Use the upstream-provided systemd service file.
systemd_dounit "contrib/nsd.service"
# Remove the /run directory that usually resides on tmpfs and is
# being taken care of by the nsd init script anyway (checkpath).
rm -r "${ED}/run" || die "Failed to remove /run"
keepdir "${NSD_DBDIR}"
}
pkg_postinst() {
# See eclass/tmpfiles.eclass for info.
tmpfiles_process nsd.conf
# Database directory
# Writable by nsd:nsd for database updates and zone transfers.
install -d -m 750 -o nsd -g nsd "${EROOT}/${NSD_DBDIR}"
# Zones directory
# Writable by nsd:nsd for zone file updates (via 'nsd-control write').
install -d -m 750 -o nsd -g nsd "${EROOT}/${NSD_ZNDIR}"
}
|