Minimum recommended toolchain - document and test it #1874

pull hebasto wants to merge 2 commits into bitcoin-core:master from hebasto:260617-doc-toolchain changing 3 files +58 −8
  1. hebasto commented at 3:51 PM on June 17, 2026: 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:

    • from #1871 (comment):

      ... Wheezy is just ancient. Do you think a Docker image that depends on a generic Debian oldoldstable image could do the job? (Does such an image exist?) This would at least save us from bumping the version regularly.

  2. doc: Document the minimum recommended toolchain
    Establish clear boundaries for the project's recommended build and
    testing environments.
    414cdb07bd
  3. ci: Add CI job to build on Debian "oldoldstable"
    Debian "oldoldstable" is the minimum recommended build environment.
    6dd486ed4b
  4. hebasto force-pushed on Jun 25, 2026
  5. hebasto commented at 2:49 PM on June 25, 2026: member

    Rebased on top of the recent CI changes.

  6. hebasto marked this as a draft on Jun 25, 2026
  7. hebasto closed this on Jun 25, 2026

  8. hebasto reopened this on Jun 25, 2026

  9. hebasto marked this as ready for review on Jun 25, 2026
  10. in README.md:105 in 6dd486ed4b
     102 | +
     103 | +The project is intended to be portable to any system with a C89/C90-compatible toolchain.
     104 | +Additionally, the C standard library must provide the `<stdint.h>` header.
     105 | +
     106 | +Toolchains older than the default one shipped in the current Debian "oldoldstable" release
     107 | +are not tested and are not recommended for building the project.
    


    real-or-random commented at 6:46 AM on June 26, 2026:

    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.

    fanquake commented at 1:19 PM on June 26, 2026:

    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.


    real-or-random commented at 12:43 PM on June 29, 2026:

    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.

  11. in README.md:99 in 6dd486ed4b
      95 | @@ -97,8 +96,15 @@ This can be done with the following steps:
      96 |          Subkey fingerprint: 4BBB 845A 6F5A 65A6 9DFA  EC23 4861 DBF2 6212 3605
      97 |     ```
      98 |  
      99 | -Building with Autotools
     100 | ------------------------
     101 | +## Building from source
    


    real-or-random commented at 6:47 AM on June 26, 2026:

    nit:

    ## Building
    

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


    real-or-random commented at 10:30 AM on June 26, 2026:

    see my "code" suggestion: Just "Building"

  12. in ci/linux-debian-oldold.Dockerfile:17 in 6dd486ed4b
      12 | +    apt-get clean && rm -rf /var/lib/apt/lists/*
      13 | +
      14 | +ENV VIRTUAL_ENV=/root/venv
      15 | +RUN python3 -m venv $VIRTUAL_ENV
      16 | +ENV PATH="$VIRTUAL_ENV/bin:$PATH"
      17 | +RUN pip install lief
    


    real-or-random commented at 6:53 AM on June 26, 2026:

    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).


    hebasto commented at 10:22 AM on June 26, 2026:

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


    real-or-random commented at 10:34 AM on June 26, 2026:

    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.

  13. real-or-random commented at 6:56 AM on June 26, 2026: contributor

    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.

  14. real-or-random commented at 6:58 AM on June 26, 2026: contributor

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

  15. real-or-random added the label assurance on Jun 26, 2026
  16. real-or-random added the label tweak/refactor on Jun 26, 2026
  17. real-or-random added the label meta/development on Jun 26, 2026

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin-core/secp256k1. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-07-12 14:15 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me