Skip to content

Commit cb3cd9b

Browse files
committed
Squashed 'libbitcoinkernel-sys/bitcoin/' changes from 4a4eeb94339b..1417e0b3b1b0
1417e0b3b1b0 kernel: Fix bitcoin-chainstate for windows 4f07590a8bd6 kernel: Add Purpose section to header documentation 58c01a82c163 kernel: Add pure kernel bitcoin-chainstate 0416a292f545 kernel: Add functions to get the block hash from a block 8d25dfd1b2a2 kernel: Add block index utility functions to C header eacf99dd3c28 kernel: Add function to read block undo data from disk to C header 3c012048c2f1 kernel: Add functions to read block from disk to C header 85f5264462e0 kernel: Add function for copying block data to C header f136ca589153 kernel: Add functions for the block validation state to C header 9d7e19ee522d kernel: Add validation interface to C header 51555301a882 kernel: Add interrupt function to C header 61c4ac9c8e1f kernel: Add import blocks function to C header 4153ab77084e kernel: Add chainstate load options for in-memory dbs in C header cb128288a0d9 kernel: Add options for reindexing in C header 7ead2a92be50 kernel: Add block validation to C header 9262ce715448 kernel: Add chainstate loading when instantiating a ChainstateManager 594b060da476 kernel: Add chainstate manager option for setting worker threads 7384b7325d5f kernel: Add chainstate manager object to C header 7920e23c22b8 kernel: Add notifications context option to C header c0a86769e784 kernel: Add chain params context option to C header 3769d12882f9 kernel: Add kernel library context object f7b435493bd7 kernel: Add logging to kernel library C header 62d0122c7ed0 kernel: Introduce initial kernel C header API 88b22acc3d6f Merge bitcoin/bitcoin#32528: rpc: Round verificationprogress to 1 for a recent tip aee7cec0db8f Merge bitcoin/bitcoin#32364: refactor: validation: mark CheckBlockIndex as const ce4600071243 Merge bitcoin/bitcoin#32509: qa: feature_framework_startup_failures.py fixes & improvements (#30660 follow-up) d21612fc4b77 Merge bitcoin/bitcoin#32404: log: print reason when writing chainstate 9bd9aee5a656 Merge bitcoin/bitcoin#32487: blocks: avoid recomputing block header hash in `ReadBlock` 4173805a15c1 Merge bitcoin/bitcoin#32623: test: Add missing ipc subtree to lint 012f347685b8 Merge bitcoin/bitcoin#31375: multiprocess: Add bitcoin wrapper executable 38ad8027a26f Merge bitcoin/bitcoin#32439: guix: accomodate migration to codeberg fa4b8b16c378 test: Add missing ipc subtree to lint f7cc7f6468af Merge bitcoin/bitcoin#32591: test: fix and augment block tests of invalid_txs 87860143be79 Merge bitcoin/bitcoin#32270: test: fix pushdata scripts c8d9baae942c guix: accomodate migration to codeberg 09ee8b7f2786 node: avoid recomputing block hash in `ReadBlock` 2bf173210fa1 test: exercise `ReadBlock` hash‑mismatch path fab1e02086ce refactor: Pass verification_progress into block tip notifications 638a4c0bd8b5 Merge bitcoin/bitcoin#32596: wallet, rpc, doc: various legacy wallet removal cleanups in RPCs 53e9b71b2fd5 log: print reason for why should_write was triggered in `FlushStateToDisk` e5cbea416b2f rpc: doc: remove redundant "descriptors" parameter in `createwallet` examples 7a05f941bb2c rpc: doc: drop descriptor wallet mentions in fast wallet rescan related RPCs db465a50e23d wallet, rpc: remove obsolete "keypoololdest" result field/code 2df824f4e62b Merge bitcoin/bitcoin#32586: ci: Downgrade DEBUG=1 to -D_GLIBCXX_ASSERTIONS in centos task 0a8ab559514f Merge bitcoin/bitcoin#32467: checkqueue: make the queue non-optional for CCheckQueueControl and drop legacy locking macro usage 8fcd68450523 test: ensure reason is checked for invalid blocks rejection 1a689a2c8871 test: fix block tests of invalid_txs d2c9fc84e171 Merge bitcoin/bitcoin#32533: test: properly check for per-tx sigops limit fa079538e32d ci: Downgrade DEBUG=1 to -D_GLIBCXX_ASSERTIONS in centos task 35bf3f88398d Merge bitcoin/bitcoin#32400: random: Use modern Windows randomness functions a42faa25d8f7 Merge bitcoin/bitcoin#32551: cmake: Remove `ENABLE_{SSE41,AVX2,X86_SHANI,ARM_SHANI}` from `bitcoin-build-config.h` 87ec923d3a7a Merge bitcoin/bitcoin#32475: wallet: Use `util::Error` throughout `AddWalletDescriptor` instead of returning `nullptr` for some errors 7763e86afa04 Merge bitcoin/bitcoin#32573: ci: Avoid && dropping errors 0a56ed1ac868 Merge bitcoin/bitcoin#32567: subprocess: Backport upstream changes 54e406a3055a Merge bitcoin/bitcoin#32459: qt: drop unused watch-only functionality ec8120469430 Merge bitcoin/bitcoin#31622: psbt: add non-default sighash types to PSBTs and unify sighash type match checking fab97f583f11 ci: Avoid && dropping errors 9a887baadebc Merge bitcoin/bitcoin#32344: Wallet: Fix Non-Ranged Descriptors with Range [0,0] Trigger Unexpected Wallet Errors in AddWalletDescriptor 26fba39bda47 Merge bitcoin/bitcoin#32466: threading: drop CSemaphore in favor of c++20 std::counting_semaphore 878556947b0d Merge bitcoin/bitcoin#32333: doc: Add missing top-level description to pruneblockchain RPC fd290730f530 validation: clean up and clarify CheckInputScripts logic fad009af49c4 Merge bitcoin/bitcoin#32520: Remove legacy `Parse(U)Int*` f66b14d2ecb0 test: fix pushdata scripts 0f9baba0fb6e Merge bitcoin/bitcoin#29868: Reintroduce external signer support for Windows cf2cbfac6599 Merge bitcoin/bitcoin#32553: wallet: Fix logging of wallet version bc4b04c5bfb4 Merge bitcoin/bitcoin#31864: doc: add missing copyright headers e63a7034f038 subprocess: Don't add an extra whitespace at end of Windows command line 800b7cc42ca6 cmake: Add missed `SSE41_CXXFLAGS` 028476e71fdc cmake: Remove `ENABLE_ARM_SHANI` from `bitcoin-build-config.h` 1e900528d245 cmake: Remove `ENABLE_X86_SHANI` from `bitcoin-build-config.h` 8689628e2e36 cmake: Remove `ENABLE_AVX2` from `bitcoin-build-config.h` a8e2342dca5e cmake: Remove `ENABLE_SSE41` from `bitcoin-build-config.h` fa76b378e4b2 rpc: Round verificationprogress to exactly 1 for a recent tip faf6304bdfdf test: Use mockable time in GuessVerificationProgress c7c3bfadfc6e doc: add & amend copyright headers f667000c83e7 contrib: remove outdated entries from copyright_header.py 0817f2d6cf52 doc: update MIT license URL 6854497b47ce contrib: remove GPL-3+ from debian/copyright af65fd1a3330 Merge bitcoin/bitcoin#32560: ci: Move DEBUG=1 to centos task 548f6b8cdef5 Merge bitcoin/bitcoin#32562: doc: remove // for ... comments 7c87a0e3fb1b Merge bitcoin/bitcoin#32477: lint: Check for missing trailing newline faf55fc80b11 doc: Remove ParseInt mentions in documentation 785e1407b0a3 wallet: Use util::Error throughout AddWalletDescriptor 1a3750789540 validation: use a lock for CCheckQueueControl c3b0e6c7f482 validation: make CCheckQueueControl's CCheckQueue non-optional 4c8c90b5567a validation: only create a CCheckQueueControl if it's actually going to be used 11fed833b3ed threading: add LOCK_ARGS macro 33f8f8ae4ced Merge bitcoin/bitcoin#30221: wallet: Ensure best block matches wallet scan state 7054d24f119a Merge bitcoin-core/gui#875: Use WitnessV0KeyHash in TestAddAddressesToSendBook 4272966d0234 Merge bitcoin/bitcoin#32423: rpc: Undeprecate rpcuser/rpcpassword, store all credentials hashed in memory 7193245cd667 doc: remove For ... comments 33332829333b refactor: Remove unused Parse(U)Int* 1b9cdc933f6c net: drop win32 ifdef 19ba499b1f38 init: cerrno is used on all platforms fa982f142544 Use WitnessV0KeyHash in TestAddAddressesToSendBook fa58d6cdab00 ci: Move DEBUG=1 to centos task ff1ee102c4ba Merge bitcoin/bitcoin#32561: doc: Adjust stale MSVC bug url fa330a5e38a8 doc: Adjust stale MSVC bug url 88791fb97bc3 Merge bitcoin/bitcoin#32544: scripted-diff: test: remove 'descriptors=True' argument for `createwallet` calls e8661aac752e wallet: drop watch-only things from interface e99188e7daa1 qt: drop unused watch-only functionality 4b2cd0b41ff4 test: check that creating a wallet does not log version info 39a483c8e9dc test: Check that the correct versions are logged on wallet load 359ecd370499 walletdb: Log the wallet version after it has been read from disk 86de8c166800 scripted-diff: test: remove 'descriptors=True' argument for `createwallet` calls 7710a31f0cb6 Merge bitcoin/bitcoin#32452: test: Remove legacy wallet RPC overloads b81e5076aa56 Merge bitcoin/bitcoin#32514: scripted-diff: Remove unused leading newline in RPC docs 3023d7e6ad52 Merge bitcoin/bitcoin#32534: Update leveldb subtree to latest upstream fa84e6c36cb0 bitcoin-tx: Reject + sign in MutateTxDel* face2519fac9 bitcoin-tx: Reject + sign in vout parsing fa8acaf0b993 bitcoin-tx: Reject + sign in replaceable parsing faff25a558ab bitcoin-tx: Reject + sign in locktime dddd9e5fe38b bitcoin-tx: Reject + sign in nversion parsing fab06ac03788 rest: Use SAFE_CHARS_URI in SanitizeString error msg c461d1528758 Merge bitcoin/bitcoin#32511: refactor: bdb removals b15c386933eb Merge bitcoin/bitcoin#32519: ci: Enable feature_init and wallet_reorgsrestore in valgrind task 7015052eba23 build: remove Wsuggest-override suppression from leveldb build 7bc64a8859c3 test: properly check for per-tx sigops limit 3f83c744ac28 Merge bitcoin/bitcoin#32526: fuzz: Delete wallet_notifications fa1f10a49e7c doc: Fix minor typos in rpc help 0769c8fc999f Update leveldb subtree to latest upstream e2c84b896fad Squashed 'src/leveldb/' changes from 4188247086..113db4962b 04c6c961b657 Merge bitcoin/bitcoin#32527: test: Remove unused verify_flags suppression 742b30549fc9 Merge bitcoin/bitcoin#32491: build: document why we check for `std::system` fab5a3c803c7 test: Remove unused verify_flags suppression c521192d8b9e Merge bitcoin/bitcoin#32485: Update minisketch subtree 3afde679c3b2 Merge bitcoin/bitcoin#32296: refactor: reenable `implicit-integer-sign-change` check for `serialize.h` 5af757bb7841 Merge bitcoin/bitcoin#32505: depends: bump to latest config.guess and config.sub c60455a6458c Merge bitcoin/bitcoin#32500: init: drop `-upnp` e230affaa321 Merge bitcoin/bitcoin#32396: cmake: Add application manifests when cross-compiling for Windows 51be79c42b7e Merge bitcoin/bitcoin#32238: qt, wallet: Convert uint256 to Txid f96ae941a1db Merge bitcoin/bitcoin#32525: build: Revert "Temporarily disable compiling `fuzz/utxo_snapshot.cpp` with MSVC fad2faf6c5d8 fuzz: Delete wallet_notifications bf950c4544d3 qa: Improve suppressed errors output 075352ec8e57 qa: assert_raises_message() - search in str(e) bd8ebbc4ab6a qa: Make --timeout-factor=0 result in a smaller factor fa2c66236267 build: Revert "Temporarily disable compiling `fuzz/utxo_snapshot.cpp` with MSVC" 8888bb499dec rest: Reject + sign in /blockhashbyheight/ fafd43c69192 test: Reject + sign when parsing regtest deployment params fa123afa0ef7 Reject + sign when checking -ipcfd fa479857ed23 Reject + sign in SplitHostPort fab4c2967d55 net: Reject + sign when parsing subnet mask fa89652e68fc init: Reject + sign in -*port parsing fa9c45577dfb cli: Reject + sign in -netinfo level parsing fa980413257e refactor: Use ToIntegral in CreateFromDump fa23ed7fc242 refactor: Use ToIntegral in ParseHDKeypath fa2be605fee4 ci: Enable feature_init and wallet_reorgsrestore in valgrind task 725c9f7780e0 Merge bitcoin/bitcoin#31895: doc: Improve `dependencies.md` bdc1cef1de84 Merge bitcoin/bitcoin#32507: ci: Exclude failing wallet_reorgsrestore.py from valgrind task for now fae840e94b79 rpc: Reject beginning newline in RPC docs e62423d6f151 doc: Improve dependencies.md documentation a3520f9d561e doc: Add dependency self-compilation info d1fdc84c5493 doc: Remove Linux Kernel from dep. table 135a0f0aa711 doc: Add missing top-level description to pruneblockchain RPC fa414eda0834 scripted-diff: Remove unused leading newline in RPC docs fafee8535839 remove unused GetDestinationForKey fac72fef27de remove unused GetAllDestinationsForKey fa91d57de36d remove unused AddrToPubKey 8f4fed7ec700 symbol-check: Add check for application manifest in Windows binaries 2bb6ab8f1baa ci: Add "Get bitcoind manifest" steps to Windows CI jobs 282b4913c7e4 cmake: Add application manifests when cross-compiling for Windows faecf158d997 remove unused Import* function signatures d8f05e7bf3ec qa: Fix dormant bug caused by multiple --tmpdir fa981b90f531 ci: Exclude failing wallet_reorgsrestore.py from valgrind task for now c779ee3a4044 Merge bitcoin/bitcoin#32492: test: add skip_if_running_under_valgrind() 89c7b6b97ab4 Merge bitcoin/bitcoin#32498: doc: remove Carls substitute server from Guix docs 6b4bcc162345 random: Use modern Windows randomness functions 31d3eebfb92a Merge bitcoin/bitcoin#32343: common: Close non-std fds before exec in RunCommandJSON 486bc9179072 depends: bump to latest config.sub 6880383427b4 depends: bump to latest config.guess 4b26ca0e2f1e Merge bitcoin/bitcoin#32502: wallet: Drop unused fFromMe from CWalletTx d5786bc19a9f Merge bitcoin/bitcoin#32490: refactor: Remove UB in prevector reverse iterators ee045b61efc1 rpc, psbt: Require sighashes match for descriptorprocesspsbt 2b7682c3729d psbt: use sighash type field to determine whether to remove non-witness utxos 28781b5f0670 psbt: Add sighash types to PSBT when not DEFAULT or ALL 15ce1bd73f80 psbt: Enforce sighash type of signatures matches psbt 1f71cd337ad7 wallet: Remove sighash type enforcement from FillPSBT 4c7d767e49b2 psbt: Check sighash types in SignPSBTInput and take sighash as optional a11825694856 script: Add IsPayToTaproot() d6001dcd4ada wallet: change FillPSBT to take sighash as optional e58b680923b1 psbt: Return PSBTError from SignPSBTInput 2adfd8153257 tests: Test PSBT sighash type mismatch 5a5d26d6123e psbt: Require ECDSA signatures to be validly encoded 53eb5593f0a1 Merge bitcoin/bitcoin#32305: test: add test for decoding PSBT with MuSig2 PSBT key types (BIP 373) e7a937237686 Merge bitcoin/bitcoin#32378: interfaces: refactor: move `Mining` and `BlockTemplate` implementation to miner 5bf91ba8800d wallet: Drop unused fFromMe from CWalletTx 30a94b1ab9ae test, wallet: Remove concurrent writes test b44b7c03fef0 wallet: Write best block record on unload 876a2585a8b6 wallet: Remove unnecessary database Close step on shutdown 98a1a5275c8c wallet: Remove chainStateFlushed 7fd3e1cf0c88 wallet, bench: Write a bestblock record in WalletMigration 6d3a8b195a82 wallet: Replace chainStateFlushed in loading with SetLastBlockProcessed 7bacabb204b6 wallet: Update best block record after block dis/connect 301993ebf7f8 init: drop -upnp 3b824169c776 doc: remove Carls substitute server from Guix docs f1d78a3087fb Merge bitcoin/bitcoin#31624: doc: warn that CheckBlock() underestimates sigops 516f0689b511 refactor: re-enable UBSan implicit-sign-change in serialize.h 5827e9350779 refactor: use consistent size type for serialization template parameters 62fc42d475df interfaces: refactor: move `waitTipChanged` implementation to miner c39ca9d4f7bc interfaces: move getTip implementation to miner 33dfbbdff69d Merge bitcoin/bitcoin#32483: test: fix two intermittent failures in wallet_basic.py 8a65f0389464 Merge bitcoin/bitcoin#32488: fuzz: Properly setup wallet in wallet_fees target 75a185ea3db3 test: add skip_if_running_under_valgrind() 8f4ba90b8ff4 build: document why we check for std::system faf9082a5f68 test: Fix whitespace in prevector_tests.cpp fa7f04c8a7b7 refactor: Remove UB in prevector reverse iterators fa427ffceeef fuzz: Properly setup wallet in wallet_fees target f9d8910539a2 Merge bitcoin/bitcoin#31080: fees: document non-monotonic estimation edge case 31650b458b6c Merge bitcoin/bitcoin#32386: mining: rename gbt_force and gbt_force_name bac43b957e5f Merge bitcoin/bitcoin#32312: test: Fix feature_pruning test after nTime typo fix c9ab10910cd7 Merge bitcoin/bitcoin#31444: cluster mempool: add txgraph diagrams/mining/eviction e7ad86e1ca3b test: fix another intermittent failure in wallet_basic.py 07350e204ded test: Fix intermittent failure in wallet_basic.py 46b533dfe6fc Update minisketch subtree to latest upstream bf25a0918f94 Squashed 'src/minisketch/' changes from d1e6bb8bbf..ea8f66b1ea 8309a9747a8d Merge bitcoin/bitcoin#32028: Update `secp256k1` subtree to latest master 720f201e6528 interfaces: refactor: move `waitNext` implementation to miner e6c2f4ce7a84 interfaces: refactor: move `submitSolution` implementation to miner 02d4bc776bbe interfaces: remove redundant coinbase fee check in `waitNext` fa9198af55df lint: Check for missing trailing newline fa2b2aa27c29 lint: Add archived notes to default excludes cbd8e3d51148 Merge bitcoin/bitcoin#32476: refactor: Remove unused HaveKey and HaveWatchOnly 915c1fa72c07 Update secp256k1 subtree to latest master c31fcaaad38b Squashed 'src/secp256k1/' changes from 0cdc758a56..4187a46649 fabdc5ad06bc Remove unused LegacyDataSPKM::HaveWatchOnly() fa7b7f796ac8 Remove HaveKey helper, unused after sethdseed removal 8673e8f01917 txgraph: Special-case singletons in chunk index (optimization) abdd9d35a34d txgraph: Skipping end of cluster has no impact (optimization) 604acc2c289f txgraph: Reuse discarded chunkindex entries (optimization) c734081454d7 txgraph: Introduce TxGraph::GetWorstMainChunk (feature) 394dbe21427e txgraph: Introduce BlockBuilder interface (feature) 883df3648ee9 txgraph: Generalize GetClusterRefs to support subsections (preparation) c28a602e007f txgraph: Introduce TxGraphImpl observer tracking (preparation) 9095d8ac1c31 txgraph: Maintain chunk index (preparation) 87e74e1242ec txgraph: abstract out transaction ordering (refactor) 2614fea17fe3 txgraph: Add GetMainStagingDiagrams function (feature) a5ac43d98d1a doc: Add release notes describing bitcoin wrapper executable 663a9cabf811 Merge bitcoin/bitcoin#32458: guix: move `*-check.py` scripts under contrib/guix/ 258bda80c009 doc: Mention bitcoin wrapper executable in documentation d2739d75c911 build: add bitcoin.exe to windows installer ba649c00063a ci: Run multiprocess tests through wrapper executable 29bdd743bb84 test: Support BITCOIN_CMD environment variable 9c8c68891b43 multiprocess: Add bitcoin wrapper executable 5076d20fdb70 util: Add cross-platform ExecVp and GetExePath functions 05765b8818cf Merge bitcoin/bitcoin#32472: doc: Fix typo d847e17c9656 doc: Fix typo 3edf400b1020 Merge bitcoin/bitcoin#32469: cmake: Allow `WITH_DBUS` on all Unix-like systems 59e09e0fb7b4 Merge bitcoin-core/gui#871: qt, docs: Unify term "clipboard" 46f79dde67e4 Merge bitcoin-core/gui#841: Decouple WalletModel from RPCExecutor 5b7ed460c7c1 cmake: Allow `WITH_DBUS` on all Unix-like systems 746ab19d5a13 Merge bitcoin/bitcoin#32446: build: simplify *ifaddr handling 6f7052a7b96f threading: semaphore: move CountingSemaphoreGrant to its own header fd1546989293 threading: semaphore: remove temporary convenience types 1f89e2a49a21 scripted-diff: threading: semaphore: use direct types rather than the temporary convenience ones f21365c4fc7f threading: replace CountingSemaphore with std::counting_semaphore 1acacfbad780 threading: make CountingSemaphore/CountingSemaphoreGrant template types e6ce5f9e7874 scripted-diff: rename CSemaphore and CSemaphoreGrant 793166d3810e wallet: change the write semaphore to a BinarySemaphore 6790ad27f157 scripted-diff: rename CSemaphoreGrant and CSemaphore for net d870bc94519a threading: add temporary semaphore aliases 19b1e177d673 Merge bitcoin/bitcoin#32155: miner: timelock the coinbase to the mined block's height 6c6ef58b0b22 Merge bitcoin/bitcoin#32436: test: refactor: negate signature-s using libsecp256k1 b104d4422770 test: Remove RPCOverloadWrapper 4d32c19516fd test: Replace importpubkey fe838dd391be test: Replace usage of addmultisigaddress d3142077794f test: Replace usage of importaddress fcc457573f9b test: Replace importprivkey with wallet_importprivkey 94c87bbbd06e test: Remove unnecessary importprivkey from wallet_createwallet 9a05b45da60d Merge bitcoin/bitcoin#32438: refactor: Removals after bdb removal e49a7274a214 rpc: Avoid join-split roundtrip for user:pass for auth credentials 98ff38a6f1a8 rpc: Perform HTTP user:pass split once in `RPCAuthorized` 879a17bcb1a5 rpc: Store all credentials hashed in memory 4ab9bedee9d8 rpc: Undeprecate rpcuser/rpcpassword, change message to security warning fa061bfcdb0c Remove create options from wallet tool fa2125e7b8e3 Remove unused IsSingleKey fab5e2a0948a doc: Remove note about bdb wallets eeeef88d46fe doc: fix typo in abortrescan rpc fa7e5c15a795 Remove unused LegacyDataSPKM::DeleteRecords() b070ce16966f Merge bitcoin/bitcoin#31360: depends: Avoid using helper variables in toolchain file ffff94947298 remove NotifyWatchonlyChanged fa62a013a558 remove dead flush() fa5f3e62c880 vcpkg: Remove bdb 415650cea94f guix: move *-check.py scripts under contrib/guix 5b8752198e97 Merge bitcoin/bitcoin#32454: tracing: fix invalid argument in mempool_monitor 31c5ebc40078 tracing: fix invalid argument in mempool_monitor ad5cd129f3cc Merge bitcoin/bitcoin#30660: qa: Verify clean shutdown on startup failure 7b816c4e00e2 threading: rename CSemaphore methods to match std::semaphore 1656f6dbba86 Merge bitcoin/bitcoin#32448: contrib: remove bdb exception from FORTIFY check a04f17a18824 doc: warn that CheckBlock() underestimates sigops ab878a7e7410 build: simplify *ifaddr handling 1b4ddb0c2d10 Merge bitcoin/bitcoin#32356: cmake: Respect user-provided configuration-specific flags 1ee698fde2e8 test: refactor: negate signature-s using libsecp256k1 f9dfe8d5e0d3 contrib: remove bdb exception from FORTIFY check 66c968b4b4a9 Merge bitcoin/bitcoin#32444: doc: swap "Docker image" for "container image" 646975295237 Merge bitcoin/bitcoin#32434: lint: Remove string exclusion from locale check 1372eb09c5d0 doc: swap "Docker image" for "container image" 03ebdd079302 Merge bitcoin/bitcoin#32437: crypto: disable ASan for sha256_sse4 with Clang 95bb305b96a8 Merge bitcoin/bitcoin#32429: docs: Improve `keypoolrefill` RPC docs 1b1b9f32cfdb Merge bitcoin/bitcoin#32440: test: remove bdb assert in tool_wallet.py e08e6567f2e7 test: remove assert_dump since it is not used anymore ff35a4b021e1 docs: Improve `keypoolrefill` RPC docs 4b2418675672 test: add test for decoding PSBT with MuSig2 PSBT key types (BIP 373) 8ba245cb8318 test: add constants for MuSig2 PSBT key types (BIP 373) 4b6dd9790b66 test: remove bdb assert in tool_wallet.py 97d383af6d54 Test updating non-ranged descriptor with [0,0] range succeeds 7343a1846ceb depends: Avoid using helper variables in toolchain file 0671d66a8ee0 wallet, refactor: Convert uint256 to Txid in wallet c8ed51e62be9 wallet, refactor: Convert uint256 to Txid in wallet interfaces b3214cefe6d8 qt, refactor: Convert uint256 to Txid in the GUI efac285a0d70 Merge bitcoin/bitcoin#28710: Remove the legacy wallet and BDB dependency fa24fdcb7f47 lint: Remove string exclusion from locale check 4e8ab5e00fa7 crypto: disable ASan for sha256_sse4 with Clang 6d5edfcc585b Merge bitcoin/bitcoin#32388: fuzz: Remove unused TimeoutExpired catch in fuzz runner de054df6dc32 contrib: Remove legacy wallet RPCs from bash completions 5dff04a1bba8 legacy spkm: Make IsMine() and CanProvide() private and migration only c0f3f3264ff7 wallet: Remove unused db functions 83af1a3cca7e wallet: Delete LegacySPKM 59d3e4ed34eb Merge bitcoin/bitcoin#32415: scripted-diff: adapt script error constant names in feature_taproot.py fffb272c2587 Merge bitcoin/bitcoin#29532: Refactor BnB tests 3bbdbc0a5e1b qt, docs: Unify term "clipboard" 8ede6dea0c55 wallet, rpc: Remove legacy wallet only RPCs 4de3cec28dfb test: rpcs disabled for descriptor wallets will be removed 84f671b01df4 test: Run multisig script limit test 810476f31e42 test: Remove unused options and variables, correct comments 04a7a7a28cdc build, wallet, doc: Remove BDB 44057fe38ccc Merge bitcoin/bitcoin#32287: build: Fix `macdeployqtplus` after switching to Qt 6 229943b51368 Merge bitcoin/bitcoin#32086: Shuffle depends instructions and recommend modern make for macOS 3e6ac5bf7727 refactor: validation: mark CheckBlockIndex as const 61a51eccbba1 validation: don't use GetAll() in CheckBlockIndex() edde96376a29 cmake: Respect user-provided configuration-specific flags 22cff32319de doc: recommend gmake for FreeBSD b645c520714c doc: recommend modern make for macOS depends 99e6490dc51a doc: shuffle depends instructions 1e0de7a6ba92 fees: document non-monotonic estimation edge case baa848b8d381 Merge bitcoin/bitcoin#32405: build: replace header checks with `__has_include` 3a18075aedd7 ci: Drop `-DENABLE_EXTERNAL_SIGNER=ON` configure option 719fa9f4ef68 build: Re-enable external signer support for Windows 6e5fc2bf9b18 test: Reintroduce Windows support in `system_tests/run_command` test 53ccb75f0c47 Merge bitcoin/bitcoin#32358: subprocess: Backport upstream changes fa2c5484296f Merge bitcoin/bitcoin#32417: doc: Explain that .gitignore is not for IDE-specific excludes fada115cbeaa doc: Explain that .gitignore is not for IDE-specific excludes b5f580c58025 scripted-diff: adapt script error constant names in feature_taproot.py eba5f9c4b63f Merge bitcoin/bitcoin#32403: test: remove Boost SIGCHLD workaround. e1f543823b30 build: replace header checks with __has_include 3add6ab9adcd test: remove Boost SIGCHLD workaround. cd95c9d6a7ec subprocess: check and handle fcntl(F_GETFD) failure b7288decdf53 subprocess: Proper implementation of wait() on Windows 7423214d8dee subprocess: Do not escape double quotes for command line arguments on Windows bb9ffea53fb0 subprocess: Explicitly define move constructor of Streams class 174bd43f2e46 subprocess: Avoid leaking POSIX name aliases beyond `subprocess.h` 7997b7656f99 subprocess: Fix cross-compiling with mingw toolchain 647630462f10 subprocess: Get Windows return code in wait() d3f511b4583b subprocess: Fix string_arg when used with rref 2fd3f2fec67a subprocess: Fix memory leaks 5b8046a6e893 Merge bitcoin/bitcoin#30611: validation: write chainstate to disk every hour fc6346dbc8dc Merge bitcoin/bitcoin#32389: doc: Fix test_bitcoin path a0eed55398f8 run_command: Enable close_fds option to avoid lingering fds c7c356a44865 cpp-subprocess: Iterate through /proc/self/fd for close_fds option on Linux 4f5e04da1350 Revert "remove unneeded close_fds option from cpp-subprocess" 6cbc28b8dd62 doc: Fix test_bitcoin path 85368aafa0d1 test: Run simple tests at various feerates d610951c1546 test: Recreate BnB iteration exhaustion test 2a1b2754f14a test: Remove redundant repeated test 4781f5c8be55 test: Recreate simple BnB failure tests a94030ae985b test: Recreate BnB clone skipping test 7db6f012c08c test: Move BnB feerate sensitivity tests 2bafc462610c test: Recreate simple BnB success tests e976bd304501 validation: add randomness to periodic write interval 2e2f41068128 refactor: replace m_last_write with m_next_write b557fa7a175f refactor: rename fDoFullFlush to should_write d73bd9fbe483 validation: write chainstate to disk every hour 68ac9f116c02 Merge bitcoin/bitcoin#32383: util: Remove `fsbridge::get_filesystem_error_message()` fa4804009ceb fuzz: Remove unused TimeoutExpired catch in fuzz runner 0750249289c0 mining: document gbt_rule_value helper 5e87c3ec094d scripted-diff: rename gbt_force and gbt_force_name 97eaadc3bf9f util: Remove `fsbridge::get_filesystem_error_message()` 14b8dfb2bd5e Merge bitcoin/bitcoin#31398: wallet: refactor: various master key encryption cleanups a60445cd04c8 Merge bitcoin/bitcoin#32355: Bugfix: Miner: Don't reuse block_reserved_weight for "block is full enough to give up" weight delta 2d5b4244147b Merge bitcoin/bitcoin#32351: test: avoid stack overflow in `FindChallenges` via manual iteration 0ed5f37afef1 Merge bitcoin/bitcoin#31014: net: Use GetAdaptersAddresses to get local addresses on Windows 7a4a2a38ea37 Merge bitcoin/bitcoin#27826: validation: log which peer sent us a header 4694732bc4c3 Merge bitcoin/bitcoin#32338: net: remove unnecessary check from AlreadyConnectedToAddress() 7db096121d37 Merge bitcoin/bitcoin#29039: versionbits refactoring 51d76634fb57 Merge bitcoin/bitcoin#32365: descriptors: Reject + sign while parsing unsigned c5e44a043563 Merge bitcoin/bitcoin#32369: test: Use the correct node for doubled keypath test 32d55e28af69 test: Use the correct node for doubled keypath test 65714c162c16 Merge bitcoin/bitcoin#32327: test: Add missing check for empty stderr in util tester a4eee6d50be0 Merge bitcoin/bitcoin#29124: test: Test that migration automatically repairs corrupted metadata with doubled derivation path af6cffa36d12 Merge bitcoin/bitcoin#32350: test: Slim down previous releases bdb check 33e6538b3076 Merge bitcoin/bitcoin#32360: test: Force named args for RPCOverloadWrapper optional args 3a29ba33dca6 Merge bitcoin/bitcoin#32357: depends: Fix cross-compiling `qt` package from macOS to Windows fa655da15987 test: [refactor] Use ToIntegral in CheckInferDescriptor fa55dd01df83 descriptors: Reject + sign when parsing multi threshold fa6f77ed3c15 descriptors: Reject + sign in ParseKeyPathNum 7e8ef959d063 refactor: Fix Sonar rule `cpp:S4998` - avoid unique_ptr const& as parameter e400ac53524d refactor: simplify repeated comparisons in `FindChallenges` f670836112c0 test: remove old recursive `FindChallenges_recursive` implementation b80d0bdee460 test: avoid stack overflow in `FindChallenges` via manual iteration fa48be3ba443 test: Force named args for RPCOverloadWrapper optional args aaaa45399ca3 test: Remove unused createwallet_passthrough d05481df644c refactor: validation: mark SnapshotBase as const f409444d0243 Merge bitcoin/bitcoin#32071: build: Drop option to disable hardening. cccc1f4e9190 test: Remove unused RPCOverloadWrapper is_cli field d62c2d82e14d Merge bitcoin/bitcoin#32353: doc: Fix fuzz test_runner.py path 10845cd7cc89 qa: Add feature_framework_startup_failures.py 35e57fbe336c depends: Fix cross-compiling `qt` package from macOS to Windows d2ac748e9e7a Merge bitcoin-core/gui#864: Crash fix, disconnect numBlocksChanged() signal during shutdown 524f981bb873 Bugfix: Miner: Don't reuse block_reserved_weight for "block is full enough to give up" weight delta 84de8c93e7d4 ci: Add `deploy` target for native macOS CI job fad57e9e0fe2 build: Fix `macdeployqtplus` after switching to Qt 6 de90b47ea098 Merge bitcoin-core/gui#868: Replace stray tfm::format to cerr with qWarning a58cb3b1c12c qa: sanity check mined block have their coinbase timelocked to height 8f2078af6a55 miner: timelock coinbase transactions 788aeebf3435 qa: use prev height as nLockTime for coinbase txs created in unit tests c76dbe9b8b6f qa: timelock coinbase transactions created in fuzz targets 9c94069d8b6c contrib: timelock coinbase transactions in signet miner a5f52cfcc400 qa: timelock coinbase transactions created in functional tests 61f238e84ac6 doc: Fix fuzz test_runner.py path c7e2b9e26444 tests: Test migration cleans up bad inactive chain derivation path fa58f40b898b test: Slim down previous releases bdb check f1b142856a4e test: Same addr, diff port is already connected 94e85a82a753 net: remove unnecessary check from AlreadyConnectedToAddress() 28e282ef9ae9 qa: assert_raises_message() - Stop assuming certain structure for exceptions 80e6ad9e3023 Merge bitcoin/bitcoin#31250: wallet: Disable creating and loading legacy wallets 971952588dae Merge bitcoin/bitcoin#32242: guix: Remove unused `file` package ff69046e664f Merge bitcoin/bitcoin#32215: depends: Fix cross-compiling on macOS 2ae1788dd46a Skip range verification for non-ranged desc 4eee328a9820 Merge bitcoin/bitcoin#32318: Fix failing util_time_GetTime test on Windows 71656bdfaa6b gui: crash fix, disconnect numBlocksChanged() signal during shutdown 3dbd50a576be Fix failing util_time_GetTime test on Windows edd46566bd66 qt: Replace stray tfm::format to cerr with qWarning 458720e5e98c Merge bitcoin/bitcoin#32336: test: Suppress upstream `-Wduplicate-decl-specifier` in bpfcc facb9b327b9d scripted-diff: Use bpf_cflags fa0c1baaf898 test: Add imports for util bpf_cflags 9efe54668858 Merge bitcoin/bitcoin#31835: validation: set BLOCK_FAILED_CHILD correctly bd158ab4e35c Merge bitcoin/bitcoin#32023: wallet: removed duplicate call to GetDescriptorScriptPubKeyMan 17bb63f9f9b0 wallet: Disallow loading legacy wallets 9f04e02ffaee wallet: Disallow creating legacy wallets 6b247279b72d wallet: Disallow legacy wallet creation from the wallet tool 5e93b1fd6c1e bench: Remove WalletLoadingLegacy benchmark 56f959d829e9 wallet: Remove wallettool salvage 7a41c939f05f wallet: Remove -format and bdb from wallet tool's createfromdump c847dee1488a test: remove legacy wallet functional tests 20a9173717b1 test: Remove legacy wallet tests from wallet_reindex.py 446d480cb22c test: Remove legacy wallet tests from wallet_backwards_compatibility.py aff80298d05c test: wallet_signer.py bdb will be removed f94f9399ac47 test: Remove legacy wallet unit tests d9ac9dbd8ef5 tests, gui: Use descriptors watchonly wallet for watchonly test 9a4c92eb9ac2 Merge bitcoin/bitcoin#32226: ci: switch to LLVM 20 in tidy job 82d1e94838ee Merge bitcoin/bitcoin#32310: test: Run all benchmarks in the sanity check dda2d4e17662 Merge bitcoin/bitcoin#32113: fuzz: enable running fuzz test cases in Debug mode faca46b0421b test: Run all benchmarks in the sanity check fadf12a56c29 test: Add missing check for empty stderr in util tester 08aa7fe23263 ci: clang-tidy 20 2b85d31bcc2f refactor: starts/ends_with changes for clang-tidy 20 3669ecd4ccd8 doc: Document fuzz build options c1d01f59acc2 fuzz: enable running fuzz test cases in Debug mode 1f639efca5e7 qa: Work around Python socket timeout issue 2aa63d511aff test: Use uninvolved pruned node in feature_pruning undo test 772ba7f9ce09 test: Fix nTimes typo in feature_pruning test 9b24a403fae4 qa: Only allow calling TestNode.stop() after connecting 6ad21b4c0114 qa: Include ignored errors in RPC connection timeout 879243e81fd5 qa refactor: wait_for_rpc_connection - Treat OSErrors the same 513e2020a9ac guix: Remove unused `file` package 938208d91a27 build: Resolve `@rpath` in `macdeployqtplus` abe43dfadd63 doc: release note for #27826 f9fa28788e63 Use LogBlockHeader for compact blocks bad7c9147931 Log which peer sent us a header 9d3e39c29c31 Log block header in net_processing d0cce4172c04 depends: Fix `mv` command compatibility with macOS 690f5da15a1e depends: Specify Objective C/C++ compilers for `native_qt` package 3c3548a70eed validation: clarify final |= BLOCK_FAILED_VALID in InvalidateBlock aac5488909f7 validation: correctly update BlockStatus for invalid block descendants 9e29653b424b test: check BlockStatus when InvalidateBlock is used c99667583dd9 validation: fix traversal condition to mark BLOCK_FAILED_CHILD 77e553ab6a0a build: refactor: hardening flags -> core_interface 00ba3ba30341 build: Drop option for disabling hardening f57db75e91de build: Use `-z noseparate-code` on NetBSD < 11.0 55b931934a34 removed duplicate calling of GetDescriptorScriptPubKeyMan e3014017bacf test: add IsActiveAfter tests for versionbits 60950f77c35e versionbits: docstrings for BIP9Info b9d4d5f66a5a net: Use GetAdaptersAddresses to get local addresses on Windows a8333fc9ff9a scripted-diff: wallet: rename plain and encrypted master key variables 5a92077fd531 wallet: refactor: dedup master key decryption 846545947cd3 wallet: refactor: dedup master key encryption / derivation rounds setting a6d9b415aa3a wallet: refactor: introduce `CMasterKey::DEFAULT_DERIVE_ITERATIONS` constant 62c209f50d9c wallet: doc: remove mentions of unavailable scrypt derivation method 7565563bc7a5 tests: refactor versionbits fuzz test 2e4e9b9608c7 tests: refactor versionbits unit test 525c00f91bb2 versionbits: Expose VersionBitsConditionChecker via impl header e74a7049b477 versionbits: Expose StateName function d00d1ed52c8e versionbits: Split out internal details into impl header 37b9b67a3955 versionbits: Simplify VersionBitsCache API 1198e7d2fd66 versionbits: Move BIP9 status logic for getblocktemplate to versionbits b1e967c3ec92 versionbits: Move getdeploymentinfo logic to versionbits 3bd32c20550e versionbits: Move WarningBits logic from validation to versionbits 5da119e5d0e6 versionbits: Change BIP9Stats to uint32_t types a679040ec19e consensus/params: Move version bits period/threshold to bip9 param 0ad7d7abdbcf test: chainstate write test for periodic chainstate flush e9d617095d4c versionbits: Remove params from AbstractThresholdConditionChecker 9bc41f1b48b2 versionbits: Use std::array instead of C-style arrays 002b792b9a85 gui: decouple WalletModel from RPCExecutor REVERT: 4a4eeb94339b kernel: Fix bitcoin-chainstate for windows REVERT: 9eb5d74b2d03 kernel: Add Purpose section to header documentation REVERT: 7cf01306523b kernel: Add pure kernel bitcoin-chainstate REVERT: 51aad49acdfe kernel: Add functions to get the block hash from a block REVERT: a6ed3dec4d1d kernel: Add block index utility functions to C header REVERT: 7aaefbbb3937 kernel: Add function to read block undo data from disk to C header REVERT: 9535ffadba5c kernel: Add functions to read block from disk to C header REVERT: 321ce88607fd kernel: Add function for copying block data to C header REVERT: a15d107250f8 kernel: Add functions for the block validation state to C header REVERT: f9f9a86402b1 kernel: Add validation interface to C header REVERT: bac152a4fbe5 kernel: Add interrupt function to C header REVERT: e1f204cb0de0 kernel: Add import blocks function to C header REVERT: 75f25fa1b0b4 kernel: Add chainstate load options for in-memory dbs in C header REVERT: 68acd5e0e904 kernel: Add options for reindexing in C header REVERT: 04be23481105 kernel: Add block validation to C header REVERT: 3cdc538d77d0 kernel: Add chainstate loading when instantiating a ChainstateManager REVERT: a5a47d95e597 kernel: Add chainstate manager option for setting worker threads REVERT: 5052b9bd823b kernel: Add chainstate manager object to C header REVERT: 82f4769656b1 kernel: Add notifications context option to C header REVERT: 7e32f6a9e897 kernel: Add chain params context option to C header REVERT: af442d0d6cb1 kernel: Add kernel library context object REVERT: e1a6c1b5b928 kernel: Add logging to kernel library C header REVERT: 3339e6ca6a5f kernel: Introduce initial kernel C header API git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: 1417e0b3b1b03dd014a3459c10a5ae7ab0c3687f
1 parent a9c46ce commit cb3cd9b

