Files
source-stack/README.md
GuofangandClaude Sonnet 5.5 464bf717ed Build Protobuf from source in rocky9-system
Every other library still comes from the distribution packages.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-10 11:25:58 +08:00

1.7 KiB

Source Stack Build Environments

Debian 13, Rocky Linux 9, and Alpine Linux container build environments with a C/C++ toolchain, CMake, and Git preinstalled, compatible with both Docker and Podman. The Alpine image builds the stack against musl libc. GitHub HTTPS URLs are routed through wangguofang.net. For the libraries included in the images, their pinned versions, and build details, see INCLUDED_LIBRARIES.md.

Build

Each build script automatically selects Docker or Podman:

./build-all.sh
./debian13/build.sh
./rocky9/build.sh
./rocky9-system/build.sh
./alpine3.24/build.sh

Use environment variables to select the container engine or override image names:

CONTAINER_ENGINE=podman IMAGE_NAME=my-build-env ./rocky9/build.sh

The Debian 13 and Rocky Linux 9 images install every library under /opt/local by default. Set PREFIX to install them elsewhere; the build environment variables (PATH, PKG_CONFIG_PATH, CMAKE_PREFIX_PATH, CMAKE_INSTALL_PREFIX, and so on) follow it. Rust is a build tool rather than a library, so it always lives under /usr/local and is not affected by PREFIX. The Alpine image does not support PREFIX.

PREFIX=/opt/stack ./debian13/build.sh
PREFIX=/opt/stack ./rocky9/build.sh

The rocky9-system image uses the libraries shipped by Rocky Linux 9 (BaseOS, AppStream, CRB and EPEL) instead of building them from source, except Protobuf, which is built from source (v3.21.12, under /usr/local). Libraries that those repositories do not provide are simply left out.

Run

docker run --rm -it debian13-source-stack
docker run --rm -it rocky9-source-stack
docker run --rm -it rocky9-system-stack
docker run --rm -it alpine3.24-source-stack