]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
meson: Make SNMP support a feature, not an option
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 21 Mar 2025 14:02:37 +0000 (15:02 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Tue, 25 Mar 2025 09:08:18 +0000 (10:08 +0100)
Dockerfile-dnsdist
builder-support/debian/dnsdist/debian-bookworm/rules
builder-support/debian/dnsdist/debian-bullseye/rules
builder-support/specs/dnsdist.spec
meson/libsnmp/meson.build
pdns/dnsdistdist/meson_options.txt
pdns/recursordist/meson_options.txt
tasks.py

index 8a9b70f826d02a1fce69d65c79092e13ceaa8fd6..cc310f00ff4bcfce982ddd6152b808c356e43002 100644 (file)
@@ -75,7 +75,7 @@ RUN mkdir /build && \
       -Debpf=enabled \
       -Dyaml=enabled \
       -Dtls-gnutls=enabled \
-      -Dsnmp=true \
+      -Dsnmp=enabled \
       -Dlibcap=enabled \
       -Dlibsodium=enabled \
       -Dquiche=enabled \
index 2888faadf31d9dc887e1f04d1fa2a58a814c05d4..adc24b0fa8c4c676db5ae8078622ae010cdfb6b9 100755 (executable)
@@ -63,7 +63,7 @@ override_dh_auto_configure:
          -Debpf=enabled \
          -Dyaml=enabled \
          -Dtls-gnutls=enabled \
-         -Dsnmp=true \
+         -Dsnmp=enabled \
          -Dlibcap=enabled \
          -Dlibsodium=enabled \
          -Dquiche=enabled \
index db6f96b4b681d1c1ded26c80db8a99bd266c7473..80dd7902455a43556c17f2d12d6316df20bb813c 100755 (executable)
@@ -56,7 +56,7 @@ override_dh_auto_configure:
          -Debpf=enabled \
          -Dyaml=enabled \
          -Dtls-gnutls=enabled \
-         -Dsnmp=true \
+         -Dsnmp=enabled \
          -Dlibcap=enabled \
          -Dlibsodium=enabled \
          -Dquiche=enabled \
index ffc1d6a31e2707c0a33079cba228dc66b57184e0..3c41562c8bcd457ead3b9174af57efc6a678ee94 100644 (file)
@@ -101,10 +101,10 @@ export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/opt/lib64/pkgconfig
   -Ddns-over-tls=true \
 %if 0%{?suse_version}
   -Ddnscrypt=disabled \
-  -Dsnmp=false \
+  -Dsnmp=disabled \
 %else
   -Ddnscrypt=enabled \
-  -Dsnmp=true \
+  -Dsnmp=enabled \
 %endif
   -Ddnstap=enabled \
   -Ddns-over-https=true \
index cdf26a9e5beea18a3fef35cf560cb94e7f86b391..c879643c9271d92516a0612c374f311fef4d010e 100644 (file)
@@ -1,22 +1,23 @@
 opt_libsnmp = get_option('snmp')
-
 dep_libsnmp = dependency('', required: false)
 
-if opt_libsnmp
-    snmp_config = find_program('net-snmp-config', required: true)
-    snmp_ldflags_res = run_command(snmp_config, '--netsnmp-agent-libs', check: true)
-    snmp_ldflags = snmp_ldflags_res.stdout().strip().split()
+if opt_libsnmp.allowed()
+    snmp_config = find_program('net-snmp-config', required: opt_libsnmp)
+    if snmp_config.found()
+      snmp_ldflags_res = run_command(snmp_config, '--netsnmp-agent-libs', check: false)
+      if snmp_ldflags_res.returncode() == 0
+        snmp_ldflags = snmp_ldflags_res.stdout().strip().split()
 
-    dep_libsnmp = declare_dependency(
-      link_args: snmp_ldflags,
-    )
+        dep_libsnmp = declare_dependency(
+          link_args: snmp_ldflags,
+        )
 
-    if dep_libsnmp.found()
-        funcs = [
-            'snmp_select_info2',
-        ]
+        if dep_libsnmp.found()
+          funcs = [
+           'snmp_select_info2',
+          ]
 
-        foreach func: funcs
+          foreach func: funcs
             define = 'HAVE_' + func.to_upper()
             have_func = cxx.has_function(func, dependencies: dep_libsnmp, prefix: '''#include <net-snmp/net-snmp-config.h>
                 #include <net-snmp/definitions.h>
@@ -25,9 +26,15 @@ if opt_libsnmp
                 #include <net-snmp/config_api.h>
                 #include <net-snmp/session_api.h>''')
             conf.set(define, have_func, description: 'Have libsnmp ' + func)
-        endforeach
+          endforeach
+       endif
+     endif
    endif
 endif
 
+if opt_libsnmp.enabled() and not dep_libsnmp.found()
+  error('SNMP support enabled but not available')
+endif
+
 conf.set('HAVE_NET_SNMP', dep_libsnmp.found(), description: 'libsnmp')
 summary('SNMP', dep_libsnmp.found(), bool_yn: true, section: 'Configuration')
index 8f83ff2b2458a119f43455683e9ece28195f2d04..0eba4b4879f4482f2e61787d88027c9ce03cadfb 100644 (file)
@@ -23,7 +23,7 @@ option('systemd-service', type: 'feature', value: 'auto', description: 'Systemd
 option('systemd-service-user', type: 'string', value: 'dnsdist', description: 'Systemd service user (setuid and unit file; user is not created)')
 option('systemd-service-group', type: 'string', value: 'dnsdist', description: 'Systemd service group (setgid and unit file; group is not created)')
 option('auto-var-init', type: 'combo', value: 'disabled', choices: ['zero', 'pattern', 'disabled'], description: 'Enable initialization of automatic variables')
-option('snmp', type: 'boolean', value: false, description: 'Enable SNMP')
+option('snmp', type: 'feature', value: 'disabled', description: 'Enable SNMP')
 option('dnstap', type: 'feature', value: 'auto', description: 'Enable DNSTAP support through libfstrm')
 option('h2o', type: 'feature', value: 'disabled', description: 'Enable H2O library with event loop support for DNS over HTTP/2')
 option('nghttp2', type: 'feature', value: 'auto', description: 'Enable nghttp2 library support for DNS over HTTP/2')
index af61bd80238a2e2d33502d12829259d8e9b8c78f..00a72cff1fb7e45a62c43d3ba089dfb55ca4d5d8 100644 (file)
@@ -19,7 +19,7 @@ option('systemd-service-group', type: 'string', value: 'pdns', description: 'Sys
 option('auto-var-init', type: 'combo', value: 'disabled', choices: ['zero', 'pattern', 'disabled'], description: 'Enable initialization of automatic variables')
 option('malloc-trace', type: 'boolean', value: false, description: 'Enable malloc-trace')
 option('socket-dir', type: 'string', value: '/var/run', description: 'Where the control socket lives')
-option('snmp', type: 'boolean', value: false, description: 'Enable SNMP')
+option('snmp', type: 'feature', value: 'disabled', description: 'Enable SNMP')
 option('dnstap', type: 'feature', value: 'auto', description: 'Enable DNSTAP support through libfstrm')
 option('libcurl', type: 'feature', value: 'auto', description: 'Enable Curl support')
 option('nod', type: 'boolean', value: true, description: 'Enable Newly Observed Domains')
index f4bf4abd3682a1b9dcf7891b47a8b8ee632cedff..54f65ab99ede612c7296ff9a77b96b2182f8e5ae 100644 (file)
--- a/tasks.py
+++ b/tasks.py
@@ -597,7 +597,7 @@ def ci_rec_configure_meson(c, features, build_dir):
             "-D nod=true",
             "-D libcap=enabled",
             "-D lua=luajit",
-            "-D snmp=true",
+            "-D snmp=enabled",
             unittests,
         ])
     else:
@@ -613,7 +613,7 @@ def ci_rec_configure_meson(c, features, build_dir):
             "-D libcap=disabled",
             "-D libcurl=disabled",
             "-D signers-libsodium=disabled",
-            "-D snmp=false",
+            "-D snmp=disabled",
             unittests,
         ])
     res = c.run(configure_cmd, warn=True)
@@ -788,7 +788,7 @@ def ci_dnsdist_configure_meson(features, additional_flags, additional_ld_flags,
                       -D dns-over-quic=true \
                       -D dns-over-tls=true \
                       -D reproducible=true \
-                      -D snmp=true'
+                      -D snmp=enabled'
     else:
       features_set = '-D cdb=disabled \
                       -D dnscrypt=disabled \
@@ -808,7 +808,7 @@ def ci_dnsdist_configure_meson(features, additional_flags, additional_ld_flags,
                       -D dns-over-quic=false \
                       -D dns-over-tls=false \
                       -D reproducible=false \
-                      -D snmp=false'
+                      -D snmp=disabled'
     unittests = get_unit_tests(meson=True)
     fuzztargets = get_fuzzing_targets(meson=True)
     tools = f'''AR=llvm-ar-{clang_version} RANLIB=llvm-ranlib-{clang_version}''' if is_compiler_clang() else ''