]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
tasks: Properly convert sanitizers to meson
authorRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 15 Oct 2024 08:49:31 +0000 (10:49 +0200)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 28 Jan 2025 13:59:26 +0000 (14:59 +0100)
.github/workflows/build-and-test-all.yml
tasks.py

index 90ae7443ed17de72157b6c494fb272447803e0e0..11b99deb89be8b9afaaf08ec766338619157b0cc 100644 (file)
@@ -138,7 +138,7 @@ jobs:
     needs: get-runner-container-image
     strategy:
       matrix:
-        sanitizers: [ubsan+asan, tsan]
+        sanitizers: [asan+ubsan, tsan]
         features: [least, full]
         builder: [autotools, meson]
         exclude:
@@ -217,7 +217,7 @@ jobs:
     strategy:
       matrix:
         builder: [autotools, meson]
-        sanitizers: [ubsan+asan, tsan]
+        sanitizers: [asan+ubsan, tsan]
         features: [least, full]
         exclude:
           - sanitizers: tsan
@@ -537,7 +537,7 @@ jobs:
     runs-on: ubuntu-22.04
     strategy:
       matrix:
-        sanitizers: [ubsan+asan, tsan]
+        sanitizers: [asan+ubsan, tsan]
         dist_name: [debian]
         pdns_repo_version: ['48']
     container:
@@ -583,7 +583,7 @@ jobs:
     runs-on: ubuntu-22.04
     strategy:
       matrix:
-        sanitizers: [ubsan+asan, tsan]
+        sanitizers: [asan+ubsan, tsan]
         dist_name: [debian]
         pdns_repo_version: ['48']
     container:
@@ -632,7 +632,7 @@ jobs:
     runs-on: ubuntu-22.04
     strategy:
       matrix:
-        sanitizers: [ubsan+asan, tsan]
+        sanitizers: [asan+ubsan, tsan]
         threads: [1, 2, 3, 4, 8]
         mthreads: [2048]
         shards: [1, 2, 1024]
@@ -679,7 +679,7 @@ jobs:
     runs-on: ubicloud-standard-8-ubuntu-2404
     strategy:
       matrix:
-        sanitizers: [ubsan+asan] # TSAN disabled for now
+        sanitizers: [asan+ubsan] # TSAN disabled for now
         threads: [8]
         mthreads: [2048]
         shards: [1024]
@@ -723,7 +723,7 @@ jobs:
     runs-on: ubuntu-22.04
     strategy:
       matrix:
-        sanitizers: [ubsan+asan, tsan]
+        sanitizers: [asan+ubsan, tsan]
     container:
       image: "${{ needs.get-runner-container-image.outputs.id }}:${{ needs.get-runner-container-image.outputs.tag }}"
       env:
index 0d9de1cde3948d426584f492c177494315b64a46..218e53bbde763be5f2972b65e2a4e08f5f899617 100644 (file)
--- a/tasks.py
+++ b/tasks.py
@@ -402,11 +402,22 @@ def ci_docs_add_ssh(c, ssh_key, host_key):
 def get_sanitizers(meson=False):
     sanitizers = os.getenv('SANITIZERS', '')
     if meson:
-        if sanitizers == 'ubsan+asan':
-            sanitizers='address,undefined'
-        if sanitizers == 'tsan':
-            sanitizers='thread'
-        return f'-D b_sanitize={sanitizers}' if sanitizers != '' else ''
+        subst = {
+            'tsan': 'thread',
+            'asan': 'address',
+            'ubsan': 'undefined'
+        }
+        meson_sanitizers = ''
+        sanitizers = sanitizers.split('+')
+        for sanitizer in sanitizers:
+            if sanitizer in subst:
+                if meson_sanitizers != '':
+                    meson_sanitizers = meson_sanitizers + ','
+                meson_sanitizers = meson_sanitizers + subst[sanitizer]
+            else:
+                meson_sanitizers = meson_sanitizers + sanitizer
+
+        return f'-D b_sanitize={meson_sanitizers}' if meson_sanitizers != '' else ''
     if sanitizers != '':
         sanitizers = sanitizers.split('+')
         sanitizers = ['--enable-' + sanitizer for sanitizer in sanitizers]