DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
-# for atomic support on powerpc (automatic on mipsel)
-LDFLAGS += -latomic
-# We need clang (LLVM) to link the Rust static library and the C++ code with LTO enabled
-# build-id SHA1 prevents an issue with the debug symbols ("export: `-Wl,--build-id=sha1': not a valid identifier")
-# and the --no-as-needed -ldl an issue with the dlsym not being found ("ld.lld: error: undefined symbol: dlsym eferenced by weak.rs:142 (library/std/src/sys/pal/unix/weak.rs:142) [...] in archive ./dnsdist-rust-lib/rust/libdnsdist_rust.a)
-LDFLAGS += -fuse-ld=lld -Wl,--build-id=sha1 -Wl,--no-as-needed -ldl
-CC=clang
-CXX=clang++
-
# Only enable systemd integration on Linux operating systems
ifeq ($(DEB_HOST_ARCH_OS),linux)
-CONFIGURE_ARGS += --enable-systemd --with-systemd=/lib/systemd/system
+MESON_ARGS += -Dsystemd=enabled
DH_ARGS += --with systemd
else
-CONFIGURE_ARGS += --disable-systemd
+MESON_ARGS += -Dsystemd=disabled
endif
# Only enable BPF/XDP on Linux operating systems
ifeq ($(DEB_HOST_ARCH_OS),linux)
-CONFIGURE_ARGS += --with-xsk
+MESON_ARGS += -Dxsk=enabled
else
-CONFIGURE_ARGS += --without-xsk
+MESON_ARGS += -Dxsk=disabled
endif
# Only disable luajit on arm64
ifneq ($(DEB_HOST_ARCH),arm64)
-CONFIGURE_ARGS += --with-lua=luajit
+MESON_ARGS += -Dlua=luajit
else
-CONFIGURE_ARGS += --with-lua=lua5.3
+MESON_ARGS += -Dlua=lua
endif
%:
- dh $@ \
- --with autoreconf \
+ dh $@ --buildsystem=meson \
$(DH_ARGS)
override_dh_auto_clean:
rm -f dnslabeltext.cc
dh_auto_clean
+# for atomic support on powerpc (automatic on mipsel)
+#LDFLAGS += -latomic
+# We need clang (LLVM) to link the Rust static library and the C++ code with LTO enabled
+# build-id SHA1 prevents an issue with the debug symbols ("export: `-Wl,--build-id=sha1': not a valid identifier")
+# and the --no-as-needed -ldl an issue with the dlsym not being found ("ld.lld: error: undefined symbol: dlsym eferenced by weak.rs:142 (library/std/src/sys/pal/unix/weak.rs:142) [...] in archive ./dnsdist-rust-lib/rust/libdnsdist_rust.a)
+# LDFLAGS += -fuse-ld=lld -Wl,--build-id=sha1 -Wl,--no-as-needed -ldl
+# CC=clang
+# CXX=clang++
+
override_dh_auto_configure:
- ./configure \
- --host=$(DEB_HOST_GNU_TYPE) \
- --build=$(DEB_BUILD_GNU_TYPE) \
- --prefix=/usr \
+ LDFLAGS="-latomic -fuse-ld=lld -Wl,--build-id=sha1 -Wl,--no-as-needed -ldl" \
+ CC=clang \
+ CXX=clang++ \
+ PKG_CONFIG_PATH=/opt/lib/pkgconfig dh_auto_configure -- \
--sysconfdir=/etc/dnsdist \
- --mandir=\$${prefix}/share/man \
- --infodir=\$${prefix}/share/info \
- --libdir='$${prefix}/lib/$(DEB_HOST_MULTIARCH)' \
- --libexecdir='$${prefix}/lib' \
- --enable-lto=thin \
- --enable-dns-over-https \
- --enable-dns-over-quic \
- --enable-dns-over-http3 \
- --enable-dns-over-tls \
- --enable-dnscrypt \
- --enable-dnstap \
- --enable-yaml \
- --with-ebpf \
- --with-gnutls \
- --with-h2o \
- --with-net-snmp \
- --with-libcap \
- --with-libsodium \
- --with-quiche \
- --with-re2 \
- --with-service-user='_dnsdist' \
- --with-service-group='_dnsdist' \
- $(CONFIGURE_ARGS) \
- PKG_CONFIG_PATH=/opt/lib/pkgconfig
+ -Dunit-tests=true \
+ -Db_lto=true \
+ -Db_lto_mode=thin \
+ -Db_pie=true \
+ -Ddns-over-https=true \
+ -Ddns-over-quic=true \
+ -Ddns-over-http3=true \
+ -Ddns-over-tls=true \
+ -Ddnscrypt=enabled \
+ -Ddnstap=enabled \
+ -Dyaml=enabled \
+ -Debpf=enabled \
+ -Dyaml=enabled \
+ -Dtls-gnutls=enabled \
+ -Dsnmp=true \
+ -Dlibcap=enabled \
+ -Dlibsodium=enabled \
+ -Dquiche=enabled \
+ -Dre2=enabled \
+ -Dsystemd-service-user='_dnsdist' \
+ -Dsystemd-service-group='_dnsdist' \
+ $(MESON_ARGS)
override_dh_auto_build-arch:
- dh_auto_build -- V=1
+ dh_auto_build
override_dh_install:
dh_auto_install
@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 ninja-build
+RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends git cmake clang
RUN cd /pdns/builder-support/helpers/ && ./install_quiche.sh
+RUN DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends python3-pip ninja-build
RUN cd /pdns/builder-support/helpers/ && ./install_meson.sh
@ENDIF
@ENDIF
@IF [ -n "$M_dnsdist$M_all" ]
-RUN tar xvf /sdist/dnsdist-${BUILDER_VERSION}.tar.bz2
+RUN tar xvf /sdist/dnsdist-${BUILDER_VERSION}.tar.xz
# create copy of source tarball with name that dpkg-source requires
-RUN cp /sdist/dnsdist-${BUILDER_VERSION}.tar.bz2 dnsdist_${BUILDER_VERSION}.orig.tar.bz2
+RUN cp /sdist/dnsdist-${BUILDER_VERSION}.tar.xz dnsdist_${BUILDER_VERSION}.orig.tar.zx
@ENDIF
install -Dpm0644 -t /usr/lib/rpm/macros.d/ data/macros.meson
-python3 -m pip install .
+python3 -m pip install . --break-system-packages || python3 -m pip install .
ln -s /usr/local/bin/meson /usr/bin/meson
PYVERS=$(python3 --version | sed 's/Python //' | cut -d. -f1,2)
-ln -s "/usr/local/lib/python${PYVERS}/site-packages/mesonbuild" /usr/lib/python${PYVERS}/site-packages/mesonbuild
+if [ -d "/usr/local/lib/python${PYVERS}/dist-packages/mesonbuild" ]; then
+ # thanks, Debian and Ubuntu, much appreciated..
+ mkdir -p "/usr/lib/python${PYVERS}/dist-packages/mesonbuild"
+ ln -s "/usr/local/lib/python${PYVERS}/dist-packages/mesonbuild" "/usr/lib/python${PYVERS}/dist-packages/mesonbuild"
+else
+ ln -s "/usr/local/lib/python${PYVERS}/site-packages/mesonbuild" "/usr/lib/python${PYVERS}/site-packages/mesonbuild"
+fi
cd ..
rm -rf "${MESON_TARBALL}" "meson-${MESON_VERSION}"