From: Remi Gacogne Date: Fri, 14 Feb 2025 15:45:19 +0000 (+0100) Subject: dnsdist: Initial changes to build our DNSdist packages with meson X-Git-Tag: dnsdist-2.0.0-alpha1~30^2~31 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=746d3d2ca706c9d0f9362ce19b7f198438bb3e81;p=thirdparty%2Fpdns.git dnsdist: Initial changes to build our DNSdist packages with meson --- diff --git a/builder-support/dockerfiles/Dockerfile.debbuild-prepare b/builder-support/dockerfiles/Dockerfile.debbuild-prepare index 45baa89987..f88459354f 100644 --- a/builder-support/dockerfiles/Dockerfile.debbuild-prepare +++ b/builder-support/dockerfiles/Dockerfile.debbuild-prepare @@ -15,8 +15,9 @@ RUN cd /pdns/builder-support/helpers/ && ./install_rust.sh @IF [ -n "$M_dnsdist$M_all" ] RUN cd /pdns/builder-support/helpers/ && ./install_rust.sh -RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git cmake clang +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git cmake clang ninja-build RUN cd /pdns/builder-support/helpers/ && ./install_quiche.sh +RUN cd /pdns/builder-support/helpers/ && ./install_meson.sh @ENDIF # Used for -p option to only build specific packages diff --git a/builder-support/dockerfiles/Dockerfile.dnsdist b/builder-support/dockerfiles/Dockerfile.dnsdist index b1f096b04e..c157637075 100644 --- a/builder-support/dockerfiles/Dockerfile.dnsdist +++ b/builder-support/dockerfiles/Dockerfile.dnsdist @@ -1,8 +1,8 @@ -FROM alpine:3.18 as dnsdist +FROM alpine:3.21 as dnsdist ARG BUILDER_CACHE_BUSTER= RUN apk add --no-cache gcc g++ make tar autoconf automake protobuf-dev lua-dev \ - libtool file boost-dev ragel python3 py3-yaml git libedit-dev bash + libtool file boost-dev ragel python3 py3-yaml git libedit-dev bash meson ADD builder/helpers/set-configure-ac-version.sh /dnsdist/builder/helpers/ ADD COPYING /dnsdist/ @@ -15,7 +15,6 @@ RUN mkdir /sdist ARG BUILDER_VERSION RUN /dnsdist/builder/helpers/set-configure-ac-version.sh && \ - autoreconf -v -i --force && \ - ./configure --disable-dependency-tracking && \ - make dist -RUN cp dnsdist-${BUILDER_VERSION}.tar.bz2 /sdist/ + meson setup build && \ + meson dist -C build +RUN cp build/meson-dist/dnsdist-${BUILDER_VERSION}.tar.xz /sdist/ diff --git a/builder-support/dockerfiles/Dockerfile.rpmbuild b/builder-support/dockerfiles/Dockerfile.rpmbuild index de701b7f1d..7bc485fdcf 100644 --- a/builder-support/dockerfiles/Dockerfile.rpmbuild +++ b/builder-support/dockerfiles/Dockerfile.rpmbuild @@ -20,6 +20,7 @@ RUN cd /pdns/builder-support/helpers/ && ./install_rust.sh && \ yum install -y git cmake clang && \ cd /pdns/builder-support/helpers/ && \ ./install_quiche.sh +RUN cd /pdns/builder-support/helpers/ && ./install_meson.sh @ENDIF # Used for -p option to only build specific spec files diff --git a/builder-support/helpers/install_meson.sh b/builder-support/helpers/install_meson.sh new file mode 100644 index 0000000000..ff529c041a --- /dev/null +++ b/builder-support/helpers/install_meson.sh @@ -0,0 +1,23 @@ +#!/bin/sh +set -v +set -e + +readonly MESON_VERSION=$(jq -r .version < meson.json) +readonly MESON_TARBALL="${MESON_VERSION}.tar.gz" +readonly MESON_TARBALL_URL="https://github.com/mesonbuild/meson/archive/${MESON_TARBALL}" +readonly MESON_TARBALL_HASH=$(jq -r .SHA256SUM < meson.json) + +cd /tmp +echo $0: Downloading ${MESON_TARBALL} +curl -L -o "${MESON_TARBALL}" "${MESON_TARBALL_URL}" +echo $0: Checking that the hash of ${MESON_TARBALL} is ${MESON_TARBALL_HASH} +# Line below should echo two spaces between digest and name +echo "${MESON_TARBALL_HASH}" "${MESON_TARBALL}" | sha256sum -c - +tar xf "${MESON_TARBALL}" +cd "meson-${MESON_VERSION}" + +python setup.py build +python setup.py install + +cd .. +rm -rf "${MESON_TARBALL}" "meson-${MESON_VERSION}" diff --git a/builder-support/helpers/meson.json b/builder-support/helpers/meson.json new file mode 100644 index 0000000000..62484bd419 --- /dev/null +++ b/builder-support/helpers/meson.json @@ -0,0 +1,6 @@ +{ + "version": "1.7.0", + "license": "Apache-2.0", + "publisher": "https://github.com/mesonbuild/meson", + "SHA256SUM": "08efbe84803eed07f863b05092d653a9d348f7038761d900412fddf56deb0284" +} diff --git a/builder-support/specs/dnsdist.spec b/builder-support/specs/dnsdist.spec index 08fa62a0ba..572ba00921 100644 --- a/builder-support/specs/dnsdist.spec +++ b/builder-support/specs/dnsdist.spec @@ -70,46 +70,38 @@ export LDFLAGS="-fuse-ld=lld -Wl,--build-id=sha1 -Wl,--no-as-needed -ldl" export AR=gcc-ar export RANLIB=gcc-ranlib -%configure \ - --enable-option-checking=fatal \ - --sysconfdir=/etc/dnsdist \ - --disable-static \ - --disable-dependency-tracking \ - --disable-silent-rules \ - --enable-unit-tests \ - --enable-lto=thin \ - --enable-dns-over-tls \ - --with-h2o \ +%meson \ + -Dsysconfdir=/etc/dnsdist + -Dunit-tests=true \ + -Db_lto=true \ + -Db_lto_mode=thin \ + -Db_pie=true \ + -Ddebug=true \ + -Doptimization=3 \ + -Ddns-over-tls=true \ %if 0%{?suse_version} - --disable-dnscrypt \ - --without-libsodium \ - --without-re2 \ - --enable-systemd --with-systemd=%{_unitdir} \ - --without-net-snmp + -Ddnscrypt=disabled \ + -Dsnmp=false %endif - --enable-dnstap \ - --enable-dns-over-https \ - --enable-systemd --with-systemd=%{_unitdir} \ - --with-gnutls \ - --with-libcap \ - --with-lua=%{lua_implementation} \ - --with-re2 \ - --enable-dnscrypt \ - --with-libsodium \ - --with-net-snmp \ - --enable-dns-over-quic \ - --enable-dns-over-http3 \ - --with-quiche \ - --enable-yaml \ + -Ddnstap=enabled \ + -Ddns-over-https=true \ + -Dtls-gnutls=enabled \ + -Dlibcap=enabled \ + -Dlua=luajit \ + -Dre2=enabled \ + -Ddnscrypt=enabled \ + -Dsnmp=true \ + -Ddns-over-quic=true \ + -Ddns-over-http3=true \ + -Dyaml=enabled \ PKG_CONFIG_PATH=/usr/lib/pkgconfig:/opt/lib64/pkgconfig - -make %{?_smp_mflags} +%meson_build %check -make %{?_smp_mflags} check || (cat test-suite.log && false) +%meson_test %install -%make_install +%meson_install install -d %{buildroot}/%{_sysconfdir}/dnsdist install -Dm644 /usr/lib/libdnsdist-quiche.so %{buildroot}/%{_libdir}/libdnsdist-quiche.so %{__mv} %{buildroot}%{_sysconfdir}/dnsdist/dnsdist.conf-dist %{buildroot}%{_sysconfdir}/dnsdist/dnsdist.conf