Skip to content

Include patches up to 29.3rc2#101

Merged
ajtowns merged 134 commits intobitcoin-inquisition:29.xfrom
ajtowns:202512-inq29-upstream-292
Feb 6, 2026
Merged

Include patches up to 29.3rc2#101
ajtowns merged 134 commits intobitcoin-inquisition:29.xfrom
ajtowns:202512-inq29-upstream-292

Conversation

@ajtowns
Copy link

@ajtowns ajtowns commented Dec 9, 2025

A few fairly straightforward merge conflicts needed resolving.

Includes a behaviour change for mempool-script-verify-flag-failed vs mandatory-script-verify-flag-failed errors, so that failures due to Inquisition soft forks are reported as mempool- for mempool addition, and mandatory- for block verification. (Without this change, once any soft fork is activated, all block verification failures will be reported as mempool- instead of mandatory-).

MarcoFalke and others added 30 commits September 3, 2025 16:14
Also, use update-alternatives to avoid having to manually specify
clang-${APT_LLVM_V} or llvm-symbolizer-${APT_LLVM_V} everywhere.

Github-Pull: bitcoin#32999
Rebased-From: fad040a
Qt is disabled, as the build is now taking a very long time.

Github-Pull: bitcoin#33099
Rebased-From: b09af2c
Github-Pull: bitcoin#33258
Rebased-From: 4cf0ae4
7c6be9a doc: update release notes for 29.x (fanquake)
ea40fa9 ci: use LLVM 21 (fanquake)
5513516 ci: remove DEBUG_LOCKORDER from TSAN job (fanquake)
f9939cd ci: instrument libc++ in TSAN job (fanquake)
0fba5ae ci: allow libc++ instrumentation other than msan (fanquake)
10cbf22 ci: Use APT_LLVM_V in msan task (MarcoFalke)

Pull request description:

  Backports:
  * bitcoin#32999
  * bitcoin#33099 (added `ninja-build`)
  * bitcoin#33258

ACKs for top commit:
  marcofleon:
    ACK 7c6be9a, looks okay to me

Tree-SHA512: 928882d505ed8101a6d4123947252a84d40bd350383408926b5c37aed56dc3359067d1d14c443c51351a6958a8dd9e141bb7713665295ff1f1ad86c5f8a36df0
The `SHA256AutoDetect` return output is used, among other use cases, to
name benchmarks. Using a comma breaks the CSV output.

This change replaces the comma with a semicolon, which fixes the issue.

Github-Pull: bitcoin#33340
Rebased-From: 790b440
Rather than trying to match the apt installed clang version, which is
prone to intermittent issues. i.e bitcoin#33345.

Github-Pull: bitcoin#33364
Rebased-From: b736052
Since bitcoin#29412, we have not allowed mutated blocks to continue
being processed immediately the block is received, but this
is only done for the legacy BLOCK message.

Extend these checks as belt-and-suspenders to not allow
similar mutation strategies to affect relay by honest peers
by applying the check inside
PartiallyDownloadedBlock::FillBlock, immediately before
returning READ_STATUS_OK.

This also removes the extraneous CheckBlock call.

Github-Pull: bitcoin#32646
Rebased-From: bac9ee4
Previously in debug builds, this would cause an Assume crash if
FillBlock had been called previously. This could happen when multiple
blocktxn messages were received.

Co-Authored-By: Greg Sanders <gsanders87@gmail.com>

Github-Pull: bitcoin#33296
Rebased-From: 5e585a0
Add test_multiple_blocktxn_response that checks that the peer is
disconnected.

Github-Pull: bitcoin#33296
Rebased-From: 8b62647
Tor inbound connections do not reveal the peer's actual network address.
Therefore do not apply whitelist permissions to them.

Co-authored-by: Vasil Dimov <vd@FreeBSD.org>

Github-Pull: bitcoin#33395
Rebased-From: f563ce9
f2bd79f doc: update manual pages for v29.2rc1 (fanquake)
461dd13 build: bump version to v29.2rc1 (fanquake)
9bc4afb doc: update release notes for 29.x (fanquake)
61cdc04 net: Do not apply whitelist permission to onion inbounds (Martin Zumsande)
1288d44 test: send duplicate blocktxn message in p2p_compactblocks.py (Eugene Siegel)
569ceb0 net: check for empty header before calling FillBlock (Eugene Siegel)
4c940d4 p2p: remove vestigial READ_STATUS_CHECKBLOCK_FAILED (Greg Sanders)
9b95ab5 p2p: Add witness mutation check inside FillBlock (Greg Sanders)
e97588f trace: Workaround GCC bug compiling with old systemtap (Luke Dashjr)
324caa8 ci: always use tag for LLVM checkout (fanquake)
2717331 Fix benchmark CSV output (Hennadii Stepanov)

Pull request description:

  Backports:
  * bitcoin#32646
  * bitcoin#33296
  * bitcoin#33310
  * bitcoin#33340
  * bitcoin#33364
  * bitcoin#33395

  Plus changes for 29.2rc1.

ACKs for top commit:
  darosior:
    utACK f2bd79f
  mzumsande:
    utACK f2bd79f

Tree-SHA512: 346a92032b7a069e2941056c6273ff65e360c5834832b106350a9cd42b634518cc75b807da6e51a6292e3a33342bb7b145777d3538a2792e03c63962d747a025
Github-Pull: bitcoin#32989
Rebased-From: b232b0f

Add "Restore" and "Save" caching actions.

These actions reduce boilerplate in the main ci.yml configuration file.

These actions are implemented so that caches will be saved on `push`
only.

When a pull request is opened it will cache hit on the caches from the
lastest push, or in the case of depends will hit on any matching depends
hash, falling back to partial matches.

Depends caches are hashed using
`$(git ls-tree HEAD depends "ci/test/$FILE_ENV" | sha256sum | cut -d' ' -f1)`
and this hash is passed in as an input to the actions. This means we
direct cache hit in cases where depends would not be re-built, otherwise
falling back to a partial match.

Previous releases cache is hashed similarly to depends, but using the
test/get_previous_releases.py file.

The cirruslabs cache action will fallback transparently to GitHub's
cache in the case that the job is not being run on a Cirrus Runner,
making these compatible with running on forks (on free GH hardware).
Github-Pull: bitcoin#32989
Rebased-From: 33ba073

If set, Cirrus runners will be used on pushes to, and pull requests
against, this repository.

Forks can set this if they have their own cirrus runners.
Github-Pull: bitcoin#32989
Rebased-From: fdf64e5

Another action to reduce boilerplate in the main ci.yml file.

This action will set up a docker builder compatible with caching build
layers to a container registry using the `gha` build driver.

It will then configure the docker build cache args.
Github-Pull: bitcoin#32989
Rebased-From: 94a0932

Using buildx is required to properly load the correct driver, for use
with registry caching. Neither build, nor BUILDKIT=1 currently do this
properly.

Use of `docker buildx build` is compatible with podman.
Github-Pull: bitcoin#32989
Rebased-From: 18f6be0

Reverts: e87429a

This was added in PR bitcoin#31545 with the intention that self-hosted runners
might use it to save build cache.

As we are not using hosted runners with a registry build cache, the bulk
of this commit can be reverted, simply using the value of
$DOCKER_BUILD_CACHE_ARG in the script.

link: bitcoin#31545
Github-Pull: bitcoin#32989
Rebased-From: 9c2b96e

This sets the build dir at build time so that Apple SDK gets installed
in the correct/expected location for the runtime to find it.

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
Github-Pull: bitcoin#32989
Rebased-From: 020069e

Whilst the action cirruslabs/actions/cache will automatically set this
host, the docker `gha` build cache backend will not be aware of it.

Set the value here, which will later be used in the docker build args to
enable docker build cache on the cirrus cache.
Github-Pull: bitcoin#32989
Rebased-From: cc1735d

To remove multiple occurances of the respository name, against which we
compare `${{ github.repository }}` to check if we should use Cirrus
Runners, introduce a helper job which can check a single environment
variable and output this as an input to subsequent jobs.

Forks can maintain a trivial patch of their repo name against the
`REPO_USE_CIRRUS_RUNNERS` variable in ci.yml if they have Cirrus Runners
of their own, which will then enable cache actions and docker build
cache to use Cirrus Cache.

It's not possible to use `${{ env.USE_CIRRUS_RUNNERS }}` in the
`runs-on:` directive as the context is not supported by GitHub.

If it was, this job would no longer be necessary.
Github-Pull: bitcoin#32989
Rebased-From: f253031

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
Github-Pull: bitcoin#32989
Rebased-From: 04e7bfb

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
achow101 and others added 20 commits January 14, 2026 10:07
b834447 [doc] generate manpages 29.3rc1 (glozow)
e9c9783 [build] bump version to 29.3rc1 (glozow)
e973b61 [doc] update release notes for 29.3rc1 (glozow)
f4b78c4 test: Add a test for anchor outputs in the wallet (Ava Chow)
c6e7765 wallet: Throw an error in sendall if the tx size cannot be calculated (Ava Chow)
bab1ac8 wallet: Determine IsFromMe by checking for TXOs of inputs (Ava Chow)
71633a9 test: Test wallet 'from me' status change (Ava Chow)
daef585 guix: Fix `osslsigncode` tests (Hennadii Stepanov)
7a71850 Remove unreliable seed from chainparams.cpp, and the associated README (SatsAndSports)
2e46886 miner: fix `addPackageTxs` unsigned integer overflow (ismaelsadeeq)

