Skip to content

Reproducible build fails: Python compiled without SSL support in run_in_docker.sh #320

@xrviv

Description

@xrviv

Summary

The reproducible build process documented in tools/build-linux/appimage/run_in_docker.sh fails because Python 3.12 is compiled without SSL support, preventing pip from downloading dependencies from PyPI.

Affected Versions

  • ✅ Confirmed: v1.5.0
  • ✅ Confirmed: v1.6.0
  • ⚠️ Likely affects all versions using this build system

Steps to Reproduce

Environment

  • OS: Ubuntu 22.04 (tested in Podman container)
  • Container Runtime: Podman/Docker
  • Required tools: git, wget, docker

Reproduction Steps

# 1. Clone repository
git clone [https://github.com/andreasgriffin/bitcoin-safe.git](https://github.com/andreasgriffin/bitcoin-safe.git)
cd bitcoin-safe

# 2. Checkout affected version
git checkout 1.6.0

# 3. Run containerized build
cd tools/build-linux/appimage
./run_in_docker.sh

Could not build the ssl module!
Python requires a OpenSSL 1.1.1 or newer

The following modules are *disabled* in configure script:
_ssl                  _hashlib              _lzma

...

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
ERROR: Could not find a version that satisfies the requirement flit-core==3.12.0 (from versions: none)
ERROR: No matching distribution found for flit-core==3.12.0
🗯 ERROR: Could not install the specified packages due to a failure in: -Ir /tmp/bitcoin-safe/tools/deterministic-build/requirements-build-base.txt

Root Cause

The Docker container used by run_in_docker.sh is missing OpenSSL development libraries during Python compilation. When Python 3.12 is built from source (line ~50-100 in the script), it compiles without SSL support because libssl-dev is not installed in the build environment.

Expected Behavior

The build should complete successfully and produce:

bitcoin_safe-<version>-x86_64.AppImage
bitcoin_safe-<version>-x86_64.deb (via appimage2deb conversion)

Actual Behavior

Build fails during dependency installation phase because pip cannot connect to PyPI over HTTPS.

Edit: Further notes

Currently, we are in the process of automating all builds, and have a few guidelines, we build from within the container such that only podman/docker and a basic linux computer is all that any third-party builder/verifier would need.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions