Merge bitcoin/bitcoin#35083: [30.x] Backports

6c3f40117f doc: update release notes for v30.x (fanquake)
33d66c67ee ci: unconfine seccomp for i686 no IPC (Lőrinc)
9632450ff6 multi_index: fix compilation failure with boost >= 1.91 (Cory Fields)
561d072e05 test: Add missing self.options.timeout_factor scale in tool_bitcoin_chainstate.py (MarcoFalke)

Pull request description:

  Backports:
  * #35080
  * #35175
  * #35202

ACKs for top commit:
  achow101:
    ACK 6c3f40117f

Tree-SHA512: 3acc73ef19001f4a84e388f21215a239fd3017351f561019b4f688165f3fb2f347879ca285aa31b9cd9b96473c5b6edf175a050cf6c6a7ffed61ad3065df603e
This commit is contained in:
Ava Chow
2026-05-06 03:18:24 -07:00
7 changed files with 30 additions and 28 deletions

View File

@@ -10,6 +10,7 @@ export HOST=i686-pc-linux-gnu
export CONTAINER_NAME=ci_i686_no_multiprocess
export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04"
export CI_IMAGE_PLATFORM="linux/amd64"
export CI_CONTAINER_CAP="--security-opt seccomp=unconfined"
export PACKAGES="llvm clang g++-multilib"
export DEP_OPTS="DEBUG=1 NO_IPC=1"
export GOAL="install"

View File

@@ -81,6 +81,7 @@ Notable changes
- #34608 test: Fix broken --valgrind handling after bitcoin wrapper
- #34690 test: Add missing timeout_factor to zmq socket
- #34869 tests: applied PYTHON_GIL to the env for every test
- #35080 test: Add missing self.options.timeout_factor scale in tool_bitcoin_chainstate.py
### Util
@@ -105,6 +106,11 @@ Notable changes
- #34461 ci: Print verbose build error message in test-each-commit
- #34802 ci: Bump GHA actions versions
- #34815 ci: bump cirruslabs actions versions
- #35202 ci: restore sockets in i686, no IPC job
### Misc
- #35175 multi_index: fix compilation failure with boost >= 1.91
Credits
=======
@@ -113,6 +119,7 @@ Thanks to everyone who directly contributed to this release:
- ANAVHEOBA
- brunoerg
- Cory Fields
- Daniel Pfeifer
- darosior
- fanquake

View File

@@ -109,7 +109,9 @@ struct CompareTxIterByAncestorCount {
};
struct CTxMemPoolModifiedEntry_Indices final : boost::multi_index::indexed_by<
using indexed_modified_transaction_set = boost::multi_index_container<
CTxMemPoolModifiedEntry,
boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<
modifiedentry_iter,
CompareCTxMemPoolIter
@@ -122,12 +124,7 @@ struct CTxMemPoolModifiedEntry_Indices final : boost::multi_index::indexed_by<
CompareTxMemPoolEntryByAncestorFee
>
>
{};
typedef boost::multi_index_container<
CTxMemPoolModifiedEntry,
CTxMemPoolModifiedEntry_Indices
> indexed_modified_transaction_set;
>;
typedef indexed_modified_transaction_set::nth_index<0>::type::iterator modtxiter;
typedef indexed_modified_transaction_set::index<ancestor_score>::type::iterator modtxscoreiter;

View File

@@ -91,12 +91,13 @@ class TxOrphanageImpl final : public TxOrphanage {
}
};
struct OrphanIndices final : boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<boost::multi_index::tag<ByWtxid>, WtxidExtractor>,
boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>
>{};
using AnnouncementMap = boost::multi_index::multi_index_container<Announcement, OrphanIndices>;
using AnnouncementMap = boost::multi_index::multi_index_container<
Announcement,
boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<boost::multi_index::tag<ByWtxid>, WtxidExtractor>,
boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>
>
>;
template<typename Tag>
using Iter = typename AnnouncementMap::index<Tag>::type::iterator;
AnnouncementMap m_orphans;

View File

@@ -306,7 +306,9 @@ public:
static const int ROLLING_FEE_HALFLIFE = 60 * 60 * 12; // public only for testing
struct CTxMemPoolEntry_Indices final : boost::multi_index::indexed_by<
using indexed_transaction_set = boost::multi_index_container<
CTxMemPoolEntry,
boost::multi_index::indexed_by<
// sorted by txid
boost::multi_index::hashed_unique<mempoolentry_txid, SaltedTxidHasher>,
// sorted by wtxid
@@ -334,11 +336,7 @@ public:
CompareTxMemPoolEntryByAncestorFee
>
>
{};
typedef boost::multi_index_container<
CTxMemPoolEntry,
CTxMemPoolEntry_Indices
> indexed_transaction_set;
>;
/**
* This mutex needs to be locked when accessing `mapTx` or other members

View File

@@ -208,17 +208,15 @@ struct ByTimeViewExtractor
}
};
struct Announcement_Indices final : boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>,
boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTxHash>, ByTxHashViewExtractor>,
boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTime>, ByTimeViewExtractor>
>
{};
/** Data type for the main data structure (Announcement objects with ByPeer/ByTxHash/ByTime indexes). */
using Index = boost::multi_index_container<
Announcement,
Announcement_Indices
boost::multi_index::indexed_by<
boost::multi_index::ordered_unique<boost::multi_index::tag<ByPeer>, ByPeerViewExtractor>,
boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTxHash>, ByTxHashViewExtractor>,
boost::multi_index::ordered_non_unique<boost::multi_index::tag<ByTime>, ByTimeViewExtractor>
>
>;
/** Helper type to simplify syntax of iterator types. */

View File

@@ -24,9 +24,9 @@ class BitcoinChainstateTest(BitcoinTestFramework):
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
text=True,
)
stdout, stderr = proc.communicate(input=input + "\n", timeout=5)
stdout, stderr = proc.communicate(input=input + "\n", timeout=5 * self.options.timeout_factor)
self.log.debug("STDOUT: {0}".format(stdout.strip("\n")))
self.log.info("STDERR: {0}".format(stderr.strip("\n")))