Pull request description:

  Backports:

  - bitcoin#34227
  - bitcoin#33723
  - bitcoin#33475
  - bitcoin#33268

  And final changes for 29.3rc1

ACKs for top commit:
  achow101:
    ACK b834447
  janb84:
    ACK b834447
  sedited:
    ACK b834447

Tree-SHA512: 68e02fbde7162f728229f4bfc803bedda6d269e54593ebe40da607f6bd25b2b10bc4297bfa0bc977ce2dc6b558efe6571a7f875090e0f916fc09e5b67432ba30
…allet

If any other files exist in the directory, we cannot assume the sharable files are exclusively for this wallet.
But if they are, this also cleans up other log.* files
…ils, log the correct wallet name in error message
…eason

Since we no longer delete the wallet directory, there's no need to vacate it
The moving only served to risk errors by crossing filesystem boundaries (which fs::rename can't handle)
…ating from non-directory

While 30.x+ keep backup files in walletdir, 29.x places them in the migrated wallet directory
We can use vswhere.exe directly to create a vs developer
prompt and so can remove this third party dependency.

Co-authored-by: David Gumberg <davidzgumberg@gmail.com>

Github-Pull: bitcoin#32513
Rebased-From: 7ae0497
3835e16 doc: update release notes for v29.x (fanquake)
6aec095 ci: remove 3rd party js from windows dll gha job (Max Edwards)
c57009e chore: Update outdated GitHub Actions versions (Padraic Slattery)

Pull request description:

  Backports:
  * bitcoin#32513 (partial backport)
  * bitcoin#34344

ACKs for top commit:
  willcl-ark:
    ACK 3835e16
  sedited:
    ACK 3835e16

Tree-SHA512: e36b00e952fe6edbe931a131dbe66f14d97b2362453fe4a0e7be58697039945832075d486a6634228c4e1a0ab081e2919cf2c76ef2cfc8b2df6f321b6112c284
6517394 QA: tool_wallet: Check that db.log is deleted with a lone legacy wallet, but not with a shared db environment (Luke Dashjr)
69a6b9b Bugfix: Wallet/Migration: Move backup into wallet directory when migrating from non-directory (Luke Dashjr)
cef01d0 Wallet/Migration: Skip moving the backup file back and forth for no reason (Luke Dashjr)
60f5290 Wallet/Migration: If loading the new watchonly or solvables wallet fails, log the correct wallet name in error message (Luke Dashjr)
7475d13 Wallet/bdb: Safely and correctly list files only used by the single wallet (Luke Dashjr)

Pull request description:

ACKs for top commit:
  achow101:
    ACK 6517394
  furszy:
    light ACK 6517394

Tree-SHA512: c10fe00dde512ca78cd6939a748b3875d0b40e9714997aedfd939a1dffdc7eaa2fd1779f3972a34b1c1d9a97d8f1ee1e082c970de15ac0e2ef5d9bbf3dc1d89a
2b2c4da [doc] generate manpages 29.3rc2 (sedited)
75c2108 [doc] update release notes for 29.3rc2 (sedited)
16493e3 Bump version to 29.3rc2 (sedited)
340b58a Add sedited to trusted-keys (sedited)

Pull request description:

  Backport:

  * bitcoin#34236

  And finalize 29.3rc2.

ACKs for top commit:
  hebasto:
    re-ACK 2b2c4da.

Tree-SHA512: 9b145ab19eaa88ad11075b8362d3131ed80578ad46a1be6bfc4687dbcbcd25388b890128b60a54db4b7c1cb9c9d177150c460353e5cac904aac47e0cfde4218e
Bitcoin Core 29.3 release candidate 2

Tree-SHA512: 9b145ab19eaa88ad11075b8362d3131ed80578ad46a1be6bfc4687dbcbcd25388b890128b60a54db4b7c1cb9c9d177150c460353e5cac904aac47e0cfde4218e
@ajtowns ajtowns force-pushed the 202512-inq29-upstream-292 branch from b6a2d0a to a14710f Compare February 6, 2026 14:44
@ajtowns ajtowns changed the title Include patches from 29.2 Include patches up to 29.3rc2 Feb 6, 2026
Previously we returned either `mempool-script-verify-flag-failed`
or `mandatory-script-verify-flag-failed` depending on whether
any policy flags were set (that is, flags not included in
MANDATORY_SCRIPT_VERIFY_FLAGS).

This causes problems when we add new flags for future soft-forks,
as we don't add them to the MANDATORY set immediately, so after
they activate, block verification returns `mempool-` errors.
@ajtowns
Copy link
Author

ajtowns commented Feb 6, 2026

The "test each commit" job has no hope of succeeding since the inquisition changes introducing new soft forks and the bitcoin#33788 backport have silent merge conflicts. Seems better to have the fixes in proper commits.

@ajtowns ajtowns merged commit 41ba1f5 into bitcoin-inquisition:29.x Feb 6, 2026
18 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.