Commit graph

30920 commits

Author SHA1 Message Date
Hennadii Stepanov
f52a72af56
ci: Invalidate depends caches when sources have been changed 2021-08-18 19:32:01 +03:00
W. J. van der Laan
90499358e9
Merge bitcoin/bitcoin#22645: scripts: prevent GCC optimising test symbols in test-symbol-check
5449d44e37 scripts: prevent GCC optimising test symbols in test-symbol-check (fanquake)

Pull request description:

  I noticed in #22381 that when the test-symbol-check target was being built with Clang and run in the CI it would fail due to using a too-new version of `pow` (used [here](d67330d112/contrib/devtools/test-symbol-check.py (L85))). Our CIs use Focal (glibc 2.31) and the version of `pow` was the optimized version introduced in [glibc 2.29](https://lwn.net/Articles/778286/):
  ```bash
  * Optimized generic exp, exp2, log, log2, pow, sinf, cosf, sincosf and tanf.
  ```
  This made sense, except for that if it was failing when built using Clang, why hadn't it also been failing when being built with GCC?

  Turns out GCC is optimizing away that call to `pow` at all optimization levels, including `-O0`, see: https://godbolt.org/z/53MhzMxT7, and this has been the case forever, or at least since GCC 5.x. Clang on the other hand, will only optimize away the `pow` call at `-O1` and `-O2`, not `-O0`: https://godbolt.org/z/Wbnqj3q6c. Thus when this test was built with Clang (we don't pass `-O` so we default to `-O0`) it was failing in the CI environment, because it would actually have a call to the "new" `pow`.

  Avoid this issue by using a symbol that won't be optimized away, or that we are unlikely to ever have versioning issues with.

ACKs for top commit:
  laanwj:
    ACK 5449d44e37

Tree-SHA512: 3a26c5c3a5f2905fd0dd90892470e241ba625c0af3be2629d06d5da3a97534c1d6a55b796bbdd41e2e6a26a8fab7d981b98c45d4238565b0eb7edf3c5da02007
2021-08-18 17:16:11 +02:00
John Newbery
ed9ba8af08 [tests] Remove CAddrMan.Clear() call from CAddrDB::Read()
`bool CAddrDB::Read(CAddrMan& addr, CDataStream& ssPeers)` is _only_
called from the tests, and the call to addr.Clear() only exists so that
a test that Clear() is called passes. Remove that test and the call.
2021-08-18 14:00:52 +01:00
John Newbery
e8e7392311 [addrman] Don't call Clear() if parsing peers.dat fails
Now that we manage the lifespan of node.addrman, we can just reset
node.addrman to a newly initialized CAddrMan if parsing peers.dat
fails, eliminating the possibility that Clear() leaves some old state
behind.
2021-08-18 14:00:52 +01:00
John Newbery
181a1207ba [addrman] Move peers.dat parsing to init.cpp 2021-08-18 14:00:52 +01:00
fanquake
e35c4a3d80
Merge bitcoin/bitcoin#22732: net: use m_client_interface rather than uiInterface
d8ba6327b2 scripted-diff: replace clientInterface with m_client_interface in net (fanquake)
f68c6cebe6 net: use clientInterface rather than uiInterface (fanquake)

Pull request description:

  First commit fixes two cases where we were using `uiInterface`, rather than `clientInterface`.
  Second commit renames `clientInterface` to `m_client_interface`, to match banman.

ACKs for top commit:
  hebasto:
    ACK d8ba6327b2, verified that `uiInterface` is replaced in all sites.
  Zero-1729:
    crACK d8ba6327b2

Tree-SHA512: 9c893d8799b0bc7737836c16e11b77b6f9dffa31041ec6678e63cad958ea06da09a841b99cc61c1b4d9f6f4f1be397ca5a8d2fb2fb7ab08c9437043f8a57c3dc
2021-08-18 20:12:39 +08:00
fanquake
d8ba6327b2
scripted-diff: replace clientInterface with m_client_interface in net
-BEGIN VERIFY SCRIPT-

sed -i -e "s/clientInterface/m_client_interface/g" src/net.cpp src/net.h

-END VERIFY SCRIPT-
2021-08-18 13:54:43 +08:00
fanquake
f68c6cebe6
net: use clientInterface rather than uiInterface 2021-08-18 13:54:09 +08:00
fanquake
68faa87881
test: use f-strings in mining_*.py tests 2021-08-18 12:39:20 +08:00
fanquake
c2a5d560df
test: use f-strings in interface_*.py tests 2021-08-18 12:39:20 +08:00
fanquake
86d958262d
test: use f-strings in feature_proxy.py 2021-08-18 12:39:20 +08:00
fanquake
31bdb33dcb
test: use f-strings in feature_segwit.py 2021-08-18 12:39:20 +08:00
fanquake
b166d54c3c
test: use f-strings in feature_versionbits_warning.py 2021-08-18 12:39:19 +08:00
fanquake
cf6d66bf94
test: use f-strings in feature_settings.py 2021-08-18 12:39:19 +08:00
fanquake
6651d77f22
test: use f-strings in feature_pruning.py 2021-08-18 12:39:19 +08:00
fanquake
961f5813ba
test: use f-strings in feature_notifications.py 2021-08-18 12:39:19 +08:00
fanquake
1a546e6f6c
test: use f-strings in feature_minchainwork.py 2021-08-18 12:39:19 +08:00
fanquake
6679eceacc
test: use f-strings in feature_logging.py 2021-08-18 12:39:18 +08:00
fanquake
fb633933ab
test: use f-strings in feature_loadblock.py 2021-08-18 12:39:18 +08:00
fanquake
e9ca8b254d
test: use f-strings in feature_help.py 2021-08-18 12:39:18 +08:00
fanquake
ff7e330999
test: use f-strings in feature_filelock.py 2021-08-18 12:39:18 +08:00
fanquake
d5a6adc5e4
test: use f-strings in feature_fee_estimation.py 2021-08-18 12:39:18 +08:00
fanquake
a2de33cbdc
test: use f-strings in feature_dersig.py 2021-08-18 12:39:17 +08:00
fanquake
a2502cc63f
test: use f-strings in feature_dbcrash.py 2021-08-18 12:39:17 +08:00
fanquake
3e2f84e7a9
test: use f-strings in feature_csv_activation.py 2021-08-18 12:39:17 +08:00
fanquake
e2f1fd8ee9
test: use f-strings in feature_config_args.py 2021-08-18 12:39:17 +08:00
fanquake
36d33d32b1
test: use f-strings in feature_cltv.py 2021-08-18 12:39:17 +08:00
fanquake
dca173cc04
test: use f-strings in feature_blocksdir.py 2021-08-18 12:39:17 +08:00
fanquake
5453e87062
test: use f-strings in feature_backwards_compatibility.py 2021-08-18 12:39:08 +08:00
fanquake
6f3d5ad67a
test: use f-strings in feature_asmap.py 2021-08-18 09:52:25 +08:00
fanquake
b5c468cfe3
Merge bitcoin/bitcoin#22725: MOVEONLY: tests: Move addrman ser/deser tests to addrman_tests.cpp
aaa6ad5455 [MOVEONLY] [tests] Move addrman ser/deser tests to addrman_tests.cpp (John Newbery)

Pull request description:

  Addrman serialization/deserialization tests are currently in net_tests.cpp.
  Move them to addrman_tests.cpp with the rest of the addrman tests.

  Reviewer hint: review using `git diff --color-moved=dimmed-zebra`

ACKs for top commit:
  MarcoFalke:
    review ACK aaa6ad5455 📺
  mjdietzx:
    ACK aaa6ad5455
  Saviour1001:
    Concept ACK <code>[aaa6ad5](aaa6ad5455)</code>

Tree-SHA512: 9a575e63f8830a9dfba30ef63c83ae4b45813add9973308f0d7a2463886438575a2e8a4a23af5b19ed977fbaab1a212ef832f89a25de03920d493e9ebafa9c30
2021-08-18 08:57:34 +08:00
fanquake
62cb4009c2
Merge bitcoin/bitcoin#22215: refactor: Add FoundBlock.found member
5c5d0b6264 Add FoundBlock.found member (Russell Yanofsky)

Pull request description:

  This change lets IPC serialization code handle FoundBlock arguments more simply and efficiently. Without this change there was no way to determine from a FoundBlock object whether a block was found or not. So in order to correctly implement behavior of leaving FoundBlock output variables unmodified when a block was not found, IPC code would have to read preexisting output variable values from the local process, send them to the remote process, receive output values back from the remote process, and save them to output variables unconditionally. With FoundBlock.found method, the process is simpler. There's no need to read or send preexisting local output variable values, just to read final output values from the remote process and set them conditionally if the block was found.

  ---

  This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/projects/10). The commit was first part of larger PR #10102.

