Skip to content

dnsdist: when dnsdist-settings-definitions.yml is touched, it takes two build runs to reach stable state #15576

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
omoerbeek opened this issue May 20, 2025 · 1 comment

Comments

@omoerbeek
Copy link
Member

omoerbeek commented May 20, 2025

Reproduced on Linux, macOS and OpenBSD. After a touch of dnsdist-settings-definitions.yml it takes two runs of the build to get to a stable state.

Log:

Used

meson setup build \
        -Dunit-tests=true \
        -Dyaml=enabled \
        -Dsnmp=disabled \
        -Ddns-over-https=enabled \
        -Ddns-over-quic=enabled \

Then after a build (this is on debian trixie):

otto@pepper:~/pdns/pdns/dnsdistdist$ m
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /home/otto/pdns/pdns/dnsdistdist/build
ninja: Entering directory `/home/otto/pdns/pdns/dnsdistdist/build'
[1/1] Generating check absense of config.h file in source directory with a custom command
otto@pepper:~/pdns/pdns/dnsdistdist$ ls *.yml
dnsdist-actions-definitions.yml           dnsdist-selectors-definitions.yml
dnsdist-response-actions-definitions.yml  dnsdist-settings-definitions.yml
otto@pepper:~/pdns/pdns/dnsdistdist$ touch dnsdist-settings-definitions.yml
otto@pepper:~/pdns/pdns/dnsdistdist$ m -v
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /home/otto/pdns/pdns/dnsdistdist/build -v
ninja: Entering directory `/home/otto/pdns/pdns/dnsdistdist/build'
[1/8] /usr/bin/sh -c 'test ! -e ../config.h'
[2/8] /usr/bin/python3 ../dnsdist-rust-lib/dnsdist-settings-generator.py .. ../dnsdist-rust-lib .. .
[2/8] /usr/bin/meson --internal exe --unpickle /home/otto/pdns/pdns/dnsdistdist/build/meson-private/meson_exe_sh_3e3cd301338503d648c51c61b81667b28668ac89.dat
   Compiling dnsdist-rust v2.0.0 (/home/otto/pdns/pdns/dnsdistdist/dnsdist-rust-lib/rust)
    Finished `release` profile [optimized] target(s) in 25.94s
