]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
build-and-test-all: Test rec release tarball via meson instead of autotools
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 2 Oct 2025 09:32:29 +0000 (11:32 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 2 Oct 2025 10:12:54 +0000 (12:12 +0200)
Signed-off-by: Remi Gacogne <remi.gacogne@powerdns.com>
tasks.py

index 719240f206db60b9d24aef88fb588fc4998b825a..837d72ed38e15dd6d2ffebd4806f07791aa3bfaf 100644 (file)
--- 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,