depends: Switch from multilib to platform-specific toolchains - #32162
Conversation
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code Coverage & BenchmarksFor details see: https://corecheck.dev/bitcoin/bitcoin/pulls/32162. ReviewsSee the guideline and AI policy for information on the review process.
If your review is incorrectly listed, please copy-paste ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
4bf8e8f to
1925dc1
Compare
| @@ -6,11 +6,12 @@ | |||
|
|
|||
| export LC_ALL=C.UTF-8 | |||
|
|
|||
| export HOST=i686-pc-linux-gnu | |||
| export HOST=i686-linux-gnu | |||
There was a problem hiding this comment.
i've always been confused about the -pc- in the architecture tuple-is it directly related to use (or non-use) of multilib?
There was a problem hiding this comment.
It's hard to say.
Referring to x86_64-pc-linux-gnu is still necessary when building depends natively on x86_64, because:
$ uname -m
x86_64
$ ./depends/config.sub $(./depends/config.guess)
x86_64-pc-linux-gnu
However, dropping the -pc- infix helped to with Clang's paths in the OSS-Fuzz environment.
There was a problem hiding this comment.
Hrm, yea, config.sub adds it for x86 archs (but unknown for others) so it's likely canonical somehow.
$ ./config.sub i386-linux-gnu
i386-pc-linux-gnu
$ ./config.sub x86_64-linux-gnu
x86_64-pc-linux-gnu
$ ./config.sub arm-linux-gnueabihf
arm-unknown-linux-gnueabihf
$ ./config.sub riscv64-linux-gnu
riscv64-unknown-linux-gnu
But seems fine to leave it out in the README.md because it doesn't include the -unknown- infixes either.
There was a problem hiding this comment.
Also, please note that depends/README.md lists triplets after specifically mentioning "for cross compilation". In such cases:
bitcoin/depends/hosts/default.mk
Lines 1 to 3 in 4c1906a
-pc- infix.
|
Concept ACK, multilib is more or less specific to x86, it's better if multi-platform is handled in a more architecture-agnostic and consistent way. |
|
Rebased due to a conflict with the merged #30997. |
Guix builds (on x86_64) [untrusted test-only build, possibly unsafe, not for production use] |
|
Rebased due to a conflict with the merged #32086. |
|
Rebased to resolve a conflict with the merged #35202. |
|
My Guix build: |
|
Rebased to resolve a conflict with the merged #35546. |
|
My Guix build: |
|
Rebased to resolve a conflict with the merged #35537. |
|
My Guix build: |
BrandonOdiwuor
left a comment
There was a problem hiding this comment.
ACK de9b436
Verified that g++-multilib is not available on Ubuntu 24.04 aarch64:
Also confirmed the package conflict on x86_64: installing g++-multilib removes g++-i686-linux-gnu:
Successfully cross-compiled from Ubuntu 24.04 aarch64 (Docker) and ran the resulting binary on Ubuntu 24.04 x86_64:
# Inside aarch64 Ubuntu 24.04 container
sudo apt install g++-x86-64-linux-gnu binutils-x86-64-linux-gnu
export HOST=x86_64-linux-gnu
gmake -C depends -j$(nproc) HOST=$HOST
cmake -B build-${HOST} --toolchain depends/${HOST}/toolchain.cmake
cmake --build build-${HOST} -j$(nproc)
|
ACK de9b436 |
…m-specific toolchains de9b436ba36576903744feb17e4fae7b1842c75b depends: Switch from multilib to platform-specific toolchains (Hennadii Stepanov) Pull request description: Using the multilib GCC toolchain, as currently documented in [`depends/README.md`](https://github.com/bitcoin/bitcoin/blob/4c1906a500cacab385b09e780b54271b0addaf4b/depends/README.md), has several issues, such as: 1. The [`g++-multilib`](https://packages.ubuntu.com/noble/g++-multilib) package conflicts with platform-specific cross-compiler packages. This means it is not possible to cross compile for `i686` and other platforms using the same set of installed packages. 2. The [`g++-multilib`](https://packages.ubuntu.com/noble/g++-multilib) package is not available for `arm64`: ```sh $ sudo apt install g++-multilib Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package g++-multilib ``` 3. Managing the multilib GCC toolchain requires additional code in both depends and Guix scripts. This PR addresses all the issues mentioned above by switching from multilib to platform-specific toolchains. Also see bitcoin/bitcoin#22456. --- Here are examples of building for different scenarions: - Linux, `x86_64` or `arm64`, building with depends natively: ```sh $ gmake -C depends -j $(nproc) $ cmake -B build --toolchain depends/$(./depends/config.sub $(./depends/config.guess))/toolchain.cmake $ cmake --build build -j $(nproc) ``` - Linux, `x86_64` or `arm64`, cross compiling for `i686-pc-linux-gnu`: ```sh $ sudo apt install g++-i686-linux-gnu binutils-i686-linux-gnu $ export HOST=i686-linux-gnu $ gmake -C depends -j $(nproc) $ cmake -B build-${HOST} --toolchain depends/${HOST}/toolchain.cmake $ cmake --build build-${HOST} -j $(nproc) ``` - Linux, `x86_64`, cross compiling for `arm64`: ```sh $ sudo apt install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu $ export HOST=aarch64-linux-gnu $ gmake -C depends -j $(nproc) $ cmake -B build-${HOST} --toolchain depends/${HOST}/toolchain.cmake $ cmake --build build-${HOST} -j $(nproc) ``` - Linux, `arm64`, cross compiling for `x86_64`: ```sh $ sudo apt install g++-x86-64-linux-gnu binutils-x86-64-linux-gnu $ export HOST=x86_64-linux-gnu $ gmake -C depends -j $(nproc) $ cmake -B build-${HOST} --toolchain depends/${HOST}/toolchain.cmake $ cmake --build build-${HOST} -j $(nproc) ``` ACKs for top commit: fanquake: ACK de9b436ba36576903744feb17e4fae7b1842c75b BrandonOdiwuor: ACK de9b436ba36576903744feb17e4fae7b1842c75b Tree-SHA512: 453b4744974cdf56d6edfdbe93bb11e3bae3f9bc9cd99b9c57aee74e65fcdd3ac011a1dcc19f485ea3be427f4e9c6c6b0d704881369f719620f0cb299123e561
…462c683d4 97462c683d4 kernel: Add script tracer ea7d459ac08 Merge bitcoin/bitcoin#36057: build: check for SetThreadDescription() at configure time 204256c73f2 Merge bitcoin/bitcoin#35900: iwyu: Fix warnings in `src/interfaces` and treat them as errors da1cb4dd90e Merge bitcoin/bitcoin#35586: doc: note -blocknotify is not run during IBD/reindex in help text b31aae4f9af Merge bitcoin/bitcoin#36094: ci: bump riscv toolchain to tag 2026.08.25 607f220c6cf Revert "ci: use mirror for riscv submodules" 64af18f4e6d ci: bump riscv toolchain to tag 2026.08.25 fd573f6db9d Merge bitcoin/bitcoin#36044: test: cover OP_SUCCESSx bypassing the initial stack element size limit 2224e4af6ce Merge bitcoin/bitcoin#35850: fuzz: Implement `connect_block` harness 2777300c68f fuzz: Implement connect_block harness bed46bd16c2 build: check for SetThreadDescription() at configure time 40add915be5 test: Add reset to CuckooCache a24110cef7f Merge bitcoin/bitcoin#36092: fix: UB sanitizer in mempool estimator logging 8b84f917789 Merge bitcoin/bitcoin#36088: util: Set Univalue to null after read failure 576a0ebb536 fix: UB sanitizer in mempool estimator logging 5f45583e437 Merge bitcoin/bitcoin#36077: bugfix: give TxDownloadManager its own RNG fa72de78a93 util: Set Univalue to null after read failure fa7786592d7 test: Add UniValue failed read test e339043ee9e Merge bitcoin/bitcoin#35829: http: Make class fields private and make HTTPResponse a struct 031175197f1 Merge bitcoin/bitcoin#36032: rpc: avoid quadratic output lookups b91d983f66f Merge bitcoin/bitcoin#36078: qa: Reduce `-maxconnections` in the functional test framework 0f5c6d0b64a Merge bitcoin/bitcoin#35618: depends: Make tarball creation from local directory reproducible b8a8893bf2a qa: Lower `-rpcmaxconnections` in `interface_http.py` test 6f4109b4489 qa: Reduce `-maxconnections` in the functional test framework 80eaa6cabf2 bugfix: give TxDownloadManager its own RNG 5e0d7a286a4 refactor: Drastically narrow scope of http_bitcoin namespace and rename it to bitcoin_http 8f9fd8698a7 refactor: Make HTTPRemoteClient fields private d72f67fd6c9 refactor: Expose additional HTTPRemoteClient fields through accessors 10bbae302fb refactor: Expose HTTPRemoteClient fields to tests through methods 5b06d908316 refactor: Replace HTTPServer::MaybeDispatchRequestsFromClient() with HTTPRemoteClient::TryReadRequest() 794a753958a Merge bitcoin/bitcoin#35583: test: close the listeners before terminating the event loop f6b3f2ff6b1 Merge bitcoin/bitcoin#36064: qa: Minor improvement follow-ups to 35730 6a028161daf Merge bitcoin/bitcoin#36025: psbt: avoid duplicate taproot leaf script keys when merging 07d92a9d65a Merge bitcoin/bitcoin#35516: rpc: preserve global xpubs and proprietary fields in joinpsbts 4375d74d24c Merge bitcoin/bitcoin#34993: wallet: `NotifyCanGetAddressesChanged` when advancing `next_index` 290be9eafa4 qa: Minor feature_init.py improvements 6248331b295 qa: Switch to warning when skipping tests 04cf9ecee43 Merge bitcoin/bitcoin#35978: contrib/init: fix unused variables in openrc script aed80c73958 Merge bitcoin/bitcoin#36067: test: Remove `BOOST_CHECK_CLOSE` in favor of exact comparison 07ca9ba9e84 Merge bitcoin/bitcoin#36059: test: make index crash test check saved state 402f1fdae6a Merge bitcoin/bitcoin#36063: refactor: [test] Remove deprecated SetMockTime(i64) alias 135e05cfa07 Merge bitcoin/bitcoin#36046: fuzz: Use ImmediateBackgroundTaskRunner in process_messages 9e115edd39f test: Remove `BOOST_CHECK_CLOSE` in favor of exact comparison 6d570415a01 refactor(qa): Move check right below related check 7e3b60584b3 refactor(qa): Simplify through using assert_raises() fad1e6bf238 util: refactor: Remove deprecated SetMockTime(i64) alias faf87c3535c test: refactor: Use FakeNodeClock over manual/global SetMockTime 994c17d6c0a Merge bitcoin/bitcoin#34697: descriptor: fix musig() duplicate key checks and doubled PSBT origin paths a1183c02aac refactor: Extract Send() and Receive() into HTTPRemoteClient from HTTPServer 6d9b61d4f8d refactor: Extract HTTPRemoteClient::MaybeDisconnect() from HTTPServer::DisconnectClients() 6fec8d6914b refactor: Make HTTPRequest fields private b8cd77237b3 refactor: Make HTTPRequest::GetHeader() return saner optional type 1cb416397b7 psbt: avoid duplicate taproot leaf script keys when merging 32765aca5c3 Merge bitcoin/bitcoin#35730: http: limit connected HTTPRemoteClients a3335994a84 Merge bitcoin/bitcoin#35580: bugfix: compare non-adjusted chunk weight against block weight limit 0ea81904ebd Merge bitcoin/bitcoin#35933: psbt: don't abort on invalid MuSig2 derivations 7ea36e985a9 test: preserve index crash test state 5aa15df60c4 test: expose missing index crash checkpoint b3ff9c4d683 iwyu: Fix warnings in `src/interfaces` and treat them as errors d564b0255f7 iwyu: Add temporary mapping to work around upstream bug 58a7869f860 Merge bitcoin/bitcoin#36051: ci: use ruff 0.16.x f5e91c6fbae Merge bitcoin/bitcoin#35884: util: set os-level thread names on Windows a1e27162257 Merge bitcoin/bitcoin#36045: test: avoid undersized Boost.Test signal stacks 9d0c38db746 ci: use mypy 2.3.1 7a53beca06a ci: use pyzmq 27.2.0 f29f076f3c2 ci: use ruff 16 7dcb7f09ed6 Merge bitcoin/bitcoin#34075: fees: Introduce Mempool Based Fee Estimation to reduce overestimation 5e8586ec5b0 Merge bitcoin/bitcoin#36019: bench: Construct CTxOut and COutPoint in a single expression 950bdb763e1 bench: Construct CTxOut and COutPoint in a single expression bf8402c8803 Merge bitcoin/bitcoin#32958: wallet/refactor: Update SignPSBTInput to return util::Expected<void, PSBTError> and remove PSBTError:Ok 02306cc915c Merge bitcoin/bitcoin#35161: consensus: document merkle mutation root invariant fae6665f013 fuzz: Use ImmediateBackgroundTaskRunner in process_messages 9eba3aafa6c test: avoid undersized Boost.Test signal stacks 747cff84248 rpc: avoid quadratic output lookups 7f9c4e29289 doc: add release notes e18d392689d test: add mempool estimator i/o fuzz test 970f02096d3 fees: persist mempool policy estimator data 7dcb37989d2 fees: move fee_estimates.dat into fees directory 0db2b69e6db rpc: add verbosity option to estimatesmartfee options 06bb65730eb fees: gate mempool estimates on recent block coverage cfe585df25c validation: emit block mempool removal signal from ConnectTip 0d88558f951 fees: return mempool estimates when it's lower than block policy 56db08d5291 Merge bitcoin/bitcoin#35877: build: ci/doc win64-cross build via nix 693b1351aff fees: add caching to MemPoolFeeRateEstimator c9bb3df29ff fees: add MemPoolFeeRateEstimator class 558e26e66e0 test: cover OP_SUCCESSx bypassing the initial stack element size limit e5be0dc35e8 refactor: Make HTTPResponse a struct since all fields are public 69c61f9f2f3 Merge bitcoin/bitcoin#36034: Release: Prepare "Translation string freeze" step 87b8a4ee506 Merge bitcoin-core/gui#944: Fix out-of-bounds read in RPCParseCommandLine on empty command f9cc0c020c2 Merge bitcoin/bitcoin#36020: doc: Correct after HTTPRequest::m_client changed to weak_ptr 5a431c957d1 qt: Update `src/qt/locale/bitcoin_en.ts` translation source file 08dfaa04f4c Merge bitcoin/bitcoin#36018: test: [refactor] Properly use BOOST_CHECK_EXCEPTION fa0fe212f52 test: [refactor] Properly use BOOST_CHECK_EXCEPTION 436921eb469 test: check joinpsbts preserves global xpubs and proprietary fields 011094b282b rpc: preserve global xpubs and proprietary fields in joinpsbts 367b2202a49 Merge bitcoin/bitcoin#35665: psbt: avoid duplicate global xpub keys when merging bab030a6feb Merge bitcoin/bitcoin#35859: wallet: use unsigned KDF iteration count 21ee7f6c00b Merge bitcoin/bitcoin#35069: Refactor keypath parser a07f1313b14 Merge bitcoin/bitcoin#35980: contrib: reject divergent verify-commits history 32dfed44a2a Merge bitcoin/bitcoin#36012: psbt: Remove unused `IsNull()` methods 8c366094b89 Merge bitcoin/bitcoin#35956: fuzz: scope fake clocks to target phases 4d86d9cc7ed Merge bitcoin/bitcoin#35968: test: sync funding block before isolating nodes 8c1d776bf2c Merge bitcoin/bitcoin#35965: test: Tighten Coin equality and add debug output fa8762da626 build: ci/doc win64-cross build via nix fafe7205cc8 doc: Clarify that cygwin/msys2 are not tested/supported 4b991d7b5fe Merge bitcoin/bitcoin#34239: depends: Hash included makefiles in package checksums fe5e2a6319b Merge bitcoin/bitcoin#32162: depends: Switch from multilib to platform-specific toolchains 4e5327bc988 fuzz: refactor: scope fake clocks to target phases 15e5c35c451 doc: Correct comments after HTTPRequest::m_client was changed from shared to weak pointer 1156ce67545 test: Tighten `Coin` equality and add debug output 59224b66aa1 Merge bitcoin/bitcoin#36008: wallet: WalletBatch->WriteVersion respect argument 2c16efbb7b5 psbt: Remove unused IsNull() methods dd669f40b98 util: set os-level thread names on Windows b88bffe550a Merge bitcoin/bitcoin#36010: test: Print os exit code on failure 0fd515bbb70 Merge bitcoin/bitcoin#36009: miniscript: remove unused context argument from ParseHexStr 15a7a4ed7c4 Merge bitcoin/bitcoin#35952: kernel: prevent dangling iterators from temporary ranges ac6b6c1f06e Merge bitcoin/bitcoin#35680: private broadcast: bound rebroadcast attempts to 1,000 d411bb02ff8 Merge bitcoin/bitcoin#35993: guix: build glibc with `--enable-kernel=3.17.0` fada80192bd test: Print os exit code on failure 381c3312191 Merge bitcoin/bitcoin#36007: http: Make HTTPRequest::m_client a weak_ptr 82b3bfe38c0 Merge bitcoin/bitcoin#35797: psbt: support output metadata updates before inputs are added 681b429393e Merge bitcoin/bitcoin#35986: p2p: reconsider orphans when missing inputs are mined 16f4bd15bc9 Merge bitcoin/bitcoin#35954: qa: Disable Qt's glib event dispatcher for GUI tests on OpenBSD 1fdd208c1ce miniscript: remove unused context argument from ParseHexStr 4ca07c2fb3d Merge bitcoin/bitcoin#35963: doc : update cjdns docs to discourage using onlynet option 4b4ae6e37c5 Merge bitcoin/bitcoin#35995: doc: fix outdated URL in hash_tests.cpp a23df4bfa87 Merge bitcoin/bitcoin#35946: rpc: Improve some type specs for openrpc 20ad7c9eab8 Merge bitcoin/bitcoin#35955: wallet: remove orphaned GetAffectedKeys and LegacyScriptPubKeyMan declarations 979a42ec173 http: Make HTTPRequest::m_client a weak_ptr cf36df070b4 Wallet: Check crypter return values 777aee77d12 refactor: deduplicate keypath element parsing 7d8fddfba25 refactor: define BIP32_HARDENED and BIP32_UNHARDENED constants e4d80e7001e test: close the loop after the network thread has completed 29fba5ddbb9 test: close the listeners before terminating the event loop bd4b1524eab init: do not count file descriptors for HTTPServer if -server=0 b08662060db init: account for maximum file descriptors needed by HTTP 158efbc723d doc: fix outdated URL in hash_tests.cpp 9cacf677a91 rpc: add fee_rate_estimator option to estimatesmartfee ba6c61bbdd3 fees: add FeeRateEstimatorManager class 2cb6b831e03 fees: add EstimateFeeRate and MaximumTarget to CBlockPolicyEstimator 5adb2ab0843 refactor: test block policy estimator directly 9c8309a8909 test: rename policy estimator tests to block policy estimator tests e3d5ef1b5fb fees: move StringForBlockPolicyEstimateReason to block policy estimator 74245c20e05 fees: split wallet and estimator fee reasons ec5d19665b8 wallet: WalletBatch->WriteVersion respect argument. cc2acebefb0 http: configure simultaneous connection limit with -rpcmaxconnections b3d6d2d1a7e http: limit connected clients to 16 86651d81971 scripted-diff: Rename nUserBind, nBind, nMaxConnections to snake_case 5548818115c guix: build glibc with --enable-kernel=3.17.0 f72537037d3 Merge bitcoin/bitcoin#35972: fuzz: Fix assertion in `txorphan` 4800cb7aea0 Merge bitcoin/bitcoin#35735: Add state to HTTPRequest e0992599a63 Merge bitcoin/bitcoin#35846: test: Use throwing config parser getters without fallback e5977f0b9e5 Merge bitcoin/bitcoin#35982: Update minisketch subtree to latest master fe7dbde52c9 Merge bitcoin/bitcoin#35976: test: Speedup fee estimation functional test with batching 9cc7dc50bdc p2p: reconsider orphans when missing inputs are mined c90c23d388f Merge bitcoin/bitcoin#35531: txindex: hash keys and pack positions to reduce disk usage 2dcb2c6df20 Update minisketch subtree to latest master 461e3be8d3d Squashed 'src/minisketch/' changes from d1bd01e189..4a179c61e3 05c36d9fadc Merge bitcoin-core/gui#957: fix: add .dat file extension automatically when exporting watchonly 75a4e6c6788 gui: fix allow restore wallets without .dat file extension a8b582ec1d2 Merge bitcoin/bitcoin#32784: wallet: derivehdkey RPC to get xpub at arbitrary path 465bca734eb contrib: reject divergent verify-commits history b3d1dca3388 contrib: fail on verify-commits ancestry errors d837bb38a44 contrib/init: fix unused variables in openrc script fe7d475d450 private broadcast: bound broadcast attempts per tx to 1k b3d77ea0275 test: Speedup fee estimation functional test with batching 683e05a265c Merge bitcoin/bitcoin#35889: rpc: avoid quadratic `gettxspendingprevout` work and preserve order 230185a5ee7 Merge bitcoin/bitcoin#35971: net_processing: remove unused code ae36e2ef798 rpc: avoid quadratic prevout resolution da1eaeb3507 rpc: preserve `gettxspendingprevout` order f98753e7621 refactor: identify prevouts by request index 221a3fe5cfb test: cover mixed `gettxspendingprevout` order 02de12b1e61 wallet: remove remaining LegacyScriptPubKeyMan references d194be69d60 wallet: remove orphaned GetAffectedKeys declaration 01dde6b2057 fuzz: Fix assertion in txorphan dec68f997e7 Merge bitcoin/bitcoin#35852: scripted-diff: Use inline const(expr) over static constexpr in headers e95bab98f03 Merge bitcoin/bitcoin#35960: common: remove `::runtime_error` from `RunCommandParseJSON` aad830ac4a6 Merge bitcoin/bitcoin#35847: test: move more tests to `baseindex_tests` and run them for all indexes b76afff2749 Wallet: Use unsigned KDF iteration count e07d826e0eb rpc: Fix type in ApplyTypeStrOverride 0cff3cc5187 net_processing: Remove redundant porphanTx in ProcessOrphanTx c7eacbd45b0 net_processing: remove Peer& from UpdatePeerStateForReceivedHeaders 8454fb2bd74 test: sync funding block before isolating nodes 8b5da677d7b common: remove ::runtime_error from RunCommandParseJSON 25bed560bed test: add forward-compat functional test for txindex 703304ed8c1 doc: add release notes for txindex disk usage and downgrading 8e5320a2d24 tests: cover txindex hash prefix collisions and legacy fallback b75efa19ba8 txindex: skip bloom filters and legacy lookups for new databases 004d7c098ca txindex: hash key prefixes and pack block positions 5a255970fd1 refactor: move txindex db constants and legacy key to txindex_key.h 327660134cb txindex: pass the full block to DB::WriteTxs 42771e79980 txindex: use a new block locator for downgrade safety 4b08baed72c txindex: return optional tx and block hash from FindTx fc0dcf950f9 kernel: keep range iterators tied to their owner 0936c55f626 test: characterize kernel range iterators ef501a63d9d consensus: document merkle mutation root invariant 11090c8bb35 Merge bitcoin/bitcoin#35951: doc: release note about I2P ElGamal sunset beefda21be3 doc : update cjdns docs to discourage using onlynet option b2c45888fde Merge bitcoin/bitcoin#35866: test: Verify unwelcome RPC clients are rejected before reading their requests c0792889673 psbt: update output metadata without inputs 4f5712476a3 test: characterize P2WSH miniscript output e24e8fa2a68 test: characterize PSBT output metadata 625f951ba2f Merge bitcoin/bitcoin#35959: Update secp256k1 subtree to latest master e9ed5e83a39 Merge bitcoin/bitcoin#35605: wallet: rpc: Deprecate `removeprunedfunds` RPC 800ad9c3c0c doc: release note I2P ElGamal sunset 2f72123f613 Merge bitcoin/bitcoin#35867: test: classify SOCKS5 peers via getpeerinfo addrbind f464f6cd67e Update secp256k1 subtree to lastest master 09cc345c3e3 Squashed 'src/secp256k1/' changes from d2d04864ef..687155df6b c94074fa1b1 rpc: Surface OBJ_USER_KEYS description for openrpc c020c21d543 rpc: Handle skip type args for openrpc e33410d8884 fuzz: document arbitrary mocktimes 4c045f1a032 Merge bitcoin/bitcoin#35945: depends, qt: Add patch for missing headers b0615672352 Merge bitcoin/bitcoin#35947: build, msvc: Update vcpkg manifest baseline 1f5c46f7ce2 Merge bitcoin/bitcoin#35931: ci: Check DLL imports of cross-built `bitcoind.exe` b42f7fade0c descriptor: don't prepend key origins twice 7b15e2cb442 descriptor: fix duplicate check for hardened keys 1bec7fa22c9 Merge bitcoin/bitcoin#35496: kernel: add `btck_set_mock_time` for testing time-dependent paths c1967c4453b Merge bitcoin/bitcoin#35950: Update leveldb subtree to latest master 512dc9af1b1 Merge bitcoin/bitcoin#35930: wallet: post-#35501 cleanups in CWalletTx b970bb34d0c Merge bitcoin/bitcoin#33585: cmake: Use builtin support for .manifest files de2adc308a4 qa: Disable Qt's glib event dispatcher for GUI tests on OpenBSD aa0e0f793fe Merge bitcoin/bitcoin#35729: refactor: test: Unroll `&&` conditions in macros 3e76d22de25 Update leveldb subtree to latest master 9f10ef5e96d Squashed 'src/leveldb/' changes from a7f9bdc611..13da2d6758 2c01832f7be Merge bitcoin/bitcoin#35493: wallet, descriptor: Fix MuSig private key completeness checks on `importdescriptors` b80cee03619 Merge bitcoin/bitcoin#35924: Wallet, refactor: Remove orphaned EraseWatchOnly function 5d051c05629 Merge bitcoin/bitcoin#35943: doc: fix dead link in txrequest.h 4ca182ca402 doc: clarify alternate_wtxids is empty when only one witness variant fa48b5d28eb test: assert listsinceblock "removed" reports current canonical wtxid 9b96ee12881 wallet, test: add unit test for variant txid validation in CWalletTx deserializer 9de6543cb55 wallet: post-#35501 cleanup in CWalletTx e2bf51543ad build, msvc: Disable default features of the `sqlite3` package a31425610af build, msvc: Update vcpkg manifest baseline 757aa573c45 Merge bitcoin/bitcoin#33186: wallet, test: Ancient Wallet Migration from v0.14.3 (no-HD and Single Chain) e8cc21c57f9 Merge bitcoin/bitcoin#35925: wallet, rpc: Exclude non-owned addresses from listreceivedby* e8500cbd19d depends, qt: Add patch for missing headers 9954aa77280 http: don't parse any new requests from a client if m_req_busy = true c7db3ae1f90 test: cover HTTPRequest state machine 90676e24ad1 Add state to HTTPRequest to avoid duplicate work over I/O cycles 99497b38f6c cmake: Unconditionally add .rc files to sources 654a4cf5e69 cmake: Use builtin support for .manifest files 8f695379f31 cmake: Unconditionally set WIN32_EXECUTABLE target property 507e528e845 http: reuse HTTPHeaders to parse chunked trailer 902d8908c94 http: only read one HTTPRequest at a time per client a7b0b5084a4 doc: fix dead link in txrequest.h 1d386c250f2 Merge bitcoin/bitcoin#35941: doc: remove mention of `::wsystem` 57246934e71 doc: remove mention of wsystem 5973e075882 Merge bitcoin/bitcoin#35937: test: Append print_suppressions=0 to LSAN_OPTIONS, and suppress bitcoin-qt b6bd573eb97 Merge bitcoin/bitcoin#34794: rest: add Cache-Control headers to REST responses d055a3ab100 test: verify disallowed RPC clients are rejected upon `accept()` 128456b62d5 Merge bitcoin/bitcoin#35260: doc: clarify test placement guidance fad9ab714b5 test: Append print_suppressions=0 to LSAN_OPTIONS, and suppress bitcoin-qt 05a7c470d28 Merge bitcoin/bitcoin#35822: fuzz: reset SOCKS5 interrupt between inputs 73a94b45459 psbt: avoid aborting on invalid MuSig2 derivations e3d1e75a519 test: characterize MuSig2 derivation aborts 1be0b46297c Merge bitcoin/bitcoin#35898: rpc: fix mempool entry vsize docs 5f4d5626e7f Merge bitcoin/bitcoin#35908: doc: Update NetBSD Build Guide 8397e09e6ba Merge bitcoin/bitcoin#35928: doc: mention -DWITH_ZMQ=ON in macOS build guide 4b4e63f2823 Merge bitcoin/bitcoin#35704: windows: remove deprecated codecvt via UTF-8 narrow APIs 67fee5bf440 ci: Check DLL imports of cross-built `bitcoind.exe` 089c883c558 test: Add coverage for listreceivedby* excluding "send" addresses 873c0548059 wallet: Exclude non-owned addresses from listreceivedby* c3945bfd2bf doc: use derivehdkey in multisig tutorial 3662e336697 test: use derivehdkey in M-of-N multisig demo d9570f08383 rpc: add derivehdkey 62da9f96145 wallet: add GetExtKey helper 222855ed112 doc: mention -DWITH_ZMQ=ON in macOS build guide aaf1548475d wallet: generalize GetActiveHDPubKeys helper 3821452c4af refactor: add hardened derivation helper 0ab61caafd1 rpc: ParsePathBIP32 helper e36c4b76e19 util: reject out-of-range BIP32 keypath indices ba78c31a00c fuzz: check ParseHDKeypath/WriteHDKeypath round-trip 8cce969085d Have ParseHDKeypath handle h derivation marker fc530777623 test: move parse_hd_keypath test to bip32_tests dab525eb771 key: add DeriveExtKey() helper 71c06c5cbcd Merge bitcoin/bitcoin#35830: fees: Return false for incompatible fee estimates 55dfc244143 Merge bitcoin/bitcoin#35915: Release: Prepare "Open Transifex translations for `v32.0`" step f11dc6170ed Merge bitcoin/bitcoin#35482: fuzz: exercise the transaction-handling path in process_message(s) 6f906106d73 Merge bitcoin/bitcoin#35879: ci: Fix $BASE_ROOT_DIR installation d36bf709f7f Merge bitcoin/bitcoin#35914: test, fuzz: Remove unused variables ed2c59ab654 Merge bitcoin/bitcoin#35896: refactor: Default uint256::operator==, add operator<=> fae7ba9abae ci: Fix $BASE_ROOT_DIR installation fabe100c2b3 test: Use throwing config parser getters without fallback fa8acd57cd1 test: Write true/false values in config.ini 6304789a18f Wallet, refactor: Remove orphaned EraseWatchOnly function 6b6d77cc84e windows: remove deprecated codecvt via UTF-8 narrow APIs b388674acf0 Merge bitcoin/bitcoin#35872: rpc: avoid descriptor range counter overflow c36ffd870e8 Merge bitcoin/bitcoin#35842: rpc: Properly make RPCResult::Type::ANY non-test-only 7cb9aaaee80 Merge bitcoin/bitcoin#35759: fuzz: check http_request body matches framing 5b008514dbe Merge bitcoin/bitcoin#35878: net_processing: process unique tx INVs only 3175d576288 test, refactor: Remove unused `error` in `wallet_tests.cpp` 422f1bd92f1 test, refactor: Remove unused `utxo_pool` in `coinselector_tests.cpp` e550945a394 test, refactor: Remove unused `removed_refs` in `txgraph_tests.cpp` a061b011b78 Merge bitcoin/bitcoin#35912: doc: fix stale bitcoin_en.xlf reference 950b1c09225 Merge bitcoin/bitcoin#34927: test: Check that RPCs do not time out, even under load bd01e66f0a7 Merge bitcoin/bitcoin#35885: ci: switch to a sourceware mirror for riscv fa2e76d397a bench: Add base_blob compare bench via uint256 97abf95f48a qt: Update the `src/qt/locale/bitcoin_en.ts` translation source file 81fcecfe452 Revert "ci: Temporarily remove riscv32 config from GHA matrix" b283e1751cc ci: use mirror for riscv submodules fa7bc26d127 test: Check that RPCs do not time out, even under load fa2bd96cc0d test: Map cli CalledProcessError on server error to JSONRPCException e50f422d25f test, refactor: Remove unused variables in `test/rbf_tests.cpp` b7ae50e2e27 fuzz, refactor: Remove unused `header` in `p2p_transport_serialization.cpp` 3df0d067ade fuzz, refactor: Remove unused `random_string` in `locale.cpp` fc28914de4e fuzz, refactor: Remove unused `linearization` in `cluster_linearize.cpp` da58e559865 test, refactor: Remove unused `warnings` in `wallet/test/util.cpp` 4df077d7cd3 Merge bitcoin/bitcoin#35910: refactor: Remove unused newFeeRate var in ReplacementChecks e98ffd4bd82 doc: fix stale bitcoin_en.xlf reference fa9a9a82acd refactor: Remove unused newFeeRate var in ReplacementChecks fa588e9e0f8 refactor: Mark assertion_fail as [[noreturn]] 1278a5970d5 net_processing: process unique tx INVs only 75f58519277 doc: add release note for REST cache-control headers bbe21ac29f5 doc: document REST cache-control defaults 862a1795563 http: add no-store to dispatcher-generated error responses f32685315c2 doc: Install `pkgconf` to find `capnproto` on NetBSD 5964c7229fc doc: Switch `pkg-config` package to modern `pkgconf` on NetBSD 9b85c9814d1 doc: Drop GCC upgrade instructions for NetBSD ea59f172209 test: cover v0.14.3 wallet migration 18b8afd0933 test: support v0.14.x in dumb_sync_blocks faec059dfe8 refactor: Add uint256::operator<=>() b9d573e4a95 fees: Return false for incompatible fee estimates a3ebf8ab607 rpc: fix mempool entry vsize docs c4fbd3c7211 Merge bitcoin/bitcoin#35895: refactor: Enable clang-tidy rule to reject anon namespace in header 465196d0154 Merge bitcoin/bitcoin#35630: test: Add importdescriptors rpc error test coverage fa6df14c236 refactor: uint256::operator==() = default c940fd75145 Merge bitcoin/bitcoin#35180: coins: group private cache helpers 3db96eb5fd7 Merge bitcoin/bitcoin#35582: rpc: reject null for optional parameters fa93132d6da refactor: Enable misc-definitions-in-headers fa5ca877b60 refactor: Enable clang-tidy rule to reject anon namespace in header fafe5042bd1 refactor: Use C++20 std::identity over IntIdentity 28257111acf Merge bitcoin/bitcoin#35737: test: Move cluster_linearize.h contents into cluster_linearize namespace fac4b06e997 refactor: Use CLIENT_NAME in buildOpenRPCDoc fa3aadbc32e refactor: Use self.Arg<bool> in getopenrpcinfo fa1871a5281 refactor: Remove stale NOLINTNEXTLINE above GetAddressInfoBaseFields fa226479149 rpc: Properly make RPCResult::Type::ANY non-test-only fa1242dcc02 refactor: Use std::visit in ApplyArgFallback 27b6b5a458f Merge bitcoin/bitcoin#35836: rpc: Remove meaningless bool fallback in FundTransaction 3ac8b806a69 test: test the result order of a multiple import request is correct e4732bf0187 test: test invalid or missing timestamp throws importdescriptors 324c231efea Merge bitcoin/bitcoin#35881: iwyu: Fix warnings in `src/consensus` and treat them as errors 6ed7e05e20d gui: fix add .dat file extension automatically when exporting watchonly 75183f4464b Merge bitcoin/bitcoin#35880: fuzz: don't connman.ReceiveMsgFrom oversized msg fab74a0e922 refactor: Use C++14 digit separator for large int literals fae759be793 scripted-diff: Use inline constexpr over plain constexpr fa74f58a262 scripted-diff: Use inline const over (static) const fab1a62c870 refactor: Use inline constexpr for string literals in headers fa08bbed8dd contrib: Adjust generate-seeds.py to write inline constexpr fad753611b5 scripted-diff: Use inline constexpr over (static) const faedb52583e refactor: Make CFeeRate(integral) ctor constexpr 5555d5dcb55 scripted-diff: Use inline constexpr over static constexpr fa6e1a1e85e refactor: Remove static from constexpr functions in headers e2ab8ae5514 wallet: spkm: Only notify CanGetAddressesChanged on change 0892f16f911 refactor: moveonly: Pair CanGetAddressesChanged notifications with desc range. e6adae3db24 wallet: `NotifyCanGetAddressesChanged` when advancing `next_index` acf45c44c01 rest: add Cache-Control headers to REST responses d3cfd02bd7f Merge bitcoin/bitcoin#35501: wallet: store all witness variants of a transaction 0b8ffd01cde Merge bitcoin/bitcoin#35790: fuzz: populate wallet TXO index in wallet_create_transaction 2f52c2e8c06 Merge bitcoin/bitcoin#35886: refactor: Remove unused #include in common/system fa7304f3a5b refactor: Remove unused #include in common/system e7eb159a868 Merge bitcoin/bitcoin#35773: test: Suppress implicit-unsigned-integer-truncation:SaltedCoinsCacheHasher::operator() c6ef42d7dbc Merge bitcoin/bitcoin#35205: kernel,node: add `dbcache` setter and clarify defaults f280f5eb474 wallet: rpc: deprecate removeprunedfunds 4e8c4bc794c test: classify SOCKS5 peers via getpeerinfo addrbind 17c5e33e9c5 Merge bitcoin/bitcoin#35216: qa: Improve functional test support on illumos and *BSD 13b53f8bf67 iwyu: Fix warnings in `src/consensus` and treat them as errors bb19f1da19c fuzz: don't connman.ReceiveMsgFrom oversized msg 8a4bab8e975 Merge bitcoin/bitcoin#35863: test: fix wrong transaction in GetP2SHSigOpCount assertion 975a314667e Merge bitcoin/bitcoin#35832: p2p: avoid block disk reads on unnecessary requests d24610fa2c7 Merge bitcoin/bitcoin#35870: guix: move `python-minimal` to Linux GUI build b33a5b5767e Merge bitcoin/bitcoin#35871: refactor: Annotate `MakeAndPushFeature` with `[[maybe_unused]]` 4b322989ac2 Merge bitcoin/bitcoin#34995: iwyu: Fix warnings in `src/common` and treat them as errors 75f024a84e0 Merge bitcoin/bitcoin#35875: ci: Fix NetBSD SDK download failure, Temp. remove riscv32 from GHA fa06ea42448 ci: Temporarily remove riscv32 config from GHA matrix 873550bea38 ci: verify cross-build SDK archives 2c87337efe8 ci: update NetBSD cross-build SDK 6a2de55a0d8 test: require `TryGetTotalRam()` detection cd086c16dd7 node, qt: inline `DEFAULT_DB_CACHE` 8bd9f46082d kernel: allow setting chainstate `dbcache` 8aa21e119b0 kernel, node: colocate dbcache bounds 7cfa21d60a5 scripted-diff: use `MIN_DBCACHE_BYTES` ab634325768 common: cache total RAM as `uint64_t` 031fa402c8a scripted-diff: use `TryGetTotalRam` 264555af3cc rpc: avoid descriptor range counter overflow 143a13fb2bd test: characterize descriptor range endpoint 41c44f55885 node, qt: use `1_MiB` for dbcache conversions 0238aebf619 refactor: Annotate `MakeAndPushFeature` with `[[maybe_unused]]` 1ed14c61222 Merge bitcoin-core/gui#872: Menu action to export a watchonly wallet b75eb938a04 guix: move python-minimal to GUI build 101400b28f7 guix: remove -Werror=dev e27c179db2f Merge bitcoin/bitcoin#35869: lint: (re-)add contrib/guix for Python linting 50145f62c92 ci, iwyu: Enforce warning-free `src/common` 30f6b05857f Merge bitcoin/bitcoin#35860: fuzz: Rework rpc fuzz target dcc2ed52b84 Merge bitcoin/bitcoin#35856: fuzz: cover the mempool interface for transaction announcement 8221d714c78 lint: document CI lief version requirement 594a02c3ae0 lint: re-add guix scripts to mypy linting e8691056c01 test: Unroll `&&` conditions in macros ddddffda3af doc: Add doc/release-notes-35836.md 756afe14b5c test: give each ValidateInputsStandardness case its own scope 5559fa464b3 test: fix wrong transaction in GetP2SHSigOpCount assertion 556988790a7 Merge bitcoin/bitcoin#35592: http: check rpcallowip immediately after accepting connection fa895bb77a8 fuzz: Rework rpc fuzz target 28641fd195d p2p: reject empty getblocktxn requests dd2561003dd fuzz: cover the mempool interface for transaction announcement 9871fb726cb p2p: reject filtered block inv early when bloom is disabled aaf94120266 refactor: split p2p_getdata.py in sub-cases 34c03075a5a test: run generic baseindex tests against every index type 11b3e251c48 test: make baseindex flush test chain-length agnostic 8b959f4c6ab test: move unclean_shutdown test to baseindex_tests 2232d6afbe2 test: move index_reorg_crash to baseindex_tests a3597e26837 test: move BuildChain helper into test mining util 954985e6a38 test: simplify blockfilter test's BuildChain helper 67efced1fc8 Merge bitcoin/bitcoin#35838: qa: Enable `interface_gui.py` on macOS 45f5609f2ed qa: Enable `interface_gui.py` on macOS fa7fe798c61 wallet: Remove meaningless bool fallback in FundTransaction 9611a356035 Merge bitcoin/bitcoin#35828: util: Make LineReader consistently use string_view 6e2962e48cb Merge bitcoin/bitcoin#35753: kernel: handle null mempool on chainstate deletion 87bc4c74c4d Merge bitcoin/bitcoin#35787: init, rpc: ignore empty addnode values 67998e15c8d Merge bitcoin/bitcoin#35553: test: Add missing test case for getdata requests from blocks-only peers 9b38d077f89 Merge bitcoin-core/gui#953: Adds option to not load the wallet after migration 146988ef6c5 Merge bitcoin/bitcoin#35551: test: add interface_gui.py to test bitcoin-qt startup 7e5952b0aa0 Merge bitcoin/bitcoin#35821: guix: followups to #35537 683ae4c520b guix: consolidate config flags 665f11d04ac guix: consolidate gcc toolchain setup 288f76ed0fc guix: consolidate mingw-w64 toolchain setup cc9b0f2266d guix: consolidate LLVM toolchain setup b12a70f330d guix: turn linux/win linker warnings into errors fd7d4f29704 Merge bitcoin/bitcoin#35795: build: set CMAKE_VISIBILITY_INLINES_HIDDEN in REDUCE_EXPORTS 8ecbe270f0d Merge bitcoin/bitcoin#35606: script: qa: Improve `Key::Fingerprint` type safety a9d181f2d35 Merge bitcoin/bitcoin#35084: ipc: Add nonunix platform support 6573196e63b doc: Release note for export watchonly wallet gui action cb51f97f6c5 gui: Menu action for exporting a watchonly wallet 4cea59573c8 add release notes 492a715d784 gui: Adds option to not load the wallet after migration dff44e4c8f3 util: LineReader - Drop support for raw std::byte spans 5d5cdcd79d4 util: Make LineReader consistently use string_views e8eaa80ce29 util: LineReader - Don't include newline and acknowledge single-char \r 5907a5c7dc2 gui: Add ExceptionSafeConnect that takes a lambda 7dea464d6b5 Merge bitcoin/bitcoin#35692: addrman: remove unreachable tried-collision branch a2aab6df97d Merge bitcoin/bitcoin#35810: guix: Drop unused `(guix licenses)` import from `manifest_build.scm` 77440814bf2 fuzz: reset SOCKS5 interrupt between inputs 90ce21e21d0 rpc: reject empty node argument in addnode 69465de4470 init: ignore empty addnode values e75b76b12c5 Merge bitcoin/bitcoin#35261: guix: disable LTO in GCC a92e93429ee guix: Drop unused `(guix licenses)` import from `manifest_build.scm` 5be248341a8 bugfix: compare real chunk weight against block weight limit fc987908699 test: `TestChunkBlockLimits` uses incorrect weight for comparison e34b8d5a7dc Merge bitcoin/bitcoin#35794: doc: Discourage adding AI agents as commit (co)-authors b33a7fcd7bd Merge bitcoin/bitcoin#34628: p2p: Replace per-peer transaction rate-limiting with global rate limits 6b059d9dbdb Merge bitcoin/bitcoin#32800: rpc: Distinguish between vsize and sigop adjusted mempool vsize 11ebbd90721 Merge bitcoin/bitcoin#28463: p2p: Increase inbound capacity for block-relay only connections 3f313a774be build: set CMAKE_VISIBILITY_INLINES_HIDDEN in REDUCE_EXPORTS 3a2c52f9d70 Merge bitcoin/bitcoin#35792: refactor: Make all `const static` class members `constexpr` f5d7cc66ecb doc: Discourage adding AI agents as commit authors 05c35c402cc refactor: Make all `const static` class members `constexpr` c11508406e6 doc: Update docs that refer to -maxconnections 69ce0dba2ae test: add test that EvictTxPeerIfFull only evicts tx-relaying peers 3ed7f064180 p2p: trigger possible eviction if we support bloom filters and change a peer to tx relay 0bd3d3dfa56 init: make inbound tx relay percentage configurable cc59aee196e test: add functional test for inbound maxconnection limits 1b76e047364 net: increase inbound capacity for block-relay-only connections baa5a2ce43a guix: pass --disable-tm-clone-registry to base GCC 9c2589630f0 guix: mirror some arguments from linux-gcc to mingw-w64-gcc e0b8fbde897 guix: disable-nls in *-base-gcc 7dc87f8e1e2 guix: disable-lto in *-base-gcc 9ed3d6ef2a2 guix: modernise style in *-base-gcc 1eac6a728bf fuzz: populate wallet TXO index in wallet_create_transaction 610dd320d1a Merge bitcoin/bitcoin#35783: chainparams: remove my testnet3 seed afa5e46bbc6 Merge bitcoin/bitcoin#35076: doc: clarify pruning impact on wallet sync 26b730cdbf2 Merge bitcoin/bitcoin#35320: key: validate BIP32 seed length in CExtKey::SetSeed edf4b807f05 Merge bitcoin/bitcoin#35781: Update secp256k1 subtree to latest master 774d11c58f2 Merge bitcoin/bitcoin#35664: test: add CLTV and CHECK(MULTI)SIGVERIFY failure-path vectors to script_tests.json 526673487ce Merge bitcoin/bitcoin#34683: rpc: support a formal description of our JSON-RPC interface 290cb2f17ef Merge bitcoin/bitcoin#35775: scripted-diff: Use C.UTF-8 locale in Guix scripts d472a7798ac Merge bitcoin/bitcoin#32764: guix: Build for macOS using LLVM toolchain only 9755d33390d Merge bitcoin/bitcoin#34808: cmake, translation: Use native Qt TS file as source for translations on Transifex 51143291a6c Merge bitcoin/bitcoin#35782: doc: fix outdated i2p URLs in comments 2cb3bfa8df7 scripted-diff: Use long form of shell options in Guix scripts 711eb10f08b guix: Add copyright headers to Guix scripts 7295b8be704 chainparams: remove my testnet3 seed 419f7427eee doc: fix outdated i2p URLs in comments a33f240524d Squashed 'src/secp256k1/' changes from bd0287d650..d2d04864ef c26d4e2d6f0 Update secp256k1 subtree to latest master 22a03ca6944 Merge bitcoin/bitcoin#35694: clusterlin: minor SFL optimizations 7b6f9ba7bad Merge bitcoin/bitcoin#34672: mining: add reason/debug to `submitSolution` and unify with `submitBlock` 5311b15727f Merge bitcoin/bitcoin#33014: rpc: Fix internal bug in descriptorprocesspsbt when encountering invalid signatures c9cedebfffb coins: group private cache helpers 8a90c7cd973 guix: Build for macOS using LLVM toolchain only db74d3390a3 doc: clarify test placement guidance d3d74e701f7 ipc, refactor: Update mp::g_thread_context references 80f831494e5 guix: Fix `glibc` version in comment 8916f7967e1 scripted-diff: Use C.UTF-8 locale in Guix scripts a2e074d66ac Merge bitcoin-core/gui#951: test: Nudge toward QT_STYLE_OVERRIDE=fusion on macOS 6ced9ad782b Merge bitcoin/bitcoin#35770: net: Simplify `AddressPosition` comparitor b8844d3df75 Merge bitcoin/bitcoin#35766: p2p: Assume v2transport for addresses from seeds fa7f5537817 test: Suppress implicit-unsigned-integer-truncation:SaltedCoinsCacheHasher::operator() 075e7f42187 net: Simplify `AddressPosition` comparitor fa0c8337a8d test: Nudge toward QT_STYLE_OVERRIDE=fusion on macOS faa50c08b17 refactor: Run clang-format on qt test_main.cpp bc49bd154a3 Merge bitcoin/bitcoin#35709: depends: Update Qt to 6.8.4 efa1800a885 Merge bitcoin/bitcoin#35769: depends, zeromq: Apply upstream patch fc4ceda8b61 Merge bitcoin-core/gui#949: Fix `-Wsfinae-incomplete` warnings when building with GCC 16.x 559d042ba25 Merge bitcoin/bitcoin#35736: bitcoin-util: replace netmagic command with getchainparams command 8f2ed31f702 Merge bitcoin/bitcoin#35767: fuzz: Avoid dangling prevoutfetch threads after AFL fork a31c30290d4 Merge bitcoin/bitcoin#35746: ci: Test build directory path with spaces e446ea09c4d depends, zeromq: Apply upstream patch 87b080fe2b6 fuzz: reset the reused mempool in process_message(s) d522fd31963 fuzz: prepare deterministic mempool rebuilds b11456386b2 fuzz: let the test input toggle IBD in the p2p fuzz targets 2a29cee6843 test: add helper to reset chainman and mempool 2a4ef42d34e fuzz: share a single FakeNodeClock in the chainman-resetting fuzz targets 32eb5210029 Merge bitcoin/bitcoin#35215: coins: use SipHash-1-3-UJ for CCoinsMap keys 883ef1d85d7 Merge bitcoin/bitcoin#35727: blockencodings: fix extra transaction count f3f302150b5 ci: Put space and non-ASCII char in `BASE_BUILD_DIR` a7e980af31b build: Quote host paths in NSIS installer template faada35f9c0 fuzz: [refactor] Use 100'000 digit separator in __AFL_LOOP cf0f2aeae00 p2p: Assume v2transport for addresses from seeds fae067ec4a4 fuzz: Avoid dangling prevoutfetch threads after AFL fork 7e1a750d45d guix, refactor: Use `target` variable instead of hardcoded value de9b436ba36 depends: Switch from multilib to platform-specific toolchains d673ca765a5 Merge bitcoin/bitcoin#35537: guix: split builds into Linux, Linux GUI and macOS/Windows b36c2d78a3a Merge bitcoin/bitcoin#35490: test: cover unused mempool space in coins cache limit 7502b9ddba7 fuzz: check http_request body matches framing d1d85263f8e Merge bitcoin/bitcoin#35681: test: cover disconnect on private broadcast peer with relay=false 4906594a384 Merge bitcoin-core/gui#950: qt, test: Run GUI tests on macOS with `minimal` QPA plugin e0c196f9c11 Merge bitcoin/bitcoin#35721: lint: drop most remaining default Ruff rule ignores fd59d68c262 qt, test: Enable tests on macOS with `minimal` QPA plugin c8b2aeb2263 qt: Avoid implicit `NSApplication` instantiation 006f8f7d49a Merge bitcoin/bitcoin#35090: fuzz: add p2p_private_broadcast harness 51d36dfd076 qt: Fix `-Wsfinae-incomplete` warnings when building with GCC 16.x 0b0785daa00 guix: split macOS and win builds 008a3e29c88 guix: split builds into Linux(gui) and macOS/Windows a99b27f1920 validation: handle null mempool on delete a3b5dc05723 cmake: Add `GenerateWindowsInstaller` script 3bfdcbd7ee4 coins: reuse cache hasher for txid set 2beab94896a coins: use SipHash-1-3-UJ for `CCoinsMap` 7ff55cc6500 bench: add fixed-width SipHash benchmarks 3aea85411f6 test: add SipHash-1-3-UJ coverage a0ccd4ad171 crypto: add fixed-width SipHash-1-3-UJ c2d7931b5c8 crypto: add generic SipHash-1-3-UJ 25bfca06d66 refactor: simplify adding SipHash-1-3-UJ af50ba8500a test: add shared SipHash vectors fa5cbb89097 uint256: Workaround GCC-14 stringop-overread bug in Compare 18c05d93016 Merge bitcoin/bitcoin#35590: test: wallet: BnB incomplete result on attempt-limit success 21b4b790e48 test: Move cluster_linearize.h contents into cluster_linearize namespace b56b66fc64b Merge bitcoin/bitcoin#35679: fuzz: Remove unused `DeserializeFromFuzzingInput` params overload 6ee05c4b188 test: wallet: BnB incomplete result on attempt-limit success 6aa5d8d9481 blockencodings: fix extra transaction count be4e64d9e40 test: characterize extra transaction miscount 2d3f72fd3fa ipc, refactor: Update mp::SpawnProcess call 7298281ba8d bitcoin-util: replace netmagic command with getchainparams command 9d6ba4b3b57 Merge bitcoin/bitcoin#34514: refactor: remove unnecessary `std::move` for a few trivially copyable types ca9ffb8e123 rpc: add OpenRPC discovery alias 6c9d76d5894 doc: release note for alternate_wtxids in gettransaction 99bdcb064c2 test: compat, ensure downgrade preserves tx witness variants ef2afc6a0a3 test: Test for wallet txs with alternate wtxids 2d55c7a74dd wallet: Show alternate wtxids in gettransaction 0b1af01bd44 wallet: Replace CWalletTx::SetTx with Update 56cf27db4dc wallet: Store all witness variants of a transaction 798ba6d04fa wallet: Make CWalletTx::tx private and use CWalletTx::GetTx to access 72ebdd6364c wallet: Remove unused CWalletTx CopyFrom and copy constructor 19af439bdf3 wallet: Deserialize directly in CWalletTx's ctor afab8d4225c fuzz, refactor: Remove `Serialize` overload efa7f8c1437 fuzz: Remove unused `DeserializeFromFuzzingInput` params overload 6eca11175be lint: remove E731 Ruff ignore b52454538b0 lint: remove E712 Ruff ignore e9f19815caa ipc, refactor: Add Stream type alias and use it 3859805f05e ipc, refactor: Add SocketId type alias and use it 2ee9b69c7a1 ipc, refactor: Add ProcessId type alias and use it 34497971418 ipc: Avoid 'unistd.h' error with MSVC dbcc192dce6 ipc, refactor: fix include order 7c86d4834ed ipc, refactor: use native path separators in test 00287b9a340 ipc, refactor: Change Protocol class field order 33d37f3c35e ipc, refactor: Drop connect/listen/serve exe_name parameters 794940469e7 ipc, moveonly: combine ipc_test.cpp and ipc_tests.cpp efb4eae3386 clusterlin: avoid recomputing intersections in MergeChunks 4b91ad149f0 clusterlin: reserve the suboptimal-chunk queue up front e6ca996255b clusterlin: avoid heap allocations in GetLinearization 226e6388b7f depends: Update Qt to 6.8.4 fef99e6563a qt: fix out-of-bounds read in RPCParseCommandLine on empty command 349c72ee00a net_processing: Drop unnecessary txid arg from InitiateTxBroadcastToAll 12b0dc33c4a doc: Add release note for -txsendrate etc 5cde66341a6 tests: basic functional test for tx rate limiting 4842903ac12 rpc: report -txsendrate and bucket info via getnetworkinfo 74a47a52071 init: add -txsendrate configuration parameter 6307bd034bf net_processing: Provide a 30bpm heartbeat log while inv backlog is in use df31ee57aaf net_processing: add a global delay queue for sending txs 7927650e56d util/tokenbucket.h: Provide a generic TokenBucket class 749bb447f81 txmempool: Drop CompareMiningScoreWithTopology e1b7490fbc9 net_processing: Replace CompareInvMempoolOrder 6cfc65d2103 txmempool: Add ExtractBestByMiningScoreWithTopology 026f70e05f9 net_processing: Remove per-peer rate-limiting 46c8c471dcf net_processing: bump last_inv_sequence for bip35 messages explicitly 5d57f2cefee test: cover unused mempool space in coins cache 1fc9277a1c1 test: cover disconnect on private broadcast peer with relay=false bc7d9050467 addrman: remove unreachable tried-collision branch 0390338692a test: check MuSig import private key warnings 5e62fbf09c0 wallet: check descriptor private key completeness on import cd8d01bf47a descriptors: require complete MuSig private keys 55d3cd51a48 doc: add release note describing change for forbidden clients d1ed2a6e25d http: check rpcallowip immediately after accepting connection d24d3cbad01 fuzz: add p2p_private_broadcast harness c4068cf37b6 test: add negative zero CSV failure script test vector 37edf0e2338 test: add CHECKLOCKTIMEVERIFY failure-path script test vectors 29b124416e4 doc: add release notes for 32800 5d25a0c28d1 rpc: add `vsize_adjusted` field to getrawtransaction output for mempool transactions eaef8d31118 rpc: add `vsize_adjusted` and `vsize_bip141` field to mempool-related RPCs 6d387af562f psbt: remove write-only global xpub tracking set 3b7051c7e33 test: check combinepsbt with conflicting global xpub origins 7c632c0e2a2 psbt: avoid duplicate global xpub keys when merging a86a96d17b3 test: add CHECKSIGVERIFY/CHECKMULTISIGVERIFY failure script test vectors 07fb58b9ef2 test: Test a locked wallet rejects an empty importdescriptors request aeca0610865 rpc: reject null for optional parameters f4a6d079c42 qa: Support `get_bind_addrs` and `feature_bind_extra` on illumos 5e96a8fd5ac doc: Add `lsof` to Test Suite Dependencies on NetBSD 5d01aa4772a qa: Ignore `lsof` warnings on NetBSD 70352fda038 qa: Strip prefix length from NetBSD `ifconfig` output 1c1735567e2 doc: Add `lsof` to Test Suite Dependencies on FreeBSD 4cb7f39c2ce qa: Drop OpenBSD from supported platforms in `get_bind_addrs` function 8a982eea854 qa: Add `skip_if_no_lsof_on_nonlinux` helper and use it where needed 7e973cce52c depends: Make tarball creation from local directory reproducible e5b7785447f test: wallet: resend: avoid internal behavior via removeprunedfunds c9a70f93387 script: qa: Improve Key::Fingerprint type safety aa01721c899 test: add interface_gui.py to test bitcoin-gui startup via RPC ef0676f4007 rpc: factor getaddressinfo embedded field docs 1fb6b605609 test: add functional test for getopenrpcinfo 672dd42d140 rpc: add getopenrpcinfo command d5e64b01e1b doc: note -blocknotify is not run during IBD/reindex in help text f5116c587f7 rpc: add placeholder annotation for deprecated params 26c221a980d rpc: expose RPC metadata for introspection 6a1a66c180c rpc: render Type::ANY in help text instead of aborting 06de34a0333 rpc: erase empty map entry in removeCommand d4d64ae7393 rpc: add missing string_view include to server.h 278710a88d8 test: Add missing test case for getdata requests from blocks-only peers 156f2c6c49d kernel: add `btck_set_mock_time` for testing time-dependent paths 75929b11edb doc: add release note for submitSolution IPC changes ed75d70fdb8 refactor: centralize SubmitBlock result handling cbaa1696f37 mining: add reason and debug output to submitSolution 83f3bc002d0 mining: clarify SubmitBlock result handling 87bca1c2adb net: add options to AttemptToEvictConnection 2cf9d79d84c key: validate BIP32 seed length in CExtKey::SetSeed 3e8e21b2efc txgraph: avoid moving primitive members d9f94aa882a rpc: avoid moving RPC enum types b67baed4e7e coins: avoid moving `COutPoint` values 7e19ce200b2 rpc: Fix descriptorprocesspsbt internal bug on invalid signatures 51ee8ca1683 doc: clarify pruning impact on wallet sync 6cca38e2b92 refactor: remove unused PSBTError::Ok 3660678b953 refactor: SignPSBTInput now uses util:Expected ec61a1af621 depends: Hash included makefiles in package checksums a434d660250 cmake, translation: Specify English as target language explicitly 4097d6d968e cmake, translation: Sort messages within contexts alphabetically 312ab8ab0a8 cmake, translation: Skip source locations in TS files 4f553bd0da2 cmake, translation: Remove TS to XLIFF conversion 8c30055458b translation: Switch to Qt TS source file git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: 97462c683d49792a58ba954723a205cda86a5e0b
Based on: bitcoin/bitcoin#32162 Modified for sv2-tp: - Apply the CI changes to ci/test/00_setup_env_i686.sh, retaining our Ubuntu version, IPC support, and other existing CI settings. - Remove the Guix compiler overrides in the combined build.sh; sv2-tp does not have separate Linux or GUI build scripts. - Retain the existing Windows instructions in depends/README.md. (cherry picked from commit de9b436ba36576903744feb17e4fae7b1842c75b)
Using the multilib GCC toolchain, as currently documented in
depends/README.md, has several issues, such as:The
g++-multilibpackage conflicts with platform-specific cross-compiler packages. This means it is not possible to cross compile fori686and other platforms using the same set of installed packages.The
g++-multilibpackage is not available forarm64:This PR addresses all the issues mentioned above by switching from multilib to platform-specific toolchains.
Also see #22456.
Here are examples of building for different scenarions:
x86_64orarm64, building with depends natively:x86_64orarm64, cross compiling fori686-pc-linux-gnu:x86_64, cross compiling forarm64:arm64, cross compiling forx86_64: