What changed, and why it matters
This commit only changes Bitcoin Core's continuous integration (CI) test setup. It installs the Python pycapnp package so that inter-process communication (IPC) tests can run automatically in GitHub Actions. There is no change to the actual Bitcoin node code that users run, and nothing in the commit suggests a security vulnerability or fix.
No security action needed. This is a CI-only infrastructure change. Reviewers may want to confirm the pinned pycapnp version and installation flags are acceptable for the project's CI supply-chain policy, but this is a routine CI dependency addition, not a security patch.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The diff modifies CI configuration files to add pycapnp installation steps. On Ubuntu CI runners it adds python3-pip to APT packages and installs pycapnp via pip with –break-system-packages. On macOS runners it clones pycapnp v2.1.0 and installs it with force-bundled-libcapnp=True. The commit enables IPC tests in CI but does not alter Bitcoin Core source code, consensus logic, networking, wallet, or any runtime component.
Changed components
.github/workflows/ci.ymlci/test/00_setup_env_native_asan.shInspect captured patch +8 / −1
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 87dd2107..85fdd7ec 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -95,6 +95,7 @@ jobs:
- run: |
sudo apt-get update
sudo apt-get install clang mold ccache build-essential cmake ninja-build pkgconf python3-zmq libevent-dev libboost-dev libsqlite3-dev systemtap-sdt-dev libzmq3-dev qt6-base-dev qt6-tools-dev qt6-l10n-tools libqrencode-dev capnproto libcapnp-dev -y
+ sudo pip3 install --break-system-packages pycapnp
- name: Compile and run tests
run: |
# Run tests on commits after the last merge commit and before the PR head commit
@@ -152,6 +153,11 @@ jobs:
brew install --quiet python@3 || brew link --overwrite python@3
brew install --quiet coreutils ninja pkgconf gnu-getopt ccache boost libevent zeromq qt@6 qrencode capnp
+ - name: Install Python packages
+ run: |
+ git clone -b v2.1.0 https://github.com/capnproto/pycapnp
+ pip3 install ./pycapnp -C force-bundled-libcapnp=True --break-system-packages
+
- name: Set Ccache directory
run: echo "CCACHE_DIR=${RUNNER_TEMP}/ccache_dir" >> "$GITHUB_ENV"
diff --git a/ci/test/00_setup_env_native_asan.sh b/ci/test/00_setup_env_native_asan.sh
index a6f73854..e785f6ab 100755
--- a/ci/test/00_setup_env_native_asan.sh
+++ b/ci/test/00_setup_env_native_asan.sh
@@ -20,7 +20,8 @@ fi
export CONTAINER_NAME=ci_native_asan
export APT_LLVM_V="21"
-export PACKAGES="systemtap-sdt-dev clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev python3-zmq qt6-base-dev qt6-tools-dev qt6-l10n-tools libevent-dev libboost-dev libzmq3-dev libqrencode-dev libsqlite3-dev ${BPFCC_PACKAGE} libcapnp-dev capnproto"
+export PACKAGES="systemtap-sdt-dev clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev python3-zmq qt6-base-dev qt6-tools-dev qt6-l10n-tools libevent-dev libboost-dev libzmq3-dev libqrencode-dev libsqlite3-dev ${BPFCC_PACKAGE} libcapnp-dev capnproto python3-pip"
+export PIP_PACKAGES="--break-system-packages pycapnp"
export NO_DEPENDS=1
export GOAL="install"
export CI_LIMIT_STACK_SIZE=1
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.