From: Remi Gacogne Date: Thu, 2 Oct 2025 09:32:29 +0000 (+0200) Subject: build-and-test-all: Test rec release tarball via meson instead of autotools X-Git-Tag: rec-5.4.0-alpha1~226^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ffe0b5e7c21773f69c5c4a5dfd4cd45b846e54ed;p=thirdparty%2Fpdns.git build-and-test-all: Test rec release tarball via meson instead of autotools Signed-off-by: Remi Gacogne --- diff --git a/tasks.py b/tasks.py index 719240f206..837d72ed38 100644 --- a/tasks.py +++ b/tasks.py @@ -490,7 +490,7 @@ def get_base_configure_cmd(additional_c_flags='', additional_cxx_flags='', addit get_sanitizers() ]) -def get_base_configure_cmd_meson(build_dir, additional_c_flags='', additional_cxx_flags='', enable_systemd=True, enable_sodium=True): +def get_base_configure_cmd_meson(build_dir, additional_c_flags='', additional_cxx_flags='', enable_systemd=True, enable_sodium=True, src_dir=''): cflags = " ".join([get_cflags(), additional_c_flags]) cxxflags = " ".join([get_cxxflags(), additional_cxx_flags]) env = " ".join([ @@ -500,7 +500,7 @@ def get_base_configure_cmd_meson(build_dir, additional_c_flags='', additional_cx f"CXX='{get_cxx_compiler()}'" ]) return " ".join([ - f'{env} meson setup {build_dir}', + f'{env} meson setup {build_dir} {src_dir}', "-D systemd-service={}".format("enabled" if enable_systemd else "disabled"), "-D signers-libsodium={}".format("enabled" if enable_sodium else "disabled"), "-D hardening-fortify-source=auto", @@ -592,11 +592,18 @@ def ci_auth_configure(c, build_dir=None, meson=False): ci_auth_configure_autotools(c) def ci_rec_configure_meson(c, features, build_dir): + builder_version = os.getenv('BUILDER_VERSION') + dist_dir = '/tmp/rec-meson-dist-build' + c.run(f'meson setup {dist_dir} && meson dist -C {dist_dir} --no-tests') + with c.cd(f'{dist_dir}/meson-dist'): + c.run(f'tar xf pdns-recursor-{builder_version}.tar.xz') + src_dir = f'{dist_dir}/meson-dist/pdns-recursor-{builder_version}' + unittests = get_unit_tests(meson=True, auth=False) if features == "full": configure_cmd = " ".join([ "LDFLAGS='-L/usr/local/lib -Wl,-rpath,/usr/local/lib'", - get_base_configure_cmd_meson(build_dir), + get_base_configure_cmd_meson(build_dir, src_dir=src_dir), "-D prefix=/opt/pdns-recursor", "-D dns-over-tls=enabled", "-D nod=enabled", @@ -608,7 +615,7 @@ def ci_rec_configure_meson(c, features, build_dir): else: configure_cmd = " ".join([ "LDFLAGS='-L/usr/local/lib -Wl,-rpath,/usr/local/lib'", - get_base_configure_cmd_meson(build_dir), + get_base_configure_cmd_meson(build_dir, src_dir=src_dir), "-D prefix=/opt/pdns-recursor", "-D dns-over-tls=disabled", "-D dnstap=disabled", @@ -626,11 +633,12 @@ def ci_rec_configure_meson(c, features, build_dir): c.run(f'cat {build_dir}/meson-logs/meson-log.txt') raise UnexpectedExit(res) -def ci_rec_configure_autotools(c, features): +def ci_rec_configure_autotools(c, features, build_dir=None): unittests = get_unit_tests() + out_of_tree_build = build_dir is not None if features == 'full': configure_cmd = " ".join([ - get_base_configure_cmd(), + get_base_configure_cmd(out_of_tree_build=out_of_tree_build), "--prefix=/opt/pdns-recursor", "--enable-option-checking", "--enable-verbose-logging", @@ -643,7 +651,7 @@ def ci_rec_configure_autotools(c, features): ]) else: configure_cmd = " ".join([ - get_base_configure_cmd(), + get_base_configure_cmd(out_of_tree_build=out_of_tree_build), "--prefix=/opt/pdns-recursor", "--enable-option-checking", "--enable-verbose-logging", @@ -668,11 +676,12 @@ def ci_rec_configure(c, features, build_dir=None, meson=False): if meson: ci_rec_configure_meson(c, features, build_dir) else: - ci_rec_configure_autotools(c, features) if build_dir: - ci_make_distdir(c) + c.run(f'mkdir -p {build_dir}') with c.cd(f'{build_dir}'): - ci_rec_configure_autotools(c, features) + ci_rec_configure_autotools(c, features, build_dir) + else: + ci_rec_configure_autotools(c, features) @task def ci_dnsdist_configure(c, features, builder, build_dir): @@ -832,11 +841,13 @@ def ci_dnsdist_configure_meson(c, features, additional_flags, additional_ld_flag ]) builder_version = os.getenv('BUILDER_VERSION') - c.run(f'. {repo_home}/.venv/bin/activate && meson setup /tmp/dnsdist-meson-dist-build && meson dist -C /tmp/dnsdist-meson-dist-build --no-tests') - with c.cd('/tmp/dnsdist-meson-dist-build/meson-dist/'): + dist_dir = '/tmp/dnsdist-meson-dist-build' + + c.run(f'. {repo_home}/.venv/bin/activate && meson setup {dist_dir} && meson dist -C {dist_dir} --no-tests') + with c.cd(f'{dist_dir}/meson-dist/'): c.run(f'tar xf dnsdist-{builder_version}.tar.xz') - src_dir = f'/tmp/dnsdist-meson-dist-build/meson-dist/dnsdist-{builder_version}' + src_dir = f'{dist_dir}/meson-dist/dnsdist-{builder_version}' return " ".join([ f'. {repo_home}/.venv/bin/activate && {env} meson setup {build_dir} {src_dir}', features_set,