[dnsdist] (Re-)creating RPM packages with DoH support from .src.rpm

Pieter Lexis pieter.lexis at powerdns.com
Thu May 14 08:37:25 UTC 2020


Hi Christopher,

On 5/13/20 10:39 PM, Christopher Engelhard via dnsdist wrote:
> how exactly are the RPM packages on repo.powerdns.org created? I'm
> trying to build them locally, and it doesn't (and in my opinion can not)
> work.

You are correct here! We use some magic (including environment variables
for the version number) to make it all work. The packages are built
using a tool called pdns-builder[1].

This tool uses docker to move the tarball and specfile to the right
places and prepares the build environment before calling `rpmbuild`.

> Background: dnsdist in Fedora lacks DoH support, because Fedora lacks
> libh2o-evloop. I was trying to rectify that, but h2o upstream is a mess
> of bundled libraries, so I decided to take a look at how your stuff is
> packaged, and I don't understand it at all (Taking dnsdist-1.5.0-rc2 for
> CentOS8 as an example here).
>
> - According to the specfile, dnsdist is built with
> --enable-dns-over-https (great!), but the package doens't have
> libh2o-devel as a BuildRequires:, and accordingly rpmbuild fails at the
> 'configure' step.
>
> - Moreover, even if I put the headers into the buildroot, since the
> repos (to my knowledge) lack libh2o-evloop, the package wouldn't be
> installable even if it was buildable.
>
> - The binary from the CentOS8 package does not seem to be linked against
> libh2o-evloop
>
> So, where does that binary come from, because it doesn't seem to come
> from the .src.rpm? Do I need libh2o-evloop for DoH support or not? What
> am I misunderstanding here?

The build environment we set up for Centos 8 (and 7) builds and installs
libh2o before building dnsdist[2]. libh2o, by default, builds a static
library *and* it provides a pkg-config file allow it to be found,
dnsdist picks it up and statically links in libh2o-evloop.

We started doing this because (as you realized) there is no libh2o in
CentOS or EPEL when we built DoH support.

So unfortunately, we can't really help you with with you packaging
woes. However, several of the cmake options in the link to our build
file[2] might help you zero in on how to strip down libh2o to use system
libraries.

Best regards,

Pieter

1 - https://github.com/PowerDNS/pdns-builder
2 -
https://github.com/PowerDNS/pdns/blob/e0dbe9f93a99f5f0aab46f077031b936dba1f6e1/builder-support/dockerfiles/Dockerfile.rpmbuild#L41-L51

-- 
Pieter Lexis
PowerDNS.COM BV -- https://www.powerdns.com


More information about the dnsdist mailing list