ci: Add CI job to build on Debian Wheezy #1871

pull hebasto wants to merge 2 commits into bitcoin-core:master from hebasto:260612-ci-debian7 changing 3 files +66 −13
  1. hebasto commented at 11:25 AM on June 13, 2026: member

    It is widely expected that libsecp256k1, which requires only C89 and <stdint.h>, can be built with any toolchain that meets those requirements, including old and ancient ones.

    This PR introduces a CI job that builds on Debian Wheezy, which could serve as a baseline for such expectations.

    Wheezy is the earliest Debian release that ships all Autotools components with supported versions (Autoconf>=2.60, Automake>=1.11.2). This allows us to reuse our testing script with minimal adjustments.

    ~The exact compiler version, GCC 4.4, was chosen to be able to catch issues like this one.~

    This PR also raises the following questions:

    1. There are some warnings that are excluded from errors:https://github.com/bitcoin-core/secp256k1/blob/5362c070b7682840e4f258a31cc4ef606c39a02f/.github/workflows/ci.yml#L307 Do we want to improve code hygiene and fix them?

    2. This branch exposes an example issue with compatibility with retro Linux systems:https://github.com/bitcoin-core/secp256k1/blob/5362c070b7682840e4f258a31cc4ef606c39a02f/.github/workflows/ci.yml#L303-L305 Do we want to fix it?

    3. The test script runs make testvectors only if not cross-compiling. But it seems it should run fine even when cross-compiling as it uses Python scripts.

  2. hebasto commented at 3:22 PM on June 13, 2026: member

    This PR introduces a CI job that builds on Debian Wheezy, which could serve as a baseline for such expectations.

    The real baseline in the Debian world is Debian 2.2 Potato, which ships glibc 2.1.3. It's the first Debian release to deliver the <stdint.h> header.

  3. ci: Improve `ci/ci.sh` portability
    1. Use `git show -s` instead of `git show --no-patch` for older Git
       versions.
    2. Skip commands that require `python3` when it is not available.
    071523b2ce
  4. ci: Add CI job to build on Debian Wheezy
    Wheezy is the earliest Debian release that ships all Autotools
    components with supported versions (Autoconf>=2.60, Automake>=1.11.2).
    e1ddeff86e
  5. hebasto force-pushed on Jun 16, 2026
  6. hebasto commented at 4:03 PM on June 16, 2026: member

    Rebased.

  7. real-or-random added the label assurance on Jun 17, 2026
  8. real-or-random added the label ci on Jun 17, 2026
  9. real-or-random added the label feature on Jun 17, 2026
  10. real-or-random added the label build on Jun 17, 2026
  11. real-or-random commented at 11:34 AM on June 17, 2026: contributor

    Concept NACK

    I think this will be difficult to maintain. At some point, it will break, and then we need to find a new minimum version and get it to run with all its quirks. The goal is not that libsecp256k1 runs on any C89+stdint.h implementation. The goal is that it runs on any reasonable (i.e., contemporary) C89+stdint.h implementation.

    There are some warnings that are excluded from errors:

    Do we want to improve code hygiene and fix them?

    I don't think so. These are compilers bugs.

    This branch exposes an example issue with compatibility with retro Linux systems: Do we want to fix it?

    I don't think so. The examples are examples. It's by nature that they assume a specific computing environment (e.g., they already assume any of Windows, Linux, or macOS). Assuming a specific version is not a big deal, in particular if it's ancient.

  12. hebasto closed this on Jun 17, 2026

  13. hebasto commented at 11:49 AM on June 17, 2026: member

    The goal is that it runs on any reasonable (i.e., contemporary) C89+stdint.h implementation.

    I still believe that a baseline build environment, perhaps a contemporary one, should be explicitly documented and added as a CI job.

  14. real-or-random commented at 11:57 AM on June 17, 2026: contributor

    The goal is that it runs on any reasonable (i.e., contemporary) C89+stdint.h implementation.

    I still believe that a baseline build environment, perhaps a contemporary one, should be explicitly documented and added as a CI job.

    I'm not entirely against this idea, but 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.


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-05 09:15 UTC

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