File tree

534 files changed

+18354
-17103
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

534 files changed

+18354
-17103
lines changed

.github/ci-test-each-commit-exec.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ set -o errexit -o pipefail -o xtrace
1212
echo "Running test-one-commit on $( git log -1 )"
1313

1414
# Use clang++, because it is a bit faster and uses less memory than g++
15-
CC=clang CXX=clang++ cmake -B build -DWERROR=ON -DWITH_ZMQ=ON -DBUILD_GUI=ON -DBUILD_BENCH=ON -DBUILD_FUZZ_BINARY=ON -DWITH_BDB=ON -DWITH_USDT=ON -DBUILD_KERNEL_LIB=ON -DBUILD_KERNEL_TEST=ON -DCMAKE_CXX_FLAGS='-Wno-error=unused-member-function'
15+
CC=clang CXX=clang++ cmake -B build -DWERROR=ON -DWITH_ZMQ=ON -DBUILD_GUI=ON -DBUILD_BENCH=ON -DBUILD_FUZZ_BINARY=ON -DWITH_USDT=ON -DBUILD_KERNEL_LIB=ON -DBUILD_KERNEL_TEST=ON -DCMAKE_CXX_FLAGS='-Wno-error=unused-member-function'
1616

17-
cmake --build build -j "$( nproc )" && ctest --output-on-failure --stop-on-failure --test-dir build -j "$( nproc )"
17+
cmake --build build -j "$( nproc )"
18+
19+
ctest --output-on-failure --stop-on-failure --test-dir build -j "$( nproc )"
1820

