934a087f36 generate elements man pages. Bump version to 29.4.1-rc1. Set correct copyright logic for cmake. (Tom Trevethan)
Pull request description:
Set correct copyright string logic for cmake man pages.
Generate elements man pages.
Bump version to 29.4.1-rc1.
ACKs for top commit:
delta1:
ACK 934a087f36; tested locally
Tree-SHA512: 8bfd83d968bc6ca768cfa8d48da83ff9e01e0049647331b72e70df1b908f1bbcb39274228b602bc91ff7d994de755906847dc16e82164556e3d7bd7d7adb3f07
cd384f01a2 additional fixes for CI (Tom Trevethan)
e57cfea272 no-rpath in qt dependency (Tom Trevethan)
3da0ed810b functional test fixes and no RUNPATH in linux builds (Tom Trevethan)
292a9378ca CI fixes (Tom Trevethan)
88cd3a7711 doc: update manual pages for v29.4rc1 (fanquake)
116565bc0a build: bump version to v29.4rc1 (fanquake)
d82afa961b doc: update release notes for v29.4rc1 (fanquake)
ea8fafd2bf fuzz: Remove unused g_setup pointers (MarcoFalke)
1907b3f56c coins: compact chainstate in background (Lőrinc)
9dd8e32853 validation: randomly compact chainstate (Lőrinc)
e0ab4cffaa coins: test chainstate flush baseline (Lőrinc)
53a5c7f1c9 lint: disable leveldb subtree check (fanquake)
d8da418220 doc: update release notes for v29.x (fanquake)
9d62f5d0be ci: use ubuntu-latest instead of ubuntu-24.04 (fanquake)
33dd5e74d8 doc: remove reference to cirrus (fanquake)
1907ee01fe ci: switch runners from cirrus to warpbuild (will)
b631f27246 Disable seek compaction (Andrew Toth)
e5613db113 depends: Unset `SOURCE_DATE_EPOCH` in `gen_id` script (Hennadii Stepanov)
005738e3b8 wallet: use outpoint when estimating input size (Lőrinc)
4e3dd136b8 doc: mention -DWITH_ZMQ=ON in BSD build guides (junbyjun1238)
9ad085bd83 validation: correct lifetime of precomputed tx data (Antoine Poinsot)
83b46506a1 doc: update release notes for v29.x (fanquake)
18739ec488 ci: unconfine seccomp for i686 no IPC (Lőrinc)
546598b736 multi_index: fix compilation failure with boost >= 1.91 (Cory Fields)
0fb5e167e8 cmake: Migrate away from deprecated SQLite3 target (Daniel Pfeifer)
98ea6caed5 doc: update release notes for v29.x (fanquake)
490cd874a4 netif: fix compilation warning in QueryDefaultGatewayImpl() (MarcoFalke)
98af76f875 wallet: rpc: manpage: fix example missing `fee_rate` argument (SomberNight)
532afe909e doc: Update Guix install for Debian/Ubuntu (MarcoFalke)
5910bd3b5d doc: fix broken bpftrace installation link (jayvaliya)
c9a7bd90eb doc: Update man pages for v29.3 (sedited)
ea6af54a63 doc: Update release notes for 29.3 (sedited)
824de1e6b3 build: Bump version to 29.3 (sedited)
2b2c4daa53 [doc] generate manpages 29.3rc2 (sedited)
75c2108a68 [doc] update release notes for 29.3rc2 (sedited)
16493e35cd Bump version to 29.3rc2 (sedited)
340b58a8ce Add sedited to trusted-keys (sedited)
65173944ed QA: tool_wallet: Check that db.log is deleted with a lone legacy wallet, but not with a shared db environment (Luke Dashjr)
69a6b9b115 Bugfix: Wallet/Migration: Move backup into wallet directory when migrating from non-directory (Luke Dashjr)
cef01d0be5 Wallet/Migration: Skip moving the backup file back and forth for no reason (Luke Dashjr)
60f529027c Wallet/Migration: If loading the new watchonly or solvables wallet fails, log the correct wallet name in error message (Luke Dashjr)
7475d134f6 Wallet/bdb: Safely and correctly list files only used by the single wallet (Luke Dashjr)
3835e16e5f doc: update release notes for v29.x (fanquake)
6aec0958f1 ci: remove 3rd party js from windows dll gha job (Max Edwards)
c57009eefc chore: Update outdated GitHub Actions versions (Padraic Slattery)
b834447fb2 [doc] generate manpages 29.3rc1 (glozow)
e9c978391f [build] bump version to 29.3rc1 (glozow)
e973b61dbb [doc] update release notes for 29.3rc1 (glozow)
f4b78c42e5 test: Add a test for anchor outputs in the wallet (Ava Chow)
c6e7765c0a wallet: Throw an error in sendall if the tx size cannot be calculated (Ava Chow)
bab1ac827b wallet: Determine IsFromMe by checking for TXOs of inputs (Ava Chow)
71633a9b5c test: Test wallet 'from me' status change (Ava Chow)
daef5852f0 guix: Fix `osslsigncode` tests (Hennadii Stepanov)
7a71850a6d Remove unreliable seed from chainparams.cpp, and the associated README (SatsAndSports)
2e4688618b miner: fix `addPackageTxs` unsigned integer overflow (ismaelsadeeq)
6f136cd391 tests: drop expect_disconnect behaviour for tx relay (Anthony Towns)
be0857745a validation: only check input scripts once (Anthony Towns)
65bcbbc538 net_processing: drop MaybePunishNodeForTx (Anthony Towns)
f24291bd96 qa: unit test sighash caching (Antoine Poinsot)
73d3ab8fc9 qa: simple differential fuzzing for sighash with/without caching (Antoine Poinsot)
ddfb9150b8 script: (optimization) introduce sighash midstate caching (Pieter Wuille)
354d46bc10 script: (refactor) prepare for introducing sighash midstate cache (Pieter Wuille)
5a0506eea0 tests: add sighash caching tests to feature_taproot (Pieter Wuille)
020ed613be validation: detect witness stripping without re-running Script checks (Antoine Poinsot)
56626300b8 policy: introduce a helper to detect whether a transaction spends Segwit outputs (Antoine Poinsot)
97088fa75a qa: test witness stripping in p2p_segwit (Antoine Poinsot)
76cdeb7b06 wallet: test: Failed migration cleanup (David Gumberg)
9405e915e7 test: coverage for migration failure when last sync is beyond prune height (furszy)
5e8ad98163 wallet: migration, fix watch-only and solvables wallets names (furszy)
a7e2d106db wallet: improve post-migration logging (furszy)
9ea84c08d7 test: restorewallet, coverage for existing dirs, unnamed wallet and prune failure (furszy)
833848e9b8 test: add coverage for unnamed wallet migration failure (furszy)
a074d36254 wallet: fix unnamed wallet migration failure (furszy)
d91f56e1e3 wallet: RestoreWallet failure, erase only what was created (furszy)
cc324aa2be wallettool: do not use fs::remove_all in createfromdump cleanup (Ava Chow)
01c04d32aa wallet: introduce method to return all db created files (furszy)
abaf1e37a7 refactor: remove sqlite dir path back-and-forth conversion (furszy)
2cf352fd8e doc: document capnproto and libmultiprocess deps (will)
4917d0c0de doc: update release notes for 29.x (fanquake)
554ff3f7f3 test: change log rate limit version gate from 299900 to 290100 (Eugene Siegel)
16e10f928c ci: expose all ACTIONS_* vars (willcl-ark)
c7979f429a ci: Properly include $FILE_ENV in DEPENDS_HASH (Ava Chow)
46d9b9091b doc: update manual pages for v29.2 (fanquake)
b2026fa290 build: bump version to v29.2 (fanquake)
3226616493 doc: update release notes for 29.2 (fanquake)
abf4a6eeae build: fix depends Qt download link (fanquake)
d82fc69829 doc: update release notes for 29.2rc2 (fanquake)
513cef75ee doc: update manual pages for v29.2rc2 (fanquake)
eea16f7de7 build: bump version to v29.2rc2 (fanquake)
6b3c1dbc5c contrib: fix using macdploy script without translations. (amisha)
2d7ebd2d91 doc: update release notes for 29.x (fanquake)
a8bb76b61f test: add more TRUC reorg coverge (Greg Sanders)
666aec7d49 Mempool: Do not enforce TRUC checks on reorg (Greg Sanders)
6f23ead4a2 fuzz: don't bypass_limits for most mempool harnesses (Greg Sanders)
9d9baafc6f doc: rpc: fix case typo in `finalizepsbt` help (final_scriptwitness) (Sebastian Falbesoner)
22ab141243 rpc: fix getblock(header) returns target for tip (Sjors Provoost)
118abf4c30 test: add block 2016 to mock mainnet (Sjors Provoost)
5750355139 ci: link against -lstdc++ in native fuzz with msan job (fanquake)
78d93effd0 ci: Checkout latest merged pulls (MarcoFalke)
4a034cbeb4 ci: reduce runner sizes on various jobs (will)
6ded1fe117 ci: remove un-needed lint_run*.sh files (willcl-ark)
4e8b64b181 ci: fix annoying docker warning (will)
773e4cda94 ci: add ccache hit-rate warning when < 75% (will)
4339787379 doc: Detail configuration of hosted CI runners (will)
c7f290b826 ci: dynamically match makejobs with cores (will)
a08c3cc51c ci: remove .cirrus.yml (will)
06424fb004 ci: port lint (will)
0f0378fe3c ci: port msan-depends (will)
643385b22d ci: port tsan-depends (will)
3b2dcc8b9a ci: port tidy (will)
b4286cf354 ci: port centos-depends-gui (will)
5057b9a6ff ci: port previous-releases-depends-debug (will)
85ec6c6882 ci: port fuzzer-address-undefined-integer-nodepends (will)
544f902b2a ci: port i686-multiprocess-DEBUG (will)
e826c3daa5 ci: port nowallet-libbitcoinkernel (will)
835b5b8bb1 ci: port mac-cross-gui-notests (will)
a91567a980 ci: force reinstall of kernel headers in asan (will)
819ee09af3 ci: update asan-lsan-ubsan (will)
894a3cbe42 ci: update windows-cross job (will)
82c60a3151 ci: port arm 32-bit job (will)
849993377d ci: add job to determine runner type (will)
f9f3e8b686 ci: add Cirrus cache host (will)
af086431e8 ci: have base install run in right dir (will)
0a649d07c9 ci: use docker build cache arg directly (will)
f3089fb2cf ci: use buildx in ci (will)
1faf918a16 ci: add configure-docker action (will)
954c1a55e4 ci: add REPO_USE_CIRRUS_RUNNERS (will)
301aa5d814 ci: add caching actions (will)
f63b8e960d ci: add configure environment action (will)
f2bd79f80c doc: update manual pages for v29.2rc1 (fanquake)
461dd13faf build: bump version to v29.2rc1 (fanquake)
9bc4afb62c doc: update release notes for 29.x (fanquake)
61cdc04a83 net: Do not apply whitelist permission to onion inbounds (Martin Zumsande)
1288d44804 test: send duplicate blocktxn message in p2p_compactblocks.py (Eugene Siegel)
569ceb0df4 net: check for empty header before calling FillBlock (Eugene Siegel)
4c940d4789 p2p: remove vestigial READ_STATUS_CHECKBLOCK_FAILED (Greg Sanders)
9b95ab5e9d p2p: Add witness mutation check inside FillBlock (Greg Sanders)
e97588fc3d trace: Workaround GCC bug compiling with old systemtap (Luke Dashjr)
324caa8497 ci: always use tag for LLVM checkout (fanquake)
2717331981 Fix benchmark CSV output (Hennadii Stepanov)
7c6be9acae doc: update release notes for 29.x (fanquake)
ea40fa95d9 ci: use LLVM 21 (fanquake)
5513516241 ci: remove DEBUG_LOCKORDER from TSAN job (fanquake)
f9939cdbe0 ci: instrument libc++ in TSAN job (fanquake)
0fba5ae021 ci: allow libc++ instrumentation other than msan (fanquake)
10cbf2255d ci: Use APT_LLVM_V in msan task (MarcoFalke)
084c95a18c doc: update manual pages for v29.1 (fanquake)
37d115c67e build: bump version to v29.1 final (fanquake)
b0d88bcc50 doc: finalise release notes for 29.1 (fanquake)
99ab2e70e7 ci: return to using dash in CentOS job (fanquake)
6448ebb5a7 doc: Remove wrong and redundant doxygen tag (MarcoFalke)
fcac8022d8 test: index with an unclean restart after a reorg (Martin Zumsande)
16b1710d97 index: don't commit state in BaseIndex::Rewind (Martin Zumsande)
65dc198d2c doc: update example bitcoin conf for 29.1rc2 (fanquake)
0034dcfba9 [doc] man pages for 29.1rc2 (glozow)
eb1574af0c [build] bump version to 29.1rc2 (glozow)
f9f1ca5445 [doc] update release notes (glozow)
9dd7efc8c3 [policy] lower default minrelaytxfee and incrementalrelayfee to 100sat/kvB (glozow)
bbdab3ef7b [prep/test] make wallet_fundrawtransaction's minrelaytxfee assumption explicit (glozow)
da30ca0efa [prep/util] help MockMempoolMinFee handle more precise feerates (glozow)
a0ae3fc8a7 [prep/test] replace magic number 1000 with respective feerate vars (glozow)
1c1970fb45 [miner] lower default -blockmintxfee to 1sat/kvB (glozow)
3a7e093f94 [doc] assert that default min relay feerate and incremental are the same (glozow)
567c3ee3cb [test] explicitly check default -minrelaytxfee and -incrementalrelayfee (glozow)
6b5396c4b1 [test] RBF rule 4 for various incrementalrelayfee settings (glozow)
03da7aff99 [test] check bypass of minrelay for various minrelaytxfee settings (glozow)
4e3cfa660d [test] check miner doesn't select 0fee transactions (glozow)
0022e25333 test: modify logging_filesize_rate_limit params (Eugene Siegel)
206f5902db config: add DEBUG_ONLY -logratelimit (Eugene Siegel)
dfdd407c42 test: logging_filesize_rate_limit improvements (stickies-v)
11538160b3 test: don't leak log category mask across tests (stickies-v)
4ed7a51642 test: add ReadDebugLogLines helper function (stickies-v)
acfa83d9d0 log: make m_limiter a shared_ptr (stickies-v)
81751341e9 log: clean up LogPrintStr_ and Reset, prefix all logs with "[*]" when there are suppressions (Eugene Siegel)
7c3820ff63 log: change LogLimitStats to struct LogRateLimiter::Stats (Eugene Siegel)
dfe4e19f66 log: clarify RATELIMIT_MAX_BYTES comment, use RATELIMIT_WINDOW (Eugene Siegel)
273ffda2c8 log: remove const qualifier from arguments in LogPrintFormatInternal (Eugene Siegel)
9cde68fa98 log: avoid double hashing in SourceLocationHasher (Eugene Siegel)
25f975b8df test: remove noexcept(false) comment in ~DebugLogHelper (Eugene Siegel)
24c793d06c doc: add release notes for new rate limiting logging behavior (Eugene Siegel)
0b6b096421 log: Add rate limiting to LogPrintf, LogInfo, LogWarning, LogError, LogPrintLevel (Eugene Siegel)
a0992a842e log: use std::source_location in place of __func__, __FILE__, __LINE__ (Eugene Siegel)
41262cc4d5 log: introduce LogRateLimiter, LogLimitStats, Status (Eugene Siegel)
4987c03531 test: Mark ~DebugLogHelper as noexcept(false) (Eugene Siegel)
b9e637bd0e doc: update release notes for 29.x (fanquake)
2b9738a083 test: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify 'spend_vin' is the correct field (Chris Stewart)
4e8abca445 rpc: fix getpeerinfo ping duration unit docs (0xb10c)
a08886d564 doc: move `cmake -B build -LH` up in Unix build docs (Bufo)
264418f80c doc: Add rel note for breaking change in dumptxoutset RPC (Chris Stewart)
a18b53f99e guix: warn SOURCE_DATE_EPOCH set in guix-codesign (will)
9437415024 tracing: fix pointer argument handling in mempool_monitor.py (deadmanoz)
3cd8612cd7 doc/zmq: fix unix socket path example (Roman Zeyde)
4c2d285b70 [doc] update release notes for v29.1rc1 (glozow)
06eb42d83c [doc] manpages for 29.1rc1 (glozow)
735ffad864 [build] bump version to 29.1rc1 (glozow)
f25dc84b28 doc: update release notes for 29.x (Antoine Poinsot)
313023369b qa: functional test a transaction running into the legacy sigop limit (Antoine Poinsot)
0a4671d5eb qa: unit test standardness of inputs packed with legacy sigops (Antoine Poinsot)
204b965915 policy: make pathological transactions packed with legacy sigops non-standard. (Antoine Poinsot)
194c43aa48 Merge ElementsProject/elements#1572: Linter: remove trailing whitespace (merge-script)
c6fe6971bf doc: update release notes for 29.x (fanquake)
380b5aded2 test: fix intermittent failure in wallet_reorgsrestore.py (furszy)
411e15194b doc: update release notes for 29.x (fanquake)
5e327e6703 test: Log KeyboardInterrupt as exception (MarcoFalke)
79e1a3c9c6 test: Do not pass tests on unhandled exceptions (MarcoFalke)
5300295083 doc: update release notes for 29.x (fanquake)
730886b92b depends: fix libevent _WIN32_WINNT usage (fanquake)
f798c317a0 cmake: Drop no longer necessary "cmakeMinimumRequired" object (Hennadii Stepanov)
bc2147c884 depends: Force `CMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE` (Hennadii Stepanov)
58b1a65ab0 add more bad p2p ports (Jameson Lopp)
f85d41c224 test: retain the intended behavior of `feature_fee_estimation.py` nodes (ismaelsadeeq)
84c0c0e64b test: fix incorrect subtest in `feature_fee_estimation.py` (ismaelsadeeq)
83ee49b1dc doc: clarify that the "-j N" goes after the "--build build" part (Salvatore Ingala)
e5a7575a6d doc: Add workaround for vcpkg issue with paths with embedded spaces (Hennadii Stepanov)
59a83fb8d1 functional test: correctly detect nonstd TRUC tx vsize in feature_taproot (Greg Sanders)
9f3690b978 feature_taproot: sample tx version border values more (Greg Sanders)
8a4a938db5 depends: Override host compilers for FreeBSD and OpenBSD (Hennadii Stepanov)
3a57bfaaf9 test: Use rehash() in outbound eviction block-relay (pablomartin4btc)
f82015ccfc test: Clarify roles in outbound eviction comments (pablomartin4btc)
222fbfcc6a test: check P2SH sigop count for coinbase tx (brunoerg)
ef2a013e31 doc: update release notes for 29.x (fanquake)
4b656e2023 test: Add msgtype to msg_generic slots (dergoegge)
1c0e19b93a node: cap -dbcache to 1GiB on 32-bit architectures (Antoine Poinsot)
eafea2393d init: cap -maxmempool to 500 MB on 32-bit systems (Antoine Poinsot)
a3c1939d6e cmake: Explicitly specify `Boost_ROOT` for Homebrew's package (Hennadii Stepanov)
a990c1002b cmake: Use `HINTS` instead of `PATHS` in `find_*` commands (Hennadii Stepanov)
5987c1b6ab test: fix catchup loop in outbound eviction functional test (Sebastian Falbesoner)
e37a70bf71 build: add root dir to CMAKE_PREFIX_PATH (will)
0922f6bbc3 doc: update release notes for 29.x (fanquake)
5697605414 contrib: tracing: Correctly read msg type in p2p_monitor.py (David Gumberg)
4c7ed36c96 test: Fix list index out of range error in feature_bip68_sequence.py (zaidmstrr)
3e23b47a6f doc: fix transifex 404s (fanquake)
616baf3c27 doc: taproot became always active in v24.0 (Sjors Provoost)
ef6111bd18 depends: capnp 1.2.0 (fanquake)
8246c6a65f test: wallet, coverage for crash on dup block disconnection during unclean shutdown (Martin Zumsande)
a18085a18b wallet: fix crash on double block disconnection (furszy)
7264459c0d build: patch cmake min version on freetype (josibake)
27c533052c doc, windows: CompanyName "Bitcoin" => "Bitcoin Core project" (Hodlinator)
1b51d750ad depends: fix SHA256SUM command on OpenBSD (use GNU mode output) (Sebastian Falbesoner)
aea8a394b1 doc: make `-DWITH_ZMQ=ON` explicit on `build-unix.md` (Luis Schwab)
23e76ef520 guix: warn and abort when SOURCE_DATE_EPOCH is set (will)
876a7b2db5 doc: add missing packages for BSDs (cmake, gmake, curl) to depends/README.md (Sebastian Falbesoner)
78688c8413 rpc, doc: update `listdescriptors` RCP help (rkrux)
c899334e36 rpc: Note in fundrawtransaction doc, fee rate is for package (benthecarman)
247ee59f55 doc: update tor docs to use bitcoind binary from path (ismaelsadeeq)
4a1143b083 depends: use "mkdir -p" when installing xproto (fanquake)
646fa1d028 test: fix sync function in rpc_psbt.py (Martin Zumsande)
17b31fc802 doc: Add missing top-level description to pruneblockchain RPC (nervana21)
e34b6fbcad guix: accomodate migration to codeberg (fanquake)
142153ee42 cmake: Add missed `SSE41_CXXFLAGS` (Hennadii Stepanov)
a0d1f69b55 doc: update release notes for 29.x (fanquake)
6c0f26d3bd test: check that creating a wallet does not log version info (Ava Chow)
e685b4eca2 test: Check that the correct versions are logged on wallet load (Ava Chow)
25aa15ee7f walletdb: Log the wallet version after it has been read from disk (Ava Chow)
cf034172bf test: fix another intermittent failure in wallet_basic.py (Martin Zumsande)
c966158426 test: Fix intermittent failure in wallet_basic.py (Martin Zumsande)
6c4e3de2ac test: Use uninvolved pruned node in feature_pruning undo test (enoch)
edd4073d70 test: Fix nTimes typo in feature_pruning test (enoch)
cc2fcdfc5e cmake: Allow `WITH_DBUS` on all Unix-like systems (Hennadii Stepanov)
caec3cc41b crypto: disable ASan for sha256_sse4 with Clang (fanquake)
fabf4ff237 tracing: fix invalid argument in mempool_monitor (William Casarin)
f9d2c67a0c cmake: Respect user-provided configuration-specific flags (Hennadii Stepanov)
6ed087dede doc: Fix test_bitcoin path (monlovesmango)
2f6c802b54 doc: Fix fuzz test_runner.py path (monlovesmango)
f4d9546425 qt: Replace stray tfm::format to cerr with qWarning (laanwj)
5aa4956cd3 gui: crash fix, disconnect numBlocksChanged() signal during shutdown (furszy)
3665310808 scripted-diff: Use bpf_cflags (MarcoFalke)
4ed5c34abb test: Add imports for util bpf_cflags (MarcoFalke)
3dbd2b3d17 refactor: Remove spurious virtual from final ~CZMQNotificationInterface (MarcoFalke)
64552c83b2 ci: Add workaround for vcpkg's libevent package (Hennadii Stepanov)
85f3e1de68 test: Handle empty string returned by CLI as None in RPC tests (Brandon Odiwuor)
ca70d5cb25 Remove support for RNDR/RNDRRS for aarch64 on Linux (laanwj)
fc60337733 qt: 29.1 translations update (Hennadii Stepanov)
87e53781f7 doc: minor rel notes changes (fanquake)
977db54233 [doc] update man pages for 29.0 (glozow)
190e718e83 [build] bump to 29.0 final (glozow)
50108104d7 [doc] copy over Release Notes draft from wiki (glozow)
f80ab9a5d8 [doc] update man pages for 29.0rc3 (glozow)
7c05ef5673 [build] bump to 29.0rc3 (glozow)
c0756b758f depends: set CMAKE_*_COMPILER_TARGET in toolchain (fanquake)
477345207b cmake: Add `NO_CACHE_IF_FAILED` option for checking linker flags (Hennadii Stepanov)
7bc7af9951 fuzz: extract unsequenced operations with side-effects (Lőrinc)
288163ea0f fuzz: Fix off-by-one in package_rbf target (MarcoFalke)
a3060483fa test: avoid disk space warning for non-regtest (Sjors Provoost)
74df31cb0b [doc] update example bitcoin.conf with missing options (glozow)
8082f88d1a [doc] update man pages for 29.0rc2 (glozow)
472d582bfe [build] bump to 29.0rc2 (glozow)
a4c30bd00a qt: doc: adapt outdated binary paths to CMake changes (Sebastian Falbesoner)
4e438d326e build: use make < 3.82 syntax for define directive (Sjors Provoost)
7ff0b02161 build: Remove manpages when making MacOS app (Ava Chow)
5ebcb59fdb test: fix intermittent failure in p2p_orphan_handling.py (Martin Zumsande)
458655bca8 fuzz: make sure DecodeBase58(Check) is called with valid values more often (Lőrinc)
15ecae31a8 fuzz: Always restrict base conversion input lengths (Lőrinc)
80c5d57bd1 contrib: Fix `gen-bitcoin-conf.sh`. (David Gumberg)
47e2fa86dc [doc] release notes link for 29.0 (glozow)
21f423939e [examples] generate example bitcoin.conf (glozow)
86a3ce6209 [doc] update man pages for 29.0rc1 (glozow)
95c21b1fdd [build] bump version to 29.0rc1 (glozow)
153bd443ec [build] bump CLIENT_VERSION_MAJOR to 29 (glozow)
713da86406 add linter check to CI (Tom Trevethan)
bd2dbdcceb Fix: linter errors (Tom Trevethan)
0ee8558f3a Squashed 'src/secp256k1/' content from commit 95b983597a (Tom Trevethan)
e5d02b9fd5 fix RPC documentation inconsistencies (Tom Trevethan)
a58014af6e rpc: fix fields describtion in man (Ruslan Kasheparov)
0e0d01913a mempool: disable full-RBF, require BIP125 opt-in signaling (Byron Hambly)
ef1d2673d7 rpc: fix fields type in man in 'decodepsbt' (Ruslan Kasheparov)
91ae0e92e6 rpc: fix fields describtion in man in 'decodepsbt' (Ruslan Kasheparov)
e151cada58 test: update and re-enable trim headers functional test (Byron Hambly)
3824d7dd36 add guard to TryLowWorkHeadersSync to prevent assert_untrimmed (Tom Trevethan)
14a52bf188 rpc: use null for optional parameters (Ruslan Kasheparov)
8165ec8289 rpc: fix fields type in man (Ruslan Kasheparov)
556c2614c8 descriptor wallet option in GUI unchecked by default (Tom Trevethan)
c4680ed082 re-enable add checks for CCheckQueueControl in connectblock (Tom Trevethan)
cec3d1d6f6 gui: re-enable legacy wallet creation (Tom Trevethan)
f29fe12e1e rename test_bitcoin to test_elements (Tom Trevethan)
e1c714f2d5 remove deprecated rpc check for create_bdb wallets (Tom Trevethan)
Pull request description:
Upstream merges from Bitcoin 29.x to 29.4.
Additional fixes for CI:
## 1. Merge setup & CI infrastructure
- **Merge script sanity check** — confirmed all 42 upstream backport PRs (`e9e6825b8c`..`3fc0865963`) were merge commits with no stray non-merge first-parent commits; `merge-prs.sh` pointed at `elements-29.x`.
- **CI migration, Cirrus CI → GitHub Actions** — resolved Docker/host environment conflicts, macOS path divergence (`~/.elements` vs `~/Library/Application Support/Elements`), subtree lint failures (`secp256k1`, `minisketch`), `test-each-commit` `FETCH_DEPTH` issues, Windows MSVC job config.
- **`ci/test/03_test_script.sh`** — removed dead autotools-era code paths (`./autogen.sh`, `./configure`), rewrote to match upstream's CMake-only flow.
- **doc/man generation** — resolved merge conflicts from upstream's `doc/man/bitcoin-*.1` vs Elements' `elements-*.1` naming; regenerate via `contrib/devtools/gen-manpages.py` at release time instead of merging.
- **`contrib/devtools/check-deps.sh`** — added ~30 missing `SUPPRESS[...]` entries recording Elements-specific cross-module dependencies (confidential_validation, pegins, mainchainrpc, pak, dynafed, block_proof, versionbits) that upstream's dependency-graph checker had no knowledge of.
- **CentOS/depends/GUI job — "No space left on device"** — infrastructure issue (disk/ccache exhaustion on the runner), not a code bug; not something fixable via source changes.
- **`--exclude feature_dbcrash`** — `feature_dbcrash.py` is commented out of Elements' own `test_runner.py` test list (too disk/time-intensive for GHA); excluding an already-absent test is now a hard error in `test_runner.py`, not a no-op. Removed from the exclude list in `ci/test/00_setup_env_native_previous_releases.sh`.
- **Same file — `--extended,feature_fee_estimation,...` argparse corruption**
---
## 2. RPATH — "libsecp256k1.so.6: cannot open shared object file" bug
top-level `CMakeLists.txt` sets `CMAKE_SKIP_BUILD_RPATH TRUE` globally (deliberate upstream policy, tied to Guix reproducible builds). This is invisible under a normal (static-secp256k1) build, but any build enabling `libbitcoinkernel` forces secp256k1 to build as a shared library — and every other executable target then fails at runtime unless it gets the same opt-out.
- `elements-tx`, `elements-util` (`src/CMakeLists.txt`)
- `test_elements` (`src/test/CMakeLists.txt`)
- `bench_bitcoin` (`src/bench/CMakeLists.txt`)
- `elements-qt` (`src/qt/CMakeLists.txt`)
- `test_elements-qt` (`src/qt/test/CMakeLists.txt`)
- `elementsd` (`src/CMakeLists.txt`)
- `elements-cli` (`src/CMakeLists.txt`)
---
## 3. Code/sanitizer bugs
- **`CTxOut` 2-arg vs 3-arg constructor** — ported Bitcoin Core test/IPC code used upstream's `CTxOut(amount, script)`; fixed to Elements' `CTxOut(CAsset(), amount, script)` in `transaction_tests.cpp`, `test/ipc_test.cpp`.
- **`checkqueue.h::Loop()` ownership bug** — failing/skipped-after-failure checks never `delete`d in Elements' pointer-based (`T*`) `CCheckQueue`; real leak reachable from production validation code.
- **`spend.cpp` — `vtxinwit`/`vin` invariant violation** — `vtxinwit.emplace_back()` only ran inside a conditional branch; moved to run unconditionally alongside every `vin.emplace_back()`.
- **`wallet.cpp::SignPSBT`** — missing `tx.witness.vtxinwit.resize(tx.vin.size())` (had the `vtxoutwit` equivalent but not the `vtxinwit` one); found via gdb backtrace.
- **`coins.h::AddFlags`** — `Assume(flags & (DIRTY|FRESH))` didn't account for Elements' third `PEGIN` flag; fixed to `Assume(flags & (DIRTY|FRESH|PEGIN))`.
- **`kernel/chainparams.h::CChainParams`** — missing virtual destructor; `new-delete-type-mismatch` deleting a `CCustomParams` through `unique_ptr<const CChainParams>`.
- **`validation.cpp::CheckInputScripts` synchronous path** — leaked the heap-allocated `CScriptCheck` on every call (missing `delete`).
- **`test/fuzz/deserialize.cpp`** — generic round-trip fuzz check inappropriately applied to `Coin`, which asserts `!IsSpent()` on serialize; fuzzed bytes trivially violate this.
- **`test/fuzz/package_eval.cpp` — duplicate `tx_mut.vin.push_back(in)`** — an earlier fix (adding `vtxinwit.emplace_back()` alongside the `push_back`) was applied *additively* instead of *replacing* the original line, leaving every selected input pushed into `vin` twice. Traced via reproducible fuzz crash + gdb + targeted `fprintf` instrumentation to a `outpoints.insert(in.prevout).second` assertion failure; root-caused to the duplicate push, not (as initially suspected) `OutpointsUpdater` or cross-iteration state.
- **`kernel/chainparams.cpp::CTestNet4Params`** — entire Elements-specific initialization block (`enforce_pak`, `accept_unlimited_issuances`, `multi_data_permitted`, `accept_discount_ct`, `create_discount_ct`, `pegin_subsidy`, `pegin_minimum`, `anyonecanspend_aremine`, `consensus.has_parent_chain`, `consensus.genesis_subsidy`, `consensus.connect_genesis_outputs`, `consensus.subsidy_asset`, `g_signed_blocks`) missing entirely — `testnet4` is a brand-new upstream 29.x chain type, and the new class was adapted from upstream's version (which has no concept of any of these fields) without ever adding Elements' equivalent block. Caught independently by both UBSan (`invalid-bool-load`) and MSan (`use-of-uninitialized-value`) in two separate CI jobs.
- **`validation.cpp::GuessVerificationProgress`** — unguarded division (`pindex->nHeight / (pindex->nHeight + moreBlocksExpected)`) with a denominator that can hit exactly zero when a block's timestamp is far enough ahead of "now" (e.g. during `feature_taproot.py`'s test-vector generation). Added a guard clause returning `1.0` when the extrapolation is degenerate.
- **`wallet/rpc/spend.cpp` — `psbtbumpfee` not-mine-input path** — `FillPSBT(...)` call omitted Elements' `imbalance_ok` parameter (defaults to `false`), causing a legitimate CT-balance-check failure for external/not-owned inputs to trip a `CHECK_NONFATAL(!err)` that assumed the call could never fail. Every other Elements-specific `FillPSBT` call site in the same file already passes `/*imbalance_ok=*/true`; this one didn't. Root-caused by diffing against upstream (confirmed the `CHECK_NONFATAL` pattern itself is unmodified) and against Elements' own `FillPSBT` declaration.
- Fee outputs in USDT tests.
---
## 4. Type/size mismatches
Several issues traced to `CoinsCachePair`/`Coin`/`CTxOut` being substantially larger than upstream's equivalents (confidential asset/value/nonce commitments), breaking constants and assumptions tuned for upstream's smaller structs:
- **`CTxMemPoolEntry::discountSizeWithAncestors`** — declared `uint64_t` while its three sibling ancestor-state accumulators are `int64_t`; the odd type caused a UBSan `implicit-integer-sign-change` when a negative delta was added during removal. Retyped to `int64_t` to match siblings.
- **Follow-up compile fix:** `GetDiscountTxSize()` returns `size_t`; brace-init into the now-`int64_t` member needed an explicit `static_cast<int64_t>(...)`.
- Confirmed the six external call sites (`node/miner.h`, `node/miner.cpp`, `txmempool.h`) did **not** need changes — they only ever read the post-assert, always-non-negative value into `uint64_t`, which is a value-preserving conversion UBSan doesn't flag.
- **`coins.h::CCoinsMapMemoryResource`** — `PoolResource`'s generic default constructor hardcodes a 256 KiB chunk, sized for upstream's smaller `CoinsCachePair`; no longer big enough to hold 1000 of Elements' larger nodes without overflowing into a second chunk. Fixed by passing an explicit `chunk_size_bytes` scaled to `sizeof(CoinsCachePair)`.
- **Follow-up:** `validation_flush_tests.cpp`'s `getcoinscachesizestate` test hardcoded `MAX_COINS_CACHE_BYTES = 262144 + 512` based on the (now-stale) "PoolResource defaults to 256 KiB" assumption; updated to compute the same way as the fixed default.
- **32-bit ARM `validation_flush_tests.cpp`** — the test's own "unsupported architecture" fallback path hardcoded `1000` coins as "obviously enough" to cross the CRITICAL cache-size threshold; doesn't hold on 32-bit ARM where `COIN_SIZE` is smaller (32-bit pointers). Fixed by computing the coin count from `MAX_COINS_CACHE_BYTES / COIN_SIZE` instead of a fixed constant.
---
## 5. Build configuration / CMake
- **`src/CMakeLists.txt` — simplicity subtree warnings** — `-Wconditional-uninitialized`/`-Wimplicit-fallthrough` (Clang) and `-Wtype-limits` (GCC/mingw) in vendored `dag.c`/`rsort.c`; suppression was gated `if(APPLE)` only, extended to all Clang toolchains plus a GCC-specific suppression.
- **`src/qt/CMakeLists.txt`** — `WITH_MULTIPROCESS` block called `import_plugins(bitcoin-gui)`, never renamed to Elements' `elements-gui` target.
- **`src/kernel/CMakeLists.txt`** — `libbitcoinkernel` missing several source files (`addresstype.cpp`, `key.cpp`, `script/miniscript.cpp`, `common/{config,settings}.cpp`, `chainparamsbase.cpp`, `mainchainrpc.cpp`) and libevent linkage, needed because `pegins.cpp` (pulled into the kernel lib) calls `IsConfirmedBitcoinBlock` unconditionally.
- **Windows cross-compilation** — secp256k1 `__imp_` linker symbols (fixed via `PUBLIC` CMake linkage); `pegins.cpp`/`confidential_validation.cpp` needed to move from `bitcoin_node` to `bitcoin_common` to satisfy the dependency graph; NSIS installer asset staging.
## 6. Toolchain / fuzz harness
- **`test/fuzz/simplicity_tx.cpp`** — missing `SeedRandomStateForTest(SeedRand::ZEROS);` as the first line of the `FUZZ_TARGET` body, required by the `CheckGlobals` reproducibility guard whenever a target touches the global RNG state. Also needed the corresponding `#include <test/util/random.h>`
---
## 7. Python functional-test gaps
- **`test/functional/p2p_headers_sync_with_minchainwork.py`** and **`p2p_headers_presync.py`** — both call `self.nodes[0].createwallet(...)` unconditionally (an Elements-specific addition needed because Elements' `generatetoaddress`-based mining approach requires a wallet address, unlike upstream's `self.generate()`), but neither had the standard `self.skip_if_no_wallet()` guard that every other wallet-touching test in the suite already has, causing `Method not found (-32601)` failures in no-wallet CI builds. Both fixed by adding the guard as the first line of `run_test()`. Flagged for a broader sweep (`grep -rL skip_if_no_wallet` against files that call wallet methods) since both were adapted from the same original source and the same gap may recur elsewhere.
---
## 8. Static analysis / clang-tidy
Batch of ~9 findings from a `-warnings-as-errors` `clang-tidy` run,
- `rpc/util.cpp` — two hand-written trivial default constructors → `= default`.
- `qt/networkstyle.cpp` — legitimate bounded single-level recursion (`instantiate()`, guarded by an `assert` immediately before the recursive call) → `NOLINT(misc-no-recursion)` rather than a rewrite.
- `wallet/coinselection.cpp` — two occurrences of `auto input_set/set = result.GetInputSet();` copy-constructed but only used by reference (`.find()`/`.end()` need to operate on the same instance, so the copy can't simply be inlined away either) → `const auto&`. One occurrence was caught by CI in a second pass after the first fix (§10 recurrence).
- `assetsdir.cpp` — range-for copying each string → `const std::string&`.
- `primitives/bitcoin/merkleblock.cpp` — three inherently-recursive Merkle-tree traversal functions, straight from unmodified upstream → `NOLINT(misc-no-recursion)` rather than rewriting a correctness-sensitive algorithm.
- `validation.cpp` — `emplace_back` in a loop of known size without `reserve()`.
- `bitcoin-tx.cpp` — three occurrences of the same unnecessary-copy pattern as coinselection.cpp.
- `test/blind_tests.cpp` — `push_back` in a fixed 6-iteration loop without `reserve()`.
## 9. Previous releases
- `wallet_migration.py` disabed.
- `wallet_backwards_compatibility.py` remains disabled (as in 23.x).
ACKs for top commit:
delta1:
ACK cd384f01a2; tested locally
Tree-SHA512: 7378f83fd041219df375bd9e1acde926045e04de1d66da7cc5581b012153eaec85f8da0ff51817e89204b7e74fb061517a78cb692e42aadcc804ebc2fbaab5af