commit:     4b330dc703c321fd16cb69031891072a5ec667a4
Author:     Holger Hoffstätte <holger <AT> applied-asynchrony <DOT> com>
AuthorDate: Tue Feb 18 09:59:20 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Mar 27 12:04:43 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4b330dc7

net-dns/dnsdist: add patch for net-libs/quiche >= 0.23.0

Closes: https://bugs.gentoo.org/949896
Signed-off-by: Holger Hoffstätte <holger <AT> applied-asynchrony.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 net-dns/dnsdist/dnsdist-1.9.8-r1.ebuild       | 117 ++++++++++++++++++++++++++
 net-dns/dnsdist/files/1.9.8-quiche-0.23.patch |  52 ++++++++++++
 2 files changed, 169 insertions(+)

diff --git a/net-dns/dnsdist/dnsdist-1.9.8-r1.ebuild 
b/net-dns/dnsdist/dnsdist-1.9.8-r1.ebuild
new file mode 100644
index 000000000000..01609de7f573
--- /dev/null
+++ b/net-dns/dnsdist/dnsdist-1.9.8-r1.ebuild
@@ -0,0 +1,117 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-{1..4} luajit )
+
+inherit autotools flag-o-matic lua-single
+
+DESCRIPTION="A highly DNS-, DoS- and abuse-aware loadbalancer"
+HOMEPAGE="https://dnsdist.org";
+
+SRC_URI="https://downloads.powerdns.com/releases/${P}.tar.bz2";
+LICENSE="GPL-2"
+SLOT="0"
+
+KEYWORDS="~amd64 ~x86"
+
+IUSE="bpf cdb dnscrypt dnstap doh doh3 ipcipher lmdb quic regex snmp +ssl 
systemd test web xdp"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${LUA_REQUIRED_USE}
+               dnscrypt? ( ssl )
+               doh? ( ssl )
+               doh3? ( ssl quic )
+               ipcipher? ( ssl )
+               quic? ( ssl )"
+
+RDEPEND="acct-group/dnsdist
+       acct-user/dnsdist
+       bpf? ( dev-libs/libbpf:= )
+       cdb? ( dev-db/tinycdb:= )
+       dev-libs/boost:=
+       sys-libs/libcap
+       dev-libs/libedit
+       dev-libs/libsodium:=
+       dnstap? ( dev-libs/fstrm )
+       doh? ( net-libs/nghttp2:= )
+       doh3? ( net-libs/quiche:= )
+       lmdb? ( dev-db/lmdb:= )
+       quic? ( net-libs/quiche )
+       regex? ( dev-libs/re2:= )
+       snmp? ( net-analyzer/net-snmp:= )
+       ssl? ( dev-libs/openssl:= )
+       systemd? ( sys-apps/systemd:0= )
+       xdp? ( net-libs/xdp-tools )
+       ${LUA_DEPS}
+"
+
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=( "${FILESDIR}/1.9.8-quiche-0.23.patch" )
+
+src_prepare() {
+       default
+
+       # clean up duplicate file
+       rm -f README.md
+
+       # reconfigure
+       eautoreconf
+}
+
+src_configure() {
+       # bug #822855
+       append-lfs-flags
+
+       # some things can only be enabled/disabled by defines
+       ! use dnstap && append-cppflags -DDISABLE_PROTOBUF
+       ! use web && append-cppflags -DDISABLE_BUILTIN_HTML
+
+       sed 's/hardcode_libdir_flag_spec_CXX='\''$wl-rpath 
$wl$libdir'\''/hardcode_libdir_flag_spec_CXX='\''$wl-rpath $wl\/$libdir'\''/g' \
+               -i "${S}/configure"
+
+       local myeconfargs=(
+               --sysconfdir=/etc/dnsdist
+               --with-lua="${ELUA}"
+               --without-h2o
+               --enable-tls-providers
+               --without-gnutls
+               $(use_with bpf ebpf)
+               $(use_with cdb cdb)
+               $(use_enable doh dns-over-https)
+               $(use_enable doh3 dns-over-http3)
+               $(use_enable dnscrypt)
+               $(use_enable dnstap)
+               $(use_enable ipcipher)
+               $(use_with lmdb )
+               $(use_enable quic dns-over-quic)
+               $(use_with regex re2)
+               $(use_with snmp net-snmp)
+               $(use_enable ssl dns-over-tls)
+               $(use_enable systemd) \
+               $(use_enable test unit-tests)
+               $(use_with xdp xsk)
+       )
+
+       econf "${myeconfargs[@]}"
+}
+
+src_install() {
+       default
+
+       insinto /etc/dnsdist
+       doins "${FILESDIR}"/dnsdist.conf.example
+
+       newconfd "${FILESDIR}"/dnsdist.confd ${PN}
+       newinitd "${FILESDIR}"/dnsdist.initd ${PN}
+}
+
+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."
+}

