Skip to content

Minimum recommended toolchain - document and test it#1874

Open
hebasto wants to merge 2 commits into
bitcoin-core:masterfrom
hebasto:260617-doc-toolchain
Open

Minimum recommended toolchain - document and test it#1874
hebasto wants to merge 2 commits into
bitcoin-core:masterfrom
hebasto:260617-doc-toolchain

Conversation

@hebasto

@hebasto hebasto commented Jun 17, 2026

Copy link
Copy Markdown
Member

This PR:

  1. Establishes clear boundaries for the project's recommended build and testing environments.

  2. Adds a CI job that tests the project's minimum recommended build environment.

This is useful for reviewing changes like #1865 or #1869.


For the context:

hebasto added 2 commits June 25, 2026 15:47
Establish clear boundaries for the project's recommended build and
testing environments.
Debian "oldoldstable" is the minimum recommended build environment.
@hebasto
hebasto force-pushed the 260617-doc-toolchain branch from 0ba8a95 to 6dd486e Compare June 25, 2026 14:47
@hebasto

hebasto commented Jun 25, 2026

Copy link
Copy Markdown
Member Author

Rebased on top of the recent CI changes.

@hebasto
hebasto marked this pull request as draft June 25, 2026 14:53
@hebasto hebasto closed this Jun 25, 2026
@hebasto hebasto reopened this Jun 25, 2026
@hebasto
hebasto marked this pull request as ready for review June 25, 2026 15:06

@real-or-random real-or-random left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Weak Concept ACK (if we remove the "recommendation part") -- I think it's a useful test and the maintenance burden will be okay

@fanquake I wonder what you think from with your maintainer hat on.

Comment thread README.md
Comment on lines +104 to +105
Toolchains older than the default one shipped in the current Debian "oldoldstable" release
are not tested and are not recommended for building the project.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should remove this sentence (and change the PR title accordingly).

  • I don't think we should recommend a mininum compiler. People should use modern compilers, but this is nothing we need to state. What compiler we test with is an internal thing, and this should not become a "user-facing" guarantee (The wording does not imply a guarantee, but if it's not guarantee, it doesn't belong in the README. We could add it to CONTRIBUTING but I don't think it's necessary. The CI check is enough documentation.)
  • That older than oldoldstable is not recommended could be interpreted to mean that oldoldstable and newer is recommend. But I wouldn't recommend oldoldstable to anyone.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. I'm not sure there's much value (for this project) in trying to establish a minimum supported compiler version, and it seems possible that tests for this are going to add more friction than value. As long as they are low-effort, and can be deleted/changed easily, probably fine.

I'd also say that if we were going to document something, just state the particular compiler, rather than make people look up what compiler/version pair happened to ship on an old version of some Linux distro.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd also say that if we were going to document something, just state the particular compiler, rather than make people look up what compiler/version pair happened to ship on an old version of some Linux distro.

No strong opinion here but I still I tend to simply say "oldoldstable". Then we won't run into the need to bump the version regularly (e.g., because something breaks on an old compiler/docker image) and worse, use our brain cycles to make a decision whether the bump is justified without clear guidelines.

Comment thread README.md

Building with Autotools
-----------------------
## Building from source

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit:

Suggested change
## Building from source
## Building

Maybe it's just me, but "building from source" sounds like this is a special thing and we also ship binaries.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see my "code" suggestion: Just "Building"

Comment on lines +14 to +17
ENV VIRTUAL_ENV=/root/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN pip install lief

@real-or-random real-or-random Jun 26, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should omit python from this job to simplify maintenance. We don't want to be restricted to whatever Python version oldoldstable ships (and who knows if lief will runs on that version in the future).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disabling Python would require more changes in this PR to handle the testvectors build target, similar to 071523b.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, yeah. I was thinking we can just set SYMBOL_CHECK=no, but I forgot about the test vectors. Though I can we could also have TEST_VECTORS variable that is enabled by default. That would just change a single line in the script.

@real-or-random

real-or-random commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

@hebasto Have you checked if the new Docker image fits in the GHA cache (together with the existing cache artifacts)?

@real-or-random real-or-random added assurance tweak/refactor meta/development processes, conventions, developer documentation, etc. labels Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

assurance meta/development processes, conventions, developer documentation, etc. tweak/refactor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants