aboutsummaryrefslogtreecommitdiffstats
path: root/dns/powerdns-recursor40
diff options
context:
space:
mode:
authorkrion <krion@FreeBSD.org>2017-12-20 05:42:36 +0800
committerkrion <krion@FreeBSD.org>2017-12-20 05:42:36 +0800
commit37f974230a43b3eb064586f17ade98ec1ba16c8b (patch)
tree8252265dafc51cfaaf6ffbf7fb14d13b18b8dc09 /dns/powerdns-recursor40
parentb3f450b8c5f13458a0c7f9455003aa78f8787394 (diff)
downloadfreebsd-ports-gnome-37f974230a43b3eb064586f17ade98ec1ba16c8b.tar.gz
freebsd-ports-gnome-37f974230a43b3eb064586f17ade98ec1ba16c8b.tar.zst
freebsd-ports-gnome-37f974230a43b3eb064586f17ade98ec1ba16c8b.zip
Add new port dns/powerdns-recursor40
FreeBSD 10.3 and below doesn't support __cxa_thread_atexit() in libc, which is required for building PowerDNS Recursor 4.1.0. This new port follows the 4.0.x branch, which has no such requirement. PR: 224297 Submitted by: tremere@cainites.net Approved by: mat Differential Revision: https://reviews.freebsd.org/D13540
Diffstat (limited to 'dns/powerdns-recursor40')
-rw-r--r--dns/powerdns-recursor40/Makefile61
-rw-r--r--dns/powerdns-recursor40/distinfo3
-rw-r--r--dns/powerdns-recursor40/files/extrapatch-setuid13
-rw-r--r--dns/powerdns-recursor40/files/patch-dnsname.hh20
-rw-r--r--dns/powerdns-recursor40/files/pdns-recursor.in37
-rw-r--r--dns/powerdns-recursor40/files/pkg-message.in11
-rw-r--r--dns/powerdns-recursor40/pkg-descr4
-rw-r--r--dns/powerdns-recursor40/pkg-plist5
8 files changed, 154 insertions, 0 deletions
diff --git a/dns/powerdns-recursor40/Makefile b/dns/powerdns-recursor40/Makefile
new file mode 100644
index 000000000000..26a7a0753d26
--- /dev/null
+++ b/dns/powerdns-recursor40/Makefile
@@ -0,0 +1,61 @@
+# Created by: sten@blinkenlights.nl
+# $FreeBSD$
+
+PORTNAME= recursor
+DISTVERSION= 4.0.8
+CATEGORIES= dns ipv6
+MASTER_SITES= http://downloads.powerdns.com/releases/
+PKGNAMEPREFIX= powerdns-
+PKGNAMESUFFIX= 40
+DISTNAME= pdns-${PORTNAME}-${DISTVERSION}
+
+MAINTAINER= tremere@cainites.net
+COMMENT= Advanced DNS recursor
+
+LICENSE= GPLv2
+
+BROKEN_armv6= fails to compile: use of overloaded operator << is ambiguous
+BROKEN_armv7= fails to compile: use of overloaded operator << is ambiguous
+BROKEN_sparc64= fails to compile: json11.cpp: undefined reference to std::__throw_out_of_range_fmt
+BROKEN_powerpc64= fails to compile: dnslabeltext.cc: undefined reference to std::__cxx11::basic_string
+
+BUILD_DEPENDS= ${LOCALBASE}/include/boost/shared_ptr.hpp:devel/boost-libs
+LIB_DEPENDS= libboost_context.so:devel/boost-libs \
+ libprotobuf.so:devel/protobuf
+
+USES= compiler:c++11-lib cpe gmake localbase:ldflags pkgconfig ssl tar:bzip2
+GNU_CONFIGURE= YES
+CXXFLAGS+= -D_GLIBCXX_USE_C99
+CONFIGURE_ARGS= --sysconfdir=${PREFIX}/etc/pdns \
+ --with-protobuf
+
+CPE_VENDOR= powerdns
+
+USE_RC_SUBR= pdns-recursor
+
+OPTIONS_DEFINE= OPTALGO SETUID
+OPTIONS_DEFAULT= LUA SETUID
+OPTIONS_RADIO= LUA_RG
+OPTIONS_RADIO_LUA_RG= LUA LUAJIT
+LUAJIT_DESC= Enable LuaJIT
+LUA_RG_DESC= Lua Engine
+OPTALGO_DESC= Enable optional algorithms (12 & 15)
+SETUID_DESC= Run as pdns_recursor user
+
+LUA_CONFIGURE_WITH= lua
+LUA_USES= lua
+
+LUAJIT_CONFIGURE_WITH= luajit
+LUAJIT_LIB_DEPENDS= libluajit-5.1.so.2:lang/luajit
+
+OPTALGO_CONFIGURE_ON= --enable-botan \
+ --enable-libsodium
+OPTALGO_LIB_DEPENDS= libbotan-2.so:security/botan2 \
+ libsodium.so:security/libsodium
+
+SETUID_VARS= USERS=pdns_recursor GROUPS=pdns
+SETUID_EXTRA_PATCHES= ${PATCHDIR}/extrapatch-setuid
+
+SUB_FILES= pkg-message
+
+.include <bsd.port.mk>
diff --git a/dns/powerdns-recursor40/distinfo b/dns/powerdns-recursor40/distinfo
new file mode 100644
index 000000000000..b82692711d3c
--- /dev/null
+++ b/dns/powerdns-recursor40/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1513108912
+SHA256 (pdns-recursor-4.0.8.tar.bz2) = 9c6ff00f0e26044b0c81f1a8304743b4fc0f6699a356fce28cc8c2e6aaf16513
+SIZE (pdns-recursor-4.0.8.tar.bz2) = 1071831
diff --git a/dns/powerdns-recursor40/files/extrapatch-setuid b/dns/powerdns-recursor40/files/extrapatch-setuid
new file mode 100644
index 000000000000..4ab90f53ac4f
--- /dev/null
+++ b/dns/powerdns-recursor40/files/extrapatch-setuid
@@ -0,0 +1,13 @@
+--- pdns_recursor.cc.orig 2017-01-17 02:48:30 UTC
++++ pdns_recursor.cc
+@@ -2969,8 +2969,8 @@ int main(int argc, char **argv)
+ ::arg().set("disable-syslog","Disable logging to syslog, useful when running inside a supervisor that logs stdout")="no";
+ ::arg().set("log-common-errors","If we should log rather common errors")="no";
+ ::arg().set("chroot","switch to chroot jail")="";
+- ::arg().set("setgid","If set, change group id to this gid for more security")="";
+- ::arg().set("setuid","If set, change user id to this uid for more security")="";
++ ::arg().set("setgid","If set, change group id to this gid for more security")="pdns";
++ ::arg().set("setuid","If set, change user id to this uid for more security")="pdns_recursor";
+ ::arg().set("network-timeout", "Wait this nummer of milliseconds for network i/o")="1500";
+ ::arg().set("threads", "Launch this number of threads")="2";
+ ::arg().set("processes", "Launch this number of processes (EXPERIMENTAL, DO NOT CHANGE)")="1"; // if we un-experimental this, need to fix openssl rand seeding for multiple PIDs!
diff --git a/dns/powerdns-recursor40/files/patch-dnsname.hh b/dns/powerdns-recursor40/files/patch-dnsname.hh
new file mode 100644
index 000000000000..a1de8ea78853
--- /dev/null
+++ b/dns/powerdns-recursor40/files/patch-dnsname.hh
@@ -0,0 +1,20 @@
+--- dnsname.hh.orig 2017-01-17 03:18:41 UTC
++++ dnsname.hh
+@@ -30,7 +30,7 @@
+ #include <boost/version.hpp>
+
+ // it crashes on OSX and doesn't compile on OpenBSD
+-#if BOOST_VERSION >= 105300 && ! defined( __APPLE__ ) && ! defined(__OpenBSD__)
++#if BOOST_VERSION >= 105300 && ! defined(_LIBCPP_VERSION) && ! defined(__OpenBSD__)
+ #include <boost/container/string.hpp>
+ #endif
+
+@@ -133,7 +133,7 @@ public:
+ inline bool canonCompare(const DNSName& rhs) const;
+ bool slowCanonCompare(const DNSName& rhs) const;
+
+-#if BOOST_VERSION >= 105300 && ! defined( __APPLE__ ) && ! defined(__OpenBSD__)
++#if BOOST_VERSION >= 105300 && ! defined(_LIBCPP_VERSION) && ! defined(__OpenBSD__)
+ typedef boost::container::string string_t;
+ #else
+ typedef std::string string_t;
diff --git a/dns/powerdns-recursor40/files/pdns-recursor.in b/dns/powerdns-recursor40/files/pdns-recursor.in
new file mode 100644
index 000000000000..cfa9cb5c772f
--- /dev/null
+++ b/dns/powerdns-recursor40/files/pdns-recursor.in
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# $$
+#
+
+# PROVIDE: pdns_recursor
+# REQUIRE: SERVERS cleanvar
+# BEFORE: DAEMON
+# KEYWORD: shutdown
+
+#
+# Add the following lines to /etc/rc.conf to enable pdns_recursor:
+#
+# pdns_recursor_enable="YES"
+# pdns_recursor_flags="<set as needed>"
+#
+# See pdns_recursor(8) for flags.
+#
+
+. /etc/rc.subr
+
+name=pdns_recursor
+rcvar=pdns_recursor_enable
+
+command=%%PREFIX%%/sbin/pdns_recursor
+command_args="--daemon=yes"
+
+# set defaults
+
+pdns_recursor_enable=${pdns_recursor_enable:-"NO"}
+pdns_recursor_conf=${pdns_recursor_conf:-"%%PREFIX%%/etc/pdns/recursor.conf"}
+
+load_rc_config ${name}
+
+required_files=${pdns_recursor_conf}
+
+run_rc_command "$1"
diff --git a/dns/powerdns-recursor40/files/pkg-message.in b/dns/powerdns-recursor40/files/pkg-message.in
new file mode 100644
index 000000000000..a5480fd56ad2
--- /dev/null
+++ b/dns/powerdns-recursor40/files/pkg-message.in
@@ -0,0 +1,11 @@
+
+*******************************************************************
+ If you want to use the powerdns recursor,
+ you need the following line in /etc/rc.conf(.local)
+
+ pdns_recursor_enable="YES"
+
+ Configuration templates are available in %%PREFIX%%/etc/pdns
+ as recursor.conf-dist.
+*******************************************************************
+
diff --git a/dns/powerdns-recursor40/pkg-descr b/dns/powerdns-recursor40/pkg-descr
new file mode 100644
index 000000000000..00d927a78ca7
--- /dev/null
+++ b/dns/powerdns-recursor40/pkg-descr
@@ -0,0 +1,4 @@
+powerdns recursor is a high performance, simple and secure recursing
+nameserver. It currently powers over two million internet connections.
+
+WWW: http://www.powerdns.com
diff --git a/dns/powerdns-recursor40/pkg-plist b/dns/powerdns-recursor40/pkg-plist
new file mode 100644
index 000000000000..14fc77b3d5d2
--- /dev/null
+++ b/dns/powerdns-recursor40/pkg-plist
@@ -0,0 +1,5 @@
+@sample etc/pdns/recursor.conf-dist etc/pdns/recursor.conf
+bin/rec_control
+sbin/pdns_recursor
+man/man1/pdns_recursor.1.gz
+man/man1/rec_control.1.gz