[4/5] clang++  -o testrunner testrunner.p/testrunner.cc.o testrunner.p/pollmplexer.cc.o testrunner.p/epollmplexer.cc.o testrunner.p/dnsdist-lua-ffi.cc.o -Wl,--as-needed -Wl,--no-undefined -pie -Wl,--whole-archive -Wl,--start-group libdnsdist-test.a -Wl,--no-whole-archive '-Wl,--export-dynamic-symbol=dnsdist_ffi_*' -Wl,-z,relro -Wl,-z,now '-Wl,-rpath,$ORIGIN/dnsdist-rust-lib/rust' -Wl,-rpath-link,/home/otto/pdns/pdns/dnsdistdist/build/dnsdist-rust-lib/rust libdnsdist-common.a ext/arc4random/libarc4random.a ext/ipcrypt/libipcrypt.a ext/json11/libjson11.a ext/lmdb-safe/liblmdb-safe.a ext/yahttp/yahttp/libyahttp.a dnsdist-rust-lib/rust/libdnsdist_rust.a /usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.83.0 /usr/lib/x86_64-linux-gnu/libluajit-5.1.so /usr/lib/x86_64-linux-gnu/libfstrm.so /usr/lib/x86_64-linux-gnu/libcap.so /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/x86_64-linux-gnu/libgnutls.so /usr/lib/x86_64-linux-gnu/libedit.so /usr/lib/x86_64-linux-gnu/libnghttp2.so /usr/lib/x86_64-linux-gnu/libdnsdist_quiche.so -L/usr/lib/x86_64-linux-gnu -lnetsnmpmibs -lnetsnmpagent -lnetsnmp /usr/lib/x86_64-linux-gnu/libsodium.so /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/liblmdb.so -Wl,--end-group -pthread
[5/5] clang++  -o dnsdist dnsdist.p/dnsdist.cc.o dnsdist.p/dnstap.cc.o dnsdist.p/fstrm_logger.cc.o dnsdist.p/dnsdist-lua-ffi.cc.o dnsdist.p/dnsdist-lua-inspection-ffi.cc.o dnsdist.p/pollmplexer.cc.o dnsdist.p/epollmplexer.cc.o -Wl,--as-needed -Wl,--no-undefined -pie '-Wl,--export-dynamic-symbol=dnsdist_ffi_*' -Wl,-z,relro -Wl,-z,now '-Wl,-rpath,$ORIGIN/dnsdist-rust-lib/rust' -Wl,-rpath-link,/home/otto/pdns/pdns/dnsdistdist/build/dnsdist-rust-lib/rust -Wl,--start-group libdnsdist-common.a ext/arc4random/libarc4random.a ext/ipcrypt/libipcrypt.a ext/json11/libjson11.a ext/lmdb-safe/liblmdb-safe.a ext/yahttp/yahttp/libyahttp.a dnsdist-rust-lib/rust/libdnsdist_rust.a /usr/lib/x86_64-linux-gnu/libluajit-5.1.so /usr/lib/x86_64-linux-gnu/libsystemd.so /usr/lib/x86_64-linux-gnu/libfstrm.so /usr/lib/x86_64-linux-gnu/libcap.so /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/x86_64-linux-gnu/libgnutls.so /usr/lib/x86_64-linux-gnu/libedit.so /usr/lib/x86_64-linux-gnu/libnghttp2.so /usr/lib/x86_64-linux-gnu/libdnsdist_quiche.so -L/usr/lib/x86_64-linux-gnu -lnetsnmpmibs -lnetsnmpagent -lnetsnmp /usr/lib/x86_64-linux-gnu/libsodium.so /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/liblmdb.so -Wl,--end-group -pthread
otto@pepper:~/pdns/pdns/dnsdistdist$ m -v
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /home/otto/pdns/pdns/dnsdistdist/build -v
ninja: Entering directory `/home/otto/pdns/pdns/dnsdistdist/build'
[1/6] /usr/bin/sh -c 'test ! -e ../config.h'
[2/6] ccache clang++ -Ilibdnsdist-common.a.p -I. -I.. -Iext/arc4random -I../ext/arc4random -Iext/ipcrypt -I../ext/ipcrypt -Iext/json11 -I../ext/json11 -Iext/lmdb-safe -I../ext/lmdb-safe -I../ext/protozero/include -Iext/yahttp -I../ext/yahttp -Idnsdist-rust-lib -I../dnsdist-rust-lib -Idnsdist-rust-lib/rust -I/usr/include -I/usr/include/p11-kit-1 -I/usr/include/editline -I/usr/include/luajit-2.1 -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c++17 -O2 -g -DDNSDIST -DHAVE_CONFIG_H -ferror-limit=0 -Wshadow -Wmissing-declarations -Wredundant-decls -Wno-ignored-attributes -fvisibility=hidden -fstack-protector --param=ssp-buffer-size=4 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -DBOOST_CONTAINER_USE_STD_EXCEPTIONS -fPIC -pthread -DBOOST_ALL_NO_LIB -MD -MQ libdnsdist-common.a.p/dnsdist-rust-lib_dnsdist-configuration-yaml-items-generated.cc.o -MF libdnsdist-common.a.p/dnsdist-rust-lib_dnsdist-configuration-yaml-items-generated.cc.o.d -o libdnsdist-common.a.p/dnsdist-rust-lib_dnsdist-configuration-yaml-items-generated.cc.o -c ../dnsdist-rust-lib/dnsdist-configuration-yaml-items-generated.cc
[3/6] ccache clang++ -Ilibdnsdist-common.a.p -I. -I.. -Iext/arc4random -I../ext/arc4random -Iext/ipcrypt -I../ext/ipcrypt -Iext/json11 -I../ext/json11 -Iext/lmdb-safe -I../ext/lmdb-safe -I../ext/protozero/include -Iext/yahttp -I../ext/yahttp -Idnsdist-rust-lib -I../dnsdist-rust-lib -Idnsdist-rust-lib/rust -I/usr/include -I/usr/include/p11-kit-1 -I/usr/include/editline -I/usr/include/luajit-2.1 -fdiagnostics-color=always -D_GLIBCXX_ASSERTIONS=1 -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wextra -std=c++17 -O2 -g -DDNSDIST -DHAVE_CONFIG_H -ferror-limit=0 -Wshadow -Wmissing-declarations -Wredundant-decls -Wno-ignored-attributes -fvisibility=hidden -fstack-protector --param=ssp-buffer-size=4 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -DBOOST_CONTAINER_USE_STD_EXCEPTIONS -fPIC -pthread -DBOOST_ALL_NO_LIB -MD -MQ libdnsdist-common.a.p/dnsdist-configuration-yaml.cc.o -MF libdnsdist-common.a.p/dnsdist-configuration-yaml.cc.o.d -o libdnsdist-common.a.p/dnsdist-configuration-yaml.cc.o -c ../dnsdist-configuration-yaml.cc
[4/6] rm -f libdnsdist-common.a && llvm-ar-19 csrDT libdnsdist-common.a libdnsdist-common.a.p/meson-generated_dnslabeltext.cc.o libdnsdist-common.a.p/bpf-filter.cc.o libdnsdist-common.a.p/capabilities.cc.o libdnsdist-common.a.p/channel.cc.o libdnsdist-common.a.p/coverage.cc.o libdnsdist-common.a.p/credentials.cc.o libdnsdist-common.a.p/dns.cc.o libdnsdist-common.a.p/dnscrypt.cc.o libdnsdist-common.a.p/dnsdist-actions.cc.o libdnsdist-common.a.p/dnsdist-actions-factory.cc.o libdnsdist-common.a.p/dnsdist-async.cc.o libdnsdist-common.a.p/dnsdist-backend.cc.o libdnsdist-common.a.p/dnsdist-cache.cc.o libdnsdist-common.a.p/dnsdist-carbon.cc.o libdnsdist-common.a.p/dnsdist-concurrent-connections.cc.o libdnsdist-common.a.p/dnsdist-configuration.cc.o libdnsdist-common.a.p/dnsdist-configuration-yaml.cc.o libdnsdist-common.a.p/dnsdist-console.cc.o libdnsdist-common.a.p/dnsdist-crypto.cc.o libdnsdist-common.a.p/dnsdist-discovery.cc.o libdnsdist-common.a.p/dnsdist-dnscrypt.cc.o libdnsdist-common.a.p/dnsdist-dnsparser.cc.o libdnsdist-common.a.p/dnsdist-dnsquestion.cc.o libdnsdist-common.a.p/dnsdist-doh-common.cc.o libdnsdist-common.a.p/dnsdist-dynblocks.cc.o libdnsdist-common.a.p/dnsdist-dynbpf.cc.o libdnsdist-common.a.p/dnsdist-ecs.cc.o libdnsdist-common.a.p/dnsdist-edns.cc.o libdnsdist-common.a.p/dnsdist-frontend.cc.o libdnsdist-common.a.p/dnsdist-healthchecks.cc.o libdnsdist-common.a.p/dnsdist-idstate.cc.o libdnsdist-common.a.p/dnsdist-internal-queries.cc.o libdnsdist-common.a.p/dnsdist-kvs.cc.o libdnsdist-common.a.p/dnsdist-lbpolicies.cc.o libdnsdist-common.a.p/dnsdist-lua-actions.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings-dnscrypt.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings-dnsparser.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings-dnsquestion.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings-kvs.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings-network.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings-packetcache.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings-protobuf.cc.o libdnsdist-common.a.p/dnsdist-lua-bindings-rings.cc.o libdnsdist-common.a.p/dnsdist-lua-configuration-items.cc.o libdnsdist-common.a.p/dnsdist-lua.cc.o libdnsdist-common.a.p/dnsdist-lua-hooks.cc.o libdnsdist-common.a.p/dnsdist-lua-inspection.cc.o libdnsdist-common.a.p/dnsdist-lua-network.cc.o libdnsdist-common.a.p/dnsdist-lua-rules.cc.o libdnsdist-common.a.p/dnsdist-lua-vars.cc.o libdnsdist-common.a.p/dnsdist-lua-web.cc.o libdnsdist-common.a.p/dnsdist-mac-address.cc.o libdnsdist-common.a.p/dnsdist-metrics.cc.o libdnsdist-common.a.p/dnsdist-nghttp2.cc.o libdnsdist-common.a.p/dnsdist-nghttp2-in.cc.o libdnsdist-common.a.p/dnsdist-protobuf.cc.o libdnsdist-common.a.p/dnsdist-protocols.cc.o libdnsdist-common.a.p/dnsdist-proxy-protocol.cc.o libdnsdist-common.a.p/dnsdist-query-count.cc.o libdnsdist-common.a.p/dnsdist-random.cc.o libdnsdist-common.a.p/dnsdist-resolver.cc.o libdnsdist-common.a.p/dnsdist-rings.cc.o libdnsdist-common.a.p/dnsdist-rule-chains.cc.o libdnsdist-common.a.p/dnsdist-rules.cc.o libdnsdist-common.a.p/dnsdist-secpoll.cc.o libdnsdist-common.a.p/dnsdist-session-cache.cc.o libdnsdist-common.a.p/dnsdist-self-answers.cc.o libdnsdist-common.a.p/dnsdist-snmp.cc.o libdnsdist-common.a.p/dnsdist-svc.cc.o libdnsdist-common.a.p/dnsdist-systemd.cc.o libdnsdist-common.a.p/dnsdist-tcp.cc.o libdnsdist-common.a.p/dnsdist-tcp-downstream.cc.o libdnsdist-common.a.p/dnsdist-web.cc.o libdnsdist-common.a.p/dnsdist-xsk.cc.o libdnsdist-common.a.p/dnsname.cc.o libdnsdist-common.a.p/dnsparser.cc.o libdnsdist-common.a.p/dnswriter.cc.o libdnsdist-common.a.p/dolog.cc.o libdnsdist-common.a.p/doh3.cc.o libdnsdist-common.a.p/ednscookies.cc.o libdnsdist-common.a.p/ednsextendederror.cc.o libdnsdist-common.a.p/ednsoptions.cc.o libdnsdist-common.a.p/ednssubnet.cc.o libdnsdist-common.a.p/gettime.cc.o libdnsdist-common.a.p/iputils.cc.o libdnsdist-common.a.p/libssl.cc.o libdnsdist-common.a.p/misc.cc.o libdnsdist-common.a.p/protozero.cc.o libdnsdist-common.a.p/proxy-protocol.cc.o libdnsdist-common.a.p/qtype.cc.o libdnsdist-common.a.p/remote_logger.cc.o libdnsdist-common.a.p/remote_logger_pool.cc.o libdnsdist-common.a.p/snmp-agent.cc.o libdnsdist-common.a.p/statnode.cc.o libdnsdist-common.a.p/svc-records.cc.o libdnsdist-common.a.p/tcpiohandler.cc.o libdnsdist-common.a.p/threadname.cc.o libdnsdist-common.a.p/uuid-utils.cc.o libdnsdist-common.a.p/xsk.cc.o libdnsdist-common.a.p/doq.cc.o libdnsdist-common.a.p/ipcipher.cc.o libdnsdist-common.a.p/doq-common.cc.o libdnsdist-common.a.p/dnsdist-rust-lib_dnsdist-configuration-yaml-items-generated.cc.o
[5/6] clang++  -o testrunner testrunner.p/testrunner.cc.o testrunner.p/pollmplexer.cc.o testrunner.p/epollmplexer.cc.o testrunner.p/dnsdist-lua-ffi.cc.o -Wl,--as-needed -Wl,--no-undefined -pie -Wl,--whole-archive -Wl,--start-group libdnsdist-test.a -Wl,--no-whole-archive '-Wl,--export-dynamic-symbol=dnsdist_ffi_*' -Wl,-z,relro -Wl,-z,now '-Wl,-rpath,$ORIGIN/dnsdist-rust-lib/rust' -Wl,-rpath-link,/home/otto/pdns/pdns/dnsdistdist/build/dnsdist-rust-lib/rust libdnsdist-common.a ext/arc4random/libarc4random.a ext/ipcrypt/libipcrypt.a ext/json11/libjson11.a ext/lmdb-safe/liblmdb-safe.a ext/yahttp/yahttp/libyahttp.a dnsdist-rust-lib/rust/libdnsdist_rust.a /usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so.1.83.0 /usr/lib/x86_64-linux-gnu/libluajit-5.1.so /usr/lib/x86_64-linux-gnu/libfstrm.so /usr/lib/x86_64-linux-gnu/libcap.so /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/x86_64-linux-gnu/libgnutls.so /usr/lib/x86_64-linux-gnu/libedit.so /usr/lib/x86_64-linux-gnu/libnghttp2.so /usr/lib/x86_64-linux-gnu/libdnsdist_quiche.so -L/usr/lib/x86_64-linux-gnu -lnetsnmpmibs -lnetsnmpagent -lnetsnmp /usr/lib/x86_64-linux-gnu/libsodium.so /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/liblmdb.so -Wl,--end-group -pthread
[6/6] clang++  -o dnsdist dnsdist.p/dnsdist.cc.o dnsdist.p/dnstap.cc.o dnsdist.p/fstrm_logger.cc.o dnsdist.p/dnsdist-lua-ffi.cc.o dnsdist.p/dnsdist-lua-inspection-ffi.cc.o dnsdist.p/pollmplexer.cc.o dnsdist.p/epollmplexer.cc.o -Wl,--as-needed -Wl,--no-undefined -pie '-Wl,--export-dynamic-symbol=dnsdist_ffi_*' -Wl,-z,relro -Wl,-z,now '-Wl,-rpath,$ORIGIN/dnsdist-rust-lib/rust' -Wl,-rpath-link,/home/otto/pdns/pdns/dnsdistdist/build/dnsdist-rust-lib/rust -Wl,--start-group libdnsdist-common.a ext/arc4random/libarc4random.a ext/ipcrypt/libipcrypt.a ext/json11/libjson11.a ext/lmdb-safe/liblmdb-safe.a ext/yahttp/yahttp/libyahttp.a dnsdist-rust-lib/rust/libdnsdist_rust.a /usr/lib/x86_64-linux-gnu/libluajit-5.1.so /usr/lib/x86_64-linux-gnu/libsystemd.so /usr/lib/x86_64-linux-gnu/libfstrm.so /usr/lib/x86_64-linux-gnu/libcap.so /usr/lib/x86_64-linux-gnu/libcrypto.so /usr/lib/x86_64-linux-gnu/libgnutls.so /usr/lib/x86_64-linux-gnu/libedit.so /usr/lib/x86_64-linux-gnu/libnghttp2.so /usr/lib/x86_64-linux-gnu/libdnsdist_quiche.so -L/usr/lib/x86_64-linux-gnu -lnetsnmpmibs -lnetsnmpagent -lnetsnmp /usr/lib/x86_64-linux-gnu/libsodium.so /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/x86_64-linux-gnu/liblmdb.so -Wl,--end-group -pthread
otto@pepper:~/pdns/pdns/dnsdistdist$ m -v
INFO: autodetecting backend as ninja
INFO: calculating backend command to run: /usr/bin/ninja -C /home/otto/pdns/pdns/dnsdistdist/build -v
ninja: Entering directory `/home/otto/pdns/pdns/dnsdistdist/build'
[1/1] /usr/bin/sh -c 'test ! -e ../config.h'
otto@pepper:~/pdns/pdns/dnsdistdist$ 
@omoerbeek omoerbeek changed the title dnsdist: when dnsdist-settings-definitions.yml is touced, it takes two build runs to rech stable state dnsdist: when dnsdist-settings-definitions.yml is touched, it takes two build runs to reach stable state May 20, 2025
@rgacogne
Copy link
Member

I can reproduce indeed. While trying to fix it I ended up with:

meson.build:261:22: ERROR: File ./dnsdist-rust-lib/dnsdist-configuration-yaml-items-generated.cc does not exist.

which baffles me because there is a custom target whose output is that exact file, so I don't get why it's a problem..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants