]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Initial changes to build our DNSdist packages with meson
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 14 Feb 2025 15:45:19 +0000 (16:45 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 7 Mar 2025 16:24:18 +0000 (17:24 +0100)
builder-support/dockerfiles/Dockerfile.debbuild-prepare
builder-support/dockerfiles/Dockerfile.dnsdist
builder-support/dockerfiles/Dockerfile.rpmbuild
builder-support/helpers/install_meson.sh [new file with mode: 0644]
builder-support/helpers/meson.json [new file with mode: 0644]
builder-support/specs/dnsdist.spec

index 45baa8998741d848da7283485ee5bda54de72cd2..f88459354ff6683672414299d224751b3b13ef83 100644 (file)
@@ -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
index b1f096b04e11decf798f3d7388c9b5b3dc4b5c5a..c1576370756b25562959c860887a8a483eabdd0e 100644 (file)
@@ -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/
index de701b7f1da73a7279a6ea6d272e31aeea6fe276..7bc485fdcf8698eb7f52d9c709de2b03ad362842 100644 (file)
@@ -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 (file)
index 0000000..ff529c0
--- /dev/null
@@ -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 (file)
index 0000000..62484bd
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "version": "1.7.0",
+  "license": "Apache-2.0",
+  "publisher": "https://github.com/mesonbuild/meson",
+  "SHA256SUM": "08efbe84803eed07f863b05092d653a9d348f7038761d900412fddf56deb0284"
+}
index 08fa62a0baa95f85714cee1cbd33f3f8376ea8b7..572ba009212c2a13e6283fa127a5f1ffbd31870c 100644 (file)
@@ -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