diff --git a/net-dns/dnsdist/files/1.9.8-quiche-0.23.patch 
b/net-dns/dnsdist/files/1.9.8-quiche-0.23.patch
new file mode 100644
index 000000000000..a99897a691a3
--- /dev/null
+++ b/net-dns/dnsdist/files/1.9.8-quiche-0.23.patch
@@ -0,0 +1,52 @@
+
+Manual backport of upstream commit:
+https://github.com/PowerDNS/pdns/commit/661b071b347193a66deaa0d5b8350a2c816f6534
+
+Signed-off-by: Holger Hoffstätte <[email protected]>
+
+diff -up dnsdist-1.9.8/doh3.cc.orig dnsdist-1.9.8/doh3.cc 
+--- dnsdist-1.9.8/doh3.cc.orig 2024-12-17 10:14:37.000000000 +0100
++++ dnsdist-1.9.8/doh3.cc      2025-02-18 10:04:11.843950262 +0100
+@@ -751,7 +751,11 @@ static void processH3HeaderEvent(ClientS
+   }
+ 
+   if (headers.at(":method") == "POST") {
++#if defined(HAVE_QUICHE_H3_EVENT_HEADERS_HAS_MORE_FRAMES)
++    if (!quiche_h3_event_headers_has_more_frames(event)) {
++#else
+     if (!quiche_h3_event_headers_has_body(event)) {
++#endif
+       handleImmediateError("Empty POST query");
+     }
+     return;
+diff -up dnsdist-1.9.8/m4/pdns_with_quiche.m4.orig 
dnsdist-1.9.8/m4/pdns_with_quiche.m4 
+--- dnsdist-1.9.8/m4/pdns_with_quiche.m4.orig  2024-12-17 10:14:37.000000000 
+0100
++++ dnsdist-1.9.8/m4/pdns_with_quiche.m4       2025-02-18 10:04:11.844114375 
+0100
+@@ -10,16 +10,23 @@ AC_DEFUN([PDNS_WITH_QUICHE], [
+ 
+   AS_IF([test "x$with_quiche" != "xno"], [
+     AS_IF([test "x$with_quiche" = "xyes" -o "x$with_quiche" = "xauto"], [
+-      PKG_CHECK_MODULES([QUICHE], [quiche >= 0.22.0], [
++      PKG_CHECK_MODULES([QUICHE], [quiche >= 0.23.0], [
+         [HAVE_QUICHE=1]
+         AC_DEFINE([HAVE_QUICHE], [1], [Define to 1 if you have quiche])
++        AC_DEFINE([HAVE_QUICHE_H3_EVENT_HEADERS_HAS_MORE_FRAMES], [1], 
[Define to 1 if the Quiche API has quiche_h3_event_headers_has_more_frames 
instead of quiche_h3_event_headers_has_body])
+         AC_DEFINE([HAVE_QUICHE_STREAM_ERROR_CODES], [1], [Define to 1 if the 
Quiche API includes error code in quiche_conn_stream_recv and 
quiche_conn_stream_send])
+       ], [
+-        # Quiche is older than 0.22.0, or no Quiche at all
+-        PKG_CHECK_MODULES([QUICHE], [quiche >= 0.15.0], [
++        PKG_CHECK_MODULES([QUICHE], [quiche >= 0.22.0], [
+           [HAVE_QUICHE=1]
+           AC_DEFINE([HAVE_QUICHE], [1], [Define to 1 if you have quiche])
+-        ], [ : ])
++          AC_DEFINE([HAVE_QUICHE_STREAM_ERROR_CODES], [1], [Define to 1 if 
the Quiche API includes error code in quiche_conn_stream_recv and 
quiche_conn_stream_send])
++        ], [
++          # Quiche is older than 0.22.0, or no Quiche at all
++          PKG_CHECK_MODULES([QUICHE], [quiche >= 0.15.0], [
++            [HAVE_QUICHE=1]
++            AC_DEFINE([HAVE_QUICHE], [1], [Define to 1 if you have quiche])
++          ], [ : ])
++        ])
+       ])
+     ])
+   ])

Reply via email to