Commit Graph

44740 Commits

Author SHA1 Message Date
merge-script
9a05b45da6 Merge bitcoin/bitcoin#32438: refactor: Removals after bdb removal
fa061bfcdb Remove create options from wallet tool (MarcoFalke)
fa2125e7b8 Remove unused IsSingleKey (MarcoFalke)
fab5e2a094 doc: Remove note about bdb wallets (MarcoFalke)
eeeef88d46 doc: fix typo in abortrescan rpc (MarcoFalke)
fa7e5c15a7 Remove unused LegacyDataSPKM::DeleteRecords() (MarcoFalke)
ffff949472 remove NotifyWatchonlyChanged (MarcoFalke)
fa62a013a5 remove dead flush() (MarcoFalke)
fa5f3e62c8 vcpkg: Remove bdb (MarcoFalke)

Pull request description:

  This deletes some dead code

ACKs for top commit:
  Sjors:
    ACK fa061bfcdb if CI is also happy
  rkrux:
    utACK fa061bf

Tree-SHA512: 6c0b0705caa4ad024e6b921bd7f65aaa055d1f12f7884cd61823cbf0c32e46697ddbdaa209ab449d6a1df9761ce5d53763e25f26e4c36ce4c685b7524f5a3dd9
2025-05-09 16:47:55 +01:00
MarcoFalke
fa061bfcdb Remove create options from wallet tool
Just create descriptor wallets.
2025-05-09 15:07:04 +02:00
MarcoFalke
fa2125e7b8 Remove unused IsSingleKey 2025-05-09 15:06:51 +02:00
MarcoFalke
fab5e2a094 doc: Remove note about bdb wallets 2025-05-09 15:06:50 +02:00
MarcoFalke
eeeef88d46 doc: fix typo in abortrescan rpc 2025-05-09 15:06:37 +02:00
MarcoFalke
fa7e5c15a7 Remove unused LegacyDataSPKM::DeleteRecords() 2025-05-09 15:06:20 +02:00
merge-script
b070ce1696 Merge bitcoin/bitcoin#31360: depends: Avoid using helper variables in toolchain file
7343a1846c depends: Avoid using helper variables in toolchain file (Hennadii Stepanov)

Pull request description:

  Using helper variables has two issues:
  1. They contaminate the global namespace of the main build script.
  2. They can be used as `set(var)`, effectively [exposing](https://cmake.org/cmake/help/latest/command/set.html) a cache variable `var`, which makes the toolchain file susceptible to the build environment.

  The [`depends/Makefile`](https://github.com/bitcoin/bitcoin/blob/master/depends/Makefile) can generate values with "not-set" semantics as empty strings or strings containing only spaces. For example:2638fdb4f9/depends/Makefile (L157)
  Therefore, [`MATCHES`](https://cmake.org/cmake/help/latest/command/if.html#matches) must be used rather than [`STREQUAL`](https://cmake.org/cmake/help/latest/command/if.html#strequal).

ACKs for top commit:
  purpleKarrot:
    ACK 7343a1846c

Tree-SHA512: f2235321ac13daee8e82fa1ae9d02b95097a696265ad3a31fbda9cbc3c387c1dc7d01951154f99828468e50b73ed2889a6fa2720007f519dd11fe25ee5303d23
2025-05-09 14:04:39 +01:00
MarcoFalke
ffff949472 remove NotifyWatchonlyChanged
The signal is never called.
2025-05-09 15:03:08 +02:00
MarcoFalke
fa62a013a5 remove dead flush()
It is confusing that the chain client flush happens between
StopHTTPServer and StopMapPort. Also, it is unused code. Seems best to
just add it back properly when it is needed again.
2025-05-09 14:59:34 +02:00
MarcoFalke
fa5f3e62c8 vcpkg: Remove bdb 2025-05-09 14:58:38 +02:00
merge-script
5b8752198e Merge bitcoin/bitcoin#32454: tracing: fix invalid argument in mempool_monitor
31c5ebc400 tracing: fix invalid argument in mempool_monitor (William Casarin)

Pull request description:

  The mempool_monitor tracing tool is incorrectly reading the reason as the first argument. Fix this!

  Noticed this during the bitcoin++ mempool hackathon 😅

  cc 0xB10C

ACKs for top commit:
  0xB10C:
    Code Review ACK 31c5ebc400

Tree-SHA512: 6f3d64f0f75a44e1fdcad71af8e737ce948833498cd3879ef74cbabf53e3649145b83febceca19b1662de55346c199bf4259e17f5b28cf0352aefa730e07ea63
2025-05-09 09:21:35 +01:00
William Casarin
31c5ebc400 tracing: fix invalid argument in mempool_monitor
The mempool_monitor tracing tool is incorrectly reading the reason
as the first argument. Fix this!
2025-05-08 22:04:28 -07:00
Ryan Ofsky
ad5cd129f3 Merge bitcoin/bitcoin#30660: qa: Verify clean shutdown on startup failure
10845cd7cc qa: Add feature_framework_startup_failures.py (Hodlinator)
28e282ef9a qa: assert_raises_message() - Stop assuming certain structure for exceptions (Hodlinator)
1f639efca5 qa: Work around Python socket timeout issue (Hodlinator)
9b24a403fa qa: Only allow calling TestNode.stop() after connecting (Hodlinator)
6ad21b4c01 qa: Include ignored errors in RPC connection timeout (Hodlinator)
879243e81f qa refactor: wait_for_rpc_connection - Treat OSErrors the same (Hodlinator)

Pull request description:

  Improves handling of startup errors in functional tests and puts tests in place to ensure knock-on errors don't creep in.
  - `wait_for_rpc_connection()` now appends specific failures leading up to the `Unable to connect to bitcoind` error to that error message:
    `[node 0] Unable to connect to bitcoind after 60s (ignored errors: {'missing_credentials': 1, 'OSError.ECONNREFUSED': 239}, latest error: ConnectionRefusedError(111, 'Connection refused'))`
  - Fixes Windows Python issue where `socket.timeout` exceptions end up with unset `errno`-fields.
  - Also adds comments, refactors code, improves logging.

  The underlying purpose is to ensure developer efficiency in finding root causes of test failures.

  Prior iterations of the PR partially focused on fixing the same issue as #31620.
  Originally inspired by #30390.

  ### Testing

  Can be tested by reverting either faf2f2c654 or fae3bf6b87 from #31620, or the "qa: Avoid calling stop-RPC if not connected" from this PR, and running *feature_framework_startup_failures.py*.

ACKs for top commit:
  l0rinc:
    ACK 10845cd7cc
  ryanofsky:
    Code review ACK 10845cd7cc. Only changes since last review were adding a new commit tweaking assert_raises_message(), extending the new test to have a self-check, and to pass through all options to child tests instead of a hardcoded list of options. I left some cleanup suggestions below but they are not important.

Tree-SHA512: f0235c5cbb6d1bb85d8dc5de492a08a34f6edc83499cbf0a5f9a3824809ff84635888c62c9c01101e3cc9ef9f1cdee2c9ab6537fea6feeb005b29f428caf8b22
2025-05-08 16:57:46 -04:00
Ava Chow
1656f6dbba Merge bitcoin/bitcoin#32448: contrib: remove bdb exception from FORTIFY check
f9dfe8d5e0 contrib: remove bdb exception from FORTIFY check (fanquake)

Pull request description:

  BDB has been removed (#28710), so we no-longer need to ignore functions from BDB in this check.

  Guix building this branch, and looking for `*_chk` functions across all binaries produces:
  ```
  # nm -C * | grep -i _chk | sort | uniq
                   U __fdelt_chk@GLIBC_2.15
                   U __fprintf_chk@GLIBC_2.3.4
                   U __fread_chk@GLIBC_2.7
                   U __longjmp_chk@GLIBC_2.11
                   U __memcpy_chk@GLIBC_2.3.4
                   U __printf_chk@GLIBC_2.3.4
                   U __snprintf_chk@GLIBC_2.3.4
                   U __sprintf_chk@GLIBC_2.3.4
                   U __stack_chk_fail@GLIBC_2.4
                   U __vsnprintf_chk@GLIBC_2.3.4
  ```

ACKs for top commit:
  achow101:
    ACK f9dfe8d5e0
  theuni:
    utACK f9dfe8d5e0
  laanwj:
    Code review ACK f9dfe8d5e0

Tree-SHA512: e9491c8b348a0d777c3f7186cab48b478548654712f8b85e7bde2f8b94f3a8b52bc7be8fb1b4a486954359d3109cfb74e3485ccfff67c6546f0efcabf2eda0e0
2025-05-08 11:06:59 -07:00
Ryan Ofsky
1b4ddb0c2d Merge bitcoin/bitcoin#32356: cmake: Respect user-provided configuration-specific flags
edde96376a cmake: Respect user-provided configuration-specific flags (Hennadii Stepanov)

Pull request description:

  This PR addresses [this](https://github.com/bitcoin/bitcoin/issues/31491#issuecomment-2542140874) comment:
  > I suppose that should only happen if the `-O3` isn't coming from an explicitly set `CMAKE_CXX_FLAGS_RELEASE`.

  With this PR:
  ```
  $ cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS_RELEASE="-O3"
  <snip>
  C++ compiler flags .................... -O3 -std=c++20 -fPIC -fno-extended-identifiers -fdebug-prefix-map=/home/hebasto/dev/bitcoin/src=. -fmacro-prefix-map=/home/hebasto/dev/bitcoin/src=. -fstack-reuse=none -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough -Wunreachable-code -Wbidi-chars=any -Wundef -Wno-unused-parameter -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection
  Linker flags .......................... -O3 -fstack-reuse=none -fstack-protector-all -fcf-protection=full -fstack-clash-protection -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -fPIE -pie
  ```
  and
  ```
  $ cmake -B build -DCMAKE_BUILD_TYPE=Release
  <snip>
  C++ compiler flags .................... -O2 -std=c++20 -fPIC -fno-extended-identifiers -fdebug-prefix-map=/home/hebasto/dev/bitcoin/src=. -fmacro-prefix-map=/home/hebasto/dev/bitcoin/src=. -fstack-reuse=none -Wall -Wextra -Wformat -Wformat-security -Wvla -Wredundant-decls -Wdate-time -Wduplicated-branches -Wduplicated-cond -Wlogical-op -Woverloaded-virtual -Wsuggest-override -Wimplicit-fallthrough -Wunreachable-code -Wbidi-chars=any -Wundef -Wno-unused-parameter -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3 -Wstack-protector -fstack-protector-all -fcf-protection=full -fstack-clash-protection
  Linker flags .......................... -O2 -fstack-reuse=none -fstack-protector-all -fcf-protection=full -fstack-clash-protection -Wl,-z,relro -Wl,-z,now -Wl,-z,separate-code -fPIE -pie
  ```

  When calling `cmake` repeatedly using the same build directory, each newly provided `CMAKE_CXX_FLAGS_RELEASE` value will be accommodated. In such a scenario, if the user wishes to revert to the build system defaults, they should unset the `CMAKE_CXX_FLAGS_RELEASE` variable by passing `-UCMAKE_CXX_FLAGS_RELEASE`  to `cmake`.

  ---

  This PR does not aim to resolve _all_ issues mentioned in https://github.com/bitcoin/bitcoin/issues/31491.

ACKs for top commit:
  purpleKarrot:
    ACK edde96376a
  janb84:
    ACK [edde963](edde96376a)
  ryanofsky:
    Code review ACK edde96376a

Tree-SHA512: 1fbc879bd02cf0be726ced490f65985e728f0686ccb3a32cd38787b56377aa666e1965448e5069515abc814df49a0083c8000bc3f6f322f5f395695638168fb6
2025-05-08 11:06:13 -04:00
fanquake
f9dfe8d5e0 contrib: remove bdb exception from FORTIFY check
BDB has been removed (#28710), so we no-longer need to ignore functions
from BDB in this check.
2025-05-08 14:37:26 +01:00
merge-script
66c968b4b4 Merge bitcoin/bitcoin#32444: doc: swap "Docker image" for "container image"
1372eb09c5 doc: swap "Docker image" for "container image" (fanquake)

Pull request description:

  I haven't used Docker for some time (now Podman), and the images are generic, so just use "container image". I'll be pushing some changes to https://github.com/fanquake/core-review/tree/master/guix, to reflect this.

ACKs for top commit:
  janb84:
    ACK 1372eb09c5
  laanwj:
    ACK 1372eb09c5
  hebasto:
    ACK 1372eb09c5.

Tree-SHA512: 45bb74d25a0faf7e5c3666d6897fb6b999144308c43cdf8a290d3a4210285b1e95286d27bb3d90bc50be4784c2242ad3f93794086f4634439a46a48ff68c7343
2025-05-08 13:50:24 +01:00
merge-script
6469752952 Merge bitcoin/bitcoin#32434: lint: Remove string exclusion from locale check
fa24fdcb7f lint: Remove string exclusion from locale check (MarcoFalke)

Pull request description:

  The exclusion isn't needed. In fact, it prevents detection of `"bla" + wrong()`.

  For example, the following is not detected:

  ```diff
  diff --git a/src/wallet/rpc/addresses.cpp b/src/wallet/rpc/addresses.cpp
  index 1c2951deee..c1209013e5 100644
  --- a/src/wallet/rpc/addresses.cpp
  +++ b/src/wallet/rpc/addresses.cpp
  @@ -336,7 +336,8 @@ RPCHelpMan addmultisigaddress()
   RPCHelpMan keypoolrefill()
   {
       return RPCHelpMan{"keypoolrefill",
  -                "\nFills the keypool."+
  +                "\nRefills each descriptor keypool in the wallet up to the specified number of new keys.\n"
  +                "By default, descriptor wallets have 4 active ranged descriptors (\"legacy\", \"p2sh-segwit\", \"bech32\", and \"bech32m\"), each with " + std::to_string(DEFAULT_KEYPOOL_SIZE) + " entries.\n" +
           HELP_REQUIRING_PASSPHRASE,
                   {
                       {"newsize", RPCArg::Type::NUM, RPCArg::DefaultHint{strprintf("%u, or as set by -keypool", DEFAULT_KEYPOOL_SIZE)}, "The new keypool size"},
  ```

  Fix the script by detecting it.

ACKs for top commit:
  laanwj:
    Code review ACK fa24fdcb7f.
  rkrux:
    ACK fa24fdcb7f
  w0xlt:
    ACK fa24fdcb7f

Tree-SHA512: cb7e6ed9fec5d2089e94031329ebf26b83a1814ffbbbca94f7527c127bc759d13c0f4ea79b71ff7f5f009d071dcf01958c8921163d6dc5e1ae6256cc40b57eea
2025-05-08 10:42:30 +01:00
fanquake
1372eb09c5 doc: swap "Docker image" for "container image"
I haven't used Docker for some time (now Podman), and the images are
generic, so just use container image. I'll be pushing some changes to
https://github.com/fanquake/core-review/tree/master/guix, to reflect this.
2025-05-08 10:20:21 +01:00
merge-script
03ebdd0793 Merge bitcoin/bitcoin#32437: crypto: disable ASan for sha256_sse4 with Clang
4e8ab5e00f crypto: disable ASan for sha256_sse4 with Clang (fanquake)

Pull request description:

  This also fails to compile when optimisations are being used, see: https://github.com/bitcoin/bitcoin/issues/31913.
  So just disable ASan under any optimisation level.

  Closes #31913.

ACKs for top commit:
  maflcko:
    lgtm ACK 4e8ab5e00f
  davidgumberg:
    Tested ACK 4e8ab5e00f
  laanwj:
    Code review ACK 4e8ab5e00f

Tree-SHA512: 680fb424f43b35730e03e0c7443c80445a2cf423d4f9161414ea22fea0b955f49197f8a96d1241896d981c6c13814d3eb7b5e4d8c9138813fb69e437ac4768ea
2025-05-08 09:08:36 +01:00
Ava Chow
95bb305b96 Merge bitcoin/bitcoin#32429: docs: Improve keypoolrefill RPC docs
ff35a4b021 docs: Improve `keypoolrefill` RPC docs (w0xlt)

Pull request description:

  Update `keypoolrefill` RPC docs to make it clear that descriptor wallets have 4 ScriptPubKeyManagers by default and each of them is updated in this command, as suggested https://github.com/bitcoin/bitcoin/issues/29924#issuecomment-2849321859

  Closes https://github.com/bitcoin/bitcoin/issues/29924

ACKs for top commit:
  achow101:
    ACK ff35a4b021
  brunoerg:
    code review ACK ff35a4b021

Tree-SHA512: b6b9abe3fecebf9551b4ce9280794292c6ac44ccaeb2b9d60eeb4b2c177fe8372d0fe103f99c9cc0baeb2559ec019d1c495c233f24a600531153a38eeacb9670
2025-05-07 14:55:49 -07:00
Ava Chow
1b1b9f32cf Merge bitcoin/bitcoin#32440: test: remove bdb assert in tool_wallet.py
e08e6567f2 test: remove assert_dump since it is not used anymore (kevkevinpal)
4b6dd9790b test: remove bdb assert in tool_wallet.py (kevkevinpal)

Pull request description:

  As suggested in https://github.com/bitcoin/bitcoin/pull/32438#issuecomment-2859123413

  legacy wallet and the BDB dependency was removed (https://github.com/bitcoin/bitcoin/pull/28710) so this assert is safe to delete

ACKs for top commit:
  davidgumberg:
    reACK e08e6567f2
  achow101:
    ACK e08e6567f2
  brunoerg:
    reACK e08e6567f2
  theStack:
    re-ACK e08e6567f2

Tree-SHA512: 6417537d7b9b5da6039dfcc94a86107211d57dcca43becea6f95d4a95f342e12918b0ff6a562261ba538b7b206de7d327e52bdb7d49e353f1917df8668558a99
2025-05-07 11:51:17 -07:00
kevkevinpal
e08e6567f2 test: remove assert_dump since it is not used anymore 2025-05-07 14:18:12 -04:00
w0xlt
ff35a4b021 docs: Improve keypoolrefill RPC docs 2025-05-07 14:44:10 -03:00
kevkevinpal
4b6dd9790b test: remove bdb assert in tool_wallet.py 2025-05-07 13:02:54 -04:00
Hennadii Stepanov
7343a1846c depends: Avoid using helper variables in toolchain file
Using helper variables has two issues:
1. They contaminate the global namespace of the main build script.
2. They can be used as `set(var)`, effectively exposing a cache variable
`var`, which makes the toolchain file susceptible to the build
environment.
2025-05-07 17:02:53 +01:00
merge-script
efac285a0d Merge bitcoin/bitcoin#28710: Remove the legacy wallet and BDB dependency
de054df6dc contrib: Remove legacy wallet RPCs from bash completions (Ava Chow)
5dff04a1bb legacy spkm: Make IsMine() and CanProvide() private and migration only (Ava Chow)
c0f3f3264f wallet: Remove unused db functions (Ava Chow)
83af1a3cca wallet: Delete LegacySPKM (Ava Chow)
8ede6dea0c wallet, rpc: Remove legacy wallet only RPCs (Ava Chow)
4de3cec28d test: rpcs disabled for descriptor wallets will be removed (Ava Chow)
84f671b01d test: Run multisig script limit test (Ava Chow)
810476f31e test: Remove unused options and variables, correct comments (Ava Chow)
04a7a7a28c build, wallet, doc: Remove BDB (Ava Chow)

Pull request description:

  The final step of #20160.

  A bare minimum of legacy wallet code is kept in order to perform wallet migration. Migration of legacy wallets uses the independent BDB parser and a minimal `LegacyDataSPKM` that allows the legacy data to be loaded so that the migration can be completed.

  BDB has been removed as a dependency and documentation have been updated to reflect that.

ACKs for top commit:
  Sjors:
    re-ACK de054df6dc
  maflcko:
    re-ACK de054df6dc 🔗
  w0xlt:
    reACK de054df6dc
  rkrux:
    Concept ACK de054df6dc

Tree-SHA512: 16a6c265bc1ada5e7a5ef9b95f0ff65015672ca46d9a43b7e10d60e9e085052e9bbfe01ac3e494cc606afb652a1b476b10e434d13e9877b67d2cb0196a9bd190
2025-05-07 15:19:17 +01:00
MarcoFalke
fa24fdcb7f lint: Remove string exclusion from locale check
The string exclusion would fail to detect `"bla" + wrong()`.

Also, remove /* */ comment exclusion, which would fail to detect stuff
like `/* bla */ wrong()`.

Instead, require the function to be called by adding \\( to the regex.

Finally, also remove the section in the dev notes, because:

* It was outdated and missing some functions such as std::to_string in
  the list.
* The maintenance overhead of having to update two places is fragile and
  questionable.
* Many other linters are also not mentioned in the dev notes, even
  though they are important.
* A dev (and CI) is more likely to run the linters than to read the dev
  notes.
* The dev notes are more than 1000 lines of dense information. It would
  be easier to digest if they focused on the important stuff that is not
  checked by automated tools.
2025-05-07 13:24:41 +02:00
fanquake
4e8ab5e00f crypto: disable ASan for sha256_sse4 with Clang
This can alsofail to compile when optimisations are being used, see:
https://github.com/bitcoin/bitcoin/issues/31913.
So disable just ASan for this function under any optimisation level.
2025-05-07 11:53:21 +01:00
merge-script
6d5edfcc58 Merge bitcoin/bitcoin#32388: fuzz: Remove unused TimeoutExpired catch in fuzz runner
fa4804009c fuzz: Remove unused TimeoutExpired catch in fuzz runner (MarcoFalke)

Pull request description:

  Currently, the way to check for libFuzzer is to search the stderr of the fuzz executable when passed `-help=1` for the string `libFuzzer`. See also 14b8dfb2bd/contrib/devtools/deterministic-fuzz-coverage/src/main.rs (L90-L101)

  The python test runner additionally includes a timeout catch, which was needed before the plain `read_file` fallback was implemented, see 14b8dfb2bd/src/test/fuzz/fuzz.cpp (L251).

  However, it is no longer needed and the printed error message would be wrong, so remove it.

  (side-note: On Windows the fuzz executable seems to time out when an assert is hit in a debug build, see https://github.com/bitcoin/bitcoin/issues/32341#issuecomment-2842716175. However, no one is running fuzz debug on Windows. Also, the newly added debug logging is a preferable replacement in this case anyway.)

ACKs for top commit:
  kevkevinpal:
    crACK [fa48040](fa4804009c)
  Crypt-iQ:
    crACK fa4804009c
  marcofleon:
    crACK fa4804009c
  brunoerg:
    code review ACK fa4804009c

Tree-SHA512: 64f5e3862fece9ab2b6592615b72b81e9c087dcd394b1d062a96df0d88d8b5999674f0faa1165a5998c05289c1874e29311d7b24d84fee9bc6c46d1662d29e4d
2025-05-07 11:52:09 +01:00
Ava Chow
de054df6dc contrib: Remove legacy wallet RPCs from bash completions
These RPCs no longer exist.
2025-05-06 16:53:16 -07:00
Ava Chow
5dff04a1bb legacy spkm: Make IsMine() and CanProvide() private and migration only 2025-05-06 16:53:16 -07:00
Ava Chow
c0f3f3264f wallet: Remove unused db functions
SOme db functions were for BDB, these are no longer needed.
2025-05-06 16:53:16 -07:00
Ava Chow
83af1a3cca wallet: Delete LegacySPKM
Deletes LegacyScriptPubKeyMan and related tests

Best reviewed with `git diff --patience` or `git diff --histogram`
2025-05-06 16:53:16 -07:00
Ava Chow
59d3e4ed34 Merge bitcoin/bitcoin#32415: scripted-diff: adapt script error constant names in feature_taproot.py
b5f580c580 scripted-diff: adapt script error constant names in feature_taproot.py (Sebastian Falbesoner)

Pull request description:

  While reviewing #31622 I noticed that the constant name `(SCRIPT_)ERR_SIG_HASHTYPE` is used for two different script verification error codes, namely one for legacy and one for Schnorr signatures:

  eba5f9c4b6/src/script/script_error.cpp (L56-L57)
  eba5f9c4b6/test/functional/feature_taproot.py (L600)

  In order to resolve this confusion, this PR adapts all script error constant names in the functional tests (currently only in feature_taproot.py) to the ones used in our C++ codebase (see [script_error.cpp](https://github.com/bitcoin/bitcoin/blob/master/src/script/script_error.cpp)) with a scripted diff. This also makes checking whether we have test coverage for a certain script error easier.

ACKs for top commit:
  jamesob:
    crACK b5f580c580
  achow101:
    ACK b5f580c580
  rkrux:
    tACK b5f580c580
  stratospher:
    ACK b5f580c. liked the consistency in script error names.

Tree-SHA512: bc0ccec70bc3cb6ce51ce8e27a5e54770d1bb93c1db5a9c815caa25f3d96ebb382104bd9b51626f501d4f5b95148db8d20c806a27153e9bb9cf823a20d3046c0
2025-05-06 15:25:57 -07:00
Ava Chow
fffb272c25 Merge bitcoin/bitcoin#29532: Refactor BnB tests
85368aafa0 test: Run simple tests at various feerates (Murch)
d610951c15 test: Recreate BnB iteration exhaustion test (Murch)
2a1b2754f1 test: Remove redundant repeated test (Murch)
4781f5c8be test: Recreate simple BnB failure tests (Murch)
a94030ae98 test: Recreate BnB clone skipping test (Murch)
7db6f012c0 test: Move BnB feerate sensitivity tests (Murch)
2bafc46261 test: Recreate simple BnB success tests (Murch)

Pull request description:

  This PR is splitting off some of the improvements made in #28985 and starts addressing the issues raised in #27754.

  I aim to completely replace `coinselector_tests` with `coinselection_tests`. The goal is to generally use coins created per a nominal _effective value_ so we can get away from testing with `CoinSelectionParams` that are non-representative and effectuate counterintuitive behavior such as `feerate = 0` or `cost_of_change = 0`

ACKs for top commit:
  achow101:
    ACK 85368aafa0
  monlovesmango:
    ACK 85368aafa0
  w0xlt:
    ACK 85368aafa0

Tree-SHA512: 1a984837b4efddc0d8abe11668898fb207fb539e784bf911d4038211274b82e0fe1f8fffe7e5a19e0e013ccb7dc40e3f62d853a2a729980d0d935e66f12b9156
2025-05-06 15:15:13 -07:00
Ava Chow
8ede6dea0c wallet, rpc: Remove legacy wallet only RPCs 2025-05-06 12:33:16 -07:00
Ava Chow
4de3cec28d test: rpcs disabled for descriptor wallets will be removed 2025-05-06 12:33:16 -07:00
Ava Chow
84f671b01d test: Run multisig script limit test
This test was mistakenly disabled.
2025-05-06 12:33:16 -07:00
Ava Chow
810476f31e test: Remove unused options and variables, correct comments 2025-05-06 12:33:16 -07:00
Ava Chow
04a7a7a28c build, wallet, doc: Remove BDB 2025-05-06 12:21:32 -07:00
merge-script
44057fe38c Merge bitcoin/bitcoin#32287: build: Fix macdeployqtplus after switching to Qt 6
84de8c93e7 ci: Add `deploy` target for native macOS CI job (Hennadii Stepanov)
fad57e9e0f build: Fix `macdeployqtplus` after switching to Qt 6 (Hennadii Stepanov)
938208d91a build: Resolve `@rpath` in `macdeployqtplus` (Hennadii Stepanov)

Pull request description:

  Homebrew's Qt 6 package — namely `qt` or `qt@6` — introduces a few differences that must be properly handled by the `macdeployqtplus` script:

  1. Use of `@rpath` references:
  ```
  % objdump --macho --dylibs-used $(brew --prefix qt@5)/Frameworks/QtGui.framework/QtGui
  /usr/local/opt/qt@5/Frameworks/QtGui.framework/QtGui:
  /usr/local/opt/qt@5/lib/QtGui.framework/Versions/5/QtGui (compatibility version 5.15.0, current version 5.15.16)
  /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 2575.30.19)
  /System/Library/Frameworks/Metal.framework/Versions/A/Metal (compatibility version 1.0.0, current version 367.6.0)
  /usr/local/Cellar/qt@5/5.15.16_1/lib/QtCore.framework/Versions/5/QtCore (compatibility version 5.15.0, current version 5.15.16)
  /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
  /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
  /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1889.2.7)
  /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 3208.0.0)
  /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
  /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
  /usr/local/opt/libpng/lib/libpng16.16.dylib (compatibility version 64.0.0, current version 64.0.0)
  /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.12)
  /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 65.0.0)
  /usr/local/opt/md4c/lib/libmd4c.0.dylib (compatibility version 0.0.0, current version 0.5.2)
  /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 1800.105.0)
  /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)
  /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 3208.0.0)
  /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText (compatibility version 1.0.0, current version 844.2.0)
  /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
  % objdump --macho --dylibs-used $(brew --prefix qt@6)/Frameworks/QtGui.framework/QtGui
  /usr/local/opt/qt/Frameworks/QtGui.framework/QtGui:
  /usr/local/opt/qt/lib/QtGui.framework/Versions/A/QtGui (compatibility version 6.0.0, current version 6.9.0)
  /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 2575.30.19)
  /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 170.0.0)
  /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
  /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO (compatibility version 1.0.0, current version 1.0.0)
  /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 3208.0.0)
  /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1889.2.7)
  /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText (compatibility version 1.0.0, current version 844.2.0)
  /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 3208.0.0)
  /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0, current version 1.11.0)
  /System/Library/Frameworks/Metal.framework/Versions/A/Metal (compatibility version 1.0.0, current version 367.6.0)
  /usr/local/opt/glib/lib/libglib-2.0.0.dylib (compatibility version 8401.0.0, current version 8401.0.0)
  @rpath/QtDBus.framework/Versions/A/QtDBus (compatibility version 6.0.0, current version 6.9.0)
  /System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
  /usr/local/opt/libpng/lib/libpng16.16.dylib (compatibility version 64.0.0, current version 64.0.0)
  /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.12)
  /usr/local/opt/harfbuzz/lib/libharfbuzz.0.dylib (compatibility version 61100.0.0, current version 61100.0.0)
  /usr/local/opt/md4c/lib/libmd4c.0.dylib (compatibility version 0.0.0, current version 0.5.2)
  /usr/local/opt/freetype/lib/libfreetype.6.dylib (compatibility version 27.0.0, current version 27.2.0)
  /usr/local/opt/glib/lib/libgthread-2.0.0.dylib (compatibility version 8401.0.0, current version 8401.0.0)
  @rpath/QtCore.framework/Versions/A/QtCore (compatibility version 6.0.0, current version 6.9.0)
  /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
  /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration (compatibility version 1.0.0, current version 1.0.0)
  /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers (compatibility version 1.0.0, current version 709.0.0)
  /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 1800.105.0)
  /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1351.0.0)
  /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 1226.0.0)
  /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
  ```

  2. Different directory layout:
  ```
  % ls -l $(brew --prefix qt@5)/
  total 544
  drwxr-xr-x   79 hebasto  admin    2528 13 Nov 06:22 Frameworks
  -rw-r--r--    1 hebasto  admin    7533 16 Apr 09:09 INSTALL_RECEIPT.json
  -rw-r--r--    1 hebasto  admin   22961 13 Nov 06:22 LICENSE.FDL
  -rw-r--r--    1 hebasto  admin   36363 13 Nov 06:22 LICENSE.GPL3-EXCEPT
  -rw-r--r--    1 hebasto  admin   15351 13 Nov 06:22 LICENSE.GPLv2
  -rw-r--r--    1 hebasto  admin   35641 13 Nov 06:22 LICENSE.GPLv3
  -rw-r--r--    1 hebasto  admin   26828 13 Nov 06:22 LICENSE.LGPLv21
  -rw-r--r--    1 hebasto  admin    8174 13 Nov 06:22 LICENSE.LGPLv3
  -rw-r--r--    1 hebasto  admin  106262 13 Nov 06:22 LICENSE.QT-LICENSE-AGREEMENT
  -rw-r--r--    1 hebasto  admin    3842 13 Nov 06:22 README
  drwxr-xr-x   57 hebasto  admin    1824 16 Apr 09:09 bin
  drwxr-xr-x    4 hebasto  admin     128 13 Nov 06:22 doc
  drwxr-xr-x   95 hebasto  admin    3040 13 Nov 06:22 include
  drwxr-xr-x  119 hebasto  admin    3808 16 Apr 09:09 lib
  drwxr-xr-x    8 hebasto  admin     256 13 Nov 06:22 libexec
  drwxr-xr-x   79 hebasto  admin    2528 16 Apr 09:09 mkspecs
  drwxr-xr-x   15 hebasto  admin     480 13 Nov 06:22 phrasebooks
  drwxr-xr-x   31 hebasto  admin     992 13 Nov 06:22 plugins
  drwxr-xr-x   28 hebasto  admin     896 13 Nov 06:22 qml
  -rw-r--r--    1 hebasto  admin    6952 16 Apr 09:09 sbom.spdx.json
  drwxr-xr-x    3 hebasto  admin      96 13 Nov 06:22 share
  drwxr-xr-x  347 hebasto  admin   11104 13 Nov 06:22 translations
  % ls -l $(brew --prefix qt@6)/share/qt/
  total 0
  drwxr-xr-x    4 hebasto  admin   128 30 Mar 09:49 doc
  drwxr-xr-x   35 hebasto  admin  1120 16 Apr 09:16 libexec
  drwxr-xr-x  167 hebasto  admin  5344 30 Mar 09:49 metatypes
  drwxr-xr-x   70 hebasto  admin  2240 16 Apr 09:16 mkspecs
  drwxr-xr-x  178 hebasto  admin  5696 30 Mar 09:49 modules
  drwxr-xr-x   15 hebasto  admin   480 30 Mar 09:49 phrasebooks
  drwxr-xr-x   31 hebasto  admin   992 30 Mar 09:49 plugins
  drwxr-xr-x   34 hebasto  admin  1088 30 Mar 09:49 qml
  drwxr-xr-x   45 hebasto  admin  1440 30 Mar 09:49 sbom
  drwxr-xr-x  285 hebasto  admin  9120 30 Mar 09:49 translations
  ```

  This PR addresses both issues and additionally adds a `deploy` target to the native macOS CI job to prevent any similar recessions in the future.

  Fixes https://github.com/bitcoin/bitcoin/issues/32267.

ACKs for top commit:
  fanquake:
    ACK 84de8c93e7

Tree-SHA512: 27a0eff3cd9317647529ff4571bd79c5dd8f007775b19415c8c27ca4912a60d85074c840cf0443be314d9a404f78bb015029d46dab18e292462249a5d90c6c47
2025-05-06 18:10:22 +01:00
merge-script
229943b513 Merge bitcoin/bitcoin#32086: Shuffle depends instructions and recommend modern make for macOS
22cff32319 doc: recommend gmake for FreeBSD (Sjors Provoost)
b645c52071 doc: recommend modern make for macOS depends (Sjors Provoost)
99e6490dc5 doc: shuffle depends instructions (Sjors Provoost)

Pull request description:

  macOS ships with GNU Make 3.81 from 2006. This has caused
  difficult to debug issues, e.g. #32070 and #30978.

  Tell users / developers who use the depends system to install a modern version of `make`.

  This PR does not change the non-depends build.

  Although Homebrew allows overriding the system `make`, we instead just instruct users to build with `gmake`. This way there should be no impact on other projects they wish to compile.

  To increase the likeliness of anyone actually seeing and following this instruction, the first commit moves things around in `depends/README.md`. It now starts with instructions for a local build and moves cross-compilation to the end. For each platform it shows what to install (`apt install`, `brew install`, etc) and what command to run (`make` or `gmake`).

  There previously was no macOS specific section, so this is added. It points to the general `build-osx.md` for how to install the Xcode Command Line Tools and Homebrew Package Manager.

  I didn't test on an empty system.

  Preview: https://github.com/Sjors/bitcoin/tree/2025/03/mc-make/depends#depends-build

ACKs for top commit:
  maflcko:
    review ACK 22cff32319 🏣
  hebasto:
    re-ACK 22cff32319.
  willcl-ark:
    ACK 22cff32319

Tree-SHA512: 11648ae73f3b70bc2df771e4eddca37221cd88b88bea4139a183e3f67f24a4c3e5aadf61a713ed73f3fc206511dfcf8670e4c4143c49dd4e56e501030be9c7ba
2025-05-06 18:06:38 +01:00
Hennadii Stepanov
edde96376a cmake: Respect user-provided configuration-specific flags 2025-05-06 13:25:35 +01:00
Sjors Provoost
22cff32319 doc: recommend gmake for FreeBSD
Consistent with doc/build-freebsd.md
2025-05-06 11:24:32 +02:00
Sjors Provoost
b645c52071 doc: recommend modern make for macOS depends
macOS ships with GNU Make 3.81 from 2006. This has caused
difficult to debug issues, see e.g.
9157d9e449.

Also add ninja, needed since qt6.
2025-05-06 11:24:32 +02:00
Sjors Provoost
99e6490dc5 doc: shuffle depends instructions
Native compilation is explained before cross-compilation. Move
install and (g)make steps up.

In the Configuring section, use Linux native compilation as the
example instead of Windows cross-compile.
2025-05-06 11:24:16 +02:00
Hennadii Stepanov
baa848b8d3 Merge bitcoin/bitcoin#32405: build: replace header checks with __has_include
e1f543823b build: replace header checks with __has_include (fanquake)

Pull request description:

  Replace the checks in CMake, with the equivalent functionality provided by the standard library (since C++17).
  See https://en.cppreference.com/w/cpp/preprocessor/include.

  Guix Build:
  ```bash
  66d71c866bd111ffe65bc03b9e1653a95eb678f0b04451759c56af868bfc03d5  guix-build-e1f543823b30/output/aarch64-linux-gnu/SHA256SUMS.part
  1a4130d801620a63d86c3069b1fbca39ebc963e610101451d3f48b1c191ca4b3  guix-build-e1f543823b30/output/aarch64-linux-gnu/bitcoin-e1f543823b30-aarch64-linux-gnu-debug.tar.gz
  745adbc7767344a8cd0ebe1e7592239614d89f949558c9b6a2ae58f7b2602a32  guix-build-e1f543823b30/output/aarch64-linux-gnu/bitcoin-e1f543823b30-aarch64-linux-gnu.tar.gz
  cb69d205a20715ee58a324cc2b8475c2bae0443a062f5de2820baa45f822292c  guix-build-e1f543823b30/output/arm-linux-gnueabihf/SHA256SUMS.part
  081774dd903256dafa187ee47a569cd44b01eb16adc9dbfeb54b721abc39e944  guix-build-e1f543823b30/output/arm-linux-gnueabihf/bitcoin-e1f543823b30-arm-linux-gnueabihf-debug.tar.gz
  1dd857fe6b9e75fae746e73fbfc6b77302b4dbb13685baebb10e9686da7bad01  guix-build-e1f543823b30/output/arm-linux-gnueabihf/bitcoin-e1f543823b30-arm-linux-gnueabihf.tar.gz
  e035ba959da69263de2f29282328d4e5b455f94a800a15891801f26ba3b8b325  guix-build-e1f543823b30/output/arm64-apple-darwin/SHA256SUMS.part
  ebf973e0e44be688ea5e1ebae804dfce6e71b7ca8aaca5d8249a14d130f37c3f  guix-build-e1f543823b30/output/arm64-apple-darwin/bitcoin-e1f543823b30-arm64-apple-darwin-codesigning.tar.gz
  3ea687b53032b30d7c4a0760f8a35d19e2f60a8cb3f1f5e2c5cba05897f04e43  guix-build-e1f543823b30/output/arm64-apple-darwin/bitcoin-e1f543823b30-arm64-apple-darwin-unsigned.tar.gz
  ebb6a935f2fbc75167f5e61a039d13f231621f7eb0cbd1292616425f7677739c  guix-build-e1f543823b30/output/arm64-apple-darwin/bitcoin-e1f543823b30-arm64-apple-darwin-unsigned.zip
  9e77422977506f0c3f0373ee19d24c3ad86cbaf3a97cfcf5db202d4fff9c3ae4  guix-build-e1f543823b30/output/dist-archive/bitcoin-e1f543823b30.tar.gz
  62d7c8f63a3702b066f88498f829b2c371baa06c596b71b6d8969f638cc2d356  guix-build-e1f543823b30/output/powerpc64-linux-gnu/SHA256SUMS.part
  60c00fc85dea24548c212330e5fa097020f17bb74f511e7e764b8b33224afce0  guix-build-e1f543823b30/output/powerpc64-linux-gnu/bitcoin-e1f543823b30-powerpc64-linux-gnu-debug.tar.gz
  97b1aa4dc967c9a3767476a262a503900ea77e15b4b292928c6cdddf306cafc9  guix-build-e1f543823b30/output/powerpc64-linux-gnu/bitcoin-e1f543823b30-powerpc64-linux-gnu.tar.gz
  ed67fbb0768ce7b1d4d053de2ba0ea3b2798d01a276adf6430c4a2a413461ee2  guix-build-e1f543823b30/output/riscv64-linux-gnu/SHA256SUMS.part
  83f7b4e6c244d97caa2eb41b67cdef2bfa71f2f3ef1cfa378fae32db18fc8e25  guix-build-e1f543823b30/output/riscv64-linux-gnu/bitcoin-e1f543823b30-riscv64-linux-gnu-debug.tar.gz
  c8ca7793fdfac2346a21d5fc8f6e00f1feb6556d048896fef8148ac614921050  guix-build-e1f543823b30/output/riscv64-linux-gnu/bitcoin-e1f543823b30-riscv64-linux-gnu.tar.gz
  a3e99dd3369aa97cad2437fc1b29f84a8950327fd0f0a1c0a8a3e7ce49369f1a  guix-build-e1f543823b30/output/x86_64-apple-darwin/SHA256SUMS.part
  1c22d2967c72a5b901d54b9914d243aaf8f52216e48399f09bf17f34455369ec  guix-build-e1f543823b30/output/x86_64-apple-darwin/bitcoin-e1f543823b30-x86_64-apple-darwin-codesigning.tar.gz
  28c731d91d84f41a0b94cfb420474f150edd2bd33db1e9c38d52c9452e44b3f1  guix-build-e1f543823b30/output/x86_64-apple-darwin/bitcoin-e1f543823b30-x86_64-apple-darwin-unsigned.tar.gz
  f6b74d1756af4de4a7e250c11f0a48a93fafc67139951afc4a55888ce24dc01a  guix-build-e1f543823b30/output/x86_64-apple-darwin/bitcoin-e1f543823b30-x86_64-apple-darwin-unsigned.zip
  16d7a33003e89f53b3d8ce31a121250a4f836c83482f39b0c40721a2dd32faca  guix-build-e1f543823b30/output/x86_64-linux-gnu/SHA256SUMS.part
  d17606b3fec3c045d84dadff4b107186cc6e51daa80a16588de4e213585a98cd  guix-build-e1f543823b30/output/x86_64-linux-gnu/bitcoin-e1f543823b30-x86_64-linux-gnu-debug.tar.gz
  52ee77c9ff6bbe6965100165847d107c4e3ddcf8c2a960746f663ade074295a5  guix-build-e1f543823b30/output/x86_64-linux-gnu/bitcoin-e1f543823b30-x86_64-linux-gnu.tar.gz
  daeba27cb9ce21e3a6a01b9487ef81738eec0c84ad80ca0ba1287412c0d4eeda  guix-build-e1f543823b30/output/x86_64-w64-mingw32/SHA256SUMS.part
  38ccc35fe32895688f4fc0f22ed8a03233d06636a487b49de74a215fc6b67002  guix-build-e1f543823b30/output/x86_64-w64-mingw32/bitcoin-e1f543823b30-win64-codesigning.tar.gz
  22863abb1a4d1fed1e4753e602f33a743296caf297bdc7ed9330010f5d3f79f3  guix-build-e1f543823b30/output/x86_64-w64-mingw32/bitcoin-e1f543823b30-win64-debug.zip
  1cbc8ae43899d96664e75fa2c3fce2efbb2cfac34b279fe1e240a616646cb3e9  guix-build-e1f543823b30/output/x86_64-w64-mingw32/bitcoin-e1f543823b30-win64-setup-unsigned.exe
  b6d22f62c083aca24dc788df1676bfc2ce0abc85a796a4823e5802d71482082c  guix-build-e1f543823b30/output/x86_64-w64-mingw32/bitcoin-e1f543823b30-win64-unsigned.zip
  ```

ACKs for top commit:
  shahsb:
    ACK e1f543823b
  purpleKarrot:
    ACK e1f543823b
  TheCharlatan:
    ACK e1f543823b
  hebasto:
    ACK e1f543823b, I have reviewed the code and it looks OK.

Tree-SHA512: d4bcbc37d431113f0e6367e8f61e71ab9d9ef8a08c38a2db961d9f9cc8473636124f5f2bd4d66cbb3e5032f9d5f978d7d286033d80f7e148f9d571ff09f005ff
2025-05-05 15:19:20 +01:00
Hennadii Stepanov
53ccb75f0c Merge bitcoin/bitcoin#32358: subprocess: Backport upstream changes
cd95c9d6a7 subprocess: check and handle fcntl(F_GETFD) failure (Tomás Andróil)
b7288decdf subprocess: Proper implementation of wait() on Windows (Haowen Liu)
7423214d8d subprocess: Do not escape double quotes for command line arguments on Windows (Hennadii Stepanov)
bb9ffea53f subprocess: Explicitly define move constructor of Streams class (Shunsuke Shimizu)
174bd43f2e subprocess: Avoid leaking POSIX name aliases beyond `subprocess.h` (Hennadii Stepanov)
7997b7656f subprocess: Fix cross-compiling with mingw toolchain (Hennadii Stepanov)
647630462f subprocess: Get Windows return code in wait() (Haowen Liu)
d3f511b458 subprocess: Fix string_arg when used with rref (Haowen Liu)
2fd3f2fec6 subprocess: Fix memory leaks (Haoran Peng)

Pull request description:

  Most of these changes were developed during work on https://github.com/bitcoin/bitcoin/pull/29868 and https://github.com/bitcoin/bitcoin/pull/32342 and have since been upstreamed.

  As they are now merged, this PR backports them to our `src/util/subprocess.h` header.

  Required for https://github.com/bitcoin/bitcoin/pull/29868.

  A list of the backported PRs:
   - https://github.com/arun11299/cpp-subprocess/pull/106
  - https://github.com/arun11299/cpp-subprocess/pull/110
  - https://github.com/arun11299/cpp-subprocess/pull/109
  - https://github.com/arun11299/cpp-subprocess/pull/99
  - https://github.com/arun11299/cpp-subprocess/pull/112
  - https://github.com/arun11299/cpp-subprocess/pull/107
  - https://github.com/arun11299/cpp-subprocess/pull/113
  - https://github.com/arun11299/cpp-subprocess/pull/116
  - https://github.com/arun11299/cpp-subprocess/pull/117

  The following PRs were skipped for backporting:
  - https://github.com/arun11299/cpp-subprocess/pull/108 because we are not planning to support this feature.
  - https://github.com/arun11299/cpp-subprocess/pull/101 because that change has been already landed in https://github.com/bitcoin/bitcoin/pull/29849.

ACKs for top commit:
  theStack:
    Light ACK cd95c9d6a7
  laanwj:
    Code review re-ACK cd95c9d6a7

Tree-SHA512: f9b60b932957d2e1cad1d87f2ad8bb68c97136e9735eb78547018a42cc50c4652750367f29462eadb0512c27db1dd8a7d4b17a2f0aeab62b3dbf86db5f51a61c
2025-05-05 12:35:42 +01:00
Hennadii Stepanov
fa2c548429 Merge bitcoin/bitcoin#32417: doc: Explain that .gitignore is not for IDE-specific excludes
fada115cbe doc: Explain that .gitignore is not for IDE-specific excludes (MarcoFalke)

Pull request description:

  This comes up frequently, so document it.

  Examples:

  * https://github.com/bitcoin/bitcoin/pull/27275
  * https://github.com/bitcoin/bitcoin/pull/21894
  * https://github.com/bitcoin/bitcoin/pull/32392
  * https://github.com/bitcoin/bitcoin/pull/17868

  ...

ACKs for top commit:
  l0rinc:
    ACK fada115cbe
  hebasto:
    ACK fada115cbe.
  janb84:
    ACK [fada115](fada115cbe)

Tree-SHA512: 6fd1e48de54b40118a49ef61ad157fea278bba568286a022559a4815e53f26650db98a779a1ea2b3085237ded5cbee20d4c2dd1ef51e6a2d3d6085d7063f5309
2025-05-05 07:40:08 +01:00