Skip to content

Commit 88bf452

Browse files
committed
4ebbc42 Merge bitcoin#28083: ci: Use DOCKER_BUILDKIT for lint image (DCG-Claude) 1a601ef Merge bitcoin#27996: ci: filter all subtrees from tidy output (DCG-Claude) ed4c472 Merge bitcoin#27656: build, doc: Adjust comment after PR27254 (DCG-Claude) Pull request description: <!-- backportsys v1 --> ## Issue being fixed or feature implemented Backports 3 Bitcoin Core v0.26 pull request(s) that the Dash queue selected, including any discovered prerequisites: bitcoin#27656, bitcoin#27996, bitcoin#28083. ## What was done? | upstream | commit | gates | notes | |---|---|---|---| | bitcoin#27656 | `cb83f1f229` | build:pass mech:pass pick:pass tests:warn tree:pass verify:pass | clean cherry-pick | | bitcoin#27996 | `32d1bfcd70` | build:pass mech:warn pick:pass tests:warn tree:pass verify:pass | Faithful backport of the .bear-tidy-config subtree exclusions: the commit adds upstream's two new entries (src | | bitcoin#28083 | `974574847f` | build:pass ci_fork:pass ci_upstream:pass mech:warn pick:pass tests:warn tree:pass verify:pass | The commit lands the full DOCKER_BUILDKIT lint-image restructure: ci/lint/Dockerfile deleted in favour of ci/l | Each commit keeps the upstream subject (`partial Merge …` only where a hunk is deferred to a prerequisite still to be backported, named in the commit body; a hunk Dash intentionally never wants is recorded in the commit body or the reviewer's note above and does not make the backport partial). Conflicts were resolved commit by commit; commits that needed no resolution were cherry-picked unchanged. ## How Has This Been Tested? Recorded per commit, at that commit's own sha, not once for the branch: - built at each commit, reusing the worktree build cache - the test suites touched by each diff run at that commit, where the diff selected one - a mechanical diff-of-diffs against the upstream patch (every upstream hunk present, no added line without an upstream counterpart, no Dash-specific line dropped) - an independent verification pass on 3 commit(s) that needed adaptation - CI green on the fork gate PR thepastaclaw#37 at `974574847f`, which is this branch's head Gates that did not come back clean — please weigh these: - bitcoin#27656 `tests`: **warn** — no test selected for this diff - bitcoin#27996 `tests`: **warn** — no test selected for this diff - bitcoin#27996 `mech`: **warn** — 2 partial/prereq/low-risk finding(s) - bitcoin#28083 `tests`: **warn** — no test selected for this diff - bitcoin#28083 `mech`: **warn** — 5 invented line(s); 3 partial/prereq/low-risk finding(s) ## Breaking Changes None beyond the upstream changes themselves. ## Checklist: _Left for the reviewer; backportsys does not tick boxes on its own behalf._ - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added or updated relevant unit/integration/functional/e2e tests - [ ] I have made corresponding changes to the documentation - [ ] I have assigned this pull request to a milestone --- ### Maintainer controls <!-- backportsys controls --> Tick a box and backportsys acts on it within a few minutes, then clears the box. For anything else — a hunk to drop, a resolution to redo, a question — just leave a review comment; nothing here needs a box. - [ ] 🔒 **Hands off** — stop every automated update to this branch <!-- bps:hands_off --> - [x] 🔄 **Rebase** onto current `develop` <!-- bps:rebase --> - [ ] ❌ **Close** — abandon this batch and release its items <!-- bps:close --> <!-- /backportsys controls --> > 🔒 On hold: hands off, by knst on #7695 at 2026-09-22T08:56:07Z. backportsys will not touch this branch again. <!-- human notes below; the bot never edits this section --> Top commit has no ACKs. Tree-SHA512: 3f8082e02836ffc4ae53bc008fc63deb74e5d7563cff0f7b5419d4347573e99ac63c340f3ac412445d47f0f032c8fcd1254b518c9ab0e8bdd4cca563b211cada
2 parents b764234 + 4ebbc42 commit 88bf452

8 files changed

Lines changed: 50 additions & 58 deletions

File tree

‎.dockerignore‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@
33
!contrib/containers/ci/ci-slim.Dockerfile
44
!contrib/containers/deploy/Dockerfile
55
!contrib/containers/develop/Dockerfile
6+
!.python-version
7+
!ci/lint

‎ci/lint/04_install.sh‎

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,33 +13,32 @@ ${CI_RETRY_EXE} apt-get update
1313
# - gpg (used by verify-commits)
1414
${CI_RETRY_EXE} apt-get install -y curl xz-utils git gpg
1515

