From: Otto Moerbeek Subject: Re: Update: PowerDNS Recursor 5.0.1 To: Theo Buehler Cc: ports@openbsd.org Date: Wed, 10 Jan 2024 12:14:45 +0100 On Wed, Jan 10, 2024 at 11:52:39AM +0100, Theo Buehler wrote: > On Wed, Jan 10, 2024 at 10:53:33AM +0100, Otto Moerbeek wrote: > > Hi, > > > > this is a somewhat large update as PowerDNS Recursor 5 uses Rust code > > (in addition to C++) > > > > So I would like some extra eyes and OK. > > WANTLIB needs fixing (see 'lib-depends-check' in bsd.port.mk). It should > be: > > WANTLIB += ${MODCARGO_WANTLIB} ${COMPILER_LIBCXX} boost_atomic-mt > WANTLIB += boost_context-mt boost_filesystem-mt boost_system-mt crypto > WANTLIB += curl fstrm m nghttp2 nghttp3 ngtcp2 ngtcp2_crypto_quictls > WANTLIB += sodium ssl z > > ${MODCARGO_WANTLIB} is needed for Rust ports to have correct WANTLIB on > all platforms. Currently only sparc64 is special because ports-gcc > statically links against its C++ library - not really an issue here > since boost-md isn't available there. > > You also need to 'cvs rm -f patches/patch-mtasker_fcontext_cc' because > with your diff I get: > > ===> Applying OpenBSD patch patch-mtasker_fcontext_cc > Hmm... Looks like a unified diff to me... > The text leading up to this was: > -------------------------- > |Index: mtasker_fcontext.cc > |--- mtasker_fcontext.cc.orig > |+++ mtasker_fcontext.cc > -------------------------- > Patching file mtasker_fcontext.cc using Plan A... > Reversed (or previously applied) patch detected! Assume -R? [y] > > With these two fixed > > ok tb > > The CET_ENDBR handling in that now upstreamed patch needs fixing to have > a chance to work with other operating systems. Using endbr64 is not > enough. Other OS also need .gnu.property notes and there is some > assembly to emit that in the compiler-internal cet.h (present if __CET__ > is defined), so the proper portable way is to use _CET_ENDBR and to do > > #ifdef __CET__ > #include > #else > #define _CET_ENDBR > #endif Thanks, I'll look into that. My previous attempts at using cet.h did not work because it assumes it is included from an assembly file, not a C or C++ file. -Otto