ACKs for top commit:
  fjahr:
    Code review ACK 5c5d0b6264
  theStack:
    Concept and code review ACK 5c5d0b6264
  jamesob:
    ACK 5c5d0b6264 ([`jamesob/ackr/22215.1.ryanofsky.refactor_add_foundblock`](https://github.com/jamesob/bitcoin/tree/ackr/22215.1.ryanofsky.refactor_add_foundblock))
  Zero-1729:
    crACK 5c5d0b6

Tree-SHA512: d906e1b7100ff72c3aa06d80bd77673887b2db670ebd52dce7c4f6f557a23a1744c6109308228a37fda6c6ea74f05ba0efecff0ef235ab06ea8acd861fbb8675
2021-08-18 08:49:48 +08:00
John Newbery
aaa6ad5455 [MOVEONLY] [tests] Move addrman ser/deser tests to addrman_tests.cpp
Addrman serialization/deserialization tests are currently in net_tests.cpp.
Move them to addrman_tests.cpp with the rest of the addrman tests.

Reviewer hint: review using `git diff --color-moved=dimmed-zebra`
2021-08-17 13:44:54 +01:00
fanquake
f12fbad5a1
windres: use PACKAGE_VERSION rather than building more version numbers
Rather than defining more strings, reuse PACKAGE_VERSION, which is
already available.

We already use PACKAGE_VERSION for `ProductVersion` and `FileVersion` in setup.nsi.
2021-08-17 16:54:47 +08:00
Russell Yanofsky
e4709c7b56 Start using init makeNode, makeChain, etc methods
Use interfaces::Init::make* methods instead of interfaces::Make*
functions, so interfaces can be constructed differently in different
executables without having to change any code. (So for example
bitcoin-gui can make an interfaces::Node pointer that communicates with
a bitcoin-node subprocess, while bitcoin-qt can make an interfaces::Node
pointer that starts node code in the same process.)
2021-08-17 03:05:15 -05:00
Russell Yanofsky
62a09a3077 refactor: remove ::vpwallets and related global variables
Move global wallet variables to WalletContext struct
2021-08-17 04:05:15 -04:00
fanquake
fdd80b0a53
Merge bitcoin/bitcoin#22688: contrib: use keys.openpgp.org to retrieve builder keys
4c43b7d41d contrib: use hkps://keys.openpgp.org to retrieve builder keys (fanquake)

Pull request description:

  `hkps://hkps.pool.sks-keyservers.net` is essentially no-longer functional,
  and a number of distributions and GPG tools have since switched to using
  the `keys.openpgp.org` key server as their default.

  See this Debian patch for additional context:
  https://salsa.debian.org/debian/gnupg2/-/blob/debian/main/debian/patches/Use-hkps-keys.openpgp.org-as-the-default-keyserver.patch

  Switch to using keys.openpgp.org in the CI as well.

ACKs for top commit:
  MarcoFalke:
    cr ACK 4c43b7d41d
  Zero-1729:
    ACK 4c43b7d41d

Tree-SHA512: e6c72b67778b76f81c659eee0e4195fea9e579587c64921affd35b9d46a077d4e8754b7fb85ca90a9a4bbc5cd5a47b0c6e4c9dbf9a335418a12f774d665e5a19
2021-08-17 16:05:15 +08:00
fanquake
f3dbd1c2b2
Merge bitcoin/bitcoin#22627: [addrman] De-duplicate Add() function
60e0cbdd57 [addrman] Merge the two Add() functions (Amiti Uttarwar)

Pull request description:

  This PR merges the two definitions of this overloaded function to reduce code duplication.

  When these functions were introduced in 5fee401fe1, there were multiple places that invoked `Add()` with a single addr and a vector of addrs each, so it made sense to overload the function. I could see how the small difference in log statement was more meaningful when a peer was added via IRC :)

  Now, the definition of `Add()` that takes in a single address is only invoked from the hidden/test-only RPC `addpeeraddress`. These changes should not cause any observable difference, and are covered by the existing tests that use this RPC endpoint.

ACKs for top commit:
  jnewbery:
    Code review ACK 60e0cbdd57
  Zero-1729:
    crACK 60e0cbd
  fanquake:
    ACK 60e0cbdd57

Tree-SHA512: 782fb2ac6d2d403ba7d7ff543197ca42b610b9a8806952d271e57e2ee3527ad1a94af4ebbad5371b5e95d77df07c56ccc8c1d5a2c82cdecb0d2b5085b3bdd5ee
2021-08-17 10:05:03 +08:00
fanquake
4c43b7d41d
contrib: use hkps://keys.openpgp.org to retrieve builder keys
hkps://hkps.pool.sks-keyservers.net is essentially no-longer functional,
and a number of distributions and GPG tools have since switched to using
this key server as their default.

See this Debian patch for additional context:
https://salsa.debian.org/debian/gnupg2/-/blob/debian/main/debian/patches/Use-hkps-keys.openpgp.org-as-the-default-keyserver.patch

Switch to using keys.openpgp.org in the CI as well.
2021-08-17 08:59:04 +08:00
fanquake
df30375788
Merge bitcoin/bitcoin#22715: wallet: use FormatFullVersion() & PACKAGE_NAME in dumpwallet
2d7534bd93 wallet: use PACKAGE_NAME instead of "Bitcoin" in rpcdump (fanquake)
14b4802405 wallet: use FormatFullVersion instead of CLIENT_BUILD in rpcdump (fanquake)

Pull request description:

  The dumpwallet RPC is the last place we're using CLIENT_BUILD directly, rather FormatFullVersion() (which just returns it), so switch to using that. At the same time, use PACKAGE_NAME (Bitcoin Core), rather than just "Bitcoin".

ACKs for top commit:
  MarcoFalke:
    cr ACK 2d7534bd93
  laanwj:
    Tested ACK 2d7534bd93
  achow101:
    ACK 2d7534bd93
  Zero-1729:
    crACK 2d7534b

Tree-SHA512: b38ee074e317448719d2a628380786ec665413515b38d9ce680c21608bc2acf6a2bf817f78f100a8310477613ae72d6969cc4f595f4f44af0896659d3ebf2671
2021-08-17 08:56:17 +08:00
MarcoFalke
8a40b227a6
Merge bitcoin/bitcoin#22718: doc: Add missing PR 16333 release note
fa76ebd1a6 doc: Add missing PR 16333 release note (MarcoFalke)

Pull request description:

  Missed in commit ad0fc453cc

ACKs for top commit:
  laanwj:
    Documentation review ACK fa76ebd1a6
  Zero-1729:
    ACK fa76ebd1a6
  theStack:
    ACK fa76ebd1a6

Tree-SHA512: 5fc9e3f61d2f8534f537cc14c7518d09babd5ebbedd5f24ad10ca9aff69d499f3daa0c45eb548eec94cdbf25bf53c9f0158ec2ee7aa5c3f653f7670c68d1d24c
2021-08-16 21:06:52 +02:00
Zero-1729
021daedfa1
refactor: replace remaining binascii method calls 2021-08-16 19:30:56 +01:00
MarcoFalke
b935abb9eb
Merge bitcoin/bitcoin#22684: test: check for invalid -prune parameters
e2ff385e13 test: check for invalid `-prune` parameters (Sebastian Falbesoner)

Pull request description:

  This small PR adds missing test coverage for invalid `-prune` parameter values / combinations:

  77e23ca945/src/init.cpp (L926-L928)

  77e23ca945/src/init.cpp (L935-L937)

  77e23ca945/src/init.cpp (L844-L849)

  Not sure if the tests fit into `feature_config_args.py` or should rather be moved into `feature_pruning.py`; the latter though seems to be run less often due to being very memory-hungry.

ACKs for top commit:
  laanwj:
    Code review ACK e2ff385e13

Tree-SHA512: bb0db98090058ecac9f8a01301634e9dba9a65fd56b6a0b770f88da28c4f01e240e22b1225f0d231e28bdd4b5b51bff0e6853cccc46ed0190e91b84f7954a9db
2021-08-16 18:15:21 +02:00
MarcoFalke
fa76ebd1a6
doc: Add missing PR 16333 release note 2021-08-16 18:00:38 +02:00
Sebastian Falbesoner
e2ff385e13 test: check for invalid -prune parameters 2021-08-16 16:36:48 +02:00
Michael Dietz
47c48b5f35
test: only use verbose for getrawmempool when necessary in functional tests 2021-08-16 18:34:14 +05:00
Michael Dietz
77349713b1
test: use getmempoolentry instead of getrawmempool in functional tests when appropriate 2021-08-16 18:29:07 +05:00
Michael Dietz
86dbd54ae8
test: improve mempool_updatefrom efficiency by using getmempoolentry for specific txns 2021-08-16 17:56:28 +05:00
Hennadii Stepanov
939640f87e
ci: Reorder scripts to make git available before depends_sources_cache 2021-08-16 12:48:24 +03:00
MarcoFalke
42b00a3758
Merge bitcoin/bitcoin#22649: fuzz: Avoid OOM in system fuzz target
fa7718344d fuzz: Avoid OOM in system fuzz target (MarcoFalke)

Pull request description:

  If the inputs size is unlimited, the target may consume unlimited memory, because the argsmanager stores the argument names. Limiting the size should fix this issue.

  Should fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=36906

ACKs for top commit:
  practicalswift:
    cr ACK fa7718344d

Tree-SHA512: 6edfcf324ee9d94e511038ee01340f02db50bcb233af3f1a1717c3602164c88528d9d987e971ec32f1a4593b868019bea0102c53c9b02bfefec3dfde959483cf
2021-08-16 10:47:58 +02:00