1921
./build/test/functional/test_runner.py -j $(( $(nproc) * 2 )) --combinedlogslen=99999999

.github/workflows/ci.yml

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ jobs:
7777
git config user.name "CI"
7878
- run: |
7979
sudo apt-get update
80-
sudo apt-get install clang ccache build-essential cmake ninja-build pkgconf python3-zmq libevent-dev libboost-dev libsqlite3-dev libdb++-dev systemtap-sdt-dev libzmq3-dev qt6-base-dev qt6-tools-dev qt6-l10n-tools libqrencode-dev -y
80+
sudo apt-get install clang ccache build-essential cmake ninja-build pkgconf python3-zmq libevent-dev libboost-dev libsqlite3-dev systemtap-sdt-dev libzmq3-dev qt6-base-dev qt6-tools-dev qt6-l10n-tools libqrencode-dev -y
8181
- name: Compile and run tests
8282
run: |
8383
# Run tests on commits after the last merge commit and before the PR head commit
@@ -175,7 +175,7 @@ jobs:
175175
job-type: [standard, fuzz]
176176
include:
177177
- job-type: standard
178-
generate-options: '-DBUILD_GUI=ON -DWITH_BDB=ON -DWITH_ZMQ=ON -DBUILD_BENCH=ON -DWERROR=ON -DBUILD_KERNEL_LIB=ON -DBUILD_UTIL_CHAINSTATE=ON -DBUILD_KERNEL_TEST=OFF'
178+
generate-options: '-DBUILD_GUI=ON -DWITH_ZMQ=ON -DBUILD_BENCH=ON -DBUILD_KERNEL_LIB=ON -DBUILD_UTIL_CHAINSTATE=ON -DBUILD_KERNEL_TEST=OFF -DWERROR=ON'
179179
job-name: 'Windows native, VS 2022'
180180
- job-type: fuzz
181181
generate-options: '-DVCPKG_MANIFEST_NO_DEFAULT_FEATURES=ON -DVCPKG_MANIFEST_FEATURES="wallet" -DBUILD_GUI=OFF -DBUILD_FOR_FUZZING=ON -DWERROR=ON'
@@ -237,6 +237,15 @@ jobs:
237237
run: |
238238
cmake --build . -j $NUMBER_OF_PROCESSORS --config Release
239239
240+
- name: Get bitcoind manifest
241+
if: matrix.job-type == 'standard'
242+
working-directory: build
243+
run: |
244+
mt.exe -nologo -inputresource:bin/Release/bitcoind.exe -out:bitcoind.manifest
245+
cat bitcoind.manifest
246+
echo
247+
mt.exe -nologo -inputresource:bin/Release/bitcoind.exe -validate_manifest
248+
240249
- name: Run test suite
241250
if: matrix.job-type == 'standard'
242251
working-directory: build
@@ -348,6 +357,20 @@ jobs:
348357
- name: Run bitcoind.exe
349358
run: ./bin/bitcoind.exe -version
350359

