From: Remi Gacogne Date: Fri, 21 Mar 2025 14:02:37 +0000 (+0100) Subject: meson: Make SNMP support a feature, not an option X-Git-Tag: dnsdist-2.0.0-alpha2~114^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc08ca93677e72a656b27446c4cc8de6704453c1;p=thirdparty%2Fpdns.git meson: Make SNMP support a feature, not an option --- diff --git a/Dockerfile-dnsdist b/Dockerfile-dnsdist index 8a9b70f826..cc310f00ff 100644 --- a/Dockerfile-dnsdist +++ b/Dockerfile-dnsdist @@ -75,7 +75,7 @@ RUN mkdir /build && \ -Debpf=enabled \ -Dyaml=enabled \ -Dtls-gnutls=enabled \ - -Dsnmp=true \ + -Dsnmp=enabled \ -Dlibcap=enabled \ -Dlibsodium=enabled \ -Dquiche=enabled \ diff --git a/builder-support/debian/dnsdist/debian-bookworm/rules b/builder-support/debian/dnsdist/debian-bookworm/rules index 2888faadf3..adc24b0fa8 100755 --- a/builder-support/debian/dnsdist/debian-bookworm/rules +++ b/builder-support/debian/dnsdist/debian-bookworm/rules @@ -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 \ diff --git a/builder-support/debian/dnsdist/debian-bullseye/rules b/builder-support/debian/dnsdist/debian-bullseye/rules index db6f96b4b6..80dd790245 100755 --- a/builder-support/debian/dnsdist/debian-bullseye/rules +++ b/builder-support/debian/dnsdist/debian-bullseye/rules @@ -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 \ diff --git a/builder-support/specs/dnsdist.spec b/builder-support/specs/dnsdist.spec index ffc1d6a31e..3c41562c8b 100644 --- a/builder-support/specs/dnsdist.spec +++ b/builder-support/specs/dnsdist.spec @@ -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 \ diff --git a/meson/libsnmp/meson.build b/meson/libsnmp/meson.build index cdf26a9e5b..c879643c92 100644 --- a/meson/libsnmp/meson.build +++ b/meson/libsnmp/meson.build @@ -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 #include @@ -25,9 +26,15 @@ if opt_libsnmp #include #include ''') 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') diff --git a/pdns/dnsdistdist/meson_options.txt b/pdns/dnsdistdist/meson_options.txt index 8f83ff2b24..0eba4b4879 100644 --- a/pdns/dnsdistdist/meson_options.txt +++ b/pdns/dnsdistdist/meson_options.txt @@ -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') diff --git a/pdns/recursordist/meson_options.txt b/pdns/recursordist/meson_options.txt index af61bd8023..00a72cff1f 100644 --- a/pdns/recursordist/meson_options.txt +++ b/pdns/recursordist/meson_options.txt @@ -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') diff --git a/tasks.py b/tasks.py index f4bf4abd36..54f65ab99e 100644 --- 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 ''