Page MenuHomePhabricator

init: Error if ignored bitcoin.conf file is found
ClosedPublic

Authored by PiRK on Jun 7 2025, 15:09.

Details

Reviewers
Fabien
Group Reviewers
Restricted Project
Commits
rABC0c9af57b4be1: init: Error if ignored bitcoin.conf file is found
Summary

Show an error on startup if a bitcoin datadir that is being used contains a
bitcoin.conf file that is ignored. There are two cases where this could
happen:

  • Another way this could happen is if a -conf= command line argument points to a configuration file with a "datadir=/path" line and that specified path contains a bitcoin.conf file, which is currently ignored.

This change only adds an error message and doesn't change anything about way
settings are applied. It also doesn't trigger errors if there are redundant
-datadir or -conf settings pointing at the same configuration file, only if
they are pointing at different files and one file is being ignored.

This is a partial backport of core#27302
https://github.com/bitcoin/bitcoin/pull/27302/commits/3746f00be1b732a04976fc70cbb0661f97bbbd99

Depends on D18222

Test Plan

ninja all check-all

Event Timeline

PiRK requested review of this revision.Jun 7 2025, 15:09
test/functional/feature_config_args.py
380–381

node.args got renamed to node.default_args in D2535

Tail of the build log:

[407/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[408/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[409/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[410/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[411/584] Linking C static library src/secp256k1/libsecp256k1.a
[412/584] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[413/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[414/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[415/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[416/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[417/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[418/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[419/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
[420/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[421/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[422/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[423/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[424/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[425/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[426/584] Installing component secp256k1
-- Install configuration: "RelWithDebInfo"
-- 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_recovery.h
-- Installing: /results/artifacts/include/secp256k1_schnorr.h
[427/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[428/584] Linking C executable src/secp256k1/recover-bench
[429/584] Linking C executable src/secp256k1/verify-bench
[430/584] Linking CXX static library src/libbitcoinconsensus.a
[431/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[432/584] Linking C executable src/secp256k1/sign-bench
[433/584] Linking C executable src/secp256k1/internal-bench
[434/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[435/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[436/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[437/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[438/584] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[439/584] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[440/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[441/584] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[442/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[443/584] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[444/584] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[445/584] Linking C executable src/secp256k1/ecmult-bench
[446/584] Linking CXX static library src/libscript.a
[447/584] Building CXX object src/CMakeFiles/common.dir/common/init.cpp.o
FAILED: src/CMakeFiles/common.dir/common/init.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 -Wthread-safety -Wrange-loop-analysis -Wredundant-decls -Wunreachable-code-loop-increment -Wsign-compare -Wconditional-uninitialized -Wdocumentation -Wformat-security -Wredundant-move -Woverloaded-virtual -Wshadow -Wshadow-field -Wno-unused-parameter -Wno-implicit-fallthrough -Wno-psabi -std=gnu++17 -MD -MT src/CMakeFiles/common.dir/common/init.cpp.o -MF src/CMakeFiles/common.dir/common/init.cpp.o.d -o src/CMakeFiles/common.dir/common/init.cpp.o -c /work/src/common/init.cpp
/work/src/common/init.cpp:85:31: error: declaration shadows a local variable [-Werror,-Wshadow]
            const std::string error = strprintf(
                              ^
/work/src/common/init.cpp:41:21: note: previous declaration is here
        std::string error;
                    ^
1 error generated.
[448/584] Building CXX object src/CMakeFiles/server.dir/init.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:

[390/582] Linking C executable src/secp256k1/ecmult-bench
[391/582] Building CXX object src/CMakeFiles/server.dir/rpc/net.cpp.o
[392/582] Building CXX object src/CMakeFiles/server.dir/rpc/mining.cpp.o
[393/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockindex.cpp.o
[394/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/coins.cpp.o
[395/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/logging.cpp.o
[396/582] Building CXX object src/CMakeFiles/server.dir/rpc/avalanche.cpp.o
[397/582] Building CXX object src/CMakeFiles/bitcoind.dir/bitcoind.cpp.o
[398/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/random.cpp.o
[399/582] Building CXX object src/CMakeFiles/server.dir/txmempool.cpp.o
[400/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/str.cpp.o
[401/582] Building CXX object src/CMakeFiles/bitcoin-cli.dir/bitcoin-cli.cpp.o
[402/582] Building CXX object src/CMakeFiles/server.dir/rpc/rawtransaction.cpp.o
[403/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/net.cpp.o
[404/582] Building CXX object src/CMakeFiles/bitcoin-tx.dir/bitcoin-tx.cpp.o
[405/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/transaction_utils.cpp.o
[406/582] Building CXX object src/CMakeFiles/bitcoin-wallet.dir/bitcoin-wallet.cpp.o
[407/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/context.cpp.o
[408/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/coincontrol.cpp.o
[409/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/blockfilter.cpp.o
[410/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/coinselection.cpp.o
[411/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/crypter.cpp.o
[412/582] Building CXX object src/CMakeFiles/server.dir/wallet/init.cpp.o
[413/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/db.cpp.o
[414/582] Building CXX object src/CMakeFiles/server.dir/rpc/blockchain.cpp.o
[415/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/mining.cpp.o
[416/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/bdb.cpp.o
[417/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/validation.cpp.o
[418/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/txmempool.cpp.o
[419/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/wallet.cpp.o
[420/582] Building CXX object src/test/CMakeFiles/testutil.dir/util/setup_common.cpp.o
[421/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/fees.cpp.o
[422/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/load.cpp.o
[423/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/transaction.cpp.o
[424/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/receive.cpp.o
[425/582] Building CXX object src/CMakeFiles/server.dir/validation.cpp.o
[426/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/sqlite.cpp.o
[427/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/encrypt.cpp.o
[428/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/signmessage.cpp.o
[429/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletutil.cpp.o
[430/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/util.cpp.o
[431/582] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/dns.cpp.o
[432/582] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/db.cpp.o
[433/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/interfaces.cpp.o
[434/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/salvage.cpp.o
[435/582] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_formatter.cpp.o
[436/582] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana_interpreter.cpp.o
[437/582] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/options.cpp.o
[438/582] Building CXX object src/iguana/CMakeFiles/iguana.dir/iguana.cpp.o
[439/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/spend.cpp.o
[440/582] Building CXX object src/seeder/CMakeFiles/bitcoin-seeder.dir/main.cpp.o
[441/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/scriptpubkeyman.cpp.o
[442/582] Building CXX object src/wallet/CMakeFiles/wallet-tool.dir/wallettool.cpp.o
[443/582] Building CXX object src/seeder/CMakeFiles/seeder-base.dir/bitcoin.cpp.o
[444/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpc/backup.cpp.o
[445/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/walletdb.cpp.o
[446/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/wallet.cpp.o
[447/582] Building CXX object src/wallet/CMakeFiles/wallet.dir/rpcwallet.cpp.o
ninja: build stopped: cannot make progress due to previous errors.
Build build-clang-tidy failed with exit code 1
This revision is now accepted and ready to land.Jun 9 2025, 09:44