360+
- name: Find mt.exe tool
361+
shell: pwsh
362+
run: |
363+
$sdk_dir = (Get-ItemProperty 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots' -Name KitsRoot10).KitsRoot10
364+
$sdk_latest = (Get-ChildItem "$sdk_dir\bin" -Directory | Where-Object { $_.Name -match '^\d+\.\d+\.\d+\.\d+$' } | Sort-Object Name -Descending | Select-Object -First 1).Name
365+
"MT_EXE=${sdk_dir}bin\${sdk_latest}\x64\mt.exe" >> $env:GITHUB_ENV
366+
367+
- name: Get bitcoind manifest
368+
shell: pwsh
369+
run: |
370+
& $env:MT_EXE -nologo -inputresource:bin\bitcoind.exe -out:bitcoind.manifest
371+
Get-Content bitcoind.manifest
372+
& $env:MT_EXE -nologo -inputresource:bin\bitcoind.exe -validate_manifest
373+
351374
- name: Run unit tests
352375
# Can't use ctest here like other jobs as we don't have a CMake build tree.
353376
run: |

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# Patterns that are specific to a text editor, IDE, operating system, or user
2+
# environment are not added here. They should be added to your local gitignore
3+
# file instead:
4+
# https://docs.github.com/en/get-started/git-basics/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer
5+
16
# Build subdirectories.
27
/*build*
38
!/build-aux

CMakeLists.txt

Lines changed: 71 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ if(POLICY CMP0171)
1919
cmake_policy(SET CMP0171 NEW)
2020
endif()
2121

22+
# When adjusting CMake flag variables, we must not override those explicitly
23+
# set by the user. These are a subset of the CACHE_VARIABLES property.
24+
get_directory_property(precious_variables CACHE_VARIABLES)
25+
2226
#=============================
2327
# Project / Package metadata
2428
#=============================
@@ -90,6 +94,7 @@ endif()
9094
#=============================
9195
include(CMakeDependentOption)
9296
# When adding a new option, end the <help_text> with a full stop for consistency.
97+
option(BUILD_BITCOIN_BIN "Build bitcoin executable." ON)
9398
option(BUILD_DAEMON "Build bitcoind executable." ON)
9499
option(BUILD_GUI "Build bitcoin-qt executable." OFF)
95100
option(BUILD_CLI "Build bitcoin-cli executable." ON)
@@ -111,25 +116,8 @@ if(ENABLE_WALLET)
111116
find_package(SQLite3 3.7.17 REQUIRED)
112117
endif()
113118
endif()
114-
option(WITH_BDB "Enable Berkeley DB (BDB) wallet support." OFF)
115-
cmake_dependent_option(WARN_INCOMPATIBLE_BDB "Warn when using a Berkeley DB (BDB) version other than 4.8." ON "WITH_BDB" OFF)
116-
if(WITH_BDB)
117-
find_package(BerkeleyDB 4.8 MODULE REQUIRED)
118-
set(USE_BDB ON)
119-
if(NOT BerkeleyDB_VERSION VERSION_EQUAL 4.8)
120-
message(WARNING "Found Berkeley DB (BDB) other than 4.8.\n"
121-
"BDB (legacy) wallets opened by this build will not be portable!"
122-
)
123-
if(WARN_INCOMPATIBLE_BDB)
124-
message(WARNING "If this is intended, pass \"-DWARN_INCOMPATIBLE_BDB=OFF\".\n"
125-
"Passing \"-DWITH_BDB=OFF\" will suppress this warning."
126-
)
127-
endif()
128-
endif()
129-
endif()
130119
cmake_dependent_option(BUILD_WALLET_TOOL "Build bitcoin-wallet tool." ${BUILD_TESTS} "ENABLE_WALLET" OFF)
131120

132-
option(ENABLE_HARDENING "Attempt to harden the resulting executables." ON)
133121
option(REDUCE_EXPORTS "Attempt to reduce exported symbols in the resulting executables." OFF)
134122
option(WERROR "Treat compiler warnings as errors." OFF)
135123
option(WITH_CCACHE "Attempt to use ccache for compiling." ON)
@@ -144,15 +132,15 @@ if(WITH_USDT)
144132
find_package(USDT MODULE REQUIRED)
145133
endif()
146134

147-
cmake_dependent_option(ENABLE_EXTERNAL_SIGNER "Enable external signer support." ON "NOT WIN32" OFF)
135+
option(ENABLE_EXTERNAL_SIGNER "Enable external signer support." ON)
148136

149137
cmake_dependent_option(WITH_QRENCODE "Enable QR code support." ON "BUILD_GUI" OFF)
150138
if(WITH_QRENCODE)
151139
find_package(QRencode MODULE REQUIRED)
152140
set(USE_QRCODE TRUE)
153141
endif()
154142

155-
cmake_dependent_option(WITH_DBUS "Enable DBus support." ON "CMAKE_SYSTEM_NAME STREQUAL \"Linux\" AND BUILD_GUI" OFF)
143+
cmake_dependent_option(WITH_DBUS "Enable DBus support." ON "NOT CMAKE_SYSTEM_NAME MATCHES \"(Windows|Darwin)\" AND BUILD_GUI" OFF)
156144

157145
option(ENABLE_IPC "Build multiprocess bitcoin-node and bitcoin-gui executables in addition to monolithic bitcoind and bitcoin-qt executables. Requires libmultiprocess library. Experimental." OFF)
158146
cmake_dependent_option(WITH_EXTERNAL_LIBMULTIPROCESS "Build with external libmultiprocess library instead of with local git subtree when ENABLE_IPC is enabled. This is not normally recommended, but can be useful for developing libmultiprocess itself." OFF "ENABLE_IPC" OFF)
@@ -216,6 +204,7 @@ target_link_libraries(core_interface INTERFACE
216204

217205
if(BUILD_FOR_FUZZING)
218206
message(WARNING "BUILD_FOR_FUZZING=ON will disable all other targets and force BUILD_FUZZ_BINARY=ON.")
207+
set(BUILD_BITCOIN_BIN OFF)
219208
set(BUILD_DAEMON OFF)
220209
set(BUILD_CLI OFF)
221210
set(BUILD_TX OFF)
@@ -291,6 +280,10 @@ if(WIN32)
291280
/Zc:__cplusplus
292281
/sdl
293282
)
283+
target_link_options(core_interface INTERFACE
284+
# We embed our own manifests.
285+
/MANIFEST:NO
286+
)
294287
# Improve parallelism in MSBuild.
295288
# See: https://devblogs.microsoft.com/cppblog/improved-parallelism-in-msbuild/.
296289
list(APPEND CMAKE_VS_GLOBALS "UseMultiToolTask=true")
@@ -504,63 +497,71 @@ try_append_cxx_flags("-fmacro-prefix-map=A=B" TARGET core_interface SKIP_LINK
504497
# -fstack-reuse=none for all gcc builds. (Only gcc understands this flag).
505498
try_append_cxx_flags("-fstack-reuse=none" TARGET core_interface)
506499

507-
if(ENABLE_HARDENING)
508-
add_library(hardening_interface INTERFACE)
509-
target_link_libraries(core_interface INTERFACE hardening_interface)
510-
if(MSVC)
511-
try_append_linker_flag("/DYNAMICBASE" TARGET hardening_interface)
512-
try_append_linker_flag("/HIGHENTROPYVA" TARGET hardening_interface)
513-
try_append_linker_flag("/NXCOMPAT" TARGET hardening_interface)
514-
else()
500+
if(MSVC)
501+
try_append_linker_flag("/DYNAMICBASE" TARGET core_interface)
502+
try_append_linker_flag("/HIGHENTROPYVA" TARGET core_interface)
503+
try_append_linker_flag("/NXCOMPAT" TARGET core_interface)
504+
else()
515505

516-
# _FORTIFY_SOURCE requires that there is some level of optimization,
517-
# otherwise it does nothing and just creates a compiler warning.
518-
try_append_cxx_flags("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3"
519-
RESULT_VAR cxx_supports_fortify_source
520-
SOURCE "int main() {
521-
# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
522-
#error
523-
#endif
524-
}"
506+
# _FORTIFY_SOURCE requires that there is some level of optimization,
507+
# otherwise it does nothing and just creates a compiler warning.
508+
try_append_cxx_flags("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3"
509+
RESULT_VAR cxx_supports_fortify_source
510+
SOURCE "int main() {
511+
# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
512+
#error
513+
#endif
514+
}"
515+
)
516+
if(cxx_supports_fortify_source)
517+
target_compile_options(core_interface INTERFACE
518+
-U_FORTIFY_SOURCE
519+
-D_FORTIFY_SOURCE=3
525520
)
526-
if(cxx_supports_fortify_source)
527-
target_compile_options(hardening_interface INTERFACE
528-
-U_FORTIFY_SOURCE
529-
-D_FORTIFY_SOURCE=3
530-
)
531-
endif()
532-
unset(cxx_supports_fortify_source)
533-
534-
try_append_cxx_flags("-Wstack-protector" TARGET hardening_interface SKIP_LINK)
535-
try_append_cxx_flags("-fstack-protector-all" TARGET hardening_interface)
536-
try_append_cxx_flags("-fcf-protection=full" TARGET hardening_interface)
521+
endif()
522+
unset(cxx_supports_fortify_source)
537523

538-
if(MINGW)
539-
# stack-clash-protection is a no-op for Windows.
540-
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90458 for more details.
541-
else()
542-
try_append_cxx_flags("-fstack-clash-protection" TARGET hardening_interface)
543-
endif()
524+
try_append_cxx_flags("-Wstack-protector" TARGET core_interface SKIP_LINK)
525+
try_append_cxx_flags("-fstack-protector-all" TARGET core_interface)
526+
try_append_cxx_flags("-fcf-protection=full" TARGET core_interface)
544527

545-
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
546-
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
547-
try_append_cxx_flags("-mbranch-protection=bti" TARGET hardening_interface SKIP_LINK)
548-
else()
549-
try_append_cxx_flags("-mbranch-protection=standard" TARGET hardening_interface SKIP_LINK)
550-
endif()
551-
endif()
528+
if(MINGW)
529+
# stack-clash-protection is a no-op for Windows.
530+
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90458 for more details.
531+
else()
532+
try_append_cxx_flags("-fstack-clash-protection" TARGET core_interface)
533+
endif()
552534

553-
try_append_linker_flag("-Wl,--enable-reloc-section" TARGET hardening_interface)
554-
try_append_linker_flag("-Wl,--dynamicbase" TARGET hardening_interface)
555-
try_append_linker_flag("-Wl,--nxcompat" TARGET hardening_interface)
556-
try_append_linker_flag("-Wl,--high-entropy-va" TARGET hardening_interface)
557-
try_append_linker_flag("-Wl,-z,relro" TARGET hardening_interface)
558-
try_append_linker_flag("-Wl,-z,now" TARGET hardening_interface)
559-
try_append_linker_flag("-Wl,-z,separate-code" TARGET hardening_interface)
535+
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
560536
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
561-
try_append_linker_flag("-Wl,-fixup_chains" TARGET hardening_interface)
537+
try_append_cxx_flags("-mbranch-protection=bti" TARGET core_interface SKIP_LINK)
538+
else()
539+
try_append_cxx_flags("-mbranch-protection=standard" TARGET core_interface SKIP_LINK)
562540
endif()
563541
endif()
542+
543+
try_append_linker_flag("-Wl,--enable-reloc-section" TARGET core_interface)
544+
try_append_linker_flag("-Wl,--dynamicbase" TARGET core_interface)
545+
try_append_linker_flag("-Wl,--nxcompat" TARGET core_interface)
546+
try_append_linker_flag("-Wl,--high-entropy-va" TARGET core_interface)
547+
try_append_linker_flag("-Wl,-z,relro" TARGET core_interface)
548+
try_append_linker_flag("-Wl,-z,now" TARGET core_interface)
549+
# TODO: This can be dropped once Bitcoin Core no longer supports
550+
# NetBSD 10.0 or if upstream fix is backported.
551+
# NetBSD's dynamic linker ld.elf_so < 11.0 supports exactly 2
552+
# `PT_LOAD` segments and binaries linked with `-z separate-code`
553+
# have 4 `PT_LOAD` segments.
554+
# Relevant discussions:
555+
# - https://github.com/bitcoin/bitcoin/pull/28724#issuecomment-2589347934
556+
# - https://mail-index.netbsd.org/tech-userlevel/2023/01/05/msg013666.html
557+
if(CMAKE_SYSTEM_NAME STREQUAL "NetBSD" AND CMAKE_SYSTEM_VERSION VERSION_LESS 11.0)
558+
try_append_linker_flag("-Wl,-z,noseparate-code" TARGET core_interface)
559+
else()
560+
try_append_linker_flag("-Wl,-z,separate-code" TARGET core_interface)
561+
endif()
562+
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
563+
try_append_linker_flag("-Wl,-fixup_chains" TARGET core_interface)
564+
endif()
564565
endif()
565566

566567
if(REDUCE_EXPORTS)
@@ -650,6 +651,7 @@ message("\n")
650651
message("Configure summary")
651652
message("=================")
652653
message("Executables:")
654+
message(" bitcoin ............................. ${BUILD_BITCOIN_BIN}")
653655
message(" bitcoind ............................ ${BUILD_DAEMON}")
654656
if(BUILD_DAEMON AND ENABLE_IPC)
655657
set(bitcoin_daemon_status ON)
@@ -673,9 +675,6 @@ message(" libbitcoinkernel (experimental) ..... ${BUILD_KERNEL_LIB}")
673675
message(" kernel-test (experimental) .......... ${BUILD_KERNEL_TEST}")
674676
message("Optional features:")
675677
message(" wallet support ...................... ${ENABLE_WALLET}")
676-
if(ENABLE_WALLET)
677-
message(" - legacy wallets (Berkeley DB) ..... ${WITH_BDB}")
678-
endif()
679678
message(" external signer ..................... ${ENABLE_EXTERNAL_SIGNER}")
680679
message(" ZeroMQ .............................. ${WITH_ZMQ}")
681680
if(ENABLE_IPC)
@@ -690,7 +689,7 @@ endif()
690689
message(" IPC ................................. ${ipc_status}")
691690
message(" USDT tracing ........................ ${WITH_USDT}")
692691
message(" QR code (GUI) ....................... ${WITH_QRENCODE}")
693-
message(" DBus (GUI, Linux only) .............. ${WITH_DBUS}")
692+
message(" DBus (GUI) .......................... ${WITH_DBUS}")
694693
message("Tests:")
695694
message(" test_bitcoin ........................ ${BUILD_TESTS}")
696695
message(" test_bitcoin-qt ..................... ${BUILD_GUI_TESTS}")
@@ -706,7 +705,6 @@ message("Cross compiling ....................... ${cross_status}")
706705
message("C++ compiler .......................... ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}, ${CMAKE_CXX_COMPILER}")
707706
include(FlagsSummary)
708707
flags_summary()
709-
message("Attempt to harden executables ......... ${ENABLE_HARDENING}")
710708
message("Treat compiler warnings as errors ..... ${WERROR}")
711709
message("Use ccache for compiling .............. ${WITH_CCACHE}")
712710
message("\n")

CMakePresets.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,7 @@
7777
"BUILD_UTIL_CHAINSTATE": "ON",
7878
"BUILD_WALLET_TOOL": "ON",
7979
"ENABLE_EXTERNAL_SIGNER": "ON",
80-
"ENABLE_HARDENING": "ON",
8180
"ENABLE_WALLET": "ON",
82-
"WARN_INCOMPATIBLE_BDB": "OFF",
83-
"WITH_BDB": "ON",
8481
"ENABLE_IPC": "ON",
8582
"WITH_QRENCODE": "ON",
8683
"WITH_USDT": "ON",

INSTALL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
See [doc/build-\*.md](/doc)
1+
See [doc/build-\*.md](/doc)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ License
1919
-------
2020

2121
Bitcoin Core is released under the terms of the MIT license. See [COPYING](COPYING) for more
22-
information or see https://opensource.org/licenses/MIT.
22+
information or see https://opensource.org/license/MIT.
2323

2424
Development Process
2525
-------------------

ci/test/00_setup_env_i686_multiprocess.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ export BITCOIN_CONFIG="\
2020
-DCMAKE_CXX_COMPILER='clang++;-m32' \
2121
-DAPPEND_CPPFLAGS='-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE' \
2222
"
23-
export BITCOIND=bitcoin-node # Used in functional tests
23+
export BITCOIN_CMD="bitcoin -m" # Used in functional tests

ci/test/00_setup_env_mac_native.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export LC_ALL=C.UTF-8
99
# Homebrew's [email protected] is marked as externally managed (PEP 668).
1010
# Therefore, `--break-system-packages` is needed.
1111
export PIP_PACKAGES="--break-system-packages zmq"
12-
export GOAL="install"
12+
export GOAL="install deploy"
1313
export CMAKE_GENERATOR="Ninja"
1414
export BITCOIN_CONFIG="-DBUILD_GUI=ON -DWITH_ZMQ=ON -DBUILD_KERNEL_LIB=ON -DBUILD_KERNEL_TEST=ON -DREDUCE_EXPORTS=ON"
1515
export CI_OS_NAME="macos"

ci/test/00_setup_env_native_asan.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ fi
2020

2121
export CONTAINER_NAME=ci_native_asan
2222
export APT_LLVM_V="20"
23-
export PACKAGES="systemtap-sdt-dev clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev python3-zmq qt6-base-dev qt6-tools-dev qt6-l10n-tools libevent-dev libboost-dev libdb5.3++-dev libzmq3-dev libqrencode-dev libsqlite3-dev ${BPFCC_PACKAGE}"
23+
export PACKAGES="systemtap-sdt-dev clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev python3-zmq qt6-base-dev qt6-tools-dev qt6-l10n-tools libevent-dev libboost-dev libzmq3-dev libqrencode-dev libsqlite3-dev ${BPFCC_PACKAGE}"
2424
export NO_DEPENDS=1
2525
export GOAL="install"
2626
export BITCOIN_CONFIG="\
27-
-DWITH_USDT=ON -DWITH_ZMQ=ON -DWITH_BDB=ON -DWARN_INCOMPATIBLE_BDB=OFF -DBUILD_GUI=ON \
27+
-DWITH_USDT=ON -DWITH_ZMQ=ON -DBUILD_GUI=ON \
2828
-DSANITIZERS=address,float-divide-by-zero,integer,undefined \
2929
-DCMAKE_C_COMPILER=clang-${APT_LLVM_V} \
3030
-DCMAKE_CXX_COMPILER=clang++-${APT_LLVM_V} \

0 commit comments

Comments
 (0)