summaryrefslogtreecommitdiff
path: root/net-dns/pdns-recursor
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /net-dns/pdns-recursor
reinit the tree, so we can have metadata
Diffstat (limited to 'net-dns/pdns-recursor')
-rw-r--r--net-dns/pdns-recursor/Manifest14
-rw-r--r--net-dns/pdns-recursor/files/pdns-recursor27
-rw-r--r--net-dns/pdns-recursor/files/pdns-recursor-4.0.3-boost-1.61-fcontext.patch152
-rw-r--r--net-dns/pdns-recursor/files/pdns-recursor-4.0.3-ecdsa.patch29
-rw-r--r--net-dns/pdns-recursor/files/pdns-recursor-r137
-rw-r--r--net-dns/pdns-recursor/metadata.xml22
-rw-r--r--net-dns/pdns-recursor/pdns-recursor-4.0.4-r1.ebuild75
-rw-r--r--net-dns/pdns-recursor/pdns-recursor-4.0.4.ebuild75
-rw-r--r--net-dns/pdns-recursor/pdns-recursor-4.0.5.ebuild75
-rw-r--r--net-dns/pdns-recursor/pdns-recursor-4.0.6.ebuild75
10 files changed, 581 insertions, 0 deletions
diff --git a/net-dns/pdns-recursor/Manifest b/net-dns/pdns-recursor/Manifest
new file mode 100644
index 000000000000..544717db59e7
--- /dev/null
+++ b/net-dns/pdns-recursor/Manifest
@@ -0,0 +1,14 @@
+AUX pdns-recursor 495 SHA256 9555c08d7eadff42d3941697d86a2738a7b8d4e50619ca7de72b90cac63141e9 SHA512 4c93519693197dc43d4a298bc0646b91d5a924556aaed39000a1e3d0ca434c56ad03b054bdb5833618e7c4556b86332f048de3466e406c5aeb4ff66bb51ce8c3 WHIRLPOOL 27c96e27656eb2857a430e0fcbc794b0efdcbc969cac7df8a2f5187a2f64bc72dab75b112c69420aa95d5e38db197ab7f1d2481d36e65620074277d57302abc7
+AUX pdns-recursor-4.0.3-boost-1.61-fcontext.patch 5174 SHA256 fde7aeb34ddbb461331e85db941189fdcbcecd9588349d4eb5314d14323f8c0e SHA512 25718ff37454580c399e263c68a081c11259cb08352cf754cdf482c2cdb09372ea2e8ff90799402b44131c575cf118abdf212ca2536d5f2af525999cba3415d8 WHIRLPOOL 07bd9f5584c84e65461543fd7f94b865896e3bfeeefe51c190a40e206a60ce657d39cf1373cfb591c0a24fc4dd74e6d8381216cc75292a50e3c084227b73f9d9
+AUX pdns-recursor-4.0.3-ecdsa.patch 949 SHA256 87a4a74257618464bd7065ac74c3a8b013ba665103af26a4774c936d8c067ab5 SHA512 05309da6cc31d27670f53256b16986855d428af35d0d542589dd5cd7bad5893f7e83e8ab0acea975cf4f86c752cfb800c435edf547b49a31bc444a12a84f216b WHIRLPOOL 4ca9ffdadc408473151c2aebe0e520bd74cf260c66644e41afd84d2486c314235058eee795e1fb67ffc3ba1ddb807726899ed06bc6800c4dae4da390e1966aee
+AUX pdns-recursor-r1 1135 SHA256 f5d519a9691db1954f75e187d169ca91b72a03aaad53c8ede0a42ff00cff441b SHA512 9dce3cd454ed6b61af8d70c90a8464c60d16eb8342ffc46558f5dcc5089c77aff4581f208684ddb25c4512ce6f39c54afaf267dcade667d812511ae3fa3a1f48 WHIRLPOOL 9e08ee61e61c07bdcaa629d426a79ea837e43b6dd1802e188d3c4983db18099283d8f1b34379cbdfe8891c1e695fd150b6e0cc11edbc309e3b99b7691962d25e
+DIST pdns-recursor-4.0.4.tar.bz2 1050596 SHA256 2338778f49ccd03401e65f6f4b39047890e691c8ff6d810ecee45321fb4f1e4d SHA512 9473dfe9abc509b2bb953139dd7892de2027ee1508902fa0c2cd30dd9a88878fcf44370b8372d573cbab12de32bb8c604005d3b39ea34db2ef86786e689d36ab WHIRLPOOL b205ff800e49cba87f4796c7c2e4b5835119480dbcf07e404d37f86c65e7f45095fb2a936df0f82f85e6e869a87ec0355b1e5ddc5d29480e07397fc823fb1f6a
+DIST pdns-recursor-4.0.5.tar.bz2 1066145 SHA256 ba43ce4280b3a06afebe58c5d63680f51dd525c63d1de7f3b229b380e6b1b7af SHA512 30d41033d4650a496b2a699b03c8cb5adb3e803420330f09159cf7ca2ce1bab4818f4a9c9ce7a99d2676e31b1e30289198af1f049cd1f309b93f6aa1a05d4cb5 WHIRLPOOL e03097c44df5ca5222b33b9477a5f3e67334508a830b13054eed249ffb0cb254d66e7f3c6b302e5450b86cdee48146f12847348ac5e49777caf0094af34ad252
+DIST pdns-recursor-4.0.6.tar.bz2 1105423 SHA256 f2182ac644268bb08b865a71351f11d75c5015ac0608a1469eb4c1cd5494d60d SHA512 2203fd96469deded1da677344485da221eec036b1ad9fb418a89cd4477d73f2a6fcf984a39b574561df6946f440ddf1982de20cd39d7204da9c27e74216d1159 WHIRLPOOL a2eece8a6cdfcd6c791cb6fa42053d524b4e54f1431d78345640d7f2d9f3079939c7905767abe65abb977bce45647fb7232d1148dac13737625ee4bfae221da8
+EBUILD pdns-recursor-4.0.4-r1.ebuild 1617 SHA256 030cbb0bd2bffa560877cd2243f65e33a8f797976aae1fdc8bdfa5b262a351ba SHA512 a8a4a328dfabff7a6ae146059c8527c390f9f57ecadfc7873274f32f8f7ce484b9e9c8dac6e65a32c8751ccbb89ac505d03b6cd5fc80c23fb46e5b3cbd0ea984 WHIRLPOOL 5a3be31a88e679ba68277e7dd7ef5deef6b9ed6dbc0fa1a40a18fa9bd3ed403b63724716e1859a377b0361822b3fcbade561e56b99a295ba5656803f9fb77561
+EBUILD pdns-recursor-4.0.4.ebuild 1597 SHA256 4fd5edc325b6d2367934be33eb119700e9f7e181b7da6f4883ad197551010111 SHA512 fe1074ae33df9bded1cac8834bba4af65822338a9c755e507c67b2893aad7d27283adc74038e62457672139fbe2dba53880d2c2da6837d0d8fa9b64b70e48e3d WHIRLPOOL 67ba5663092374f6999b024e945ba125d595b170cacfcb60c84c588f82de7649b6bb0521a09c49900b7f7fec340fd84debca36f3f4a9a3621f88e32ce13d7448
+EBUILD pdns-recursor-4.0.5.ebuild 1617 SHA256 030cbb0bd2bffa560877cd2243f65e33a8f797976aae1fdc8bdfa5b262a351ba SHA512 a8a4a328dfabff7a6ae146059c8527c390f9f57ecadfc7873274f32f8f7ce484b9e9c8dac6e65a32c8751ccbb89ac505d03b6cd5fc80c23fb46e5b3cbd0ea984 WHIRLPOOL 5a3be31a88e679ba68277e7dd7ef5deef6b9ed6dbc0fa1a40a18fa9bd3ed403b63724716e1859a377b0361822b3fcbade561e56b99a295ba5656803f9fb77561
+EBUILD pdns-recursor-4.0.6.ebuild 1615 SHA256 cc135a1f0af9166154b4d6d9c6761a6d388d7406aaee9b98cc91999eb2a0cff0 SHA512 066be175500df5957c48104a7eac45dc4f401e03299375ddc324c250ffe864e1848b837f62be756bd807d2356bfee2655a022d50f70afd7d71fa08b22471bb0d WHIRLPOOL 9112b6401575fb7f42eca1d75eaaa7f81dc8ec34acc774e3150e44f151b51fb71169de59a169573eec6a10240f815fd938a7455bb54b7f16f143f1726b67e70c
+MISC ChangeLog 6695 SHA256 4dba4ab980c0005ed22b77af3a5b4dc8a74054007e08652a60de445ecd280032 SHA512 3f1bb9942c50baabe1de20b39b3dcd64fe1f205b75eb3da1792270d56e8d37e9d0a5203b4204fea256bf50aafc642328f05b7deeb03d435e05826ae082abc99b WHIRLPOOL c9d97722618db0bee57ce1c453ab2422f9cc2236c2501f5853667b950e0b5c7125252f23ff3ebfc576ee76ed5987896f8116cb0a3236503b469df229c7613592
+MISC ChangeLog-2015 9104 SHA256 5995ffbda2dd1d185931ba76a268ee0c3c869a69c36a0176c9f29c9b9dadcc68 SHA512 0cc59d4b827dff5acced105189860590bffb13a5ad3a09e9beffab3232a09127a9831ca64229f0c01faebafa06da08ae516a0019e76b392eda9653c29a4e297b WHIRLPOOL 6e2a0e2e59722b7dbe0877bcdc8055808d0618392c68ac64201545d727a71f7725705561035cdf67c7324f44c0541a5d8a352cd154edf0acd38425a8725861bd
+MISC metadata.xml 997 SHA256 cc79706ccf4ef1ee11d8fd20f5724b4e978cd6bf5137abe2c3e3187aa9dfec0f SHA512 43d84c29e22bece3fc87a925c309229dd5867c3457e3378a0000c046b06b5a7fc75f6e204111cbdc90a02fba3a987ba376bd96dd2b81e498fa19955f16b5a58e WHIRLPOOL e51cba62fb8268af2103e749bc5941db3b747d8b84f304735ea428f4335a35e40f1576dc9f0a2b9de13a905dbf7edddf2b084e7e2229cb775700a5d79e1d81a8
diff --git a/net-dns/pdns-recursor/files/pdns-recursor b/net-dns/pdns-recursor/files/pdns-recursor
new file mode 100644
index 000000000000..ebff2b02b85f
--- /dev/null
+++ b/net-dns/pdns-recursor/files/pdns-recursor
@@ -0,0 +1,27 @@
+#!/sbin/openrc-run
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+extra_started_commands="ping"
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting PowerDNS Recursor"
+ /usr/sbin/pdns_recursor --daemon=yes >/dev/null 2>&1
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping PowerDNS Recursor"
+ /usr/bin/rec_control quit >/dev/null 2>&1
+ eend $?
+}
+
+ping() {
+ ebegin "Pinging PowerDNS Recursor"
+ /usr/bin/rec_control ping >/dev/null 2>&1
+ eend $?
+}
diff --git a/net-dns/pdns-recursor/files/pdns-recursor-4.0.3-boost-1.61-fcontext.patch b/net-dns/pdns-recursor/files/pdns-recursor-4.0.3-boost-1.61-fcontext.patch
new file mode 100644
index 000000000000..c6cd9a326311
--- /dev/null
+++ b/net-dns/pdns-recursor/files/pdns-recursor-4.0.3-boost-1.61-fcontext.patch
@@ -0,0 +1,152 @@
+diff --git a/mtasker_fcontext.cc b/mtasker_fcontext.cc
+index bc37e76..8d96fa1 100644
+--- a/mtasker_fcontext.cc
++++ b/mtasker_fcontext.cc
+@@ -23,14 +23,15 @@
+ #include <exception>
+ #include <cassert>
+ #include <type_traits>
+-#if BOOST_VERSION > 106100
+-#include <boost/context/detail/fcontext.hpp>
+-#else
+-#include <boost/context/fcontext.hpp>
+-#endif
+ #include <boost/version.hpp>
+-
++#if BOOST_VERSION < 106100
++#include <boost/context/fcontext.hpp>
+ using boost::context::make_fcontext;
++#else
++#include <boost/context/detail/fcontext.hpp>
++using boost::context::detail::make_fcontext;
++#endif /* BOOST_VERSION < 106100 */
++
+
+ #if BOOST_VERSION < 105600
+ /* Note: This typedef means functions taking fcontext_t*, like jump_fcontext(),
+@@ -61,8 +62,15 @@ jump_fcontext (fcontext_t* const ofc, fcontext_t const nfc,
+ }
+ }
+ #else
++
++#if BOOST_VERSION < 106100
+ using boost::context::fcontext_t;
+ using boost::context::jump_fcontext;
++#else
++using boost::context::detail::fcontext_t;
++using boost::context::detail::jump_fcontext;
++using boost::context::detail::transfer_t;
++#endif /* BOOST_VERSION < 106100 */
+
+ static_assert (std::is_pointer<fcontext_t>::value,
+ "Boost Context has changed the fcontext_t type again :-(");
+@@ -72,7 +80,9 @@ static_assert (std::is_pointer<fcontext_t>::value,
+ * jump. args_t simply provides a way to pass more by reference.
+ */
+ struct args_t {
++#if BOOST_VERSION < 106100
+ fcontext_t prev_ctx = nullptr;
++#endif
+ pdns_ucontext_t* self = nullptr;
+ boost::function<void(void)>* work = nullptr;
+ };
+@@ -80,7 +90,11 @@ struct args_t {
+ extern "C" {
+ static
+ void
++#if BOOST_VERSION < 106100
+ threadWrapper (intptr_t const xargs) {
++#else
++threadWrapper (transfer_t const t) {
++#endif
+ /* Access the args passed from pdns_makecontext, and copy them directly from
+ * the calling stack on to ours (we're now using the MThreads stack).
+ * This saves heap allocating an args object, at the cost of an extra
+@@ -90,11 +104,28 @@ threadWrapper (intptr_t const xargs) {
+ * the behaviour of the System V implementation, which can inherently only
+ * be passed ints and pointers.
+ */
++#if BOOST_VERSION < 106100
+ auto args = reinterpret_cast<args_t*>(xargs);
++#else
++ auto args = reinterpret_cast<args_t*>(t.data);
++#endif
+ auto ctx = args->self;
+ auto work = args->work;
++ /* we switch back to pdns_makecontext() */
++#if BOOST_VERSION < 106100
+ jump_fcontext (reinterpret_cast<fcontext_t*>(&ctx->uc_mcontext),
+ static_cast<fcontext_t>(args->prev_ctx), 0);
++#else
++ transfer_t res = jump_fcontext (t.fctx, 0);
++ /* we got switched back from pdns_swapcontext() */
++ if (res.data) {
++ /* if res.data is not a nullptr, it holds a pointer to the context
++ we just switched from, and we need to fill it to be able to
++ switch back to it later. */
++ fcontext_t* ptr = static_cast<fcontext_t*>(res.data);
++ *ptr = res.fctx;
++ }
++#endif
+ args = nullptr;
+
+ try {
+@@ -106,9 +137,14 @@ threadWrapper (intptr_t const xargs) {
+
+ /* Emulate the System V uc_link feature. */
+ auto const next_ctx = ctx->uc_link->uc_mcontext;
++#if BOOST_VERSION < 106100
+ jump_fcontext (reinterpret_cast<fcontext_t*>(&ctx->uc_mcontext),
+ static_cast<fcontext_t>(next_ctx),
+ static_cast<bool>(ctx->exception));
++#else
++ jump_fcontext (static_cast<fcontext_t>(next_ctx), 0);
++#endif
++
+ #ifdef NDEBUG
+ __builtin_unreachable();
+ #endif
+@@ -129,10 +165,27 @@ pdns_ucontext_t::~pdns_ucontext_t
+ void
+ pdns_swapcontext
+ (pdns_ucontext_t& __restrict octx, pdns_ucontext_t const& __restrict ctx) {
++ /* we either switch back to threadwrapper() if it's the first time,
++ or we switch back to pdns_swapcontext(),
++ in both case we will be returning from a call to jump_fcontext(). */
++#if BOOST_VERSION < 106100
+ if (jump_fcontext (reinterpret_cast<fcontext_t*>(&octx.uc_mcontext),
+ static_cast<fcontext_t>(ctx.uc_mcontext), 0)) {
+ std::rethrow_exception (ctx.exception);
+ }
++#else
++ transfer_t res = jump_fcontext (static_cast<fcontext_t>(ctx.uc_mcontext), &octx.uc_mcontext);
++ if (res.data) {
++ /* if res.data is not a nullptr, it holds a pointer to the context
++ we just switched from, and we need to fill it to be able to
++ switch back to it later. */
++ fcontext_t* ptr = static_cast<fcontext_t*>(res.data);
++ *ptr = res.fctx;
++ }
++ if (ctx.exception) {
++ std::rethrow_exception (ctx.exception);
++ }
++#endif
+ }
+
+ void
+@@ -146,7 +199,15 @@ pdns_makecontext
+ args_t args;
+ args.self = &ctx;
+ args.work = &start;
++ /* jumping to threadwrapper */
++#if BOOST_VERSION < 106100
+ jump_fcontext (reinterpret_cast<fcontext_t*>(&args.prev_ctx),
+ static_cast<fcontext_t>(ctx.uc_mcontext),
+ reinterpret_cast<intptr_t>(&args));
++#else
++ transfer_t res = jump_fcontext (static_cast<fcontext_t>(ctx.uc_mcontext),
++ &args);
++ /* back from threadwrapper, updating the context */
++ ctx.uc_mcontext = res.fctx;
++#endif
+ }
diff --git a/net-dns/pdns-recursor/files/pdns-recursor-4.0.3-ecdsa.patch b/net-dns/pdns-recursor/files/pdns-recursor-4.0.3-ecdsa.patch
new file mode 100644
index 000000000000..52826c9617af
--- /dev/null
+++ b/net-dns/pdns-recursor/files/pdns-recursor-4.0.3-ecdsa.patch
@@ -0,0 +1,29 @@
+commit 3d59c6f7d83f54d5c73013de5ab61e9a0ecd1460
+Author: Remi Gacogne <remi.gacogne@powerdns.com>
+Date: Mon Oct 17 10:07:26 2016 +0200
+
+ Fix building with ECDSA support disabled in libcrypto
+
+ (cherry picked from commit aa74d164ae29269168d048d2cc8d7e1f984774c4)
+
+diff --git a/opensslsigners.cc b/opensslsigners.cc
+index 9e919a0..acf8f08 100644
+--- a/opensslsigners.cc
++++ b/opensslsigners.cc
+@@ -128,6 +128,7 @@ static inline int RSA_set0_crt_params(RSA* rsakey, BIGNUM* dmp1, BIGNUM* dmq1, B
+ return 1;
+ }
+
++#ifdef HAVE_LIBCRYPTO_ECDSA
+ static inline void ECDSA_SIG_get0(const ECDSA_SIG* signature, const BIGNUM** pr, const BIGNUM** ps) {
+ *pr = signature->r;
+ *ps = signature->s;
+@@ -140,6 +141,8 @@ static inline int ECDSA_SIG_set0(ECDSA_SIG* signature, BIGNUM* pr, BIGNUM* ps) {
+ signature->s = ps;
+ return 1;
+ }
++#endif /* HAVE_LIBCRYPTO_ECDSA */
++
+ #else
+ void openssl_thread_setup() {}
+ void openssl_thread_cleanup() {}
diff --git a/net-dns/pdns-recursor/files/pdns-recursor-r1 b/net-dns/pdns-recursor/files/pdns-recursor-r1
new file mode 100644
index 000000000000..57c9df1eaa45
--- /dev/null
+++ b/net-dns/pdns-recursor/files/pdns-recursor-r1
@@ -0,0 +1,37 @@
+#!/sbin/openrc-run
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+PDNS_CONFIGDIR="${PDNS_CONFIGDIR:-/etc/powerdns}"
+
+PDNS_CONFIG="${PDNS_CONFIGDIR}/recursor.conf"
+PDNS_CHROOTDIR="$( awk -F = '$1 == "chroot" { print $2 }' "${PDNS_CONFIG}" )"
+PDNS_SOCKETDIR="$( awk -F = '$1 == "socket-dir" { print $2 }' "${PDNS_CONFIG}" )"
+[ -z "${PDNS_SOCKETDIR}" -a -z "${PDNS_CHROOTDIR}" ] && PDNS_SOCKETDIR="/var/run"
+
+name="PowerDNS Recursor"
+description="Recursive name server"
+
+extra_started_commands="ping"
+description_ping="Ping the PowerDNS instance"
+
+command="/usr/sbin/pdns_recursor"
+command_args="--config-dir=${PDNS_CONFIGDIR}"
+command_args_foreground="--daemon=no"
+command_args_background="--daemon=yes"
+yesno ${rc_verbose} || command_args_background="${command_args_background} >/dev/null 2>&1"
+
+pidfile="${PDNS_CHROOTDIR}/${PDNS_SOCKETDIR}/pdns_recursor.pid"
+
+control_command="/usr/bin/rec_control"
+control_command_args="${command_args}"
+
+depend() {
+ need net
+}
+
+ping() {
+ ebegin "Pinging ${name}"
+ ${control_command} ${control_command_args} ping >/dev/null 2>&1
+ eend $?
+}
diff --git a/net-dns/pdns-recursor/metadata.xml b/net-dns/pdns-recursor/metadata.xml
new file mode 100644
index 000000000000..a5208407eaa3
--- /dev/null
+++ b/net-dns/pdns-recursor/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person">
+ <email>swegener@gentoo.org</email>
+ <name>Sven Wegener</name>
+ <description>Primary Maintainer</description>
+</maintainer>
+<longdescription>
+With a small codebase, the PowerDNS Recursor is an advanced recursor currently
+serving the DNS resolving needs of over 2 million Internet connections. Besides
+high performance (using kqueue or epoll, over 15 thousand qps on commodity
+hardware), it provides advanced anti-spoofing measures. In addition, the program
+caches server performance and timeouts, making it both network and user friendly.
+It also has built-in hooks for making graphs with rrdtool, providing insight into
+nameserver performance.
+</longdescription>
+<use>
+ <flag name="luajit">Enable support for <pkg>dev-lang/luajit</pkg>.</flag>
+ <flag name="protobuf">Enable support for <pkg>dev-libs/protobuf</pkg>.</flag>
+</use>
+</pkgmetadata>
diff --git a/net-dns/pdns-recursor/pdns-recursor-4.0.4-r1.ebuild b/net-dns/pdns-recursor/pdns-recursor-4.0.4-r1.ebuild
new file mode 100644
index 000000000000..b748e27b710e
--- /dev/null
+++ b/net-dns/pdns-recursor/pdns-recursor-4.0.4-r1.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit toolchain-funcs flag-o-matic eutils versionator
+
+DESCRIPTION="The PowerDNS Recursor"
+HOMEPAGE="https://www.powerdns.com/"
+SRC_URI="https://downloads.powerdns.com/releases/${P/_/-}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="lua luajit protobuf systemd"
+REQUIRED_USE="?? ( lua luajit )"
+
+DEPEND="lua? ( >=dev-lang/lua-5.1:= )
+ luajit? ( dev-lang/luajit:= )
+ protobuf? (
+ dev-libs/protobuf
+ >=dev-libs/boost-1.42
+ )
+ systemd? ( sys-apps/systemd:0= )
+ >=dev-libs/boost-1.35"
+RDEPEND="${DEPEND}
+ !<net-dns/pdns-2.9.20-r1"
+DEPEND="${DEPEND}
+ virtual/pkgconfig"
+
+S="${WORKDIR}"/${P/_/-}
+
+pkg_setup() {
+ filter-flags -ftree-vectorize
+}
+
+src_configure() {
+ econf \
+ --sysconfdir=/etc/powerdns \
+ $(use_enable systemd) \
+ $(use_with lua) \
+ $(use_with luajit) \
+ $(use_with protobuf)
+}
+
+src_install() {
+ default
+
+ mv "${D}"/etc/powerdns/recursor.conf{-dist,}
+
+ # set defaults: setuid=nobody, setgid=nobody
+ sed -i \
+ -e 's/^# set\([ug]\)id=$/set\1id=nobody/' \
+ -e 's/^# quiet=$/quiet=on/' \
+ -e 's/^# chroot=$/chroot=\/var\/lib\/powerdns/' \
+ "${D}"/etc/powerdns/recursor.conf
+
+ newinitd "${FILESDIR}"/pdns-recursor-r1 pdns-recursor
+
+ keepdir /var/lib/powerdns
+}
+
+pkg_postinst() {
+ local old
+
+ for old in ${REPLACING_VERSIONS}; do
+ version_compare ${old} 4.0.0-r1
+ [[ $? -eq 1 ]] || continue
+
+ ewarn "Starting with 4.0.0-r1 the init script has been renamed from precursor"
+ ewarn "to pdns-recursor, please update your runlevels accordingly."
+
+ break
+ done
+}
diff --git a/net-dns/pdns-recursor/pdns-recursor-4.0.4.ebuild b/net-dns/pdns-recursor/pdns-recursor-4.0.4.ebuild
new file mode 100644
index 000000000000..8b3e1791ecd0
--- /dev/null
+++ b/net-dns/pdns-recursor/pdns-recursor-4.0.4.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit toolchain-funcs flag-o-matic eutils versionator
+
+DESCRIPTION="The PowerDNS Recursor"
+HOMEPAGE="https://www.powerdns.com/"
+SRC_URI="https://downloads.powerdns.com/releases/${P/_/-}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm x86"
+IUSE="lua luajit protobuf systemd"
+REQUIRED_USE="?? ( lua luajit )"
+
+DEPEND="lua? ( >=dev-lang/lua-5.1:= )
+ luajit? ( dev-lang/luajit:= )
+ protobuf? (
+ dev-libs/protobuf
+ >=dev-libs/boost-1.42
+ )
+ systemd? ( sys-apps/systemd:0= )
+ >=dev-libs/boost-1.35"
+RDEPEND="${DEPEND}
+ !<net-dns/pdns-2.9.20-r1"
+DEPEND="${DEPEND}
+ virtual/pkgconfig"
+
+S="${WORKDIR}"/${P/_/-}
+
+pkg_setup() {
+ filter-flags -ftree-vectorize
+}
+
+src_configure() {
+ econf \
+ --sysconfdir=/etc/powerdns \
+ $(use_enable systemd) \
+ $(use_with lua) \
+ $(use_with luajit) \
+ $(use_with protobuf)
+}
+
+src_install() {
+ default
+
+ mv "${D}"/etc/powerdns/recursor.conf{-dist,}
+
+ # set defaults: setuid=nobody, setgid=nobody
+ sed -i \
+ -e 's/^# set\([ug]\)id=$/set\1id=nobody/' \
+ -e 's/^# quiet=$/quiet=on/' \
+ -e 's/^# chroot=$/chroot=\/var\/lib\/powerdns/' \
+ "${D}"/etc/powerdns/recursor.conf
+
+ doinitd "${FILESDIR}"/pdns-recursor
+
+ keepdir /var/lib/powerdns
+}
+
+pkg_postinst() {
+ local old
+
+ for old in ${REPLACING_VERSIONS}; do
+ version_compare ${old} 4.0.0-r1
+ [[ $? -eq 1 ]] || continue
+
+ ewarn "Starting with 4.0.0-r1 the init script has been renamed from precursor"
+ ewarn "to pdns-recursor, please update your runlevels accordingly."
+
+ break
+ done
+}
diff --git a/net-dns/pdns-recursor/pdns-recursor-4.0.5.ebuild b/net-dns/pdns-recursor/pdns-recursor-4.0.5.ebuild
new file mode 100644
index 000000000000..b748e27b710e
--- /dev/null
+++ b/net-dns/pdns-recursor/pdns-recursor-4.0.5.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit toolchain-funcs flag-o-matic eutils versionator
+
+DESCRIPTION="The PowerDNS Recursor"
+HOMEPAGE="https://www.powerdns.com/"
+SRC_URI="https://downloads.powerdns.com/releases/${P/_/-}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="lua luajit protobuf systemd"
+REQUIRED_USE="?? ( lua luajit )"
+
+DEPEND="lua? ( >=dev-lang/lua-5.1:= )
+ luajit? ( dev-lang/luajit:= )
+ protobuf? (
+ dev-libs/protobuf
+ >=dev-libs/boost-1.42
+ )
+ systemd? ( sys-apps/systemd:0= )
+ >=dev-libs/boost-1.35"
+RDEPEND="${DEPEND}
+ !<net-dns/pdns-2.9.20-r1"
+DEPEND="${DEPEND}
+ virtual/pkgconfig"
+
+S="${WORKDIR}"/${P/_/-}
+
+pkg_setup() {
+ filter-flags -ftree-vectorize
+}
+
+src_configure() {
+ econf \
+ --sysconfdir=/etc/powerdns \
+ $(use_enable systemd) \
+ $(use_with lua) \
+ $(use_with luajit) \
+ $(use_with protobuf)
+}
+
+src_install() {
+ default
+
+ mv "${D}"/etc/powerdns/recursor.conf{-dist,}
+
+ # set defaults: setuid=nobody, setgid=nobody
+ sed -i \
+ -e 's/^# set\([ug]\)id=$/set\1id=nobody/' \
+ -e 's/^# quiet=$/quiet=on/' \
+ -e 's/^# chroot=$/chroot=\/var\/lib\/powerdns/' \
+ "${D}"/etc/powerdns/recursor.conf
+
+ newinitd "${FILESDIR}"/pdns-recursor-r1 pdns-recursor
+
+ keepdir /var/lib/powerdns
+}
+
+pkg_postinst() {
+ local old
+
+ for old in ${REPLACING_VERSIONS}; do
+ version_compare ${old} 4.0.0-r1
+ [[ $? -eq 1 ]] || continue
+
+ ewarn "Starting with 4.0.0-r1 the init script has been renamed from precursor"
+ ewarn "to pdns-recursor, please update your runlevels accordingly."
+
+ break
+ done
+}
diff --git a/net-dns/pdns-recursor/pdns-recursor-4.0.6.ebuild b/net-dns/pdns-recursor/pdns-recursor-4.0.6.ebuild
new file mode 100644
index 000000000000..2b644a932581
--- /dev/null
+++ b/net-dns/pdns-recursor/pdns-recursor-4.0.6.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit toolchain-funcs flag-o-matic eutils versionator
+
+DESCRIPTION="The PowerDNS Recursor"
+HOMEPAGE="https://www.powerdns.com/"
+SRC_URI="https://downloads.powerdns.com/releases/${P/_/-}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 ~arm x86"
+IUSE="lua luajit protobuf systemd"
+REQUIRED_USE="?? ( lua luajit )"
+
+DEPEND="lua? ( >=dev-lang/lua-5.1:= )
+ luajit? ( dev-lang/luajit:= )
+ protobuf? (
+ dev-libs/protobuf
+ >=dev-libs/boost-1.42
+ )
+ systemd? ( sys-apps/systemd:0= )
+ >=dev-libs/boost-1.35"
+RDEPEND="${DEPEND}
+ !<net-dns/pdns-2.9.20-r1"
+DEPEND="${DEPEND}
+ virtual/pkgconfig"
+
+S="${WORKDIR}"/${P/_/-}
+
+pkg_setup() {
+ filter-flags -ftree-vectorize
+}
+
+src_configure() {
+ econf \
+ --sysconfdir=/etc/powerdns \
+ $(use_enable systemd) \
+ $(use_with lua) \
+ $(use_with luajit) \
+ $(use_with protobuf)
+}
+
+src_install() {
+ default
+
+ mv "${D}"/etc/powerdns/recursor.conf{-dist,}
+
+ # set defaults: setuid=nobody, setgid=nobody
+ sed -i \
+ -e 's/^# set\([ug]\)id=$/set\1id=nobody/' \
+ -e 's/^# quiet=$/quiet=on/' \
+ -e 's/^# chroot=$/chroot=\/var\/lib\/powerdns/' \
+ "${D}"/etc/powerdns/recursor.conf
+
+ newinitd "${FILESDIR}"/pdns-recursor-r1 pdns-recursor
+
+ keepdir /var/lib/powerdns
+}
+
+pkg_postinst() {
+ local old
+
+ for old in ${REPLACING_VERSIONS}; do
+ version_compare ${old} 4.0.0-r1
+ [[ $? -eq 1 ]] || continue
+
+ ewarn "Starting with 4.0.0-r1 the init script has been renamed from precursor"
+ ewarn "to pdns-recursor, please update your runlevels accordingly."
+
+ break
+ done
+}