@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
-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/
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/
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
--- /dev/null
+#!/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}"
--- /dev/null
+{
+ "version": "1.7.0",
+ "license": "Apache-2.0",
+ "publisher": "https://github.com/mesonbuild/meson",
+ "SHA256SUM": "08efbe84803eed07f863b05092d653a9d348f7038761d900412fddf56deb0284"
+}
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