16-
if [ -z "${SKIP_PYTHON_INSTALL}" ]; then
17-
PYTHON_PATH=/tmp/python
18-
if [ ! -d "${PYTHON_PATH}/bin" ]; then
19-
(
20-
git clone https://github.com/pyenv/pyenv.git
21-
cd pyenv/plugins/python-build || exit 1
22-
./install.sh
23-
)
24-
# For dependencies see https://github.com/pyenv/pyenv/wiki#suggested-build-environment
25-
${CI_RETRY_EXE} apt-get install -y build-essential libssl-dev zlib1g-dev \
26-
libbz2-dev libreadline-dev libsqlite3-dev curl llvm \
27-
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
28-
clang
29-
env CC=clang python-build "$(cat "${BASE_ROOT_DIR}/.python-version")" "${PYTHON_PATH}"
30-
fi
31-
export PATH="${PYTHON_PATH}/bin:${PATH}"
32-
command -v python3
33-
python3 --version
16+
PYTHON_PATH="/python_build"
17+
if [ ! -d "${PYTHON_PATH}/bin" ]; then
18+
(
19+
git clone https://github.com/pyenv/pyenv.git
20+
cd pyenv/plugins/python-build || exit 1
21+
./install.sh
22+
)
23+
# For dependencies see https://github.com/pyenv/pyenv/wiki#suggested-build-environment
24+
${CI_RETRY_EXE} apt-get install -y build-essential libssl-dev zlib1g-dev \
25+
libbz2-dev libreadline-dev libsqlite3-dev curl llvm \
26+
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
27+
clang
28+
env CC=clang python-build "$(cat "./.python-version")" "${PYTHON_PATH}"
3429
fi
30+
export PATH="${PYTHON_PATH}/bin:${PATH}"
31+
command -v python3
32+
python3 --version
3533

3634
# NOTE: BUMP ALSO contrib/containers/ci/ci-slim.Dockerfile
37-
${CI_RETRY_EXE} pip3 install codespell==2.2.1
38-
${CI_RETRY_EXE} pip3 install flake8==5.0.4
39-
${CI_RETRY_EXE} pip3 install lief==0.13.2
40-
${CI_RETRY_EXE} pip3 install mypy==0.981
41-
${CI_RETRY_EXE} pip3 install pyzmq==24.0.1
42-
${CI_RETRY_EXE} pip3 install vulture==2.6
35+
${CI_RETRY_EXE} pip3 install \
36+
codespell==2.2.1 \
37+
flake8==5.0.4 \
38+
lief==0.13.2 \
39+
mypy==0.981 \
40+
pyzmq==24.0.1 \
41+
vulture==2.6
4342

4443
SHELLCHECK_VERSION=v0.8.0
4544
curl -sL "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz" | \

‎ci/lint/Dockerfile‎

Lines changed: 0 additions & 29 deletions
This file was deleted.

‎ci/lint/docker-entrypoint.sh‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ export LC_ALL=C
55
# of the mounted bitcoin src dir.
66
git config --global --add safe.directory /bitcoin
77

8+
export PATH="/python_build/bin:${PATH}"
9+
810
if [ -z "$1" ]; then
911
LOCAL_BRANCH=1 bash -ic "./ci/lint/06_script.sh"
1012
else

‎ci/lint_imagefile‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# See test/lint/README.md for usage.
2+
3+
FROM debian:bookworm
4+
5+
ENV DEBIAN_FRONTEND=noninteractive
6+
ENV LC_ALL=C.UTF-8
7+
8+
COPY ./.python-version /.python-version
9+
COPY ./ci/lint/docker-entrypoint.sh /entrypoint.sh
10+
COPY ./ci/lint/04_install.sh /install.sh
11+
12+
RUN /install.sh && \
13+
echo 'alias lint="./ci/lint/06_script.sh"' >> ~/.bashrc && \
14+
chmod 755 /entrypoint.sh && \
15+
rm -rf /var/lib/apt/lists/*
16+
17+
18+
WORKDIR /bitcoin
19+
ENTRYPOINT ["/entrypoint.sh"]

‎configure.ac‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
11521152
dnl Check for posix_fallocate
11531153
AC_MSG_CHECKING([for posix_fallocate])
11541154
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1155-
// same as in src/util/system.cpp
1155+
// same as in src/util/fs_helpers.cpp
11561156
#ifdef __linux__
11571157
#ifdef _POSIX_C_SOURCE
11581158
#undef _POSIX_C_SOURCE

‎src/.bear-tidy-config‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"include_only_existing_source": true,
55
"paths_to_include": [],
66
"paths_to_exclude": [
7-
"src/crc32",
7+
"src/crc32c",
8+
"src/crypto/ctaes",
89
"src/crypto/x11",
910
"src/dashbls",
1011
"src/gsl",

‎test/lint/README.md‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@ To run linters locally with the same versions as the CI environment, use the inc
77
Dockerfile:
88

99
```sh
10-
cd ./ci/lint
11-
docker build -t bitcoin-linter .
10+
DOCKER_BUILDKIT=1 docker build -t bitcoin-linter --file "./ci/lint_imagefile" ./
1211

13-
cd /root/of/bitcoin/repo
1412
docker run --rm -v $(pwd):/bitcoin -it bitcoin-linter
1513
```
1614

0 commit comments

Comments
 (0)