Variables that are declared with AC_ARG_VAR macro are substituted via
AC_SUBST macro.
PKG_CHECK_MODULES macro already has AC_ARG_VAR(${PACKAGE}_CFLAGS) and
AC_ARG_VAR(${PACKAGE}_LIBS).
This test sporadically fails due to the Python test missing log lines
for reasons that are poorly understood. The problem is made worse by the
fact that this test does not retain the log files from iteration to
iteration.
Change the test to do logline detection in a more robust manner (by
using `re.search` on the whole log content) in a way that is comparable
to the existing `assert_debug_log` utility, and retain all debug.log
content from case to case.
This part of the test sporadically fails on CI infrastructure. Instead
of perturbing a single .ldb file of each type, move all .ldb files of a
given type to ensure a bad startup.
The logic of these functions is already covered by existing unit tests
using publicly exposed functions of the interface.
Therefore, removing them does not decrease test coverage.
Switches to AddrMan for tests that use no features of AddrManTest.
Also removes unusued AddrManTest variables
Co-Authored-By: Amiti Uttarwar <amiti@uttarwar.org>
d2efb66458e5ded38fe15216710de7036fe55244 test: use MiniWallet for p2p_compactblocks.py (Sebastian Falbesoner)
Pull request description:
This PR enables one more of the non-wallet functional tests (p2p_compactblocks.py) to be run even with the Bitcoin Core wallet disabled by using the MiniWallet instead, as proposed in #20078.
The wallet RPCs calls (`getnewaddress`/`sendtoaddress`) can easily be substituted by generating/sending to the MiniWallet's internal address instead (`self.generate(self.wallet, ...)`/`self.wallet.send_self_transfer(...)`).
ACKs for top commit:
josibake:
ACK d2efb66458
brunoerg:
tACK d2efb66458e5ded38fe15216710de7036fe55244
Tree-SHA512: 25340d95199ffd1fa734231c22b7710aad1ed4cda78c8c533c19cea90dc4eab65832f043d20e4fc5c0869692b1f300ad79af4e7fd3c4af8f2578ac9ccbbc9aeb
fa50d8b66e74792eb46515853e4aa8a99f25561b doc: Remove TODO comment in tx_verify (MarcoFalke)
Pull request description:
The comment has no clear motivation, so it seems better to remove it and fix it when there is a reason.
An alternative (if a fix isn't possible when there is a clear motivation) would be to create an issue thread for easier discussion.
ACKs for top commit:
fanquake:
ACK fa50d8b66e74792eb46515853e4aa8a99f25561b
Tree-SHA512: e9c25bab46a73b7c2db288c62ed9838a5e794b3b72db494173f4502da60b58dec4383064964c0842932cd30e4251fc01ad0c28681e2ef6cb442482eea2bad595
fa993d0e7e4d27ca1cf7d88a5a6ec5b93b7ed503 doc: Fix -changetype help text (MarcoFalke)
Pull request description:
This was forgotten in commit 3ac38058ce0e80a9f4276bfa82951decdb237e9a
ACKs for top commit:
shaavan:
ACK fa993d0e7e4d27ca1cf7d88a5a6ec5b93b7ed503
w0xlt:
ACK fa993d0
josibake:
ACK fa993d0e7e
Tree-SHA512: 9f84b1168e3b3ab06e5c1f4915a1874598b273099eb5878ed28c3a66f1484e34c836fd3c68c4131bee541f3428052f6b66e02b192170752d1082de689d44cd4d
fa562fdd5e36566f8013eee17c6dbf830942094e doc: Remove fixed TODO from wallet/feebumper (MarcoFalke)
Pull request description:
Fixed in commit 9522b53a91f28032c34b94662d50b000534708ce
ACKs for top commit:
shaavan:
ACK fa562fdd5e36566f8013eee17c6dbf830942094e
Tree-SHA512: 968fda0994020c369b7acfc01db109d0f50d4c137fadf533ae55d0e14a353ebbde4320e798cf89e5489f1020c459712631b3967976c1f73d99db8a2d1cbad982
fa5d0b6ecda384b591fff42b4072fa7d02525975 doc: Remove TODO from block fuzz test (MarcoFalke)
Pull request description:
I don't see a reason to fix the TODO, as all call sites assume at least one tx in `vtx`. So remove it.
ACKs for top commit:
fanquake:
ACK fa5d0b6ecda384b591fff42b4072fa7d02525975
Tree-SHA512: 8fe03a5bdebf4d6dad00f410a1dc6449c485a4d61afb79ebcaa221489cde2a465fea981742fde130238ebed6d2f1f032aa4976726ee07b23fe7fb745b2728d46
e844115deae8a11c591704a84e56ed45fa81409c test: use MiniWallet for rpc_scantxoutset.py (Sebastian Falbesoner)
983ca0456c0fd32dc6ce166cb1e9aeb925e81161 test: introduce `address_to_scriptpubkey` helper (Sebastian Falbesoner)
e704d4d26f62f83068dc7d4082ab9b57bc33d1fb test: introduce `getnewdestination` helper for generating various address types (Sebastian Falbesoner)
Pull request description:
This PR enables one more of the non-wallet functional tests (rpc_scantxoutset.py) to be run even with the Bitcoin Core wallet disabled by using the MiniWallet instead, as proposed in #20078 and https://github.com/bitcoin/bitcoin/pull/23858#issue-1088320649 more recently.
Reviewer's guide:
* [commit 1/3] For replacing the getnewaddress/getaddressinfo RPC calls a helper `getnewdestination` is introduced which allows to create addresses with the common address format types ('legacy', 'p2sh-segwit' and 'bech32'), but also additionally returns the corresponding pubkey and output script.
* [commit 2/3] In order to send to addresses with MiniWallet, a helper `address_to_scriptpubkey` is introduced. It only supports legacy addresses (Base58Check) so far, which is sufficient for the scantxoutset test.
* [commit 3/3] With those helpers, the use of MiniWallet in the test is quite straight-forward. To avoid repeatedly specifying parameters like `from_node` to MiniWallet's `send_to` method, another test-internal helper `sendtodestination` is introduced which supports specifying the destination both as outputscript or as address.
ACKs for top commit:
w0xlt:
reACK [e844115](e844115dea)
Tree-SHA512: e4823dc507019b2b8e479602963c5dddc4c78211e1d934218ee0f0e32c068ab7e44e9793307f549127946364f57d684c4ea1d70f25865ea70d30d4f3855836d0
d3b0f82a438ae60060d0d4d83245bf75f5de433d build: Fix regression introduced in PR23603 (Hennadii Stepanov)
Pull request description:
It appears 7629efcc2c3a8a8a7c17b1300cd466ec6c8c1f3f from bitcoin/bitcoin#23603 introduced a regression in build tool flag evaluation.
On macOS system:
- pre-PR23603 master (ae017b81604761b57e22c28913c4ce81bf2e31ce):
```
% make -C depends print-darwin_CXXFLAGS
darwin_CXXFLAGS=-pipe
% make -C depends print-host_CXXFLAGS
host_CXXFLAGS=-pipe
```
- the current master (369978686e156ad34df703f1e60bd90aeaa8f2d6):
```
% make -C depends print-darwin_CXXFLAGS
darwin_CXXFLAGS=-pipe
% make -C depends print-host_CXXFLAGS
host_CXXFLAGS=-arch x86_64
```
It's obvious a flag being set in `depends/hosts/darwin.mk`, i.e., `-pipe`, is lost.
With this PR:
```
% make -C depends print-darwin_CXXFLAGS
darwin_CXXFLAGS=-pipe
% make -C depends print-host_CXXFLAGS
host_CXXFLAGS=-pipe -arch x86_64
```
ACKs for top commit:
fanquake:
ACK d3b0f82a438ae60060d0d4d83245bf75f5de433d
Tree-SHA512: 643099ce6858475ac9f3a4dfa72a4e493fec6fdd7042ae0f0d5fe44c5cd175e4eda63cb39fc46ac1501cadcd3466507ec88d9089235e005fe43ea7ab47ce37c1
11736dbe3dbe34bcb430d05810b9e9aa66ec1cd6 build, qt: Hardcode last modified timestamp in Qt RCC (Hennadii Stepanov)
Pull request description:
Our Guix build system sets the [`SOURCE_DATE_EPOCH`](https://reproducible-builds.org/specs/source-date-epoch/) and propagates it to the depends build subsystem. Its [default value](https://github.com/bitcoin/bitcoin/blob/master/contrib/guix/README.md#recognized-environment-variables) is the top commit timestamp.
After bumping Qt version up to 5.15.2, due to [this](1ffcca4cc2) change, every time they are going to make new Guix builds for another branch/commit they must ensure that the `qt` package will be rebuilt from scratch. Otherwise, Bitcoin Core GUI binaries will be non-deterministic.
Such behavior makes working with Guix builds suboptimal.
This PR fixes the described issue by patching Qt RCC and hardcoding last modified timestamps with `1`.
It's worth to mention that this change is compatible with a possible future [improvement](https://github.com/bitcoin/bitcoin/pull/21995) which makes each dependency package reproducible.
A drawback of such an approach is not currently applied to our project, as it effectively makes [QML cache files](https://bugreports.qt.io/browse/QTBUG-57182) useless. I can't say it's a problem for the https://github.com/bitcoin-core/gui-qml project.
---
**A note for thinkers:** For now this change is enough as only Qt source contains `SOURCE_DATE_EPOCH`. But in general we should re-think about treating the `SOURCE_DATE_EPOCH` variable in the depends build subsystem. For instance, its default value could be the output of `git log --format=%at -1 -- depends`.
ACKs for top commit:
fanquake:
ACK 11736dbe3dbe34bcb430d05810b9e9aa66ec1cd6
Tree-SHA512: 31f104010a0a78d217aafcc5bc4606351f9060fc2a827277935b85fc8ced9f3d90a31d812c7db8c2711fb6daccd279cf0945dc1d7a7199e0eb0ade451cdbcd5d
94a7f09de6ed1899372bf14f6202629e27dc1512 doc: Drop outdated note (Hennadii Stepanov)
Pull request description:
It is outdated since bitcoin/bitcoin#23060.
ACKs for top commit:
MarcoFalke:
cr ACK 94a7f09de6ed1899372bf14f6202629e27dc1512
theStack:
Code-review ACK 94a7f09de6ed1899372bf14f6202629e27dc1512
Tree-SHA512: 5a98cf39c3939845d1abb64cb62dbb9bdb1135aa07a5cd0d85de7b6a6d9a3397b0e5da06cdb89991aac31151cb3c0d38eacf4898c53014cb7f7600e992230f87
This serves as a replacement for the getnewaddress RPC if no wallet is
available. In addition to the address, it also returns the corresponding
public key and output script (scriptPubKey).
fafe4dea16c93ac8d5cd5eee872dfb8427d7809a test: Fix pep8 of touched file (MarcoFalke)
fa0ac9d7e36ec616cd673b9041f0e54b9f32d5b0 test: Fix rpc_scantxoutset intermittent issue (MarcoFalke)
Pull request description:
I fail to see how this could have ever worked, since there is nothing that prevents the wallet from spending the coins in the utxo set.
Fixes https://github.com/bitcoin/bitcoin/issues/23847
Longer term it would be nice to remove the wallet and use MiniWallet here.
ACKs for top commit:
brunoerg:
tACK fafe4dea16c93ac8d5cd5eee872dfb8427d7809a
theStack:
Code-review ACK fafe4dea16c93ac8d5cd5eee872dfb8427d7809a
Tree-SHA512: d92b7be9a81eb62f496488dd15b8e564e9b7a64b55634af2714b53f985e6a35fdae788323833ff59c40ae7c6a0cf54fe069db8eb3be03686f7c100379f54a292
faaf9da20a2920fe52ec4efa1e9a07090c089cb3 test: Add missing suppressions for crypto_diff_fuzz_chacha20.cpp (MarcoFalke)
Pull request description:
Without them, CI and fuzzing is broken
ACKs for top commit:
stratospher:
ACK faaf9da. The changes look good to me.
Tree-SHA512: 46604ba1b6eb8ea321e55e043835ca1e7a4f562855007b08cf9cf96d9a7f2a0155009ca1397f34338e478b8cc5b5a6a0dc94e1878a2f00bfab11595ae58bb014
c27bba96723384488fb6995e21bb43969d94b0f6 test: check for invalid listtransactions RPC parameters (Sebastian Falbesoner)
Pull request description:
This PR adds missing test coverage for RPC errors that are thrown if invalid parameters are passed to `listtransactions`:
887796a5ff/src/wallet/rpc/transactions.cpp (L508)887796a5ff/src/wallet/rpc/transactions.cpp (L524)887796a5ff/src/wallet/rpc/transactions.cpp (L526)
ACKs for top commit:
shaavan:
ACK c27bba96723384488fb6995e21bb43969d94b0f6
Tree-SHA512: e5a23590186b4d9663261ff6cea52ac45e9bf2f2ef693c22b3452bb07af9b800fdabc2a94fd2852c686c28214a496d7afe296e41831759f2182feac2482635d0
7b481f015a0386f5ee3e13415474952653ddc198 Fix Racy ParseOpCode function initialization (Jeremy Rubin)
Pull request description:
If multiple callers call ParseOpCode concurrently it will cause a race condition. We can either move the static to it's own area and require init be called explicitly, or just allow concurrent first callers to race to fill in an atomic variable that never changes thereafter. The second approach is taken here.
Static initialization *is* threadsafe, but only insofar as definining the variable being guaranteed to be called once. This is used incorrectly here.
practicalswift --> are there tools we can deploy to catch usage like this?
ACKs for top commit:
MarcoFalke:
re-ACK 7b481f015a0386f5ee3e13415474952653ddc198 🗣
Tree-SHA512: cbf9dc3af26d7335305026f32ce8472a018309b89b3d81a67357e59fbeed72c37b5b8a6e30325ea68145c3b2403867be82de01f22decefb6e6717cf0c0045633