Page MenuHomePhabricator

net: Add netif utility
ClosedPublic

Authored by PiRK on Mar 31 2026, 08:17.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABCbf1607e2fd17: net: Add netif utility
Summary

This adds an utility header with two functions that will be needed for
PCP, QueryDefaultGateway and GetLocalAddresses.

Co-authored-by: Vasil Dimov <vd@FreeBSD.org>

Follow-up backports:

move to common/ (core#31011)

Use GetLocalAddresses in Discover.

net: Add optional length checking to CService::SetSockAddr

In almost all cases (the only exception is getifaddrs), we know the
size of the data passed into SetSockAddr, so we can check this to be
what is expected.

Use GetAdaptersAddresses to get local addresses on Windows

Instead of a gethostname hack, use the official way of calling
GetAdaptersAddresses to get local network addresses on Windows.

As additional cleanup, move out FromSockAddr from MacOS and use it
everywhere appropriate.

Suggested by Ava Chow.

core#32159:

net, pcp: handle multi-part responses and filter for default route while querying default gateway for default route in pcp pinholing.

Currently we only make a single recv call, which trucates results from large routing tables, or in the case the kernel may split the message into multiple responses (which may happen with NLM_F_DUMP).

We also do not filter on the default route. For IPv6, this led to selecting the first route with an RTA_GATEWAY attribute, often a non-default route instead of the actual default. This caused PCP port mapping failures because the wrong gateway was used.

Fix both issues by adding multi-part handling of responses and filter for the default route.

This is a partial backport of core#30043, core#31011, core#31022, core#31014 and core#32159
https://github.com/bitcoin/bitcoin/pull/30043/changes/e02030432b77abbf27bb4f67d879d3ad6d6366e6
https://github.com/bitcoin/bitcoin/pull/30043/changes/d72df63d16941576b3523cfeaa49985cf3cd4d42
https://github.com/bitcoin/bitcoin/pull/31022/changes/ab1d3ece026844e682676673b8a461964a5b3ce4
https://github.com/bitcoin/bitcoin/pull/31014/changes/b9d4d5f66a5a35c47e7abc9ec6ef5ab242b3f1e1

Depends on D19756

Test Plan

ninja all check-all

Event Timeline

Tail of the build log:

-- Installing: /results/artifacts/include/secp256k1_schnorrsig.h
[428/593] Linking C executable src/secp256k1/internal-bench
[429/593] Linking C executable src/secp256k1/ecmult-bench
[430/593] Linking C executable src/secp256k1/bench
[431/593] Linking CXX static library src/libbitcoinconsensus.a
[432/593] Linking C executable src/secp256k1/examples/ecdsa_example
[433/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[434/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[435/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[436/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[437/593] Linking C executable src/secp256k1/examples/ecdh_example
[438/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[439/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[440/593] Linking C executable src/secp256k1/examples/schnorr_example
[441/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[442/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[443/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[444/593] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[445/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[446/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[447/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[448/593] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[449/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[450/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[451/593] Linking CXX static library src/libscript.a
[452/593] Building CXX object src/CMakeFiles/common.dir/common/messages.cpp.o
[453/593] Building CXX object src/CMakeFiles/common.dir/common/netif.cpp.o
FAILED: src/CMakeFiles/common.dir/common/netif.cpp.o 
/usr/bin/ccache /usr/bin/clang++ -DBOOST_ALL_NO_LIB -DBOOST_NO_CXX98_FUNCTION_BASE -DBUILD_BITCOIN_INTERNAL -DENABLE_AVX2 -DENABLE_SHANI -DENABLE_SSE41 -DHAVE_BUILD_INFO -DHAVE_CONFIG_H -DHAVE_CONSENSUS_LIB -I/work/src/. -I/work/abc-ci-builds/build-clang/src -I/work/src/univalue/include -I/work/abc-ci-builds/build-clang/src/crypto/.. -I/work/src/secp256k1/include -isystem /usr/include/jemalloc -Werror -g -O2 -fPIC -fvisibility=hidden -fstack-protector-all -Wstack-protector -fcf-protection=full -fstack-clash-protection -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wformat -Wgnu -Wvla -Wcast-align -Wunused-parameter -Wmissing-braces -Wno-implicit-fallthrough -Wno-psabi -Wno-unused-parameter -Wthread-safety -Wrange-loop-analysis -Wredundant-decls -Wunreachable-code-loop-increment -Wsign-compare -Wconditional-uninitialized -Wdocumentation -Wformat-security -Wredundant-move -Wsuggest-override -Woverloaded-virtual -Wshadow -Wshadow-field -std=gnu++20 -MD -MT src/CMakeFiles/common.dir/common/netif.cpp.o -MF src/CMakeFiles/common.dir/common/netif.cpp.o.d -o src/CMakeFiles/common.dir/common/netif.cpp.o -c /work/src/common/netif.cpp
/work/src/common/netif.cpp:111:16: error: cast from 'char *' to 'struct nlmsghdr *' increases required alignment from 1 to 4 [-Werror,-Wcast-align]
         hdr = NLMSG_NEXT(hdr, recv_result)) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/linux/netlink.h:105:7: note: expanded from macro 'NLMSG_NEXT'
                                  (struct nlmsghdr *)(((char *)(nlh)) + \
                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work/src/common/netif.cpp:118:29: error: cast from 'char *' to 'struct rtattr *' increases required alignment from 1 to 2 [-Werror,-Wcast-align]
        for (rtattr *attr = RTM_RTA(r); RTA_OK(attr, remaining_len);
                            ^~~~~~~~~~
/usr/include/linux/rtnetlink.h:397:22: note: expanded from macro 'RTM_RTA'
#define RTM_RTA(r)  ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work/src/common/netif.cpp:119:21: error: cast from 'char *' to 'struct rtattr *' increases required alignment from 1 to 2 [-Werror,-Wcast-align]
             attr = RTA_NEXT(attr, remaining_len)) {
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/linux/rtnetlink.h:224:6: note: expanded from macro 'RTA_NEXT'
                                 (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work/src/common/netif.cpp:336:42: error: cast from 'struct sockaddr *' to 'struct sockaddr_in *' increases required alignment from 2 to 4 [-Werror,-Wcast-align]
                struct sockaddr_in *s4 = (struct sockaddr_in *)(ifa->ifa_addr);
                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/work/src/common/netif.cpp:340:21: error: cast from 'struct sockaddr *' to 'struct sockaddr_in6 *' increases required alignment from 2 to 4 [-Werror,-Wcast-align]
                    (struct sockaddr_in6 *)(ifa->ifa_addr);
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 errors generated.
[454/593] Building CXX object src/CMakeFiles/common.dir/rpc/util.cpp.o
[455/593] Building CXX object src/CMakeFiles/server.dir/net.cpp.o
[456/593] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[457/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang failed with exit code 1

Tail of the build log:

[411/603] Linking C executable src/secp256k1/bench
[412/603] Linking C executable src/secp256k1/examples/ecdsa_example
[413/603] Linking C executable src/secp256k1/examples/ecdh_example
[414/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[415/603] Linking C executable src/secp256k1/examples/schnorr_example
[416/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[417/603] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[418/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[419/603] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[420/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[421/603] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[422/603] Building CXX object src/CMakeFiles/server.dir/torcontrol.cpp.o
[423/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[424/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[425/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[426/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[427/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[428/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[429/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[430/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[431/603] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o
[432/603] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[433/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[434/603] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[435/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[436/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[437/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[438/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[439/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[440/603] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[441/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[442/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[443/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[444/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[445/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[446/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[447/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[448/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[449/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[450/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[451/603] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[452/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[453/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[454/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[455/603] Linking CXX static library chronik/libchronik-bridge.a
[456/603] Linking CXX static library chronik/libchronik.a
[457/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[458/603] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[459/603] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[460/603] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[461/603] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[462/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[463/603] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[464/603] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[465/603] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[466/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[467/603] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[468/603] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1

Tail of the build log:

[613/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_mempool.cpp.o
[614/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/util_time.cpp.o
[615/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/verify_script.cpp.o
[616/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_blockchain.cpp.o
[617/671] Linking CXX executable src/seeder/bitcoin-seeder
[618/671] Automatic MOC for target bitcoin-qt-base
[619/671] Generating forms/ui_addressbookpage.h
[620/671] Generating forms/ui_askpassphrasedialog.h
[621/671] Generating forms/ui_createwalletdialog.h
[622/671] Generating forms/ui_editaddressdialog.h
[623/671] Generating forms/ui_coincontroldialog.h
[624/671] Generating forms/ui_helpmessagedialog.h
[625/671] Generating forms/ui_intro.h
[626/671] Generating forms/ui_openuridialog.h
[627/671] Generating forms/ui_modaloverlay.h
[628/671] Generating forms/ui_optionsdialog.h
[629/671] Generating forms/ui_receivecoinsdialog.h
[630/671] Generating forms/ui_receiverequestdialog.h
[631/671] Generating forms/ui_overviewpage.h
[632/671] Generating forms/ui_transactiondescdialog.h
[633/671] Generating forms/ui_sendcoinsdialog.h
[634/671] Generating forms/ui_signverifymessagedialog.h
[635/671] Generating forms/ui_sendcoinsentry.h
[636/671] Generating forms/ui_debugwindow.h
[637/671] Generating qrc_bitcoin.cpp
[638/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinamountfield.cpp.o
[639/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinunits.cpp.o
[640/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin-qt-base_autogen/mocs_compilation.cpp.o
[641/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bantablemodel.cpp.o
[642/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinaddressvalidator.cpp.o
[643/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/clientmodel.cpp.o
[644/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[645/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/csvmodelwriter.cpp.o
[646/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[647/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[648/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/modaloverlay.cpp.o
[649/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/networkstyle.cpp.o
[650/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/intro.cpp.o
[651/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/notificator.cpp.o
[652/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[653/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[654/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[655/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[656/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[657/671] Linking CXX executable src/bitcoind
[658/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[659/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[660/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[661/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[662/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[663/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[664/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[665/671] Linking CXX executable src/bench/bitcoin-bench
[666/671] Linking CXX static library src/qt/libbitcoin-qt-base.a
[667/671] Automatic MOC for target bitcoin-qt
[668/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[669/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[670/671] Linking CXX executable src/qt/bitcoin-qt
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1
PiRK edited the summary of this revision. (Show Details)

squash with core#31014 to fix two of the [-Wcast-align] warnings

Tail of the build log:

[400/593] Linking C executable src/secp256k1/examples/ecdh_example
[401/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[402/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[403/593] Linking C executable src/secp256k1/examples/schnorr_example
[404/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[405/593] Building CXX object src/CMakeFiles/server.dir/rpc/net.cpp.o
[406/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[407/593] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[408/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[409/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[410/593] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[411/593] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o
[412/593] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[413/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[414/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[415/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[416/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[417/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[418/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[419/593] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[420/593] Building CXX object src/CMakeFiles/server.dir/net_processing.cpp.o
[421/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[422/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[423/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[424/593] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[425/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[426/593] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[427/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[428/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[429/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[430/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[431/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[432/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[433/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[434/593] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[435/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[436/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[437/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[438/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[439/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[440/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[441/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[442/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[443/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[444/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[445/593] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[446/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[447/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[448/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[449/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[450/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[451/593] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[452/593] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[453/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[454/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[455/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[456/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[457/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang failed with exit code 1

Tail of the build log:

FAILED: src/bitcoin-chainstate 
: && /usr/bin/c++ -Werror -g -O2 -fuse-ld=gold -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -lstdc++fs -fPIE -pie src/CMakeFiles/bitcoin-chainstate.dir/bitcoin-chainstate.cpp.o -o src/bitcoin-chainstate  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lstdc++fs  src/libbitcoinkernel.a  src/crypto/libcrypto.a  src/crypto/libcrypto_sse4.1.a  src/crypto/libcrypto_avx2.a  src/crypto/libcrypto_shani.a  src/univalue/libunivalue.a  src/secp256k1/libsecp256k1.a  src/leveldb/libleveldb.a  src/crc32c/libcrc32c.a  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lm  -lstdc++fs && :
/work/src/net.cpp:2360: error: undefined reference to 'GetLocalAddresses()'
collect2: error: ld returned 1 exit status
[617/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/chacha20.cpp.o
[618/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[619/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[620/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/ccoins_caching.cpp.o
[621/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[622/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/crypto_hash.cpp.o
[623/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/examples.cpp.o
[624/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[625/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/lockedpool.cpp.o
[626/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/data.cpp.o
[627/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/checkqueue.cpp.o
[628/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/merkle_root.cpp.o
[629/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/hashpadding.cpp.o
[630/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[631/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/poly1305.cpp.o
[632/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/gcs_filter.cpp.o
[633/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/crypto_aes.cpp.o
[634/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/checkblock.cpp.o
[635/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/pool.cpp.o
[636/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/block_assemble.cpp.o
[637/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rollingbloom.cpp.o
[638/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/prevector.cpp.o
[639/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/chained_tx.cpp.o
[640/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/bench.cpp.o
[641/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/duplicate_inputs.cpp.o
[642/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/streams_findbyte.cpp.o
[643/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/strencodings.cpp.o
[644/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/util_time.cpp.o
[645/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/nanobench.cpp.o
[646/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/load_external.cpp.o
[647/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/peer_eviction.cpp.o
[648/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_eviction.cpp.o
[649/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/verify_script.cpp.o
[650/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[651/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[652/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[653/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[654/671] Linking CXX executable src/iguana/iguana
[655/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_stress.cpp.o
[656/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/readwriteblock.cpp.o
[657/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_mempool.cpp.o
[658/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_blockchain.cpp.o
[659/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[660/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[661/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[662/671] Linking CXX executable src/bench/bitcoin-bench
[663/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[664/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[665/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[666/671] Linking CXX static library src/qt/libbitcoin-qt-base.a
[667/671] Automatic MOC for target bitcoin-qt
[668/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[669/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[670/671] Linking CXX executable src/qt/bitcoin-qt
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1
PiRK edited the summary of this revision. (Show Details)

also squash with bugfixes core#32159

Tail of the build log:

[400/593] Linking C executable src/secp256k1/examples/schnorr_example
[401/593] Building CXX object src/CMakeFiles/server.dir/rpc/net.cpp.o
[402/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[403/593] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[404/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[405/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[406/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[407/593] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[408/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[409/593] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[410/593] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[411/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[412/593] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o
[413/593] Building CXX object src/CMakeFiles/server.dir/net_processing.cpp.o
[414/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[415/593] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[416/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[417/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[418/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[419/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[420/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[421/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[422/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[423/593] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[424/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[425/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[426/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[427/593] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[428/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[429/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[430/593] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[431/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[432/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[433/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[434/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[435/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[436/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[437/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[438/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[439/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[440/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[441/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[442/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[443/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[444/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[445/593] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[446/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[447/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[448/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[449/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[450/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[451/593] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[452/593] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[453/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[454/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[455/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[456/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[457/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang failed with exit code 1

Tail of the build log:

[617/671] Generating forms/ui_overviewpage.h
[618/671] Generating forms/ui_receivecoinsdialog.h
[619/671] Generating forms/ui_receiverequestdialog.h
[620/671] Generating forms/ui_debugwindow.h
[621/671] Generating forms/ui_sendcoinsdialog.h
[622/671] Generating forms/ui_sendcoinsentry.h
[623/671] Generating forms/ui_signverifymessagedialog.h
[624/671] Generating forms/ui_transactiondescdialog.h
[625/671] Generating qrc_bitcoin.cpp
[626/671] Linking CXX executable src/bitcoin-chainstate
FAILED: src/bitcoin-chainstate 
: && /usr/bin/c++ -Werror -g -O2 -fuse-ld=gold -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -lstdc++fs -fPIE -pie src/CMakeFiles/bitcoin-chainstate.dir/bitcoin-chainstate.cpp.o -o src/bitcoin-chainstate  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lstdc++fs  src/libbitcoinkernel.a  src/crypto/libcrypto.a  src/crypto/libcrypto_sse4.1.a  src/crypto/libcrypto_avx2.a  src/crypto/libcrypto_shani.a  src/univalue/libunivalue.a  src/secp256k1/libsecp256k1.a  src/leveldb/libleveldb.a  src/crc32c/libcrc32c.a  /usr/lib/x86_64-linux-gnu/libjemalloc_pic.a  -lm  -lstdc++fs && :
/work/src/net.cpp:2360: error: undefined reference to 'GetLocalAddresses()'
collect2: error: ld returned 1 exit status
[627/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/checkblock.cpp.o
[628/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/peer_eviction.cpp.o
[629/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/duplicate_inputs.cpp.o
[630/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/readwriteblock.cpp.o
[631/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_blockchain.cpp.o
[632/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinunits.cpp.o
[633/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/load_external.cpp.o
[634/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/csvmodelwriter.cpp.o
[635/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_eviction.cpp.o
[636/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/mempool_stress.cpp.o
[637/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/block_assemble.cpp.o
[638/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/networkstyle.cpp.o
[639/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/notificator.cpp.o
[640/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/rpc_mempool.cpp.o
[641/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/chained_tx.cpp.o
[642/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinaddressvalidator.cpp.o
[643/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/platformstyle.cpp.o
[644/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvalidatedlineedit.cpp.o
[645/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qvaluecombobox.cpp.o
[646/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoinamountfield.cpp.o
[647/671] Building CXX object src/bench/CMakeFiles/bitcoin-bench.dir/bench.cpp.o
[648/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bantablemodel.cpp.o
[649/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/modaloverlay.cpp.o
[650/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin-qt-base_autogen/mocs_compilation.cpp.o
[651/671] Linking CXX executable src/bench/bitcoin-bench
[652/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin_locale.cpp.o
[653/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/qrc_bitcoin.cpp.o
[654/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/intro.cpp.o
[655/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/clientmodel.cpp.o
[656/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/trafficgraphwidget.cpp.o
[657/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/guiutil.cpp.o
[658/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoingui.cpp.o
[659/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/bitcoin.cpp.o
[660/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/peertablemodel.cpp.o
[661/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsmodel.cpp.o
[662/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/splashscreen.cpp.o
[663/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/optionsdialog.cpp.o
[664/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/utilitydialog.cpp.o
[665/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt-base.dir/rpcconsole.cpp.o
[666/671] Linking CXX static library src/qt/libbitcoin-qt-base.a
[667/671] Automatic MOC for target bitcoin-qt
[668/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/bitcoin-qt_autogen/mocs_compilation.cpp.o
[669/671] Building CXX object src/qt/CMakeFiles/bitcoin-qt.dir/main.cpp.o
[670/671] Linking CXX executable src/qt/bitcoin-qt
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1

fix bitcoin-chainstate and suppress false positive -Wcast-align warnings (see macro code for NLMSG_NEXT in netlink.h and RTA_NEXT & RTM_RTA in rtnetlink.h, they deal with alignment with dedicated macros)

Tail of the build log:

[431/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[432/593] Linking C executable src/secp256k1/internal-bench
[433/593] Linking C executable src/secp256k1/bench
[434/593] Installing component secp256k1
-- Install configuration: "Debug"
-- Install component: "secp256k1"
-- Installing: /results/artifacts/lib/libsecp256k1.a
-- Installing: /results/artifacts/include/secp256k1.h
-- Installing: /results/artifacts/include/secp256k1_preallocated.h
-- Installing: /results/artifacts/include/secp256k1_ecdh.h
-- Installing: /results/artifacts/include/secp256k1_recovery.h
-- Installing: /results/artifacts/include/secp256k1_schnorr.h
-- Installing: /results/artifacts/include/secp256k1_extrakeys.h
-- Installing: /results/artifacts/include/secp256k1_schnorrsig.h
[435/593] Linking C executable src/secp256k1/ecmult-bench
[436/593] Linking C executable src/secp256k1/examples/ecdh_example
[437/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[438/593] Linking C executable src/secp256k1/examples/ecdsa_example
[439/593] Linking C executable src/secp256k1/examples/schnorr_example
[440/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[441/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[442/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[443/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[444/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[445/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[446/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[447/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[448/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[449/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[450/593] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[451/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[452/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[453/593] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[454/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[455/593] Linking CXX static library src/libbitcoinconsensus.a
[456/593] Linking CXX static library src/libscript.a
[457/593] Building CXX object src/CMakeFiles/common.dir/common/netif.cpp.o
FAILED: src/CMakeFiles/common.dir/common/netif.cpp.o 
/usr/bin/ccache /usr/bin/c++ -DABORT_ON_FAILED_ASSUME -DBOOST_ALL_NO_LIB -DBOOST_NO_CXX98_FUNCTION_BASE -DBUILD_BITCOIN_INTERNAL -DDEBUG -DDEBUG_LOCKORDER -DENABLE_AVX2 -DENABLE_SHANI -DENABLE_SSE41 -DHAVE_BUILD_INFO -DHAVE_CONFIG_H -DHAVE_CONSENSUS_LIB -I/work/src/. -I/work/abc-ci-builds/build-debug/src -I/work/src/univalue/include -I/work/abc-ci-builds/build-debug/src/crypto/.. -I/work/src/secp256k1/include -isystem /usr/include/jemalloc -Werror -O0 -fPIC -fvisibility=hidden -g3 -ftrapv -fstack-reuse=none -fstack-protector-all -Wstack-protector -fcf-protection=full -fstack-clash-protection -U_FORTIFY_SOURCE -Wall -Wextra -Wformat -Wvla -Wcast-align -Wunused-parameter -Wmissing-braces -Wno-implicit-fallthrough -Wno-psabi -Wno-unused-parameter -Wredundant-decls -Wsign-compare -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Wformat-security -Wredundant-move -Wsuggest-override -Woverloaded-virtual -std=gnu++20 -MD -MT src/CMakeFiles/common.dir/common/netif.cpp.o -MF src/CMakeFiles/common.dir/common/netif.cpp.o.d -o src/CMakeFiles/common.dir/common/netif.cpp.o -c /work/src/common/netif.cpp
/work/src/common/netif.cpp:156: error: ignoring ‘#pragma clang diagnostic’ [-Werror=unknown-pragmas]
  156 | #pragma clang diagnostic push
      | 
/work/src/common/netif.cpp:157: error: ignoring ‘#pragma clang diagnostic’ [-Werror=unknown-pragmas]
  157 | #pragma clang diagnostic ignored "-Wcast-align"
      | 
/work/src/common/netif.cpp:160: error: ignoring ‘#pragma clang diagnostic’ [-Werror=unknown-pragmas]
  160 | #pragma clang diagnostic pop
      | 
/work/src/common/netif.cpp:188: error: ignoring ‘#pragma clang diagnostic’ [-Werror=unknown-pragmas]
  188 | #pragma clang diagnostic push
      | 
/work/src/common/netif.cpp:189: error: ignoring ‘#pragma clang diagnostic’ [-Werror=unknown-pragmas]
  189 | #pragma clang diagnostic ignored "-Wcast-align"
      | 
/work/src/common/netif.cpp:192: error: ignoring ‘#pragma clang diagnostic’ [-Werror=unknown-pragmas]
  192 | #pragma clang diagnostic pop
      | 
cc1plus: all warnings being treated as errors
ninja: build stopped: cannot make progress due to previous errors.
Build build-debug failed with exit code 1

Tail of the build log:

[400/593] Linking C executable src/secp256k1/examples/schnorr_example
[401/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[402/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[403/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[404/593] Building CXX object src/CMakeFiles/server.dir/rpc/net.cpp.o
[405/593] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[406/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[407/593] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[408/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[409/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[410/593] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[411/593] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[412/593] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[413/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[414/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[415/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[416/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[417/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[418/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[419/593] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[420/593] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o
[421/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[422/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[423/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[424/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[425/593] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[426/593] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[427/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[428/593] Building CXX object src/CMakeFiles/server.dir/net_processing.cpp.o
[429/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[430/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[431/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[432/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[433/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[434/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[435/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[436/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[437/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[438/593] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[439/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[440/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[441/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[442/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[443/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[444/593] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[445/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[446/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[447/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[448/593] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[449/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[450/593] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[451/593] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[452/593] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[453/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[454/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[455/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[456/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[457/593] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-diff failed with exit code 1

Tail of the build log:

/work/src/common/netif.cpp:192: error: ignoring ‘#pragma clang diagnostic’ [-Werror=unknown-pragmas]
  192 | #pragma clang diagnostic pop
      | 
cc1plus: all warnings being treated as errors
[515/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/util/asmap.cpp.o
[516/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/util/sock.cpp.o
[517/672] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/secp256k1.c.o
[518/672] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/precomputed_ecmult.c.o
[519/672] Building C object src/secp256k1/CMakeFiles/secp256k1.dir/src/precomputed_ecmult_gen.c.o
[520/672] Linking C static library src/secp256k1/libsecp256k1.a
[521/672] Linking CXX static library src/libbitcoinconsensus.a
[522/672] Linking CXX static library src/libscript.a
[523/672] Building C object src/secp256k1/CMakeFiles/internal-bench.dir/src/bench_internal.c.o
[524/672] Linking C executable src/secp256k1/internal-bench
[525/672] Building C object src/secp256k1/CMakeFiles/ecmult-bench.dir/src/bench_ecmult.c.o
[526/672] Linking C executable src/secp256k1/ecmult-bench
[527/672] Building C object src/secp256k1/CMakeFiles/bench.dir/src/bench.c.o
[528/672] Linking C executable src/secp256k1/bench
[529/672] Building C object src/secp256k1/examples/CMakeFiles/ecdsa_example.dir/ecdsa.c.o
[530/672] Linking C executable src/secp256k1/examples/ecdsa_example
[531/672] Building C object src/secp256k1/examples/CMakeFiles/ecdh_example.dir/ecdh.c.o
[532/672] Linking C executable src/secp256k1/examples/ecdh_example
[533/672] Building C object src/secp256k1/examples/CMakeFiles/schnorr_example.dir/schnorr.c.o
[534/672] Linking C executable src/secp256k1/examples/schnorr_example
[535/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/avalanche/proofpool.cpp.o
[536/672] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[537/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/avalanche/proof.cpp.o
[538/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/avalanche/stakecontendercache.cpp.o
[539/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[540/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/node/blockstorage.cpp.o
[541/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/txmempool.cpp.o
[542/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/policy/block/preconsensus.cpp.o
[543/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[544/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/policy/block/stakingrewards.cpp.o
[545/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[546/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[547/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[548/672] Building CXX object src/CMakeFiles/bitcoin-chainstate.dir/bitcoin-chainstate.cpp.o
[549/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[550/672] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[551/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[552/672] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[553/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[554/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[555/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/avalanche/peermanager.cpp.o
[556/672] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[557/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[558/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/avalanche/processor.cpp.o
[559/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[560/672] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[561/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[562/672] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[563/672] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[564/672] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[565/672] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[566/672] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[567/672] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[568/672] Building CXX object src/CMakeFiles/bitcoinkernel.dir/validation.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-without-wallet failed with exit code 1

gcc does not like clang pragmas

Tail of the build log:

-- Performing Test have_C__Wreserved_identifier
-- Performing Test have_C__Wreserved_identifier - Success
-- Performing Test USE_ASM_X86_64
-- Performing Test USE_ASM_X86_64 - Success
-- Performing Test have_linker__Wl___no_undefined
-- Performing Test have_linker__Wl___no_undefined - Success
-- Found Event component event: /usr/lib/x86_64-linux-gnu/libevent.so
-- Found Event: /usr/include (found suitable version "2.1.12-stable", minimum required is "2.1.8") found components: event 
-- Found Boost component headers: /usr/include (found suitable version "1.74.0", minimum required is "1.64")
-- Found Event component pthreads: /usr/lib/x86_64-linux-gnu/libevent_pthreads.so
-- Found Event: /usr/include (found suitable version "2.1.12-stable", minimum required is "2.1.8") found components: pthreads 
-- Found MiniUPnPc component miniupnpc: /usr/lib/x86_64-linux-gnu/libminiupnpc.so
-- Found MiniUPnPc: /usr/include/miniupnpc (found suitable version "2.2.4", minimum required is "1.9")  
-- Found NATPMP component natpmp: /usr/lib/x86_64-linux-gnu/libnatpmp.so
-- Found NATPMP: /usr/include   
-- Performing Test fuzz_target_builds_without_main_fuzz
-- Performing Test fuzz_target_builds_without_main_fuzz - Failed
-- Found BerkeleyDB component CXX: /usr/lib/x86_64-linux-gnu/libdb_cxx-5.3.so
-- Found BerkeleyDB: /usr/include (found suitable version "5.3.28", minimum required is "5.3") found components: CXX 
-- Found SQLite3: /usr/include (found suitable version "3.40.1", minimum required is "3.7.17") 
-- Found ZeroMQ component zmq: /usr/lib/x86_64-linux-gnu/libzmq.so
-- Found ZeroMQ: /usr/include (found suitable version "4.3.4", minimum required is "4.1.5")  
-- Could NOT find Protobuf (missing: Protobuf_DIR)
-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so (found version "3.21.12") 
-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "3.0.18")  
-- Looking for EVP_MD_CTX_new
-- Looking for EVP_MD_CTX_new - found
-- Found QREncode component qrencode: /usr/lib/x86_64-linux-gnu/libqrencode.so
-- Found QREncode: /usr/include   
[1/9] Creating directories for 'corrosion-populate'
[1/9] Performing download step (git clone) for 'corrosion-populate'
Cloning into 'corrosion-src'...
fatal: unable to access 'https://github.com/corrosion-rs/corrosion.git/': Recv failure: Connection reset by peer
Cloning into 'corrosion-src'...
fatal: unable to access 'https://github.com/corrosion-rs/corrosion.git/': Recv failure: Connection reset by peer
Cloning into 'corrosion-src'...
fatal: unable to access 'https://github.com/corrosion-rs/corrosion.git/': Failed to connect to github.com port 443 after 33 ms: Couldn't connect to server
-- Had to git clone more than once: 3 times.
CMake Error at corrosion-subbuild/corrosion-populate-prefix/tmp/corrosion-populate-gitclone.cmake:39 (message):
  Failed to clone repository: 'https://github.com/corrosion-rs/corrosion.git'


FAILED: corrosion-populate-prefix/src/corrosion-populate-stamp/corrosion-populate-download /work/abc-ci-builds/build-clang-tidy/_deps/corrosion-subbuild/corrosion-populate-prefix/src/corrosion-populate-stamp/corrosion-populate-download 
cd /work/abc-ci-builds/build-clang-tidy/_deps && /usr/bin/cmake -P /work/abc-ci-builds/build-clang-tidy/_deps/corrosion-subbuild/corrosion-populate-prefix/tmp/corrosion-populate-gitclone.cmake && /usr/bin/cmake -E touch /work/abc-ci-builds/build-clang-tidy/_deps/corrosion-subbuild/corrosion-populate-prefix/src/corrosion-populate-stamp/corrosion-populate-download
ninja: build stopped: subcommand failed.

CMake Error at /usr/share/cmake-3.25/Modules/FetchContent.cmake:1616 (message):
  Build step for corrosion failed: 1
Call Stack (most recent call first):
  /usr/share/cmake-3.25/Modules/FetchContent.cmake:1756:EVAL:2 (__FetchContent_directPopulate)
  /usr/share/cmake-3.25/Modules/FetchContent.cmake:1756 (cmake_language)
  /usr/share/cmake-3.25/Modules/FetchContent.cmake:1970 (FetchContent_Populate)
  cmake/modules/RustHelper.cmake:9 (FetchContent_MakeAvailable)
  chronik/CMakeLists.txt:6 (include)


-- Configuring incomplete, errors occurred!
See also "/work/abc-ci-builds/build-clang-tidy/CMakeFiles/CMakeOutput.log".
See also "/work/abc-ci-builds/build-clang-tidy/CMakeFiles/CMakeError.log".
Build build-clang-tidy failed with exit code 1
PiRK published this revision for review.Mar 31 2026, 14:50
PiRK edited the summary of this revision. (Show Details)
Fabien requested changes to this revision.Mar 31 2026, 14:56
Fabien added a subscriber: Fabien.

back to your queue

This revision now requires changes to proceed.Mar 31 2026, 14:56

restart CI (unrelated failure)

Fabien requested changes to this revision.Mar 31 2026, 20:10
Fabien added inline comments.
src/common/netif.cpp
266 ↗(On Diff #58820)

you don't need the else

304 ↗(On Diff #58820)

Clang tidy did not run on this code

373 ↗(On Diff #58820)

dito, you don't need the else

src/common/netif.h
11 ↗(On Diff #58820)

#include <vector>

This revision now requires changes to proceed.Mar 31 2026, 20:10
src/common/netif.cpp
304 ↗(On Diff #58820)

I never realized that it doesn't run on branches that are not compiled. We may have undetected issues in Windows and MacOS code.

remove unneeded elses, add curly braces

@bot build-osx build-win64

Tail of the build log:

-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/field_mask.proto
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/source_context.proto
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/struct.proto
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/timestamp.proto
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/type.proto
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/wrappers.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/any.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/api.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/compiler/plugin.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/descriptor.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/duration.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/empty.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/field_mask.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/source_context.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/struct.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/timestamp.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/type.proto
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/include/google/protobuf/wrappers.proto
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/lib/cmake/protobuf/protobuf-targets.cmake
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/lib/cmake/protobuf/protobuf-targets-release.cmake
-- Up-to-date: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/lib/cmake/protobuf
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/lib/cmake/protobuf/protobuf-config.cmake
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/lib/cmake/protobuf/protobuf-options.cmake
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/lib/cmake/protobuf/protobuf-module.cmake
-- Installing: /work/depends/work/staging/x86_64-apple-darwin/native_protobuf/21.12-28e17f711e1/work/depends/x86_64-apple-darwin/native/lib/cmake/protobuf/protobuf-config-version.cmake
Postprocessing native_protobuf...
Caching native_protobuf...
Extracting boost...
/root/abc-depends/sources/boost_1_81_0.tar.gz: OK
Preprocessing boost...
patching file boost/process/detail/posix/handles.hpp
Configuring boost...
Building boost...
Staging boost...
Postprocessing boost...
Caching boost...
Extracting libevent...
/root/abc-depends/sources/libevent-2.1.12-stable.tar.gz: OK
Preprocessing libevent...
Configuring libevent...
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for x86_64-apple-darwin-strip... no
checking for strip... strip
configure: WARNING: using cross tools not prefixed with host triplet
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU style)
checking for x86_64-apple-darwin-gcc... env -u C_INCLUDE_PATH -u CPLUS_INCLUDE_PATH -u OBJC_INCLUDE_PATH -u OBJCPLUS_INCLUDE_PATH -u CPATH -u LIBRARY_PATH /usr/bin/clang --target=x86_64-apple-darwin -isysroot/work/depends/SDKs/Xcode-15.0-15A240d-extracted-SDK-with-libcxx-headers -nostdlibinc -iwithsysroot/usr/include -iframeworkwithsysroot/System/Library/Frameworks
checking whether the C compiler works... no
configure: error: in `/work/depends/work/build/x86_64-apple-darwin/libevent/2.1.12-stable-b77b25be874':
configure: error: C compiler cannot create executables
See `config.log' for more details
make[1]: *** [funcs.mk:295: /work/depends/work/build/x86_64-apple-darwin/libevent/2.1.12-stable-b77b25be874/./.stamp_configured] Error 77
make: *** [Makefile:251: build-osx] Error 2
Build build-osx failed with exit code 2

Tail of the build log:

/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>]’,
    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:158:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:66: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_start’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                                                    ~~~~~~~~~~~~~~^~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>]’,
    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:158:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:40: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_finish’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                          ~~~~~~~~~~~~~~^~~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>]’,
    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:158:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:66: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_start’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                                                    ~~~~~~~~~~~~~~^~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>]’,
    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:168:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:40: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_finish’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                          ~~~~~~~~~~~~~~^~~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>]’,
    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:168:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:66: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_start’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                                                    ~~~~~~~~~~~~~~^~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
[954/961] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/apptests.cpp.obj
[955/961] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/rpcnestedtests.cpp.obj
[956/961] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/addressbooktests.cpp.obj
[957/961] Building CXX object src/qt/test/CMakeFiles/test_bitcoin-qt.dir/wallettests.cpp.obj
[958/961] Linking CXX executable src/qt/bitcoin-qt.exe
[959/961] Linking CXX executable src/qt/test/test_bitcoin-qt.exe
[960/961] Installing component bitcoin-qt-test_bitcoin-qt
-- Install configuration: "RelWithDebInfo"
-- Install component: "bitcoin-qt-test_bitcoin-qt"
-- Installing: /results/artifacts/bin/test_bitcoin-qt.exe
ninja: build stopped: cannot make progress due to previous errors.
Build build-win64 failed with exit code 1
PiRK planned changes to this revision.Apr 1 2026, 06:57

interesting....

Tail of the build log:

    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:158:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:40: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_finish’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                          ~~~~~~~~~~~~~~^~~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>]’,
    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:158:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:66: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_start’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                                                    ~~~~~~~~~~~~~~^~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>]’,
    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:168:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:40: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_finish’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                          ~~~~~~~~~~~~~~^~~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
In member function ‘constexpr std::vector<_Tp, _Alloc>::size_type std::vector<_Tp, _Alloc>::size() const [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>]’,
    inlined from ‘void PaymentServerTests::paymentServerTests()’ at /work/src/qt/test/paymentservertests.cpp:168:66:
/usr/lib/gcc/x86_64-w64-mingw32/12-posix/include/c++/bits/stl_vector.h:988:66: warning: ‘*(const std::vector<unsigned char, std::allocator<unsigned char> >*)((char*)&data + offsetof(std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >,std::optional<std::vector<unsigned char, std::allocator<unsigned char> > >::<unnamed>.std::_Optional_base<std::vector<unsigned char, std::allocator<unsigned char> >, false, false>::<unnamed>)).std::vector<unsigned char>::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_impl.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl::<anonymous>.std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_impl_data::_M_start’ may be used uninitialized [-Wmaybe-uninitialized]
  988 |       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
      |                                                    ~~~~~~~~~~~~~~^~~~~~~~
/work/src/qt/test/paymentservertests.cpp: In member function ‘void PaymentServerTests::paymentServerTests()’:
/work/src/qt/test/paymentservertests.cpp:84:41: note: ‘data’ declared here
   84 |     std::optional<std::vector<uint8_t>> data;
      |                                         ^~~~
[950/961] Linking CXX executable src/bitcoind.exe
[951/961] Linking CXX executable src/bench/bitcoin-bench.exe
[952/961] Linking CXX executable src/avalanche/test/test-avalanche.exe
[953/961] Linking CXX executable src/pow/test/test-pow.exe
[954/961] Installing component avalanche-test-avalanche
-- Install configuration: "RelWithDebInfo"
-- Install component: "avalanche-test-avalanche"
-- Installing: /results/artifacts/bin/test-avalanche.exe
[955/961] Installing component pow-test-pow
-- Install configuration: "RelWithDebInfo"
-- Install component: "pow-test-pow"
-- Installing: /results/artifacts/bin/test-pow.exe
[956/961] Linking CXX executable src/qt/bitcoin-qt.exe
[957/961] Linking CXX executable src/qt/test/test_bitcoin-qt.exe
[958/961] Installing component bitcoin-qt-test_bitcoin-qt
-- Install configuration: "RelWithDebInfo"
-- Install component: "bitcoin-qt-test_bitcoin-qt"
-- Installing: /results/artifacts/bin/test_bitcoin-qt.exe
[959/961] Linking CXX executable src/test/test_bitcoin.exe
[960/961] Installing component bitcoin-test_bitcoin
-- Install configuration: "RelWithDebInfo"
-- Install component: "bitcoin-test_bitcoin"
-- Installing: /results/artifacts/bin/test_bitcoin.exe
ninja: build stopped: cannot make progress due to previous errors.
Build build-win64 failed with exit code 1

link iphlpapi for bitcoinkernel on windows

link the iphlpapi lib the same way other libs are already linked for libutil and libbitcoinkernel

no reason to change the formatting of the target_link_libraries(bitcoinkernel line

This revision is now accepted and ready to land.Apr 1 2026, 14:11